EgtGeomKernel :
- aggiunta funzione MakeRational per curve di Bezier - aggiunta funzione per la conversione in Bezier di una ICurve.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user