当前位置: 首页 > 知识库问答 >
问题:

多边形三角剖分中两段内角的计算

南宫嘉
2023-03-14

我必须为学校作业实现多边形三角测量算法。我选择遵循《计算几何:算法与应用》一书中描述的算法。

输入是存储为双连通边列表的多边形。第一步是将多边形分割成单调的部分。为了做到这一点,有必要执行线扫描,并根据每个顶点的类型对其进行处理。根据作者的说法,顶点类型描述如下:

我们在P-图中区分了五种类型的顶点,见图3.3。其中四种类型是旋转顶点:开始顶点、分割顶点、结束顶点和合并顶点。它们的定义如下。如果一个顶点v的两个邻接点位于其下方,且v处的内角小于π,则该顶点v为起始顶点;如果内角大于π,那么v是一个分裂顶点。(如果两个邻域都在v以下,则内角不能精确为π。)如果一个顶点的两个相邻顶点位于其上方,且v处的内角小于π,则该顶点为endpoint;如果内角大于π,那么v是一个合并顶点。非旋转顶点的顶点是规则顶点。因此,一个规则顶点的一个邻居在其上方,另一个邻居在其下方。

我不知道如何区分起始顶点和分割顶点,或结束顶点和合并顶点。我该怎么做?

我的DCELhtml" target="_blank">数据结构是这样的

class HalfEdge {
 HalfEdge *previous, *next, *twin;
 Point *to, *from;
};

共有1个答案

孙洋
2023-03-14

也许如果你跟踪多边形边界的反时钟方向(即保持边指向),你可以区分两者。假设连续的顶点是v[i-1],v[i],v[i 1]和v[i-1],v[i 1]低于v[i]。然后形成2D向量v[i]-v[i-1]和v[i 1]-v[i]。之后,计算行列式det(v[i]-v[i-1],v[i 1]-v[i])。如果行列式为正,则顶点开始。如果行列式为负,则顶点被分割。

 类似资料:
  • 我试图使用众所周知的2遍扫线算法实现多边形三角剖分,该算法在第一遍扫线中将多边形细分为单调子分量,然后在第二遍对这些单调分量进行三角剖分。我目前的实现适用于一般情况,但我一辈子都想不出如何调整它来处理包含多个重合边缘段的输入(从左到右扫描时具有相等的x坐标或从右到左扫描时具有相等的y坐标的段)。 编辑:我刚意识到我的框架这个问题的方式使它相当长和冗长,所以这里有一个快速的TL;Dr;对于任何了解多

  • 我有一个多边形的顶点列表,我试图在一个较大的三角形内创建一个等边三角形网格,以输入多边形的当前顶点为中心。 内部三角形边的大小由确定,它将容器边划分为相等的部分。最后,我想在Python的列表中存储所有这些三角形(包括原来的大三角形)顶点的坐标。 我提出的一个方法是: null

  • 本文向大家介绍python 打印直角三角形,等边三角形,菱形,正方形的代码,包括了python 打印直角三角形,等边三角形,菱形,正方形的代码的使用技巧和注意事项,需要的朋友参考一下 三角形 等腰直角三角形1 2.7 python:打印直角三角形 coding=utf-8 方式一 方式二 #打印实心等边三角形 #打印菱形 #实心正方形 #空心正方形 知识点说明: python ,end=''备注

  • 如何使三角形的边框颜色不同于其他形状?如果我改变笔画的颜色,它有点起作用,好吧,我有两个不同颜色的边,没有第三个边框。我该如何改正呢?

  • 本文向大家介绍使用python计算三角形的斜边例子,包括了使用python计算三角形的斜边例子的使用技巧和注意事项,需要的朋友参考一下 我就废话不多说了,还是直接看代码吧 注:中间的空格符是一对引号加一个空格 补充知识:三角形已知两边一斜角时求第三边的公式 已知三角形中的一个角θ \thetaθ和其对边b bb以及侧边a aa, 第三条边长的计算公式为 证明很简单, 用海伦公式和三角形两边一内角的

  • 问题内容: http://upload.wikimedia.org/math/f/e/5/fe56529cdaaaa9bb2f71c1ad8a1a454f.png <-区域公式 我试图从2D笛卡尔坐标系中的3个点(x,y)计算三角形的面积。我假设我的上述公式正确产生了三角形的面积(如果不是,请更正我),但是我的编译器说“运算符- 无法应用于java.awt.Point,java.awt.Point