多边形三角剖分反射顶点

polygon triangulation reflex vertex

您好,我正在尝试执行多边形三角剖分。我了解了一个简单的多边形(凹面或凸面)的剪耳法。我一直在寻找顶点是否反射。我在多个地方读到的是我无法理解的顺时针和逆时针方向。简而言之,这些方向指的是什么,请给我一些关于检查顶点是否反射的提示。 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

这是什么意思,我无法理解。

在大多数情况下,您的输入多边形是一系列连续的顶点,它们以逆时针顺序表示您的多边形。这意味着当沿着多边形的边界行走时(如果没有孔),它的内部应该在每条经过的边的左边。如果想知道单个顶点是凸的还是反射的(凸表示内角小于 180°,否则为反射),那么有几种方法。最常用的是应用determinate。如果顶点形成左转,则确定性给我们更大的零结果,这意味着三个连续的顶点 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 上是否发生左转或右转。

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

让我们选择 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点。