X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_MesherHelper.cxx;h=c6c51ab37a9bdf0206d269593b9634ceaab1e929;hb=7c6e727b2495af2006d4ae62ab159d9045764179;hp=329c17e62402040814231a790de0a462215c5bc5;hpb=cf38d693404669f727c1f37ef95eccf830634f05;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_MesherHelper.cxx b/src/SMESH/SMESH_MesherHelper.cxx index 329c17e62..c6c51ab37 100644 --- a/src/SMESH/SMESH_MesherHelper.cxx +++ b/src/SMESH/SMESH_MesherHelper.cxx @@ -2575,7 +2575,7 @@ bool SMESH_MesherHelper::IsDistorted2D( SMESH_subMesh* faceSM, if ( !smDS || smDS->NbElements() == 0 ) return false; SMDS_ElemIteratorPtr faceIt = smDS->GetElements(); - double prevArea2D = 0; + double prevArea = 0; vector< const SMDS_MeshNode* > nodes; vector< gp_XY > uv; bool* toCheckUV = checkUV ? & checkUV : 0; @@ -2613,15 +2613,15 @@ bool SMESH_MesherHelper::IsDistorted2D( SMESH_subMesh* faceSM, uv[ i ] = helper.GetNodeUV( F, nodes[ i ], inFaceNode, toCheckUV ); // compare orientation of triangles + double faceArea = 0; for ( int iT = 0, nbT = nodes.size()-2; iT < nbT; ++iT ) { gp_XY v1 = uv[ iT+1 ] - uv[ 0 ]; gp_XY v2 = uv[ iT+2 ] - uv[ 0 ]; - double area2D = v2 ^ v1; - if (( haveBadFaces = ( area2D * prevArea2D < 0 ))) - break; - prevArea2D = area2D; + faceArea += v2 ^ v1; } + haveBadFaces = ( faceArea * prevArea < 0 ); + prevArea = faceArea; } return haveBadFaces;