//---------------------------------------------------------------------------- // EgalTech 2024-2024 //---------------------------------------------------------------------------- // File : EGkRotationXplaneFrame.h Data : 05.04.24 Versione : 2.6d1 // Contenuto : Dichiarazione della classe RotationXplaneFrame. // // // // Modifiche : 05.04.24 DS Creazione modulo. // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkCurve.h" #include "/EgtDev/Include/EGkGeoCollection.h" //----------------------- Macro per import/export ----------------------------- #undef EGK_EXPORT #if defined( I_AM_EGK) // da definirsi solo nella DLL #define EGK_EXPORT __declspec( dllexport) #else #define EGK_EXPORT __declspec( dllimport) #endif //---------------------------------------------------------------------------- class EGK_EXPORT RotationXplaneFrame { public : RotationXplaneFrame( void) : m_pCrv( nullptr), m_vtNorm(), m_vtNearX() {} ~RotationXplaneFrame( void) { Clear() ; } bool Set( const ICurve* pCrv, const Vector3d& vtNorm, const Vector3d& vtNearX = V_NULL) ; public : bool GetFramesByStep( double dStep, bool bUniform, FRAME3DVECTOR& vRXFrames) ; bool GetFramesBySplit( int nIntervals, FRAME3DVECTOR& vRXFrames) ; bool GetFramesByTolerance( double dTol, FRAME3DVECTOR& vRXFrames) ; private : bool Clear( void) ; bool IsValid( void) ; bool GetFrameAtParam( const Frame3d& frAct, const double dParNext, Frame3d& frNext) ; private : ICurve* m_pCrv ; // curva per il calcolo del rotation Xplane frame Vector3d m_vtNorm ; // vettore normale al piano in cui deve sempre giacere l'asse X Vector3d m_vtNearX ; // vettore a cui deve essere il pił vicino possibile la direzione X iniziale } ;