81 lines
1.7 KiB
C++
81 lines
1.7 KiB
C++
//-------------------------------------------------------------------------------------------------------+
|
|
// 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<TPGeDscPoint3D*> &connectPoint);
|
|
|
|
//特殊线性插值,失败返回NULL
|
|
TPGeDscPoint3D *GetFitPoint(double value,double vSnap);
|
|
|
|
//pEdge为出发边,找邻边的邻接点(逆时针邻边优先),最后pEgde返回当前边
|
|
TPGeDscPoint3D* FindNext(TPGeDscEdge3D*&pEdge);
|
|
|
|
TGPoint3D* CreatePoint();
|
|
|
|
protected:
|
|
|
|
double m_fValue;
|
|
|
|
TDualPtrList<TPGeDscEdge3D*> allEdge;
|
|
|
|
//重合点计数
|
|
int m_ptCount;
|
|
};
|
|
|
|
#endif |