如何对内部有和没有顶点和孔的多边形进行三角剖分 - 可以进行德劳内三角剖分吗?
Posted
技术标签:
【中文标题】如何对内部有和没有顶点和孔的多边形进行三角剖分 - 可以进行德劳内三角剖分吗?【英文标题】:How to triangulate a polygon with and without vertices and holes inside - delaunay triangulation possible? 【发布时间】:2021-10-09 12:42:00 【问题描述】:我遇到了以下问题:我正在研究一种算法,输出将是一个任意多边形。多边形可以是凹面的,其中有孔,也可以有边角为 180 度的顶点。
我需要对所述多边形进行三角剖分,其中包含和不包含其他顶点。 delaunay 三角剖分可以处理这个问题,特别是如果我只有多边形内部没有顶点?我也许可以避免多边形内的洞,如果这样可以减轻事情。
感谢阅读
【问题讨论】:
【参考方案1】:您可以使用约束三角剖分(Delaunay 与否)对多边形进行三角剖分。有一个使用CGAL的例子here。
【讨论】:
【参考方案2】:您可以看看这些 Fade2D 示例:
https://www.geom.at/example4-zones-defined-areas-in-triangulations/
https://www.geom.at/boolean-operations-on-polygons-with-holes/
学生许可证是免费的。
【讨论】:
【参考方案3】:您可以使用Triangle。
通过命令行运行三角形,您创建一个 ASCII .poly file,指定输入(即您的多边形)的顶点和边以及域中的任何孔。每个孔都由其 xyz 位置定义。例如,如果我有一个里面有一个三角形孔的正方形域,我的输入可能如下所示:
7 2 0 0 # 7 vertices
1 1 -1
2 1 1
3 -1 1
4 -1 -1
5 -.5 -.5
6 .5 -.5
7 0 .5
7 0 # 7 segments: four for the square and three for the hole
1 1 2
2 2 3
3 3 4
4 4 1
5 5 6
6 6 7
7 7 5
1 # 1 hole
1 0.0 0.0
如果要细化网格(即在内部添加顶点),可以使用 -a 选项(限制三角形的最大面积)或 -q 选项(控制生成的三角形的质量但不直接限制大小)。命令行开关的文档是here。
【讨论】:
以上是关于如何对内部有和没有顶点和孔的多边形进行三角剖分 - 可以进行德劳内三角剖分吗?的主要内容,如果未能解决你的问题,请参考以下文章