Merge pull request #9 from openscad/planar-crash-fix
When the input is collinear, choose the most perpendicular normal
diff --git a/Source/tess.c b/Source/tess.c
index 013b84c..67c038f 100755
--- a/Source/tess.c
+++ b/Source/tess.c
@@ -70,6 +70,15 @@
return i;
}
+static int ShortAxis( TESSreal v[3] )
+{
+ int i = 0;
+
+ if( ABS(v[1]) < ABS(v[0]) ) { i = 1; }
+ if( ABS(v[2]) < ABS(v[i]) ) { i = 2; }
+ return i;
+}
+
static void ComputeNormal( TESStesselator *tess, TESSreal norm[3] )
{
TESSvertex *v, *v1, *v2;
@@ -136,7 +145,7 @@
if( maxLen2 <= 0 ) {
/* All points lie on a single line -- any decent normal will do */
norm[0] = norm[1] = norm[2] = 0;
- norm[LongAxis(d1)] = 1;
+ norm[ShortAxis(d1)] = 1;
}
}