Files
Include/EgkCurve.h
T
2014-01-02 07:55:21 +00:00

54 lines
2.5 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EgkCurve.h Data : 22.11.13 Versione : 1.3a1
// Contenuto : Dichiarazione della interfaccia ICurve.
//
//
//
// Modifiche : 22.11.13 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include "/EgtDev/Include/EGkGeoObj.h"
#include "/EgtDev/Include/EGkPolyLine.h"
//----------------------------------------------------------------------------
class __declspec( novtable) ICurve : public IGeoObj
{
public :
enum Side { FROM_MINUS = -1, // da valori inferiori del parametro
FROM_PLUS = 1} ; // da valori superiori del parametro
public :
virtual bool IsSimple( void) const = 0 ;
virtual bool IsClosed( void) const = 0 ;
virtual bool GetStartPoint( Point3d& ptStart) const = 0 ;
virtual bool GetEndPoint( Point3d& ptEnd) const = 0 ;
virtual bool GetDomain( double& dStart, double& dEnd) const = 0 ;
virtual bool GetLength( double& dLen) const = 0 ;
virtual bool GetPointD1D2( double dU, Side nS, Point3d& ptPos,
Vector3d* pvtDer1 = nullptr, Vector3d* pvtDer2 = nullptr) const = 0 ;
virtual bool GetPointTang( double dU, Side nS, Point3d& ptPos, Vector3d& vtTang) const = 0 ;
virtual bool GetPointDiffGeom( double dU, Side nS, CrvPointDiffGeom& oDiffG) const = 0 ;
virtual bool Invert( void) = 0 ;
virtual bool ApproxWithLines( double dLinTol, double dAngTolDeg, PolyLine& PL) const = 0 ;
virtual bool TrimStartAtParam( double dUTrim) = 0 ;
virtual bool TrimEndAtParam( double dUTrim) = 0 ;
virtual bool TrimStartAtLen( double dLenTrim) = 0 ;
virtual bool TrimEndAtLen( double dLenTrim) = 0 ;
} ;
//----------------------------------------------------------------------------
inline const ICurve* GetCurve( const IGeoObj* pGObj)
{ if ( pGObj == nullptr || ( pGObj->GetType() & GEO_CURVE) == 0)
return nullptr ;
return (static_cast<const ICurve*>(pGObj)) ; }
inline ICurve* GetCurve( IGeoObj* pGObj)
{ if ( pGObj == nullptr || ( pGObj->GetType() & GEO_CURVE) == 0)
return nullptr ;
return (static_cast<ICurve*>(pGObj)) ; }