diff --git a/EGkPoint3d.h b/EGkPoint3d.h index 699a514..18af2d4 100644 --- a/EGkPoint3d.h +++ b/EGkPoint3d.h @@ -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 //---------------------------------------------------------------------------- diff --git a/EgtKeyCodes.h b/EgtKeyCodes.h index d21a5da..af42c4e 100644 --- a/EgtKeyCodes.h +++ b/EgtKeyCodes.h @@ -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 ; //----------------------------------------------------------------------------