EgtGeomKernel :

- aggiunta funzione MakeRational per curve di Bezier
- aggiunta funzione per la conversione in Bezier di una ICurve.
This commit is contained in:
Daniele Bariletti
2024-05-08 17:49:31 +02:00
parent a3f05c41fe
commit d6567e94c4
3 changed files with 49 additions and 0 deletions
+34
View File
@@ -403,6 +403,40 @@ CopyThickness( const ICurve* pSouCrv, ICurve* pDestCrv)
return true ;
}
//----------------------------------------------------------------------------
ICurve*
CurveToBezierCurve( const ICurve* pCrv)
{
PtrOwner<ICurve> pBezierForm ;
switch ( pCrv->GetType()) {
case CRV_LINE :{
const ICurveLine* pCrvLine = static_cast<const ICurveLine*>( pCrv) ;
pBezierForm.Set( LineToBezierCurve( pCrvLine)) ;
break ;
}
case CRV_ARC : {
const ICurveArc* pCrvArc = static_cast<const ICurveArc*>( pCrv) ;
pBezierForm.Set( ArcToBezierCurve( pCrvArc)) ;
break ;
}
case CRV_COMPO : {
const ICurveComposite* pCrvCompo = static_cast<const ICurveComposite*>( pCrv) ;
pBezierForm.Set( CompositeToBezierCurve( pCrvCompo)) ;
break ;
}
case CRV_BEZIER : {
const ICurveBezier* pCrvBezier = static_cast<const ICurveBezier*>( pCrv) ;
pBezierForm.Set( BezierToBasicBezierCurve( pCrvBezier)) ;
break ;
}
default :
return nullptr ;
break ;
}
return Release( pBezierForm) ;
}
//----------------------------------------------------------------------------
ICurveBezier*
LineToBezierCurve( const ICurveLine* pCrvLine)
+14
View File
@@ -2208,3 +2208,17 @@ CurveBezier::ResetVoronoiObject() const
delete m_pVoronoiObj ;
m_pVoronoiObj = nullptr ;
}
//----------------------------------------------------------------------------
bool
CurveBezier::MakeRational( void)
{
if ( m_bRat)
return true ;
// creo il vettore dei pesi e li setto tutti a 1
m_vWeCtrl.assign( m_nDeg + 1, 1) ;
// aggiorno il flag rational
m_bRat = true ;
return true ;
}
+1
View File
@@ -148,6 +148,7 @@ class CurveBezier : public ICurveBezier, public IGeoObjRW
double GetControlWeight( int nInd, bool* pbOk = NULL) const override ;
bool GetControlPolygonLength( double& dLen) const override ;
int GetSingularParam( double& dPar) const override ;
bool MakeRational( void) override ;
public : // IGeoObjRW
int GetNgeId( void) const override ;