如何从点列表中找到可用的自由区域(矩形)

时间:2013-03-21 10:35:32

标签: c# algorithm

我们提供的控制系统包含跨越巨大的2D坐标系的模块。

我需要一种算法,可以找到尺寸至少是最小高度和宽度的可用空间。 “可用”表示“不包含列表中的任何点”。 如果算法可以接受不应该与算法返回的任何矩形相交的矩形列表也是有利的。

我尝试过以下算法,但感觉不对。

  • 选择不在先前返回的候选矩形或先前被解散的区域中的候选点。
  • 水平增长,直到达到最小宽度。
  • 垂直增长直至达到最低高度。
  • 此时,这是一个经批准的候选矩形,但仍可能更大。
  • 尽可能水平地长大。
  • 尽可能垂直增长。
  • 返回批准的矩形。 (如果第2或第3点失败,则到目前为止所覆盖的区域将被解除。

那里有没有明亮的脑袋可以为此提出更好的算法? (编辑:注意矩形是轴对齐的)

0 个答案:

没有答案