Files
EgtGeomKernel/DistPointCrvAux.h
T

55 lines
2.4 KiB
C++

//----------------------------------------------------------------------------
// 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 <vector>
//----------------------------------------------------------------------------
static const double LIN_TOL_APPROX = 1 ; // tolleranza di approssimazione lineare
static const double ANG_TOL_APPROX_DEG = 45 ; // tolleranza di deviazione angolare per approx
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<MinDistCalc> MDCVECTOR ; // vettore di MinDistCalc
//-----------------------------------------------------------------------------
bool CalcMinDistPointPolyLine( const Point3d& ptP, PolyLine& PL, 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) ;