我试图对多边形进行三角测量,以便在3d模型中使用。当我尝试在多边形上使用耳朵方法,点下面点,我得到红线所在的三角形。由于这些三角形内没有其他点,这可能是正确的。但我希望它只对黑线内的区域进行三角测量。任何人都知道会有这样做的算法吗?
答案 0 :(得分:8)
有许多算法可以对多边形进行三角测量,而不需要首先将单元划分为单调多边形。我的教科书Computational Geometry in C中描述了一个,其中包含与之相关的代码,可以从该链接(在C或Java中)免费下载。 您必须首先获得与边界遍历相对应的点。我的代码假定逆时针,但当然很容易改变。另请参阅Wikipedia article。也许这是你的问题,你没有一贯地组织边界点?
答案 1 :(得分:2)
通常的方法是使用梯形分解将简单多边形分割为单调多边形,然后对单调多边形进行三角剖分。 第一部分可以用扫描线算法实现。并且利用正确的数据结构(例如,双重连接的边缘列表)可以实现加速。我知道,对此的最佳描述可以在Computational Geometry中找到。 This和this似乎也很有帮助。
答案 2 :(得分:1)
Wikipedia suggest您将多边形分解为单调多边形。只需检查所有小于180度的角度,检查多边形是否凹陷 - 任何角度超过180°的角都是凹的,你需要在那个角落打破它。
答案 3 :(得分:1)
答案 4 :(得分:0)
您需要使用EarClipping算法,而不是Delaunay。请参阅以下白皮书:http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf