Files
envi-code/SourceCode/Code2026/tg_shs/inc/subgeo/TPGeGraph.h
T
2026-09-28 15:28:50 +08:00

77 lines
1.5 KiB
C++

//-----------------------------------------------------------------------------+
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
// = FileName : TPGeGraph.h
// = Version : ver2.0
// = Author : xlc
// = CreateDate : 2002-09-09
// = Description: 类的声明 有向图,支持仅一端有限曲线
// = Maintainers:
//
//-----------------------------------------------------------------------------+
#ifndef _TPGEGRAPH_H_
#define _TPGEGRAPH_H_
#ifndef _TGPOINT_H_
#include "TGPoint.h"
#endif
#ifndef _TPGELINE3D_H_
#include "TPGeLine3D.h"
#endif
#ifndef _TGVECTOR2D_H_
#include "TGVector2D.h"
#endif
#ifndef _TGNODE_H_
#include "TGNode.h"
#endif
#ifndef _TPGEEDGE_H_
#include "TPGeEdge.h"
#endif
#ifndef _TPDLIST_H_
#include "TPDList.h"
#endif
#ifndef _TGOBJECTLIST_H_
#include "TGObjectList.h"
#endif
#ifndef _TPGEEDGEPATH_H_
#include "TPGeEdgePath.h"
#endif
class TPGeCurve2D;
class GEOAPI TPGeGraph
{
public:
virtual ~TPGeGraph();
//找已有结点,否则新建结点并返回之
TGNode* FindOrAddNode(const TGPoint&pt);
//加入一边,不能自交但可封闭,pSeg内部释放
virtual void AppendEdge(TPGeCurve2D*pSeg);
//加入一组边,curves将被置空
void AppendEdge(TGObjectList&curves);
//现只用于面布尔运算//找所有有效环路,所有路径之间都无相同边,同一路径上的一个点最多属于两条边
void FindLoop(TPDList<TPGeEdgePath>&res);
//找所有有效环路曲线和完全无限曲线,结果中所有曲线之间无相同边,都不自交
void FindCurve(TGObjectList&closed,TGObjectList&infinite);
protected:
//节点表
TPDList<TGNode> nodeTable;
//边表
TPDList<TPGeEdge> edgeTable;
};
#endif