我正在寻找一个包装算法,它将将常规多边形减少到矩形和右三角形中。该算法应该尝试尽可能少地使用这种形状,并且应该相对容易地实现(鉴于挑战的难度)。

如果可能,这个问题的答案应该解释建议算法中使用的通用启发式。

有帮助吗?

解决方案

我认为答案对于常规多边形是相当简单的。

找到一个对称轴,并在每个顶点和其镜像之间绘制一条线。这将多边形分成梯形。每个梯形都可以变成矩形和两个右三角形。

其他提示

你可以尝试“删除”最大的矩形可以适用于多边形,留下一些剩菜。继续重复剩菜上的矩形,直到最终用三角形碎片。然后,如有必要,您可以将它们分成两个正确的三角形。我不知道这是否会始终产生会给您提供最小的矩形和右三角形的解决方案。

它不是特别的矩形+右三角形,但调查胸部多边形的良好研究点是 voronoi图表和delaunay三角形这里这里

实际上,如果“恰到好处的三角形”足够好,则保证为您进行三角形,如果您真的需要这些,您可以将任何三角形分成两个正确的三角形。或者你可以切掉三角形的“提示”,以制作更正确的三角形和右三角形的一些矩形。

你也可以尝试耳朵剪辑,如果你彻底扫描知道你拥有相当普通的多边形,或者通过“削减最大的凸块”关闭。然后,将每个剩余的三角形分成两个以创建正确的三角形。


(源: erucoment.com

你可以尝试通过扫地来休息一下,然后是另一个方式制作梯形并拆分它,但是你必须检查一下检查,以确保你的扫描线没有越过某种行。即使有一些实际分形的东西,你总是可以耳剪。

然而,这有时会产生非常苗条的三角形。您可以执行启发式,如“取得最大”,而不是沿着边缘连续剪裁,但这需要更多的时间,接近O(n ^ 2)。 Delaunay / Vornoi在大多数情况下会更快地进行,具有较少的三角形。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top