54 lines
2.5 KiB
C++
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)) ; }
|