我有一个连接的形状,由放在一起的正方形组成,例如:拿一张方形纸,沿着现有的线条画一条线,这条线在它的开头结束,不会自行穿过。
现在的目标是找到一个算法( not brute-force ),用尽可能少的非重叠矩形填充这个形状。
我正在寻找最佳解决方案。从图像中可以看出,天真贪婪的方法(采取最大的矩形)不起作用。
(最佳)
(贪婪)
我的场景是顶点减少,但我确信还有其他用例。
注意:此问题似乎很基本,但我无法在其他地方找到解决方案。另外,这个问题是NP难的吗?
编辑:我刚刚意识到,在我的场景中,使用尽可能少的非重叠三角形填充形状会产生更好的结果。
答案 0 :(得分:2)
我花了很多时间研究这个,因为我问了最初的问题。对于第一个问题(最好用矩形填充形状),我已在标题"最佳贪婪网格划线"
下编写了解决方案。http://blackflux.wordpress.com/2014/03/01/meshing-in-voxel-engines-part-2/
复杂性实际上比没有孔的多边形最佳三角测量更好(更快)。最慢的部分是Hopcroft-Karp算法。
在链接的博客文章中还讨论了将形状作为多边形处理。请注意,我也在考虑漏洞。
答案 1 :(得分:0)