X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH%2FSMESH_MesherHelper.cxx;h=c6c51ab37a9bdf0206d269593b9634ceaab1e929;hb=5f4aaf693bb87b8f0b56311c7e602d5d92f07aee;hp=eac668694252561560795e7f189f6ce4ff4ac8fe;hpb=b0647ff5ab38e3d44a7d6aaa8cdb1b12e12a5959;p=modules%2Fsmesh.git diff --git a/src/SMESH/SMESH_MesherHelper.cxx b/src/SMESH/SMESH_MesherHelper.cxx index eac668694..c6c51ab37 100644 --- a/src/SMESH/SMESH_MesherHelper.cxx +++ b/src/SMESH/SMESH_MesherHelper.cxx @@ -2464,7 +2464,7 @@ namespace //======================================================================= //function : IsStructured -//purpose : Return true if 2D mesh on FACE is structured +//purpose : Return true if 2D mesh on FACE is a structured rectangle //======================================================================= bool SMESH_MesherHelper::IsStructured( SMESH_subMesh* faceSM ) @@ -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;