Files
EgtGeomKernel/CurveLine.h
T

87 lines
3.8 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : CurveLine.h Data : 16.04.13 Versione : 1.1d1
// Contenuto : Dichiarazione della classe Segmento di Linea.
//
//
//
// Modifiche : 16.04.13 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkCurveLine.h"
#include "CurveAux.h"
//----------------------------------------------------------------------------
class CurveLine : public ICurveLine
{
public :
virtual ~CurveLine( void) ;
virtual CurveLine* Clone( void) const ;
virtual GeoObjType GetType( void) const { return CRV_LINE ; }
virtual const std::string& GetKey( void) const ;
virtual bool IsValid( void) const { return ( m_nStatus == OK) ; }
virtual bool Save( std::ostream& osOut) const ;
virtual bool Load( Scanner& TheScanner) ;
virtual bool Translate( const Vector3d& vtMove) ;
virtual bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) ;
virtual bool Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dAngRad)
{ return Rotate( ptAx, vtAx, cos( dAngRad), sin( dAngRad)) ; }
virtual bool Scale( const Point3d& ptCen, double dCoeffX, double dCoeffY, double dCoeffZ) ;
virtual bool Mirror( const Point3d& ptOn, const Vector3d& vtNorm) ;
virtual bool ToGlob( const Frame3d& frRef) ;
virtual bool ToLoc( const Frame3d& frRef) ;
public :
virtual bool IsSimple( void) const { return true ; }
virtual bool IsClosed( void) const
{ return ::IsClosed( *this) ; }
virtual bool GetStartPoint( Point3d& ptStart) const ;
virtual bool GetEndPoint( Point3d& ptEnd) const ;
virtual bool GetDomain( double& dStart, double& dEnd) const ;
virtual bool GetLength( double& dLen) const ;
virtual bool GetPointD1D2( double dU, Point3d& ptPos, Vector3d& vtDer1, Vector3d& vtDer2) const ;
virtual bool GetPoint( double dU, Point3d& ptPos) const
{ return ::GetPoint( *this, dU, ptPos) ; }
virtual bool GetPointTang( double dU, Point3d& ptPos, Vector3d& vtTang) const
{ return ::GetPointTang( *this, dU, ptPos, vtTang) ; }
virtual bool GetPointTangNormCurv( double dU, Point3d& ptPos, Vector3d& vtT, Vector3d& vtN, double& dCurv) const
{ return ::GetPointTangNormCurv( *this, dU, ptPos, vtT, vtN, dCurv) ; }
virtual bool Reverse( void) ;
virtual bool TrimStartAtParam( double dUTrim) ;
virtual bool TrimEndAtParam( double dUTrim) ;
virtual bool TrimStartAtLen( double dLenTrim) ;
virtual bool TrimEndAtLen( double dLenTrim) ;
public :
virtual bool Set( const Point3d& ptStart, const Point3d& ptEnd) ;
virtual const Point3d& GetStart( void) const
{ return m_PtStart ; }
virtual const Point3d& GetEnd( void) const
{ return m_PtEnd ; }
public :
CurveLine( void) ;
inline const CurveLine& operator =( const CurveLine& clSrc)
{ if ( &clSrc != this)
Set( clSrc.m_PtStart, clSrc.m_PtEnd) ;
return *this ; }
private :
bool Validate( void) ;
private :
enum Status { ERR = 0, OK = 1, TO_VERIFY = 2} ;
static const double PAR_START ;
static const double PAR_END ;
private :
Status m_nStatus ; // stato
Point3d m_PtStart ; // punto iniziale
Point3d m_PtEnd ; // punto finale
} ;