3e8e7e2e2a
- aggiornamento a VS2013 - migliorato SimpleOffset e implementato anche per CurveComposite - il lato di offset ora viene dal segno dello spostamento ( + a destra, - a sinistra) - il vettore estrusione ora è la normale al piano di offset (se non c'è uso Z+) - aggiunto a tutte le entità geometriche membro m_nTempProp intero temporaneo - migliorata DistPointCrvBezier e DistPointArc - corretta IntersLineArc con linee che non giacciono nel piano XY - corretta ModifyStart di CurveArc - a PolyArc aggiunto metodo ParamLinearTransform - aggiunta gestione riferimento di griglia (CPlane).
53 lines
2.2 KiB
C++
53 lines
2.2 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 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, 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) ;
|
|
|