Merge branch 'MoreBezier'
This commit is contained in:
@@ -335,6 +335,30 @@ AreSamePointXYEpsilon( const Point3d& ptP1, const Point3d& ptP2, double dToler)
|
||||
return ( SqDistXY( ptP1, ptP2) < ( dToler * dToler)) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Verifica se due punti sono quasi coincidenti per esclusione (tolleranza come parametro)
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
AreSamePointStepEpsilon( const Point3d& ptP1, const Point3d& ptP2, double dToler)
|
||||
{
|
||||
double dX = ptP1.x - ptP2.x ;
|
||||
if( dX > dToler)
|
||||
return false ;
|
||||
else {
|
||||
double dY = ptP1.y - ptP2.y ;
|
||||
if( dY > dToler)
|
||||
return false ;
|
||||
else {
|
||||
double dTol = dToler * dToler ;
|
||||
double dX2 = dX * dX ;
|
||||
double dY2 = dY * dY ;
|
||||
double dZ = ptP1.z- ptP2.z ;
|
||||
double dZ2 = dZ * dZ ;
|
||||
return dX2 + dY2 + dZ2 < dTol ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Verifica se due punti sono quasi coincidenti (Small error -> Approx)
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -353,6 +377,30 @@ AreSamePointXYApprox( const Point3d& ptP1, const Point3d& ptP2)
|
||||
return ( SqDistXY( ptP1, ptP2) < SQ_EPS_SMALL) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Verifica se due punti sono quasi coincidenti per esclusione (tolleranza come parametro)
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
AreSamePointStepApprox( const Point3d& ptP1, const Point3d& ptP2)
|
||||
{
|
||||
double dX = ptP1.x - ptP2.x ;
|
||||
if( dX > EPS_SMALL)
|
||||
return false ;
|
||||
else {
|
||||
double dY = ptP1.y - ptP2.y ;
|
||||
if( dY > EPS_SMALL)
|
||||
return false ;
|
||||
else {
|
||||
double dTol = SQ_EPS_SMALL ;
|
||||
double dX2 = dX * dX ;
|
||||
double dY2 = dY * dY ;
|
||||
double dZ = ptP1.z- ptP2.z ;
|
||||
double dZ2 = dZ * dZ ;
|
||||
return dX2 + dY2 + dZ2 < dTol ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Verifica se due punti sono esattamente coincidenti (Zero error -> Exact)
|
||||
//----------------------------------------------------------------------------
|
||||
@@ -371,6 +419,30 @@ AreSamePointXYExact( const Point3d& ptP1, const Point3d& ptP2)
|
||||
return ( SqDistXY( ptP1, ptP2) < SQ_EPS_ZERO) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Verifica se due punti sono quasi coincidenti per esclusione (tolleranza come parametro)
|
||||
//----------------------------------------------------------------------------
|
||||
inline bool
|
||||
AreSamePointStepExact( const Point3d& ptP1, const Point3d& ptP2)
|
||||
{
|
||||
double dX = ptP1.x - ptP2.x ;
|
||||
if( dX > EPS_ZERO)
|
||||
return false ;
|
||||
else {
|
||||
double dY = ptP1.y - ptP2.y ;
|
||||
if( dY > EPS_ZERO)
|
||||
return false ;
|
||||
else {
|
||||
double dTol = SQ_EPS_ZERO ;
|
||||
double dX2 = dX * dX ;
|
||||
double dY2 = dY * dY ;
|
||||
double dZ = ptP1.z- ptP2.z ;
|
||||
double dZ2 = dZ * dZ ;
|
||||
return dX2 + dY2 + dZ2 < dTol ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//! Restituisce una copia in locale del punto passato
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
@@ -48,3 +48,4 @@ EGK_EXPORT ISurfBezier* GetSurfBezierByScrewing( const ICurve* pCurve, const Poi
|
||||
//EGK_EXPORT ISurfBezier* GetSurfBezierTransSwept( const ICurve* pSect, const ICurve* pGuide, bool bCapEnds, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierRuled( const Point3d& ptP, const ICurve* pCurve, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierRuled( const ICurve* pCurve1, const ICurve* pCurve2, int nType, double dLinTol = 10 * EPS_SMALL) ;
|
||||
EGK_EXPORT ISurfBezier* GetSurfBezierSkinned( const CICURVEPVECTOR& vCrv, double dLinTol = 10 * EPS_SMALL) ;
|
||||
|
||||
+5
-1
@@ -33,7 +33,11 @@ public :
|
||||
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
|
||||
public : // IGeoObj
|
||||
enum Is_Planar { NOT_CALCULATED = -1,
|
||||
NOT_PLANAR_SURF = 0 ,
|
||||
PLANAR_SURF = 1};
|
||||
|
||||
public : // IGeoObj
|
||||
ISurfBezier* Clone( void) const override = 0 ;
|
||||
public :
|
||||
virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ;
|
||||
|
||||
@@ -386,6 +386,7 @@ EXE_EXPORT int ExeCreateSurfBzByRevolve( int nParentId, int nCrvId,
|
||||
bool bCapEnds, double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzByPointCurve( int nParentId, int nCrvId, const Point3d& ptAx, bool bCapEnds, double dLinTol, int nRefType) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzRuled( int nParentId, int nCrvId1, int nCrvId2, int nRuledType, double dLinTol) ;
|
||||
EXE_EXPORT int ExeCreateSurfBzSkinned( int nParentId, const INTVECTOR& nCrvId1, double dLinTol) ;
|
||||
|
||||
// GeomDB Create Volume
|
||||
EXE_EXPORT int ExeCreateVolZmap( int nParentId, const Point3d& ptIni, double dDimX,
|
||||
|
||||
Reference in New Issue
Block a user