geometry.py

changeset 90
6ae063fd27dc
parent 62
f0a6bf48b05e
child 92
b8d72909d593
--- a/geometry.py	Mon Jun 24 10:13:13 2019 +0300
+++ b/geometry.py	Mon Jun 24 10:16:36 2019 +0300
@@ -197,12 +197,13 @@
             yield LineSegment(v1, v2)
     @property
     def angles(self):
-        from math import acos
+        from math import acos, isclose
         for v1, v2, v3 in pairs(self.vertices, count = 3):
             vec1 = (position_vector(v3) - position_vector(v2)).normalized()
             vec2 = (position_vector(v1) - position_vector(v2)).normalized()
-            cosine = dot_product(vec1, vec2) / vec1.length() / vec2.length()
-            yield acos(cosine)
+            if not isclose(vec1.length(), 0) and not isclose(vec2.length(), 0):
+                cosine = dot_product(vec1, vec2) / vec1.length() / vec2.length()
+                yield acos(cosine)
     @property
     def smallest_angle(self):
         return min(

mercurial