103 lines
2.6 KiB
C++
103 lines
2.6 KiB
C++
//-----------------------------------------------------------------------------+
|
|
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
|
|
// = FileName : TGPCurve3D.h
|
|
// = Version : ver2.0
|
|
// = Author : xlc
|
|
// = CreateDate : 2002-09-09
|
|
// = Description: 类的声明 平面曲线
|
|
// = Maintainers:
|
|
//
|
|
//-----------------------------------------------------------------------------+
|
|
#ifndef _TGPCURVE3D_H_
|
|
#define _TGPCURVE3D_H_
|
|
|
|
#ifndef _TWFLAG_H_
|
|
#include "TWFlag.h"
|
|
#endif
|
|
|
|
#ifndef _TPGEEXTEND2D_H_
|
|
#include "TPGeExtend2D.h"
|
|
#endif
|
|
|
|
#ifndef _TPGEEXTEND3D_H_
|
|
#include "TPGeExtend3D.h"
|
|
#endif
|
|
|
|
#ifndef _TGMATRIX_H_
|
|
#include "TGMatrix.h"
|
|
#endif
|
|
|
|
#ifndef _TPGECOORDSYS_H_
|
|
#include "TPGeCoordSys.h"
|
|
#endif
|
|
|
|
#ifndef _TGPOINT_H_
|
|
#include "TGPoint.h"
|
|
#endif
|
|
|
|
#ifndef _TGOBJECTLIST_H_
|
|
#include "TGObjectList.h"
|
|
#endif
|
|
|
|
#ifndef _TGOBJECT_H_
|
|
#include "TGObject.h"
|
|
#endif
|
|
|
|
#ifndef _TPGECURVE3D_H_
|
|
#include "TPGeCurve3D.h"
|
|
#endif
|
|
|
|
#ifndef _TTABLE_H_
|
|
#include "TTable.h"
|
|
#endif
|
|
|
|
class TPGeCurve2D;
|
|
|
|
class GEOAPI TGPCurve3D:public TPGeCurve3D
|
|
{
|
|
DECLARE_RUN_TIME_CLASS(TGPCurve3D)
|
|
public:
|
|
TGPCurve3D(TPGeCurve2D* pCurve=NULL);
|
|
TGPCurve3D(const TGPCurve3D& curve);
|
|
TGPCurve3D& operator=(const TGPCurve3D& curve);
|
|
|
|
virtual ~TGPCurve3D();
|
|
//override TPGeCurve3D
|
|
virtual bool IsClosed() const;
|
|
virtual bool IsSelfCross() const;
|
|
virtual bool IsFinite(bool bStart) const;
|
|
virtual double Area() const;
|
|
virtual double Length() const;
|
|
virtual void Reverse();
|
|
virtual TPGeCurve3D* GetSubCurve(double pa0,double pa1) const;
|
|
virtual void Split(const TTable<double>& paTable,TGObjectList& res) const;
|
|
virtual void Pa2Pt(double pa,TGPoint& pt) const;
|
|
virtual void Pt2Pa(const TGPoint& pt,double& pa) const;
|
|
|
|
//override TGObject3D
|
|
//因此曲线必须在ECS的XY平面上!
|
|
virtual bool GetPlane(TPGePlane& plane) const;
|
|
virtual TGObject2D* Convert2D() const;
|
|
|
|
//override TGObject
|
|
virtual bool IsValid() const;
|
|
virtual bool GetEcs(TPGeCoordSys& ECS) const;
|
|
virtual TGObject* Clone() const;
|
|
virtual bool Explode(TGObjectList& res) const;
|
|
|
|
//分解方法与pCurve2d一致,if IS_CLASS(pCurve2d,TPGeGLine2D)则分解为TPGeGLine3D/TPGeGLineRay3D/TPGeGLineSeg3D
|
|
virtual bool Intersect(const TGObject& obj,TGObjectList& res) const;
|
|
virtual bool IsInclude(const TGObject& obj) const;
|
|
virtual GRelation HitTest(const TGPoint& pt) const;
|
|
virtual void TransformBy(const TGMatrix& mat);
|
|
virtual bool GetExtend3D(TPGeExtend3D& ext) const;
|
|
virtual bool GetExtend2D(TPGeExtend2D& ext) const;
|
|
|
|
void Clear();
|
|
|
|
public:
|
|
TPGeCoordSys ecs;//所在实体坐标系
|
|
TPGeCurve2D* pCurve2d;//二维曲线,必须完全在ECS的XY平面上!内部释放!
|
|
};
|
|
|
|
#endif |