【发布时间】:2021-08-30 16:32:26
【问题描述】:
上下文
我必须为学校作业实施多边形三角剖分算法。我选择遵循《计算几何:算法与应用》一书中描述的算法。
输入是一个多边形,存储为一个双向连接的边列表。第一步是将多边形划分为单调块。为此,有必要执行线扫描并根据每个顶点的类型对其进行处理。据作者介绍,顶点类型描述如下:
我们在 P 中区分了五种类型的顶点——见图 3.3。其中四个 类型是转弯顶点:开始顶点、分割顶点、结束顶点和合并 顶点。它们定义如下。一个顶点 v 是一个起始顶点,如果它的两个 邻居位于其下方且 v 处的内角小于 π;如果内部 角度大于 π 那么 v 是一个分裂顶点。 (如果两个邻居都在下面 v,那么内角不能正好是 π。)如果一个顶点是一个端点,如果 它的两个邻居位于其上方,并且 v 处的内角小于 π;如果 内角大于 π 那么 v 是一个合并顶点。那些顶点 不是转弯顶点是常规顶点。因此一个规则的顶点有它的一个 它上面的邻居和下面的另一个邻居。
问题
我不知道如何区分起始顶点与分割顶点,或结束顶点与合并顶点。我该怎么做?
其他信息
我的 DCEL 数据结构是这样的
class HalfEdge {
HalfEdge *previous, *next, *twin;
Point *to, *from;
};
【问题讨论】:
标签: math geometry triangulation