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