//-------------------------------------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TPGeDscPoint3D 类 // = Version : ver2.0 // = Author : wlw // = CreateDate : 2002-09-09 // = Description: TPGeDscPoint3D 声明 // = Maintainers: // //-------------------------------------------------------------------------------------------------------+ #ifndef _TPGEDSCPOINT3D_H_ #define _TPGEDSCPOINT3D_H_ #ifndef _TGPOINT_H_ #include "TGPoint.h" #endif #ifndef _TDUALPTRLIST_H_ #include "TDualPtrList.h" #endif #ifndef _TPGEDSCEDGE3D_H_ #include "TPGeDscEdge3D.h" #endif #ifndef _TTABLE_H_ #include "TTable.h" #endif class TGPoint3D; class GEOAPI TPGeDscPoint3D : public TGPoint { public: TPGeDscPoint3D(const TPGeDscPoint3D &pt); TPGeDscPoint3D(double X = 0,double Y = 0,double Z = 0,double value = 0); virtual ~TPGeDscPoint3D(); void SetValue(double value); double GetValue()const; void AppendValue(double value); long GetEdgeNum()const; void AppendEdge(TPGeDscEdge3D*p); void RemoveEdge(TPGeDscEdge3D*p); //找到pPtTo的边,失败返回NULL TPGeDscEdge3D* FindEdge(TPGeDscPoint3D *pPtTo); //去除所有连接数据,且通知连接点也更新,不删除边本身! void RemoveAllEdge(); //取出所有邻接点 void GetConnectPoint(TTable &connectPoint); //特殊线性插值,失败返回NULL TPGeDscPoint3D *GetFitPoint(double value,double vSnap); //pEdge为出发边,找邻边的邻接点(逆时针邻边优先),最后pEgde返回当前边 TPGeDscPoint3D* FindNext(TPGeDscEdge3D*&pEdge); TGPoint3D* CreatePoint(); protected: double m_fValue; TDualPtrList allEdge; //重合点计数 int m_ptCount; }; #endif