56 if hasattr(element, 'geometry') and len(element.geometry.vertices) >= 3: |
56 if hasattr(element, 'geometry') and len(element.geometry.vertices) >= 3: |
57 for a, b, c in pairs(element.geometry.vertices, count = 3): |
57 for a, b, c in pairs(element.geometry.vertices, count = 3): |
58 if cross_product(b - a, c - a).length() < 1e-5: |
58 if cross_product(b - a, c - a).length() < 1e-5: |
59 yield error(element, 'collinearity-error') |
59 yield error(element, 'collinearity-error') |
60 |
60 |
61 def hair_score(smallest_angle): |
|
62 from math import log10 |
|
63 return max(0, -log10(smallest_angle)) |
|
64 |
|
65 def hair_test(model): |
61 def hair_test(model): |
66 for element in model.body: |
62 for element in model.body: |
67 if hasattr(element, 'geometry') and len(element.geometry.vertices) >= 3: |
63 if hasattr(element, 'geometry') and len(element.geometry.vertices) >= 3: |
68 smallest_angle = element.geometry.smallest_angle |
64 smallest_angle = element.geometry.smallest_angle |
69 if smallest_angle < radians(0.5): |
65 if smallest_angle < radians(0.5): |