mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-04-15 13:51:20 +05:00
0020982: EDF 1547 SMESH: Creation of non-conformal quadratic pyramids
double MaxLinearSize2() const; // Return maximal square distance between connected corner nodes
This commit is contained in:
parent
9731c7f189
commit
3a58968846
@ -1452,6 +1452,45 @@ double SMDS_VolumeTool::MinLinearSize2() const
|
|||||||
return minSize;
|
return minSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Return maximal square distance between connected corner nodes
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
double SMDS_VolumeTool::MaxLinearSize2() const
|
||||||
|
{
|
||||||
|
double maxSize = -1e+100;
|
||||||
|
int iQ = myVolume->IsQuadratic() ? 2 : 1;
|
||||||
|
|
||||||
|
// store current face data
|
||||||
|
int curFace = myCurFace, nbN = myFaceNbNodes;
|
||||||
|
int* ind = myFaceNodeIndices;
|
||||||
|
myFaceNodeIndices = NULL;
|
||||||
|
const SMDS_MeshNode** nodes = myFaceNodes;
|
||||||
|
myFaceNodes = NULL;
|
||||||
|
|
||||||
|
// it seems that compute distance twice is faster than organization of a sole computing
|
||||||
|
myCurFace = -1;
|
||||||
|
for ( int iF = 0; iF < myNbFaces; ++iF )
|
||||||
|
{
|
||||||
|
setFace( iF );
|
||||||
|
for ( int iN = 0; iN < myFaceNbNodes; iN += iQ )
|
||||||
|
{
|
||||||
|
XYZ n1( myFaceNodes[ iN ]);
|
||||||
|
XYZ n2( myFaceNodes[(iN + iQ) % myFaceNbNodes]);
|
||||||
|
maxSize = std::max( maxSize, (n1 - n2).SquareMagnitude());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// restore current face data
|
||||||
|
myCurFace = curFace;
|
||||||
|
myFaceNbNodes = nbN;
|
||||||
|
myFaceNodeIndices = ind;
|
||||||
|
delete [] myFaceNodes; myFaceNodes = nodes;
|
||||||
|
|
||||||
|
return maxSize;
|
||||||
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief check that only one volume is build on the face nodes
|
* \brief check that only one volume is build on the face nodes
|
||||||
|
@ -128,6 +128,9 @@ class SMDS_EXPORT SMDS_VolumeTool
|
|||||||
double MinLinearSize2() const;
|
double MinLinearSize2() const;
|
||||||
// Return minimal square distance between connected corner nodes
|
// Return minimal square distance between connected corner nodes
|
||||||
|
|
||||||
|
double MaxLinearSize2() const;
|
||||||
|
// Return maximal square distance between connected corner nodes
|
||||||
|
|
||||||
// -------------
|
// -------------
|
||||||
// info on faces
|
// info on faces
|
||||||
// -------------
|
// -------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user