半边数据结构
简介
用于模板参数的半边数据结构或半边数据结构(缩写为 HalfedgeDS)被定义为一种以边为中心的、能够维护顶点、边和面的关联信息的数据结构,例如平面图、多面体或其他嵌入在随机维度的可定向二维曲面。每条边都被分成两个方向相反的半边。每个半边存储一个关联的面和一个关联的顶点。每个面和每个顶点都存储一个关联的半边。半边数据结构的简化版本可以消除一些信息,例如面中的半边指针或完全不存储面。
半边数据结构被定义为一种组合数据结构,几何解释是通过构建在半边数据结构之上的类添加的。由于半边数据结构被视为实现层,因此与直接实现半边数据结构相比,可能更容易实现这些类。
半边数据结构也可以显示为四边数据结构的变体之一。通常,不可定向的 2 流形可以用四边数据表示,但此处的变体仅限于可定向的 2 流形。
示例程序
默认半边数据结构
以下示例程序应用了默认半边数据结构和装饰器类。默认半边数据结构实现了基于列表的表示。解释了所有关联和顶点的点类型。琐碎的特征类提供了为点实现的类型。该程序构建了一个循环,包括两个半边、一个顶点(Vertex)和两个面(Face1 和 Face2),并验证其有效性。
#include <CGAL/HalfedgeDS_default.h> #include <CGAL/HalfedgeDS_decorator.h> struct Traits { typedefint Point_2; }; typedef CGAL::HalfedgeDS_default<Traits> HDS1; typedef CGAL::HalfedgeDS_decorator<HDS> Decorator1; int main() { HDS1 hds1; Decorator1 decorator(hds1); decorator.create_loop(); CGAL_assertion(decorator.is_valid()); return 0; }
广告