diff --git a/EGkCurveAux.h b/EGkCurveAux.h index e12d361..b685193 100644 --- a/EGkCurveAux.h +++ b/EGkCurveAux.h @@ -40,6 +40,9 @@ struct CNurbsData CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bExtraKnotes( false) {} } ; +// N.B. : in caso la curva sia razionale i punti di controllo sono in forma NON OMOGENEA [ x, y, z, w] ( dove la forma OMOGENEA è [ w*x, w*y, w*z, w]) +// tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA + //---------------------------------------------------------------------------- //! Trasforma un arco in una nuova curva di Bezier semplice o composta EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc) ; diff --git a/EGkSurfAux.h b/EGkSurfAux.h index ef510b4..dae7001 100644 --- a/EGkSurfAux.h +++ b/EGkSurfAux.h @@ -27,12 +27,12 @@ #endif //---------------------------------------------------------------------------- -//! Struttura dati per curva Nurbs -struct CNurbsSurfData +//! Struttura dati per superficie Nurbs +struct SNurbsSurfData { int nDegU ; // grado in U int nDegV ; // grado in V - bool bRat ; // flag di curva razionale (pesi non tutti unitari) + bool bRat ; // flag di superficie razionale (pesi non tutti unitari) bool bPeriodicU ; // flag per segnalare vettore dei nodi periodico in U bool bPeriodicV ; // flag per segnalare vettore dei nodi periodico in V bool bClosedU ; // flag di superficie chiusa sul parametro U @@ -46,9 +46,13 @@ struct CNurbsSurfData PNTMATRIX mCP ; // matrice dei punti di controllo DBLMATRIX mW ; // matrice dei pesi - CNurbsSurfData( void) : nDegU( 0), nDegV( 0), bRat( false), bPeriodicU( false), bPeriodicV( false), bClosedU( false), bClosedV( false), bExtraKnotes( false) {} + SNurbsSurfData( void) : nDegU( 0), nDegV( 0), bRat( false), bPeriodicU( false), bPeriodicV( false), bClosedU( false), bClosedV( false), bExtraKnotes( false) {} } ; +// N.B. : in caso la superficie sia razionale i punti di controllo sono in forma NON OMOGENEA [ x, y, z, w] ( dove la forma omogenea è [ w*x, w*y, w*z, w]) +// tutte le operazioni richiedono la forma OMOGENEA, finite le quali posso riportarmi alla forma NON OMOGENEA + //---------------------------------------------------------------------------- -//! Trasforma una curva Nurbs standard in una nuova curva di Bezier semplice o composta -EGK_EXPORT ISurf* NurbsToBezierSurface( const CNurbsSurfData& cnData) ; +//! Trasforma una superficie Nurbs standard in una nuova superficie di Bezier semplice o composta +EGK_EXPORT bool NurbsSurfaceCanonicalize( SNurbsSurfData& snData) ; +EGK_EXPORT ISurf* NurbsToBezierSurface( const SNurbsSurfData& snData) ;