82a68d3a72
- aggiunti prototipi per creazione Regioni - aggiornamenti vari.
67 lines
2.9 KiB
C
67 lines
2.9 KiB
C
//----------------------------------------------------------------------------
|
|
// EgalTech 2014-2014
|
|
//----------------------------------------------------------------------------
|
|
// File : EgkCurveAux.h Data : 23.05.14 Versione : 1.5e9
|
|
// Contenuto : Dichiarazione funzioni ausiliarie per ICurve.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 23.05.14 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "/EgtDev/Include/EGkCurve.h"
|
|
|
|
|
|
//----------------------- Macro per import/export ----------------------------
|
|
#undef EGK_EXPORT
|
|
#if defined( I_AM_EGK) // da definirsi solo nella DLL
|
|
#define EGK_EXPORT __declspec( dllexport)
|
|
#else
|
|
#define EGK_EXPORT __declspec( dllimport)
|
|
#endif
|
|
|
|
//----------------------------------------------------------------------------
|
|
//! Struttura dati per curva Nurbs
|
|
struct CNurbsData
|
|
{
|
|
int nDeg ; // grado
|
|
bool bRat ; // flag di curva razionale (pesi non tutti unitari)
|
|
bool bPeriodic ; // flag per segnalare vettore dei nodi periodico
|
|
bool bClosed ; // flag di curva chiusa
|
|
bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2)
|
|
DBLVECTOR vU ; // vettore dei nodi
|
|
PNTVECTOR vCP ; // vettore dei punti di controllo
|
|
DBLVECTOR vW ; // vettore dei pesi
|
|
|
|
CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bExtraKnotes( false) {}
|
|
} ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
//! Trasforma un arco in una nuova curva di Bezier semplice o composta
|
|
EGK_EXPORT ICurve* ArcToBezierCurve( const ICurve* pArc) ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
//! Trasforma una curva in una nuova curva semplice o composta senza archi (solo linee o curve di Bezier)
|
|
EGK_EXPORT ICurve* CurveToNoArcsCurve( const ICurve* pCrv) ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
//! Trasformo una curva in una nuova curva semplice o composta con linee o archi perp. a estrusione
|
|
EGK_EXPORT ICurve* CurveToArcsPerpExtrCurve( const ICurve* pCrv, double dLinTol, double dAngTolDeg) ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
//! Rende canonica la rappresentazione della curva Nurbs
|
|
EGK_EXPORT bool NurbsCurveCanonicalize( CNurbsData& cnData) ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
//! Trasforma una curva Nurbs standard in una nuova curva di Bezier semplice o composta
|
|
EGK_EXPORT ICurve* NurbsToBezierCurve( const CNurbsData& cnData) ;
|
|
|
|
//----------------------------------------------------------------------------
|
|
//! Proietta la curva sul piano indicato
|
|
EGK_EXPORT ICurve* ProjectCurveOnPlane( const ICurve& crCrv, const Plane3d& plPlane) ;
|
|
|