多边形的三角剖分

时间:2012-01-16 22:36:28

标签: c geometry triangulation

我试图对多边形进行三角测量,以便在3d模型中使用。当我尝试在多边形上使用耳朵方法,点下面点,我得到红线所在的三角形。由于这些三角形内没有其他点,这可能是正确的。但我希望它只对黑线内的区域进行三角测量。任何人都知道会有这样做的算法吗?

enter image description here

5 个答案:

答案 0 :(得分:8)

有许多算法可以对多边形进行三角测量,而不需要首先将单元划分为单调多边形。我的教科书Computational Geometry in C中描述了一个,其中包含与之相关的代码,可以从该链接(在C或Java中)免费下载。 您必须首先获得与边界遍历相对应的点。我的代码假定逆时针,但当然很容易改变。另请参阅Wikipedia article。也许这是你的问题,你没有一贯地组织边界点?

答案 1 :(得分:2)

通常的方法是使用梯形分解将简单多边形分割为单调多边形,然后对单调多边形进行三角剖分。 第一部分可以用扫描线算法实现。并且利用正确的数据结构(例如,双重连接的边缘列表)可以实现加速。我知道,对此的最佳描述可以在Computational Geometry中找到。 Thisthis似乎也很有帮助。

答案 2 :(得分:1)

Wikipedia suggest您将多边形分解为单调多边形。只需检查所有小于180度的角度,检查多边形是否凹陷 - 任何角度超过180°的角都是凹的,你需要在那个角落打破它。

答案 3 :(得分:1)

如果您可以使用C ++,则可以使用CGAL,特别是给定here的示例可以对一组非相交多边形进行三角测量。此示例仅在您已经知道黑色片段时才有效。

答案 4 :(得分:0)

您需要使用EarClipping算法,而不是Delaunay。请参阅以下白皮书:http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf

相关问题