Salome HOME
22516: [CEA 1075] Quadrangle mapping produces a bad mesh without raising error
[modules/smesh.git] / src / StdMeshers / StdMeshers_Quadrangle_2D.cxx
index 8bd1896fc50511d05bfd72f64ff3d81de72f8ac1..0a7e3301754ee315929c1e865e4f646dca1dfd59 100644 (file)
@@ -3971,7 +3971,7 @@ bool StdMeshers_Quadrangle_2D::check()
 
     // find a right angle VERTEX
     int iVertex;
 
     // find a right angle VERTEX
     int iVertex;
-    double maxAngle = 0;
+    double maxAngle = -1e100;
     for ( int i = 0; i < wire->NbEdges(); ++i )
     {
       int iPrev = myHelper->WrapIndex( i-1, wire->NbEdges() );
     for ( int i = 0; i < wire->NbEdges(); ++i )
     {
       int iPrev = myHelper->WrapIndex( i-1, wire->NbEdges() );
@@ -3984,7 +3984,7 @@ bool StdMeshers_Quadrangle_2D::check()
         iVertex = i;
       }
     }
         iVertex = i;
       }
     }
-    if ( maxAngle == 0 ) return isOK;
+    if ( maxAngle < -2*M_PI ) return isOK;
 
     // get a sign of 2D area of a corner face
 
 
     // get a sign of 2D area of a corner face
 
@@ -4010,6 +4010,9 @@ bool StdMeshers_Quadrangle_2D::check()
     }
 
     okSign = v2 ^ v1;
     }
 
     okSign = v2 ^ v1;
+
+    if ( maxAngle < 0 )
+      okSign *= -1;
   }
 
   // Look for incorrectly oriented faces
   }
 
   // Look for incorrectly oriented faces