mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-25 08:50:35 +05:00
PAL9163. Fix GetFaceNormal() for badly shaped quadrangles
This commit is contained in:
parent
2a39de2aeb
commit
5467bb25d4
@ -536,6 +536,15 @@ bool SMDS_VolumeTool::GetFaceNormal (int faceIndex, double & X, double & Y, doub
|
|||||||
XYZ aVec13( p3 - p1 );
|
XYZ aVec13( p3 - p1 );
|
||||||
XYZ cross = aVec12.Crossed( aVec13 );
|
XYZ cross = aVec12.Crossed( aVec13 );
|
||||||
|
|
||||||
|
if ( myFaceNbNodes[ faceIndex ] == 4 ) {
|
||||||
|
XYZ p4 ( myFaceNodes[3] );
|
||||||
|
XYZ aVec14( p4 - p1 );
|
||||||
|
XYZ cross2 = aVec13.Crossed( aVec14 );
|
||||||
|
cross.x += cross2.x;
|
||||||
|
cross.y += cross2.y;
|
||||||
|
cross.z += cross2.z;
|
||||||
|
}
|
||||||
|
|
||||||
double size = cross.Magnitude();
|
double size = cross.Magnitude();
|
||||||
if ( size <= DBL_MIN )
|
if ( size <= DBL_MIN )
|
||||||
return false;
|
return false;
|
||||||
@ -952,8 +961,9 @@ bool SMDS_VolumeTool::setFace( int faceIndex )
|
|||||||
|
|
||||||
// set face nodes
|
// set face nodes
|
||||||
myFaceNodes = new const SMDS_MeshNode* [myFaceNbNodes + 1];
|
myFaceNodes = new const SMDS_MeshNode* [myFaceNbNodes + 1];
|
||||||
for ( int iNode = 0; iNode <= myFaceNbNodes; iNode++ )
|
for ( int iNode = 0; iNode < myFaceNbNodes; iNode++ )
|
||||||
myFaceNodes[ iNode ] = myVolumeNodes[ myFaceNodeIndices[ iNode ]];
|
myFaceNodes[ iNode ] = myVolumeNodes[ myFaceNodeIndices[ iNode ]];
|
||||||
|
myFaceNodes[ myFaceNbNodes ] = myFaceNodes[ 0 ];
|
||||||
}
|
}
|
||||||
|
|
||||||
myCurFace = faceIndex;
|
myCurFace = faceIndex;
|
||||||
|
Loading…
Reference in New Issue
Block a user