我试图三角化多边形以用于三维模型。当我尝试使用下面点分的多边形上的耳朵方法,我得到三角形的红线所在。由于这些三角形内部没有其他点,所以这可能是正确的。但我希望它只能在黑色线条内部进行三角测量。任何人都知道任何算法会做到这一点?多边形的三角剖分
多边形的三角剖分
回答
有许多算法可以对多边形进行三角化,而不需要先分割成单调多边形。其中一个在我的教科书Computational Geometry in C中有描述,它有与之关联的代码,可以从该链接自由下载(使用C或Java)。 您必须首先按顺序对应边界遍历点。我的代码假设逆时针,但当然这很容易改变。另请参阅Wikipedia article。也许这就是你的问题,你没有一贯的边界点组织?
爱你的书约瑟夫,有几个版本坐在我身后的书架上。坐落在Edelsbrunner,Shamos&Perparata和Hjelle&Daehlen之间。任何使用TIN的人都必须拥有真正的自由。 – 2012-01-17 07:55:56
@Shane:感谢您的好评! :-) – 2012-01-17 17:50:43
也许你可以在你的答案中包含代码? – Jonny 2014-10-20 07:29:10
你打破多边形成单调多边形Wikipedia suggest。通过简单地检查所有角度小于180度来检查多边形是否凹陷 - 任何角度超过180度的角都是凹的,并且您需要在该角处将其折断。
通常的做法是使用梯形分解将简单多边形分解为单调多边形,然后对单调多边形进行三角化。第一部分可以用扫描线算法实现。使用正确的数据结构(例如双向连接的边界列表)可以提高速度。我知道的最好的描述可以在Computational Geometry找到。 This和this也似乎有帮助。
您需要使用EarClipping算法,而不是Delaunay。请参阅以下白皮书:http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf
- 1. 使用约束delaunay三角剖分三角剖分多边形
- 2. 三角剖分x单调多边形
- 3. Libgdx多边形三角剖分
- 4. 由于约束Delaunay三角剖分而识别出多边形三角剖分
- 5. 基于BSP的多边形三角剖分的实例
- 6. 单调多边形的Delaunay三角剖分
- 7. Delaunay使用孔对二维多边形进行三角剖分
- 8. 使用matplotlib对多边形进行三角剖分
- 9. Delaunay三角剖分:太多的三角形
- 10. 生成具有固定内边的多边形三角剖分的算法?
- 11. 最小化凸多边形三角剖分对角线总和的算法?
- 12. 将三角形多边形划分为更小的多边形
- 13. L形区域的三角剖分
- 14. 如何从凹形Delaunay三角剖分中切出三角形?
- 15. osmdroid多边形 - 三角形
- 16. 多边形三角形c#
- 17. 三维Delaunay三角剖分
- 18. Delaunay三角剖分的合成三角形的寻找面积
- 19. OpenCV:从Delaunay三角剖分提取三角形
- 20. 如何从3D Delaunay三角剖分中获得三角形
- 21. opengl中的三角形多边形三角形es
- 22. vtkDelaunay3D保存三角剖分
- 23. 粗化2.5D三角剖分
- 24. Delaunay三角剖分opencv C++
- 25. 了解Delaunay三角剖分
- 26. 点云Delaunay三角剖分
- 27. 3D三角形 - 三角形交叉点多边形
- 28. 多个二维剖面的三角剖分
- 29. 多边形三角成三角形条带的OpenGL ES
- 30. 三角剖分:选择三角形弯角的重量,使其在穿越边界时保持不变
您可以将图形切成凸起部分并对其进行三角测量。尽管如此,对于大型复杂的人物来说也是一团糟。 – 2012-01-16 22:42:48
您的三角测量是否有任何限制(德劳内?)还是您有任何时间限制?否则答案将会相当宽泛。 – pmr 2012-01-16 22:43:53
没有限制,模型只生成一次,所以时间不是一个大问题。 – user978281 2012-01-16 22:53:23