nim*_*cap 5 algorithm geometry computational-geometry
是否有任何算法可以近似给定的多边形,其中n个非重叠的矩形可以提供最大的覆盖范围?通过最大覆盖率,我的意思是,矩形区域的总和最大化.矩形不一定大小相等.
我正在处理的多边形是凸的.如果确切的解决方案很难/昂贵(我期待它),也欢迎简单的良好启发式.
编辑我总是想到用多边形内部的矩形近似多边形,但矩形不完全在多边形内的解也很好.如果是这种情况,则区域的最大化变为区域的最小化.
编辑2我忘了提到这些矩形是正交矩形,即与轴对齐.
将初始多边形添加到 Q
从 Q 中移除多边形 P


10. 取 P、A 的下一个最长边,然后转到 5
11. 从 A 向上投影一个红色矩形。找到它与 P、B 和 C 相交的 2 个点:

12. 选择较长的(B)并最终确定绿色矩形
13. 将剩余的数字(D、E 和 F)添加到 Q 中
14. 转到3
我意识到这是一个非常古老的问题,但我最近偶然发现了一个类似的问题,我不得不尝试用矩形来近似多边形。使用此处和其他地方提出的一些想法,我从一个内切矩形开始,并在内切矩形周围生成矩形以提供多边形的一般形状。
这种方法适用于凸多边形,并且适用于某些凹多边形 - 特别是如果您采用迭代方法(例如,将输出矩形作为另一个迭代的输入)。
对于极其凹的形状,您可以考虑将多边形分解为凸包,然后应用我上面描述的技术。Bayazit的实施看起来非常有前途。
如果有人感兴趣,我在这里发布了使用内切矩形的实现: https: //github.com/pborissow/Poly2Rect
第一个想法,也许其他人可以改进它。