algorithm - 平铺不同大小的矩形

标签 algorithm optimization tiling

我正在寻找一些指向算法的指针,这些算法应该允许在不重叠的情况下拼贴不同大小的矩形。

给定一组不同大小的矩形,将它们平铺在大小为 H x W 的区域上,不重叠。目标是最大化使用的空间或相反 - 最小化间隙区域。如果没有足够的空间,继续第二个相同大小的区域,依此类推。

假设每个矩形的宽度和高度小于平铺区域的相应尺寸。矩形不会旋转或以其他方式变换 - 即它们的边要么是水平的要么是垂直的。

我不是在寻找完成的代码,只是想知道什么方法/算法最适合用来解决这个问题。

最佳答案

最简单的是使用 kd-tree 将树分割为垂直和水平的 euklidian 2d 空间。然后你可以将一个矩形打包到一个创建的空间中并递归地分割树。网上有一个 Jquery treemap 插件示例。 jquery 插件 masonry 可以做同样的事情,但它更像是一个 1d bin-packing 求解器。 2d 装箱要复杂得多,也可以表示旋转矩形。这是打包光照贴图的示例:http://www.blackpawn.com/texts/lightmaps/default.html .

关于algorithm - 平铺不同大小的矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724066/

相关文章:

android - 使用 XML 中的 ImageView 在 android 中平铺图像

algorithm - 为什么是这个成本?

java - 为 TreeSet 实现自定义比较器时遇到问题(Dijkstra 的)

java - 违反 Big-O 表示法中给定的平均时间复杂度

haskell - 通过删除无用代码来降低速度(欧拉计划 23)

algorithm - BFGS 对凸超参数化问题的收敛性

sql - 匹配多个字段组合的记录

c++ - 查找 2D 数组中 n 个最大的元素位置

javascript - "neSTLing"CSS使各种高度和宽度的div占用尽可能少的空间