//---------------------------------------------------------------------------- // EgalTech 2013-2014 //---------------------------------------------------------------------------- // File : DistPointCrvAux.h Data : 13.01.14 Versione : 1.5a3 // Contenuto : Dichiarazione funzioni ausiliarie per distanza punto da curva. // // // // Modifiche : 13.01.14 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkPoint3d.h" #include "/EgtDev/Include/EGkDistPointCurve.h" #include //---------------------------------------------------------------------------- static const double MIN_LEN_CONT_MDPC = 1 ; // minima lunghezza di tratto continuo di minima distanza //---------------------------------------------------------------------------- struct MinDistCalc { double dDist ; double dPar ; double dParMin ; double dParMax ; bool bParMinSing ; bool bParMaxSing ; Point3d ptQ ; MinDistCalc( void) : dDist( 0), dPar( 0), dParMin( 0), dParMax( 0), bParMinSing( false), bParMaxSing( false), ptQ( 0, 0, 0) {} MinDistCalc( double dD, double dP, double dPm, double dPM, Point3d pT) : dDist( dD), dPar( dP), dParMin( dPm), dParMax( dPM), bParMinSing( false), bParMaxSing( false), ptQ( pT) {} MinDistCalc( double dD, double dP, double dPm, double dPM, bool bMinS, bool bMaxS, Point3d pT) : dDist( dD), dPar( dP), dParMin( dPm), dParMax( dPM), bParMinSing( bMinS), bParMaxSing( bMaxS), ptQ( pT) {} } ; typedef std::vector MDCVECTOR ; // vettore di MinDistCalc //----------------------------------------------------------------------------- bool CalcMinDistPointPolyLine( const Point3d& ptP, PolyLine& PL, double dLinTol, MDCVECTOR& vApproxMin) ; bool PolishMinDistPointCurve( const Point3d& ptP, const ICurve& cCurve, const MinDistCalc& approxMin, double& dPrevPar, Point3d& ptQ) ; bool FilterMinDistPointCurve( const Point3d& ptP, const ICurve& cCurve, const MDCVECTOR& vApproxMin, double& dMinDist, MDPCIVECTOR& Info) ;