0027595: Mesh - faces without triangulations due to gp_VectorWithNullMagnitude exception
authoroan <oan@opencascade.com>
Wed, 22 Jun 2016 15:20:15 +0000 (18:20 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 1 Jul 2016 09:28:39 +0000 (12:28 +0300)
Zero magnitude check has been added before gp::Vec::Angle() usage

src/BRepMesh/BRepMesh_FastDiscretFace.cxx
tests/bugs/moddata_1/bug22759

index 687387d..0b913ad 100644 (file)
@@ -969,7 +969,9 @@ void BRepMesh_FastDiscretFace::insertInternalVerticesOther(
             if (aDist < aDefFace)
             {
               // Lets check parameters for angular deflection.
-              if (aPrevVec2.Angle (aTmpVec) < myAngle)
+              if (aPrevVec2.SquareMagnitude() < gp::Resolution() ||
+                  aTmpVec.SquareMagnitude()   < gp::Resolution() ||
+                  aPrevVec2.Angle (aTmpVec)   < myAngle)
               {
                 // For current Iso line we can remove this parameter.
                 aToRemove2.Add (aParam2);
index c880e5a..5e1dbf0 100755 (executable)
@@ -22,7 +22,7 @@ tclean result
 set Deflection 0.001
 incmesh result ${Deflection}
 
-checktrinfo result -tri 411758 -nod 209610 -defl 0.0092442421472207319 -tol_rel_defl 0.001 -tol_rel_tri 0.001 -tol_rel_nod 0.001
+checktrinfo result -tri 311280 -nod 159373 -defl 0.0092442421472206764 -tol_rel_defl 0.001 -tol_rel_tri 0.001 -tol_rel_nod 0.001
 
 vinit
 vdisplay result