我有一个单元格网格(开头为空),以及一组矩形或正方形的块,其大小是单元格的倍数(例如,一个块可能是2个单元格乘3个单元格)。我不会提前知道所有的块,但是必须在它们到达时放置它们。如果有人想知道,这与在一个较大的位图上放置一堆较小的位图有关,其中所有位图的大小都是32的倍数。
我一直在想我可以简单地遍历网格,寻找一个适合这个区域的地方,如果我找到一个地方,就把它放在那里。我还可以有一个四叉树,可以跟踪网格中哪些块被占用,所以我不必多次遍历已经分配的单元格。
我尝试使用谷歌搜索示例和解决方案,但由于英语不是我的母语,我在制定我想要搜索的内容时遇到了麻烦。
所以我的问题是什么算法和数据结构用于这类问题?
答案 0 :(得分:2)
您正在搜索有关所谓“bin packing”的信息(请参阅http://en.wikipedia.org/wiki/Bin_packing_problem),更确切地说,是问题的2D版本,甚至更具体地说是“纹理打包”。
您可能希望看一下:https://gamedev.stackexchange.com/questions/2829/texture-packing-algorithm(引用了几种算法和数据结构)
如果你真的很有动力,你也可以看看有关这个主题的文章!
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.98.3502&rep=rep1&type=pdf
http://citeseerx.ist.psu.edu/search?q=texture+packing&submit=Search&sort=rel