22 for quadrilateral in model.quadrilaterals: |
22 for quadrilateral in model.quadrilaterals: |
23 for triangles in split_quadrilateral(quadrilateral.geometry): |
23 for triangles in split_quadrilateral(quadrilateral.geometry): |
24 plane_1 = triangle_plane_normal(triangles[0]) |
24 plane_1 = triangle_plane_normal(triangles[0]) |
25 plane_2 = triangle_plane_normal(triangles[1]) |
25 plane_2 = triangle_plane_normal(triangles[1]) |
26 skew_angle = vector_angle(plane_1, plane_2, normalized = True) |
26 skew_angle = vector_angle(plane_1, plane_2, normalized = True) |
27 if skew_angle > radians(0.1): |
27 if skew_angle > radians(3.0): |
28 yield error(quadrilateral, 'skew-error', |
28 yield error(quadrilateral, 'skew-error', |
|
29 skew_angle = skew_angle, |
|
30 ) |
|
31 break |
|
32 elif skew_angle > radians(1.0): |
|
33 yield warning(quadrilateral, 'skew-warning', |
29 skew_angle = skew_angle, |
34 skew_angle = skew_angle, |
30 ) |
35 ) |
31 break |
36 break |
32 |
37 |
33 manifest = { |
38 manifest = { |
38 'messages': { |
43 'messages': { |
39 'skew-error': lambda skew_angle: |
44 'skew-error': lambda skew_angle: |
40 str.format('skew quadrilateral (plane angle {})', |
45 str.format('skew quadrilateral (plane angle {})', |
41 degree_rep(skew_angle), |
46 degree_rep(skew_angle), |
42 ), |
47 ), |
|
48 'skew-warning': lambda skew_angle: |
|
49 str.format('slightly skew quadrilateral (plane angle {})', |
|
50 degree_rep(skew_angle), |
|
51 ), |
43 'concave-error': 'concave quadrilateral', |
52 'concave-error': 'concave quadrilateral', |
44 }, |
53 }, |
45 } |
54 } |