多边形三角剖分反射顶点

时间:2016-11-03 20:33:21

标签: computational-geometry triangulation

您好我正在尝试执行多边形三角测量。我理解简单多边形(凹面或凸面)的耳剪方法。我坚持找到一个顶点是否反射。我在多个地方读到的是时钟方向和逆时针方向,我无法理解。简而言之,这些方向指的是什么,请给我一些关于检查顶点是否反射的提示。 here is the link of an article i am following:

这是他们使用的公式:

  // Input
    VECTOR a, b, c; // the parts of our triangle.
    // if (b.x - a.x) * (c.y - b.y) - (c.x - b.x) * (b.y - a.y) > 0
    // we are counter-clockwise

这里的重点是我无法理解的。

1 个答案:

答案 0 :(得分:3)

输入多边形在大多数情况下是连续顶点的列表,它们以逆时针顺序表示多边形。这意味着当沿着多边形的边界(如果没有孔)行走时,它的内部应该位于所遍历的每个边缘的左侧。如果想知道单个顶点是凸面还是反射面(凸面意味着内角小于180°,否则反射)则有几种方法。最常用的是应用确定性。如果顶点形成左转,则确定性将结果给出更大的零,这意味着三个连续的顶点a,b和c在b处形成凸角;否则小于零。现在公式:(b.x - a.x) * (c.y - b.y) - (c.x - b.x) * (b.y - a.y) > 0正是如此。它将三个顶点转换为两个方向向量:b-ac-b然后确定这个已经是给定公式,并告诉我们是否在b上发生左转或右转。

编辑,由于评论中的问题:

enter image description here

让我们选择a =(2 1),b =(5 4)和c =(3 6)。因此,右图所示的方向由s = b-a =(3 3)和t = c-b =( - 2 2)给出。现在det(s t)给了我们s.x*t.y - t.x*s.y = 3*2 - (-2)*3 = 12 > 0。因此,如果我们站在a点,我们走到b,我们必须左转到c。