Include :
- aggiunta di una funzione per la distanza tra punti.
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
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user