【问题标题】:Graphical algorithm for fitting in a square between a set of squares用于在一组正方形之间拟合正方形的图形算法
【发布时间】:2013-08-06 17:06:42
【问题描述】:

假设我在 2D 坐标系(浮点坐标)的有限区域内有 n 个大小相同且旋转相同的方形框。方框不应重叠。 现在我想再找个空地再放一个盒子。我需要一些算法来解决这个问题。有什么想法吗?

【问题讨论】:

  • 您想要 any 个可用的正方形空间,还是要容纳最大正方形的可用空间?
  • @Geobits 要放入的附加方块与所有其他方块的大小相同。最后,我想要离给定点最近的可用空间

标签: performance algorithm graphics computer-vision


【解决方案1】:

应该有一个扫描线算法。你说盒子是同样旋转的,所以你应该能够在必要时旋转坐标系,使盒子的边缘平行于 x 和 y 坐标。然后我会按照 y 坐标的顺序对这些框进行排序。

现在尝试将一个盒子放在尽可能低的位置。从已排序的框中读取所有低到足以干扰您的放置的框并创建这些框的有序集(例如红黑树或类似的容器类)。现在沿着这组盒子扫描,看看是否有足够大的间隙可以放置一个盒子。如果不是,请使用原始排序的框列表查找并删除最低框,因此您可以考虑将新框放在最低框的上方,这样就不会干扰这一点。从排序列表中添加更多框以覆盖所有高到足以干扰该新可能高度的框的框。跟踪您从列表中删除盒子的位置,并检查那里是否有足够大的间隙可以容纳一个盒子。如果没有,请重复该练习,直到在可能区域的顶部找到空隙或空间不足。

这看起来像初始排序的成本 N log N,然后从有序集中插入和删除框的每个框的成本最多为 log N。检查间隙不会比这更昂贵,因为您只检查刚刚移除盒子的位置的间隙。所以我认为总成本是N log N。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多