是否有一个c++源/lib来解决2D Bin Packing使用矩形Bin(而不是正方形)和旋转

Is there a c++ source/lib to solve 2D Bin Packing with a rectangular bin (not square) and rotation?

本文关键字:Bin 旋转 正方形 c++ 有一个 lib Packing 2D 解决 是否      更新时间:2023-10-16

正如标题所说,我需要C/C++源代码或库,可以用来解决2D矩形的Bin Packing问题,其中Bin也是矩形,矩形也被旋转90°以更好地适应。我已经有了所有必需的值,所以我不需要在线打包算法。

我只找到了一个处理方形垃圾箱的库,没有轮换,这对我的需求来说效率不够。

我真的很感激任何C/C++处理矩形仓和旋转的东西。

谢谢。

PS:计算所需的时间并不重要,只有结果重要。

PPS:它必须是C或C++,我在搜索stackoverflow时没有发现任何有用的东西。。。

http://clb.demon.fi/files/RectangleBinPack.pdf是关键。这是关于2d仓包装的参考。

您可以修改其中的一个算法来满足您的需求。我怀疑是否需要旋转,算法已经相当先进了。

这个(https://github.com/Lalaland/PixelPacker/blob/master/src/algoMaxRects.cpp)是如何实现MaxRects算法的示例。

在选择下一个要使用的矩形时,您可能需要在算法的顶部进行修改。只需让它看看矩形的不同方向,并在整个列表中循环。

我几周前发现了这个帖子,在浏览了答案中的PDF,并摆弄了作者的代码后,我重新编写了一篇更适合我需要的文章(纹理图谱打包)

如果其他人感兴趣。。。https://github.com/chris-stones/BinPack2D

  • 允许用户将数据结构与提交的矩形捆绑在一起(原始文件名等)
  • 打包多个bin(用于2d纹理图集阵列-GL_EXT_texture_array)

此外,我没有跟踪拆分和连接自由矩形,而是跟踪和排序自由左上角。我发现它的实现要简单得多,结果也同样好。

没有文档,请参阅头文件顶部的ExampleProgram()。