tests/concave.py

Mon, 22 Jan 2018 12:22:01 +0200

author
Santeri Piippo
date
Mon, 22 Jan 2018 12:22:01 +0200
changeset 14
d383f319f35b
parent 13
12d4ddc4bfd8
child 16
09cc89622262
permissions
-rw-r--r--

transform_to_xy implemented and concave test online

13
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
1 from math import acos, degrees, radians, pi as π
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
2 from testsuite import warning, error
12
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
3 from geometry import *
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
4
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
5 def sign_consistency(container):
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
6 # Returns whether all elements in container have the same sign
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
7 return min(container) * max(container) >= 0
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
8
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
9 def concave_test(model):
13
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
10 for quadrilateral in model.quadrilaterals:
14
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
11 geometry = transform_to_xy(quadrilateral.geometry)
12
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
12 z_scores = [
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
13 cross_product(v2 - v1, v3 - v1).z
14
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
14 for v1, v2, v3 in pairs(geometry.vertices, count = 3)
12
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
15 ]
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
16 if not sign_consistency(z_scores):
14
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
17 yield error(quadrilateral, 'Concave quadrilateral')
13
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
18
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
19 def bowtie_quadrilateral_test(model):
14
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
20 ...
13
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
21
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
22 def skew_test(model):
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
23 for quadrilateral in model.quadrilaterals:
14
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
24 for triangles in split_quadrilateral(quadrilateral.geometry):
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
25 plane_1 = triangle_plane_normal(triangles[0])
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
26 plane_2 = triangle_plane_normal(triangles[1])
13
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
27 angle = vector_angle(plane_1, plane_2, normalized = True)
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
28 if angle > radians(0.1):
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
29 yield error(quadrilateral,
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
30 'Skew quadrilateral (plane angle {}°)',
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
31 '%.3f' % degrees(angle))
12d4ddc4bfd8 Got the skew test working
Santeri Piippo
parents: 12
diff changeset
32 break
14
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
33
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
34 manifest = {
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
35 'tests': {skew_test, concave_test},
d383f319f35b transform_to_xy implemented and concave test online
Santeri Piippo
parents: 13
diff changeset
36 }

mercurial