From 33bb67edcbd63d17681f7dc89e5a7cdf3f66be14 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 31 Jul 2016 17:37:23 +0200 Subject: [PATCH] fix rounding issue in IsDegenerated() method --- src/Mod/Mesh/App/Core/Elements.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Mod/Mesh/App/Core/Elements.cpp b/src/Mod/Mesh/App/Core/Elements.cpp index fdceea3b0..7dbd74711 100644 --- a/src/Mod/Mesh/App/Core/Elements.cpp +++ b/src/Mod/Mesh/App/Core/Elements.cpp @@ -407,8 +407,13 @@ bool MeshGeomFacet::IsDegenerated(float epsilon) const // (u*u)*(v*v)-(u*v)*(u*v) < max(eps*(u*u),eps*(v*v)). // // BTW (u*u)*(v*v)-(u*v)*(u*v) is the same as (uxv)*(uxv). - Base::Vector3f u = _aclPoints[1] - _aclPoints[0]; - Base::Vector3f v = _aclPoints[2] - _aclPoints[0]; + Base::Vector3d p1(this->_aclPoints[0].x,this->_aclPoints[0].y,this->_aclPoints[0].z); + Base::Vector3d p2(this->_aclPoints[1].x,this->_aclPoints[1].y,this->_aclPoints[1].z); + Base::Vector3d p3(this->_aclPoints[2].x,this->_aclPoints[2].y,this->_aclPoints[2].z); + + Base::Vector3d u = p2 - p1; + Base::Vector3d v = p3 - p1; + double eps = epsilon; double uu = u*u; if (uu <= eps)