Include :
- aggiunta funzione Pow per potenze con esponente intere caclolate in modo efficiente - aggiunti prototipi di funzioni per impostazione tolleranze per superfici di Bezier.
This commit is contained in:
+26
-13
@@ -1,13 +1,13 @@
|
||||
//----------------------------------------------------------------------------
|
||||
// EgalTech 2020-2024
|
||||
// EgalTech 2020-2025
|
||||
//----------------------------------------------------------------------------
|
||||
// File : EGkSurfBezier.h Data : 10.04.24 Versione : 2.6d2
|
||||
// File : EGkSurfBezier.h Data : 22.08.25 Versione : 2.7h1
|
||||
// Contenuto : Dichiarazione della interfaccia ISurfBezier.
|
||||
//
|
||||
//
|
||||
//
|
||||
// Modifiche : 22.03.20 DS Creazione modulo.
|
||||
//
|
||||
// 22.08.25 DS Aggiunte funzioni globali di impostazione tolleranze.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -17,6 +17,15 @@
|
||||
#include "/EgtDev/Include/EGkCurveComposite.h"
|
||||
#include "/EgtDev/Include/EgtPointerOwner.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
|
||||
|
||||
//----------------------- Forward --------------------------------------------
|
||||
class PolyLine ;
|
||||
class ICurveComposite ;
|
||||
class ISurfFlatRegion ;
|
||||
@@ -28,16 +37,16 @@ class __declspec( novtable) ISurfBezier : public ISurf
|
||||
public :
|
||||
enum Side { FROM_MINUS = -1, // da valori inferiori del parametro
|
||||
FROM_PLUS = 1} ; // da valori superiori del parametro
|
||||
public :
|
||||
enum RuledType { RLT_B_ISOPAR = 0, // con parametrizzazione simile tra le due curve
|
||||
RLT_B_MINDIST = 1, // con distanza minima tra le due curve, usando start e end delle curve presenti
|
||||
RLT_B_MINDIST_PLUS = 2, // con distanza minima tra le due curve, aggiungendo punti lungo le curve dove necessario
|
||||
RLT_B_LENPAR = 3} ; // aggiungo punti alla curve in modo da matchare meglio le sottocurve, inoltre parametrizzo le curve in base alla lunghezza e non al numero di curve
|
||||
enum Is_Planar { NOT_CALCULATED = -1,
|
||||
NOT_PLANAR_SURF = 0 ,
|
||||
PLANAR_SURF = 1};
|
||||
public :
|
||||
enum RuledType { RLT_B_ISOPAR = 0, // con parametrizzazione simile tra le due curve
|
||||
RLT_B_MINDIST = 1, // con distanza minima tra le due curve, usando start e end delle curve presenti
|
||||
RLT_B_MINDIST_PLUS = 2, // con distanza minima tra le due curve, aggiungendo punti lungo le curve dove necessario
|
||||
RLT_B_LENPAR = 3} ; // aggiungo punti alla curve in modo da matchare meglio le sottocurve, inoltre parametrizzo le curve in base alla lunghezza e non al numero di curve
|
||||
enum Is_Planar { NOT_CALCULATED = -1,
|
||||
NOT_PLANAR_SURF = 0 ,
|
||||
PLANAR_SURF = 1} ;
|
||||
|
||||
public : // IGeoObj
|
||||
public : // IGeoObj
|
||||
ISurfBezier* Clone( void) const override = 0 ;
|
||||
public :
|
||||
virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ;
|
||||
@@ -94,7 +103,7 @@ public : // IGeoObj
|
||||
} ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
static const double SBZ_TREG_COEFF = 1000 ;
|
||||
static const double SBZ_TREG_COEFF = 1024 ;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
inline ISurfBezier* CreateSurfBezier( void)
|
||||
@@ -112,6 +121,10 @@ inline ISurfBezier* GetSurfBezier( IGeoObj* pGObj)
|
||||
return nullptr ;
|
||||
return (static_cast<ISurfBezier*>(pGObj)) ; }
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
EGK_EXPORT void SetSurfBezierAuxSurfTol( double dTol) ;
|
||||
EGK_EXPORT void SetSurfBezierAuxSurfRefinedTol( double dTol) ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// Raccolte di puntatori a ISurfBezier
|
||||
typedef std::vector<const ISurfBezier*> CISURFBEZPVECTOR ; // vettore di puntatori a const ISurfBezier
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cmath>
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline
|
||||
int Clamp( int nVal, int nMin, int nMax)
|
||||
@@ -34,3 +36,22 @@ bool IsEven( int nVal)
|
||||
return ( ( nVal % 2) == 0) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
inline
|
||||
double Pow( double dBase, int nExp)
|
||||
{
|
||||
if ( nExp == 0)
|
||||
return 1 ;
|
||||
else if ( nExp < 0) {
|
||||
if ( dBase < -DBL_EPSILON || dBase > DBL_EPSILON)
|
||||
return Pow( 1 / dBase, -nExp) ;
|
||||
else
|
||||
return NAN ;
|
||||
}
|
||||
else {
|
||||
double dVal = 1 ;
|
||||
for ( int i = 1 ; i <= nExp ; ++ i)
|
||||
dVal *= dBase ;
|
||||
return dVal ;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user