From e2295d25025581da9357a4c7f806c0371063f191 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Wed, 21 Jun 2023 09:39:09 +0200 Subject: [PATCH 1/9] Include : - aggiunte funzioni per superfici di bezier. --- EGkSurfBezier.h | 2 ++ EXeExecutor.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/EGkSurfBezier.h b/EGkSurfBezier.h index d53d306..6ebf797 100644 --- a/EGkSurfBezier.h +++ b/EGkSurfBezier.h @@ -37,6 +37,7 @@ class __declspec( novtable) ISurfBezier : public ISurf virtual bool SetControlPoint( int nIndU, int nIndV, const Point3d& ptCtrl, double dW) = 0 ; virtual bool SetControlPoint( int nInd, const Point3d& ptCtrl, double dW) = 0 ; virtual bool SetTrimRegion( const ISurfFlatRegion& sfrTrimReg) = 0 ; + virtual ISurfFlatRegion* GetTrimRegion( void) const = 0 ; virtual bool GetInfo( int& nDegU, int& nDegV, int& nSpanU, int& nSpanV, bool& bIsRat, bool& bTrimmed) const = 0 ; virtual const Point3d& GetControlPoint( int nIndU, int nIndV, bool* pbOk) const = 0 ; virtual const Point3d& GetControlPoint( int nInd, bool* pbOk) const = 0 ; @@ -57,6 +58,7 @@ class __declspec( novtable) ISurfBezier : public ISurf virtual bool GetControlCurveOnU( int nIndV, PolyLine& plCtrlU) const = 0 ; virtual bool GetControlCurveOnV( int nIndU, PolyLine& plCtrlV) const = 0 ; virtual const ISurfTriMesh* GetAuxSurf( void) const = 0 ; + virtual bool GetLeaves ( std::vector>& vLeaves) const = 0 ; } ; //----------------------------------------------------------------------------- diff --git a/EXeExecutor.h b/EXeExecutor.h index 3246be2..3cd861e 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -352,6 +352,7 @@ EXE_EXPORT int ExeCreateSurfTmBySurfBezier( int nParentId, int nSbezId) ; EXE_EXPORT int ExeCreateSurfTmByVolZmap( int nParentId, int nZmapId, int nPart) ; EXE_EXPORT int ExeCreateSurfBezier( int nParentId, int nDegU, int nDegV, int nSpanU, int nSpanV, const PNTVECTOR& vPnt, int nRefType) ; EXE_EXPORT int ExeCreateSurfBezierRational( int nParentId, int nDegU, int nDegV, int nSpanU, int nSpanV, const PNTUVECTOR& vPntW, int nRefType) ; +EXE_EXPORT int ExeCreateSurfBezierLeaves( int nParentId, int nSurfBzId, int nTextHeight) ; // GeomDB Create Volume EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX, @@ -601,6 +602,7 @@ EXE_EXPORT bool ExeSurfTmIntersect( int nId1, int nId2, bool bTwoColors = false) EXE_EXPORT bool ExeSurfTmResetTwoColors( int nId) ; EXE_EXPORT int ExeSurfTmSplit( int nId, int nSplitterId, int* pnCount) ; EXE_EXPORT bool ExeSurfTmCut( int nId, int nCutterId, bool bInVsOut, bool bSaveOnEq) ; +EXE_EXPORT bool ExeSurfBzTrim( int nId, int nCutterId) ; // GeomDb Volume Modify EXE_EXPORT int ExeExplodeVolume( int nId, int* pnCount) ; From 53a5e52d472f255ad2b35796d7ed220ce4d08434 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Thu, 3 Aug 2023 11:17:50 +0200 Subject: [PATCH 2/9] Include: - aggiunta importazione di file 3dm. --- EExImport3dm.h | 37 +++++++++++++++++++++++++++++++++++++ EXeConst.h | 1 + EXeExecutor.h | 1 + 3 files changed, 39 insertions(+) create mode 100644 EExImport3dm.h diff --git a/EExImport3dm.h b/EExImport3dm.h new file mode 100644 index 0000000..caed097 --- /dev/null +++ b/EExImport3dm.h @@ -0,0 +1,37 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023 +//---------------------------------------------------------------------------- +// File : EExImport3dm.h Data : 26.06.23 Versione : 2.5f1 +// Contenuto : Dichiarazione della interfaccia IImport3dm. +// +// +// +// Modifiche : 26.06.23 DB Creazione modulo. +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkGeomDB.h" +#include + +//----------------------- Macro per import/export ---------------------------- +#undef EEK_EXPORT +#if defined( I_AM_EEX) // da definirsi solo nella DLL +#define EEX_EXPORT __declspec( dllexport) +#else +#define EEX_EXPORT __declspec( dllimport) +#endif + +//----------------------------------------------------------------------------- +class __declspec( novtable) IImport3dm +{ +public : + virtual ~IImport3dm( void) {} + virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup, double dScaleFactor = 1) = 0 ; +} ; + +//----------------------------------------------------------------------------- +extern "C" { + EEX_EXPORT IImport3dm* CreateImport3dm( void) ; +} diff --git a/EXeConst.h b/EXeConst.h index 446021e..46695c7 100644 --- a/EXeConst.h +++ b/EXeConst.h @@ -29,6 +29,7 @@ enum FileType { FT_NULL = 0, FT_BTLX = 19, FT_3MF = 20, FT_OBJ = 21, + FT_3DM = 22 , FT_IGES = 31, FT_STEP = 32, FT_ACIS = 33, diff --git a/EXeExecutor.h b/EXeExecutor.h index d82c2f4..8c0c15c 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -121,6 +121,7 @@ EXE_EXPORT bool ExeImportDxf( const std::string& sFilePath, double dScaleFactor) EXE_EXPORT bool ExeImportPnt( const std::string& sFilePath, int nFlag) ; EXE_EXPORT bool ExeImportStl( const std::string& sFilePath, double dScaleFactor) ; EXE_EXPORT bool ExeImport3MF( const std::string& sFilePath) ; +EXE_EXPORT bool ExeImport3dm( const std::string& sFilePath, double dScaleFactor) ; EXE_EXPORT bool ExeAdvancedImportIsEnabled( void) ; EXE_EXPORT bool ExeAdvancedImport( const std::string& sFilePath, double dToler = 0.1) ; EXE_EXPORT bool ExeExportDxf( int nId, const std::string& sFilePath, int nFlag = 1, int nFilter = 393) ; From 76d9ed12de2001a02357b28d6b320e4441b4cda1 Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Tue, 29 Aug 2023 09:58:32 +0200 Subject: [PATCH 3/9] Include : - aggiunta funzione per la conversione da superfici NURBS a Bezier. --- EGkSurfAux.h | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 EGkSurfAux.h diff --git a/EGkSurfAux.h b/EGkSurfAux.h new file mode 100644 index 0000000..ef510b4 --- /dev/null +++ b/EGkSurfAux.h @@ -0,0 +1,54 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023-2023 +//---------------------------------------------------------------------------- +// File : EGkSurfAux.h Data : 09.08.23 Versione : +// Contenuto : Dichiarazione funzioni ausiliarie per ISurf. +// +// +// +// Modifiche : 09.08.23 DB Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkCurveComposite.h" +#include "/EgtDev/Include/EGkSurf.h" +#include "/EgtDev/Include/EGkGeoCollection.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 CNurbsSurfData +{ + int nDegU ; // grado in U + int nDegV ; // grado in V + bool bRat ; // flag di curva 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 + bool bClosedV ; // flag di superficie chiusa sul parametro V + bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2) + DBLVECTOR vU ; // vettore dei nodi in U + DBLVECTOR vV ; // vettore dei nodi in V + int nCPU ; // numero di punti di controllo in U + int nCPV ; // numero di punti di controllo in V + PNTVECTOR vCP ; // vettore dei punti di controllo + 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) {} +} ; + +//---------------------------------------------------------------------------- +//! Trasforma una curva Nurbs standard in una nuova curva di Bezier semplice o composta +EGK_EXPORT ISurf* NurbsToBezierSurface( const CNurbsSurfData& cnData) ; From 2425304b2eb69bb8e3192f4ecd1b42469dc0761b Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Thu, 21 Sep 2023 14:44:44 +0200 Subject: [PATCH 4/9] Include : - introdotto l'uso della grafica di default per le ExtDim importate da 3dm. --- EExImport3dm.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/EExImport3dm.h b/EExImport3dm.h index caed097..5465f8a 100644 --- a/EExImport3dm.h +++ b/EExImport3dm.h @@ -28,7 +28,9 @@ class __declspec( novtable) IImport3dm { public : virtual ~IImport3dm( void) {} - virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup, double dScaleFactor = 1) = 0 ; + virtual bool Import( const std::string& sFile, IGeomDB* pGDB, int nIdGroup, double dScaleFactor = 1, + double dTextHeight = 2.0, double dExtLine = 5.0, double dArrLen = 5.0, double dTextDist = 2.0, + bool bLenIsMM = true, int nDecDig = -2, std::string sFont = "ModernPropS.Nfe") = 0 ; } ; //----------------------------------------------------------------------------- From 5eb4c65db4db3aba10cdad3a687e7a0c937be56b Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Thu, 21 Sep 2023 17:07:18 +0200 Subject: [PATCH 5/9] Include : - aggiunta del 3dm Export. --- EExExport3dm.h | 40 ++++++++++++++++++++++++++++++++++++++++ EXeExecutor.h | 1 + 2 files changed, 41 insertions(+) create mode 100644 EExExport3dm.h diff --git a/EExExport3dm.h b/EExExport3dm.h new file mode 100644 index 0000000..3164f4a --- /dev/null +++ b/EExExport3dm.h @@ -0,0 +1,40 @@ +//---------------------------------------------------------------------------- +// EgalTech 2023 +//---------------------------------------------------------------------------- +// File : EExExport3dm.h Data : 21.09.23 Versione : +// Contenuto : Dichiarazione della interfaccia IExport3dm. +// +// +// +// Modifiche : 21.09.23 DB Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkGeomDB.h" +#include "/EgtDev/Include/EExExportConst.h" +#include + +//----------------------- Macro per import/export ---------------------------- +#undef EEK_EXPORT +#if defined( I_AM_EEX) // da definirsi solo nella DLL +#define EEX_EXPORT __declspec( dllexport) +#else +#define EEX_EXPORT __declspec( dllimport) +#endif + +//----------------------------------------------------------------------------- +class __declspec( novtable) IExport3dm +{ +public : + virtual ~IExport3dm( void) {} + virtual bool SetOptions( int nFilter) = 0 ; + virtual bool Export( IGeomDB* pGDB, int nId, const std::string& sFile) = 0 ; +} ; + +//----------------------------------------------------------------------------- +extern "C" { + EEX_EXPORT IExport3dm* CreateExport3dm(void) ; +} diff --git a/EXeExecutor.h b/EXeExecutor.h index c23b20c..c695400 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -127,6 +127,7 @@ EXE_EXPORT bool ExeAdvancedImport( const std::string& sFilePath, double dToler = EXE_EXPORT bool ExeExportDxf( int nId, const std::string& sFilePath, int nFlag = 1, int nFilter = 393) ; EXE_EXPORT bool ExeExportStl( int nId, const std::string& sFilePath, int nFilter = 393) ; EXE_EXPORT bool ExeExport3MF( int nId, const std::string& sFilePath, int nFilter = 393) ; +EXE_EXPORT bool ExeExport3dm( int nId, const std::string& sFilePath, int nFilter = 393) ; EXE_EXPORT bool ExeExportSvg( int nId, const std::string& sFilePath, int nFilter = 393) ; EXE_EXPORT bool ExeSetThreeJSLibDir( const std::string & sThreeJSLibDir) ; EXE_EXPORT bool ExeExportThreeJS( int nId, const std::string& sFilePath, int nFilter = 393) ; From 8471ff37ba5484015f0d9fc0ba68ca819ec4303a Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Tue, 26 Sep 2023 12:21:42 +0200 Subject: [PATCH 6/9] Include : - aggiunte coordinate U e V ai vertici delle TriMesh. --- EGkStmFromTriangleSoup.h | 6 ++++-- EGkSurfTriMesh.h | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/EGkStmFromTriangleSoup.h b/EGkStmFromTriangleSoup.h index 354e90a..f417910 100644 --- a/EGkStmFromTriangleSoup.h +++ b/EGkStmFromTriangleSoup.h @@ -35,13 +35,15 @@ class StmFromTriangleSoup EGK_EXPORT ~StmFromTriangleSoup( void) ; EGK_EXPORT bool Start( int nBuckets = GRID_STD_BUCKETS) ; EGK_EXPORT bool AddTriangle( const Triangle3d& Tria) ; - EGK_EXPORT bool AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2) ; + EGK_EXPORT bool AddTriangle( const Point3d& ptP0, const Point3d& ptP1, const Point3d& ptP2, + const double dU0 = -1, const double dV0 = -1, const double dU1 = -1, const double dV1 = -1, + const double dU2 = -1, const double dV2 = -1) ; EGK_EXPORT bool AddSurfTriMesh( const ISurfTriMesh& stmSource) ; EGK_EXPORT bool End( void) ; EGK_EXPORT ISurfTriMesh* GetSurf( void) ; private : - inline int AddVertex( const Point3d& ptP) ; + inline int AddVertex( const Point3d& ptP, const double dU = -1, const double dV = -1) ; private : ISurfTriMesh* m_pSTM ; diff --git a/EGkSurfTriMesh.h b/EGkSurfTriMesh.h index e37521a..94c1f9f 100644 --- a/EGkSurfTriMesh.h +++ b/EGkSurfTriMesh.h @@ -43,7 +43,7 @@ class __declspec( novtable) ISurfTriMesh : public ISurf virtual void SetLinearTolerance( double dLinTol) = 0 ; virtual void SetBoundaryAngle( double dBoundaryAngDeg) = 0 ; virtual void SetSmoothAngle( double dSmoothAngDeg) = 0 ; - virtual int AddVertex( const Point3d& ptVert) = 0 ; + virtual int AddVertex( const Point3d& ptVert, const double dU = -1, const double dV = -1) = 0 ; virtual bool MoveVertex( int nInd, const Point3d& ptNewVert) = 0 ; virtual int AddTriangle( const int nIdVert[3], int nTFlag = 0) = 0 ; virtual bool RemoveTriangle( int nId) = 0 ; @@ -68,8 +68,11 @@ class __declspec( novtable) ISurfTriMesh : public ISurf virtual double GetLinearTolerance( void) const = 0 ; virtual double GetSmoothAngle( void) const = 0 ; virtual bool GetVertex( int nId, Point3d& ptP) const = 0 ; + virtual bool GetVertexParam( int nId, double& dU, double& dV) const = 0 ; virtual int GetFirstVertex( Point3d& ptP) const = 0 ; + virtual int GetFirstVertexParam( int nId, double& dU, double& dV) const = 0 ; virtual int GetNextVertex( int nId, Point3d& ptP) const = 0 ; + virtual int GetNextVertexParam( int nId, double& dU, double& dV) const = 0 ; virtual bool GetTriangle( int nId, int nIdVert[3]) const = 0 ; virtual int GetFirstTriangle( int nIdVert[3]) const = 0 ; virtual int GetNextTriangle( int nId, int nIdVert[3]) const = 0 ; From a6e5145392ca2d469278218490a38cfa4e8ce4bc Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Tue, 17 Oct 2023 12:05:52 +0200 Subject: [PATCH 7/9] Include : - gestione sup NURBS periodiche - aggiunta note e cambio nomi. --- EGkCurveAux.h | 3 +++ EGkSurfAux.h | 16 ++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) 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) ; From dd74337190de9b125e8b6ed08be1e0db5e80d85c Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Mon, 23 Oct 2023 10:31:17 +0200 Subject: [PATCH 8/9] =?UTF-8?q?Include=20:=20-=20aggiunta=20la=20possibili?= =?UTF-8?q?t=C3=A0=20di=20mostrare=20le=20curve=20di=20trim=20sullo=20spaz?= =?UTF-8?q?io=20parametrico=20per=20le=20superfici=20di=20Bezier.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EXeExecutor.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EXeExecutor.h b/EXeExecutor.h index c695400..12d12a1 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -357,7 +357,7 @@ EXE_EXPORT int ExeCreateSurfTmBySurfBezier( int nParentId, int nSbezId) ; EXE_EXPORT int ExeCreateSurfTmByVolZmap( int nParentId, int nZmapId, int nPart) ; EXE_EXPORT int ExeCreateSurfBezier( int nParentId, int nDegU, int nDegV, int nSpanU, int nSpanV, const PNTVECTOR& vPnt, int nRefType) ; EXE_EXPORT int ExeCreateSurfBezierRational( int nParentId, int nDegU, int nDegV, int nSpanU, int nSpanV, const PNTUVECTOR& vPntW, int nRefType) ; -EXE_EXPORT int ExeCreateSurfBezierLeaves( int nParentId, int nSurfBzId, int nTextHeight) ; +EXE_EXPORT int ExeCreateSurfBezierLeaves( int nParentId, int nSurfBzId, int nTextHeight = 50, bool bShowTrim = false) ; // GeomDB Create Volume EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX, From 6dacd30dbdbb18d019266e8fd336bb63e793f11c Mon Sep 17 00:00:00 2001 From: Daniele Bariletti Date: Tue, 7 Nov 2023 17:56:17 +0100 Subject: [PATCH 9/9] Include : - aggiunto il flag clamped durante la conversione da superfici e curve nurbs a Bezier. --- EGkCurveAux.h | 3 ++- EGkSurfAux.h | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/EGkCurveAux.h b/EGkCurveAux.h index b685193..76ed287 100644 --- a/EGkCurveAux.h +++ b/EGkCurveAux.h @@ -32,12 +32,13 @@ struct CNurbsData 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 bClamped ; // flag di curva clamped 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) {} + CNurbsData( void) : nDeg( 0), bRat( false), bPeriodic( false), bClosed( false), bClamped( 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]) diff --git a/EGkSurfAux.h b/EGkSurfAux.h index dae7001..15254a2 100644 --- a/EGkSurfAux.h +++ b/EGkSurfAux.h @@ -37,6 +37,8 @@ struct SNurbsSurfData bool bPeriodicV ; // flag per segnalare vettore dei nodi periodico in V bool bClosedU ; // flag di superficie chiusa sul parametro U bool bClosedV ; // flag di superficie chiusa sul parametro V + bool bClampedU ; // flag di superficie clamped sul parametro U + bool bClampedV ; // flag di superficie clamped sul parametro V bool bExtraKnotes ; // flag per segnalare presenza di nodi extra all'inizio e fine (totale 2) DBLVECTOR vU ; // vettore dei nodi in U DBLVECTOR vV ; // vettore dei nodi in V @@ -46,7 +48,8 @@ struct SNurbsSurfData PNTMATRIX mCP ; // matrice dei punti di controllo DBLMATRIX mW ; // matrice dei pesi - SNurbsSurfData( 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), + bClampedU( false), bClampedV( 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])