tests/quadrilaterals.py

changeset 30
0d9ca37901ed
parent 28
5933250813a3
child 32
75f44d3063da
--- a/tests/quadrilaterals.py	Tue Jan 23 14:09:52 2018 +0200
+++ b/tests/quadrilaterals.py	Tue Jan 23 15:30:48 2018 +0200
@@ -51,11 +51,19 @@
                 yield error(quadrilateral, 'self-intersecting')
                 break
 
+def collinear_test(model):
+    for element in model.body:
+        if hasattr(element, 'geometry') and len(element.geometry.vertices) >= 3:
+            for a, b, c in pairs(element.geometry.vertices, count = 3):
+                if cross_product(b - a, c - a).length() < 1e-5:
+                    yield error(element, 'collinearity-error')
+
 manifest = {
     'tests': {
         'skew': skew_test,
         'concave': concave_test,
         'bowtie': bowtie_test,
+        'collinearity': collinear_test,
     },
     'messages': {
         'skew-error': lambda skew_angle:
@@ -68,5 +76,6 @@
             ),
         'concave-error': 'concave quadrilateral',
         'self-intersecting': 'bowtie quadrilateral',
+        'collinearity-error': 'collinear polygon',
     },
 }

mercurial