mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-14 10:40:34 +05:00
22770: SMESH: Bi-quadratic mesh convert with medium nodes on geometry
This commit is contained in:
parent
52f2003b81
commit
e16f6412db
@ -594,14 +594,24 @@ gp_XY SMESH_MesherHelper::GetNodeUV(const TopoDS_Face& F,
|
|||||||
Handle(Geom_Surface) S = BRep_Tool::Surface(F,loc);
|
Handle(Geom_Surface) S = BRep_Tool::Surface(F,loc);
|
||||||
Standard_Boolean isUPeriodic = S->IsUPeriodic();
|
Standard_Boolean isUPeriodic = S->IsUPeriodic();
|
||||||
Standard_Boolean isVPeriodic = S->IsVPeriodic();
|
Standard_Boolean isVPeriodic = S->IsVPeriodic();
|
||||||
|
gp_Pnt2d newUV = uv;
|
||||||
if ( isUPeriodic || isVPeriodic ) {
|
if ( isUPeriodic || isVPeriodic ) {
|
||||||
Standard_Real UF,UL,VF,VL;
|
Standard_Real UF,UL,VF,VL;
|
||||||
S->Bounds(UF,UL,VF,VL);
|
S->Bounds(UF,UL,VF,VL);
|
||||||
if(isUPeriodic)
|
if ( isUPeriodic )
|
||||||
uv.SetX( uv.X() + ShapeAnalysis::AdjustToPeriod(uv.X(),UF,UL));
|
newUV.SetX( uv.X() + ShapeAnalysis::AdjustToPeriod(uv.X(),UF,UL));
|
||||||
if(isVPeriodic)
|
if ( isVPeriodic )
|
||||||
uv.SetY( uv.Y() + ShapeAnalysis::AdjustToPeriod(uv.Y(),VF,VL));
|
newUV.SetY( uv.Y() + ShapeAnalysis::AdjustToPeriod(uv.Y(),VF,VL));
|
||||||
}
|
}
|
||||||
|
if ( n2 )
|
||||||
|
{
|
||||||
|
gp_Pnt2d uv2 = GetNodeUV( F, n2, 0, check );
|
||||||
|
if ( isUPeriodic && Abs( uv.X()-uv2.X() ) < Abs( newUV.X()-uv2.X() ))
|
||||||
|
newUV.SetX( uv.X() );
|
||||||
|
if ( isVPeriodic && Abs( uv.Y()-uv2.Y() ) < Abs( newUV.Y()-uv2.Y() ))
|
||||||
|
newUV.SetY( uv.Y() );
|
||||||
|
}
|
||||||
|
uv = newUV;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(Pos->GetTypeOfPosition()==SMDS_TOP_VERTEX)
|
else if(Pos->GetTypeOfPosition()==SMDS_TOP_VERTEX)
|
||||||
|
@ -167,15 +167,15 @@ class SMESH_EXPORT SMESH_MesherHelper
|
|||||||
* a0 p0 a1
|
* a0 p0 a1
|
||||||
*/
|
*/
|
||||||
inline static gp_XY calcTFI(double x, double y,
|
inline static gp_XY calcTFI(double x, double y,
|
||||||
const gp_XY a0,const gp_XY a1,const gp_XY a2,const gp_XY a3,
|
const gp_XY& a0,const gp_XY& a1,const gp_XY& a2,const gp_XY& a3,
|
||||||
const gp_XY p0,const gp_XY p1,const gp_XY p2,const gp_XY p3);
|
const gp_XY& p0,const gp_XY& p1,const gp_XY& p2,const gp_XY& p3);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Same as "gp_XY calcTFI(...)" but in 3D
|
* \brief Same as "gp_XY calcTFI(...)" but in 3D
|
||||||
*/
|
*/
|
||||||
inline static gp_XYZ calcTFI(double x, double y,
|
inline static gp_XYZ calcTFI(double x, double y,
|
||||||
const gp_XYZ a0,const gp_XYZ a1,const gp_XYZ a2,const gp_XYZ a3,
|
const gp_XYZ& a0,const gp_XYZ& a1,const gp_XYZ& a2,const gp_XYZ& a3,
|
||||||
const gp_XYZ p0,const gp_XYZ p1,const gp_XYZ p2,const gp_XYZ p3);
|
const gp_XYZ& p0,const gp_XYZ& p1,const gp_XYZ& p2,const gp_XYZ& p3);
|
||||||
/*!
|
/*!
|
||||||
* \brief Count nb of sub-shapes
|
* \brief Count nb of sub-shapes
|
||||||
* \param shape - the shape
|
* \param shape - the shape
|
||||||
@ -725,8 +725,8 @@ public:
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
inline gp_XY
|
inline gp_XY
|
||||||
SMESH_MesherHelper::calcTFI(double x, double y,
|
SMESH_MesherHelper::calcTFI(double x, double y,
|
||||||
const gp_XY a0,const gp_XY a1,const gp_XY a2,const gp_XY a3,
|
const gp_XY& a0,const gp_XY& a1,const gp_XY& a2,const gp_XY& a3,
|
||||||
const gp_XY p0,const gp_XY p1,const gp_XY p2,const gp_XY p3)
|
const gp_XY& p0,const gp_XY& p1,const gp_XY& p2,const gp_XY& p3)
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
((1 - y) * p0 + x * p1 + y * p2 + (1 - x) * p3 ) -
|
((1 - y) * p0 + x * p1 + y * p2 + (1 - x) * p3 ) -
|
||||||
@ -735,8 +735,8 @@ SMESH_MesherHelper::calcTFI(double x, double y,
|
|||||||
//=======================================================================
|
//=======================================================================
|
||||||
inline gp_XYZ
|
inline gp_XYZ
|
||||||
SMESH_MesherHelper::calcTFI(double x, double y,
|
SMESH_MesherHelper::calcTFI(double x, double y,
|
||||||
const gp_XYZ a0,const gp_XYZ a1,const gp_XYZ a2,const gp_XYZ a3,
|
const gp_XYZ& a0,const gp_XYZ& a1,const gp_XYZ& a2,const gp_XYZ& a3,
|
||||||
const gp_XYZ p0,const gp_XYZ p1,const gp_XYZ p2,const gp_XYZ p3)
|
const gp_XYZ& p0,const gp_XYZ& p1,const gp_XYZ& p2,const gp_XYZ& p3)
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
((1 - y) * p0 + x * p1 + y * p2 + (1 - x) * p3 ) -
|
((1 - y) * p0 + x * p1 + y * p2 + (1 - x) * p3 ) -
|
||||||
|
Loading…
Reference in New Issue
Block a user