From 5ccf36e5292fe1e6c9b1781d6b6a2022539a30ee Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 7 Sep 2016 06:41:18 +0000
Subject: [PATCH] add tolerance in detection of circle normals

---
 Geo/Geo.cpp | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp
index 52b56e0b8e..98cab7305e 100644
--- a/Geo/Geo.cpp
+++ b/Geo/Geo.cpp
@@ -304,9 +304,20 @@ void End_Curve(Curve *c)
     norme(dir32);
     double n[3];
     prodve(dir12, dir32, n);
-    norme(n);
+    
+    bool isValid = true;
+    if (norm3(n) < 1.e-15) {
+      isValid = false;
+    }
+    else {
+      norme(n);
+      if ((fabs(n[0]) < 1.e-5 && fabs(n[1]) < 1.e-5 && fabs(n[2]) < 1.e-5)) {
+        isValid = false;
+      }
+    }
+
     // use provided plane if unable to compute it from input points...
-    if(fabs(n[0]) < 1.e-5 && fabs(n[1]) < 1.e-5 && fabs(n[2]) < 1.e-5) {
+    if(!isValid) {
       n[0] = c->Circle.n[0];
       n[1] = c->Circle.n[1];
       n[2] = c->Circle.n[2];
-- 
GitLab