diff --git a/EGkDistPointCurve.h b/EGkDistPointCurve.h index 1baf5c3..be106a5 100644 --- a/EGkDistPointCurve.h +++ b/EGkDistPointCurve.h @@ -25,6 +25,19 @@ #endif +//---------------------------------------------------------------------------- +enum MdPCiType { MDPCI_NORMAL, MDPCI_START_CONT, MDPCI_END_CONT} ; +struct MinDistPCInfo { + MdPCiType nFlag ; + double dPar ; + Point3d ptQ ; + MinDistPCInfo( void) + : nFlag( MDPCI_NORMAL), dPar( 0), ptQ( 0, 0, 0) {} + MinDistPCInfo( MdPCiType nF, double dP, Point3d pT) + : nFlag( nF), dPar( dP), ptQ( pT) {} +} ; +typedef std::vector MDPCIVECTOR ; // vettore di MinDistPCInfo + //----------------------------------------------------------------------------- class DistPointCurve { @@ -34,8 +47,11 @@ class DistPointCurve public : EGK_EXPORT bool GetSqDist( double& dSqDist) ; EGK_EXPORT bool GetDist( double& dDist) ; - EGK_EXPORT bool GetPointMinDist( Point3d& ptMinDist, bool* pbDet = nullptr) ; - EGK_EXPORT bool GetParamAtPointMinDist( double& dParam, bool* pbDet = nullptr) ; + EGK_EXPORT int GetNbrMinDist( void) { return m_Info.size() ; } + EGK_EXPORT bool GetMinDistPoint( int nInd, Point3d& ptMinDist, int& nFlag) ; + EGK_EXPORT bool GetMinDistPoint( double dNearParam, Point3d& ptMinDist, int& nFlag) ; + EGK_EXPORT bool GetParamAtMinDistPoint( int nInd, double& dParam, int& nFlag) ; + EGK_EXPORT bool GetParamAtMinDistPoint( double dNearParam, double& dParam, int& nFlag) ; private : DistPointCurve( void) ; @@ -45,9 +61,8 @@ class DistPointCurve void CrvCompositeCalculate( const Point3d& ptP, const ICurve& Curve) ; private : - bool m_bDet ; - double m_dDist ; - double m_dParam ; - Point3d m_ptMinDist ; + double m_dDist ; + MDPCIVECTOR m_Info ; + const ICurve* m_pCurve ; } ; diff --git a/EgtPointerOwner.h b/EgtPointerOwner.h index 16a6886..b595777 100644 --- a/EgtPointerOwner.h +++ b/EgtPointerOwner.h @@ -19,7 +19,7 @@ template class PtrOwner { public : - explicit PtrOwner( T* pT) { m_pT = pT ; } + explicit PtrOwner( T* pT) : m_pT( pT) {} ~PtrOwner( void) { if ( m_pT != nullptr) delete m_pT ; m_pT = nullptr ; } T& operator*() const { return *m_pT ; } T* operator->() const { return m_pT ; }