在目标c中对多边形进行三角剖分

时间:2013-06-12 07:59:27

标签: ios objective-c geometry triangulation

我需要对可能是凸面或凹面的多边形进行三角剖分,但它没有孔 在其中,是否存在使用objective-c的代码或库?

1 个答案:

答案 0 :(得分:1)

在Objective-C中对凹面多边形进行三角剖分的最佳方法是剪切方法。它需要以下步骤:

<强> 1。遍历多边形中的每个顶点并将凸点存储在数组中 - 这比听起来更难。

你需要找到最左边的点(如果有相同的x-coords则取最底点)。

确定是要顺时针还是逆时针方向。如果逆时针,使用double angle = atan2(c.y - b.y, c.x - b.x) - atan2(a.y - b.y, a.x - b.x)找到AB和BC之间的角度,其中B是顶点。

使用angle *= 180 / M_PI将角度从弧度转换为度数。如果角度为负,则将角度添加360度。

最后,如果角度是&lt; 180度,将顶点存储在一个数组中。

<强> 2。找到凸点阵列中每个点的耳朵

一个点被视为&#34; ear&#34;如果由点和相邻顶点形成的三角形内没有顶点。您将需要遍历所有点并确定多边形中的点是否位于由点ABC形成的三角形中。你可以通过找到第四点的重心坐标来做到这一点。见determine whether point lies inside triangle。将耳朵存放在阵列中。

第3。三角形形状

移除每只耳朵并在相邻点之间画一条对角线。发现任何新的凸点并确定是否有更多的耳朵。将任何新耳朵添加到阵列的末尾并继续此步骤,直到只留下3个点(1个三角形)。有关详细信息,请参阅http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf