多边形的最小四边形化 - 现有算法?

Minimum Quadrilaterlization of Polygons - existing algorithms?

我目前正在尝试找到一种方法,将形状不规则的多边形分成尽可能少的四边形。

我在任何地方都找不到明显的开箱即用算法,所以我正在考虑走两条可能的路线。

1.Getting 先优化三角剖分,然后将这些转换为四边形

2.Trying 从他们的 2d 多边形分割包中改变 CGAL optimal_convex_partitions 函数来创建四边形分割 https://doc.cgal.org/latest/Partition_2/group__PkgPolygonPartitioning2.html#ga3ca9fb1f363f9f792bfbbeca65ad5cc5

我是计算几何的初学者,所以在我尝试学习 C++ 之前,我想知道这两种方法中的任何一种是否看起来像傻瓜差事?如果有人知道最好的方法,那就更好了。谢谢!

(编辑)包括示例多边形 - None 其中应该有孔,尽管它们可能具有复杂的外观和凹面。

  1. 我假设如果你从三角形开始,然后尝试以贪婪的方式将两个相邻的三角形合并成一个四边形,你最终可能会得到许多孤立的三角形。

  2. 不确定凸分区如何派上用场。

  3. 您可能会在下面的文章中找到有用的信息。据了解,有限元分析要求输入对象由三角形或四边形组成,因此已经有一些这方面的研究。这里有两篇可能相关的论文:

Ted D. Blacker amd Michael B. Stephenson,“铺路:一种自动生成四边形网格的新方法”Int。 J. Num.Meth.Engg,第 32 卷,811-847 (1991)

Jinwoo Choi 和 Yohngjo Kim,四边形网格自动生成新算法的开发,国际期刊 CAD/CAM 卷。 10,第 2 期,第 00~00 页(2011

我远不是这方面的专家,但我确信这些算法。可以使用CGAL实现...