我无法弄清楚如何对x单调多边形进行三角测量。我引用了this article。我不明白如何检查顶点是否是耳朵以及是否有对角线。
答案 0 :(得分:1)
见第13/25页,"三角测量:理论"。该图说明了一个测试,看看p是否是耳朵上的顶点。它的邻居是q和r。如果线段qr是对角线,则p在耳朵上。
通过测试是否有任何其他顶点位于其上或者是否有任何其他边线线段穿过它来测试线段以查看它是否为对角线。
答案 1 :(得分:0)
您可以参考ear cutting这是一个n ^ 2时间算法。有许多简单的算法可以对一个简单的多边形进行三角测量。最简单的n log n时间算法之一包括首先将简单多边形分割为单调片段,然后对这些片段进行三角测量。在这种情况下,拆分需要n log n。在您的情况下,由于您已经拥有单调片段,因此可以在线性时间内轻松地对x单调多边形进行三角测量。
例如,在Computational Geometry一书中给出了对这种简单算法的一个很好的解释。
大致的想法是:你知道你的多边形是x单调的。因此,您将它分成两个单调链(上部和下部)。现在,您可以沿着两条链走,并在两条链之间插入对角线,而无需进行可见性检查。只要下一个较低的链顶点具有较小的x值,就会沿着上链。如果您的顶点是反射,则将其放在堆叠上,否则您将对角线插入另一侧。当您在另一个链上执行下一步时,首先将对角线插入堆栈中的每个顶点,然后继续执行此例程。