From d20126f7a179765656c418bfaf6452386062c65f Mon Sep 17 00:00:00 2001 From: Alexander Gessler Date: Mon, 21 Jan 2013 21:56:55 +0100 Subject: [PATCH] - Ifc: fine-tune some epsilons. --- code/IFCGeometry.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/IFCGeometry.cpp b/code/IFCGeometry.cpp index 815fad4db..8a928a5e0 100644 --- a/code/IFCGeometry.cpp +++ b/code/IFCGeometry.cpp @@ -1957,7 +1957,7 @@ bool GenerateOpenings(std::vector& openings, // TODO: This epsilon may be too large - const IfcFloat epsilon = fabs(dmax-dmin) * 0.01; + const IfcFloat epsilon = fabs(dmax-dmin) * 0.001; if (check_intersection && (base_d < dmin-epsilon || base_d > dmax+epsilon)) { continue; } @@ -1966,7 +1966,7 @@ bool GenerateOpenings(std::vector& openings, // Skip over very small openings - these are likely projection errors // (i.e. they don't belong to this side of the wall) - if(fabs(vpmax.x - vpmin.x) * fabs(vpmax.y - vpmin.y) < static_cast(1e-5)) { + if(fabs(vpmax.x - vpmin.x) * fabs(vpmax.y - vpmin.y) < static_cast(1e-10)) { continue; } std::vector joined_openings(1, &opening); @@ -2003,6 +2003,7 @@ bool GenerateOpenings(std::vector& openings, if (poly.size() > 1) { return TryAddOpenings_Poly2Tri(openings, nors, curmesh); + break; } else if (poly.size() == 0) { IFCImporter::LogWarn("ignoring duplicate opening");