半边数据结构


简介

用于模板参数的半边数据结构或半边数据结构(缩写为 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;
}

更新于: 2020年1月8日

583 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告