在其他多边形中找到最大空矩形的算法

时间:2014-12-10 11:52:19

标签: algorithm computational-geometry

场景:有一个矩形空间,里面任意放置任意方向的多边形。目的是找到可以安装在矩形空间的空区域内的最大空矩形。下面的图片说明了多边形为蓝色的情景,虚线表示可以在每个方案中拟合的最大空矩形。

Largest empty rectangle 1

Largest empty rectangle 2

问题:显然,在计算几何中找到最大的空矩形是well known problem,但我在这个区域找到的算法是在点中找到空矩形(CGAL实现了这一点) )和线段。有没有办法根据我的场景调整这些现有技术?或者有更简单的方法吗?

1 个答案:

答案 0 :(得分:2)

不幸的是,我熟悉的大多数计算几何文献似乎都能生成漂亮的算法描述和正确性的证明,而不实际提供实现。也许这是因为这些实现通常都很复杂。

你没有提到你可以忍受的程度不准确。如果你有一些宽容,这个答案适合你。

我的建议是,你将这个难题变成一个更容易解决的问题

    您的多边形集合的
  1. Find the bounding box
  2. 将边界框划分为网格。网格越细,准确性越高,但找到解决方案所需的时间越长。
  3. Find每个网格单元格的面积(投射为矩形多边形)与多边形集相交。
  4. 如果重叠足够(大于您指定的某个最小值),请将网格单元标记为零;否则,请用一个标记。
  5. 您现在有一个零和一个矩形数组。这构成了更容易解决问题的基础:这个网格中最大的矩形子集是什么?它完全由一个组成?
  6. 这个更简单的问题在互联网上有许多可访问的解决方案(例如12345,{{ 3}})。