tests/concave.py

Fri, 19 Jan 2018 13:41:23 +0200

author
Santeri Piippo
date
Fri, 19 Jan 2018 13:41:23 +0200
changeset 12
eb74680a5e43
child 13
12d4ddc4bfd8
permissions
-rw-r--r--

commit work done on test suites...

12
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
1 from math import degrees, pi as π
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
2 from testsuite import warning
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 transform_to_xy(geometry):
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
10 a, b, c = geometry.vertices[:3]
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
11
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
12
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
13 def concave_test(model):
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
14 for quadrilateral in model:
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
15 print([cross_product(v2 - v1, v3 - v1) for v1, v2, v3 in pairs(quadrilateral.geometry.vertices, count = 3)])
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
16 z_scores = [
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
17 cross_product(v2 - v1, v3 - v1).z
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
18 for v1, v2, v3 in pairs(quadrilateral.geometry.vertices, count = 3)
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
19 ]
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
20 print(z_scores)
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
21 if not sign_consistency(z_scores):
eb74680a5e43 commit work done on test suites...
Santeri Piippo
parents:
diff changeset
22 yield warning(quadrilateral, 'Concave quadrilateral')

mercurial