Include :

- unificazione funzioni AreSamePoint***
- aggiornamento mensile codici protezione librerie.
This commit is contained in:
Dario Sassi
2024-08-06 14:41:25 +02:00
parent 30a394960c
commit c57e44db02
2 changed files with 31 additions and 76 deletions
+30 -75
View File
@@ -323,7 +323,16 @@ DirDist( const Point3d& ptP1, const Point3d& ptP2, Vector3d& vtDir, double& dDis
inline bool
AreSamePointEpsilon( const Point3d& ptP1, const Point3d& ptP2, double dToler)
{
return ( SqDist( ptP1, ptP2) < ( dToler * dToler)) ;
double dX = ptP1.x - ptP2.x ;
if ( abs( dX) > dToler)
return false ;
double dY = ptP1.y - ptP2.y ;
if ( abs( dY) > dToler)
return false ;
double dZ = ptP1.z - ptP2.z ;
if ( abs( dZ) > dToler)
return false ;
return ( ( dX * dX + dY * dY + dZ * dZ) < ( dToler * dToler)) ;
}
//----------------------------------------------------------------------------
@@ -335,37 +344,22 @@ 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)
//----------------------------------------------------------------------------
inline bool
AreSamePointApprox( const Point3d& ptP1, const Point3d& ptP2)
{
return ( SqDist( ptP1, ptP2) < SQ_EPS_SMALL) ;
double dX = ptP1.x - ptP2.x ;
if ( abs( dX) > EPS_SMALL)
return false ;
double dY = ptP1.y - ptP2.y ;
if ( abs( dY) > EPS_SMALL)
return false ;
double dZ = ptP1.z - ptP2.z ;
if ( abs( dZ) > EPS_SMALL)
return false ;
return ( ( dX * dX + dY * dY + dZ * dZ) < SQ_EPS_SMALL) ;
}
//----------------------------------------------------------------------------
@@ -377,37 +371,22 @@ 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)
//----------------------------------------------------------------------------
inline bool
AreSamePointExact( const Point3d& ptP1, const Point3d& ptP2)
{
return ( SqDist( ptP1, ptP2) < SQ_EPS_ZERO) ;
double dX = ptP1.x - ptP2.x ;
if ( abs( dX) > EPS_ZERO)
return false ;
double dY = ptP1.y - ptP2.y ;
if ( abs( dY) > EPS_ZERO)
return false ;
double dZ = ptP1.z - ptP2.z ;
if ( abs( dZ) > EPS_ZERO)
return false ;
return ( ( dX * dX + dY * dY + dZ * dZ) < SQ_EPS_ZERO) ;
}
//----------------------------------------------------------------------------
@@ -419,30 +398,6 @@ 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
//----------------------------------------------------------------------------
+1 -1
View File
@@ -25,7 +25,7 @@
//----------------------------------------------------------------------------
const int KEY_BASELIB_PROD = 207 ;
const int KEY_BASELIB_VER = 2607 ;
const int KEY_BASELIB_VER = 2608 ;
const int KEY_BASELIB_LEV = 1 ;
//----------------------------------------------------------------------------