//---------------------------------------------------------------------------- // EgalTech 2013-2014 //---------------------------------------------------------------------------- // File : DistPointLine.h Data : 02.01.14 Versione : 1.5a1 // Contenuto : Dichiarazione della classe distanza punto da linea/segmento. // // // // Modifiche : 30.12.12 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkPoint3d.h" #include "/EgtDev/Include/EGkCurveLine.h" //----------------------------------------------------------------------------- class DistPointLine { friend class DistPointCurve ; public : DistPointLine( const Point3d& ptP, const ICurveLine& crvLine, bool bIsSegment = true) ; DistPointLine( const Point3d& ptP, const Point3d& ptIni, const Point3d& ptFin, bool bIsSegment = true) ; DistPointLine( const Point3d& ptP, const Point3d& ptIni, const Vector3d& vtDir, double dLen, bool bIsSegment = true) ; public : bool GetSqDist( double& dSqDist) ; bool GetDist( double& dDist) ; bool IsSmall( void) { double dSqDist ; return ( GetSqDist( dSqDist) && dSqDist < EPS_SMALL * EPS_SMALL) ; } bool IsZero( void) { double dSqDist ; return ( GetSqDist( dSqDist) && dSqDist < EPS_ZERO * EPS_ZERO) ; } int GetNbrMinDist( void) { return (( m_dSqDist < 0) ? 0 : 1) ; } bool GetMinDistPoint( Point3d& ptMinDist) ; bool GetParamAtMinDistPoint( double& dParam) ; private : DistPointLine( void) ; void Calculate( const Point3d& ptP, const Point3d& ptIni, const Vector3d& vtDir, double dLen, bool bIsSegment) ; private : double m_dSqDist ; double m_dDist ; double m_dParam ; Point3d m_ptMinDist ; } ;