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