繁体   English   中英

用于拟合一组正方形之间的正方形的图形算法

[英]Graphical algorithm for fitting in a square between a set of squares

假设我在2D坐标系(浮点坐标)的有限区域内有n个相等大小且均等旋转的方形框。 这些框不应重叠。 现在,我想为另一个盒子找到一个可用空间。 我需要一些技巧来解决这个问题。 有任何想法吗?

为此应该有一个扫描线算法。 您说这些框均等地旋转,因此,如有必要,您应该能够旋转坐标系,以便框的边缘平行于x和y坐标。 然后,我将按照y坐标的顺序对这些框进行排序。

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

对于初始排序,这看起来像成本N log N,然后每个盒最多要有log N的成本才能从有序集中插入和删除盒。 检查间隙没有比这更昂贵的了,因为您仅在刚卸下盒子的位置检查间隙。 因此,我认为总成本为N logN。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM