/Bin-Paking-Algorithm

二维装箱算法:基于二叉树与叶子链表将输入的不同矩形紧凑地排版在一个近似正方形的空间中,使用缩进式树状打印与Opengl绘制显示结果。应用如存储大量长方体模型的纹理对应UV图时,能够增加空间利用率,避免内存空间的浪费。

Primary LanguageC++

Bin-Paking-Algorithm 2019.12.01-2020.1.31

二维装箱算法

基于二叉树叶子链表算法思维对输入的矩形数据进行动态排版,缩进式树状打印与Opengl绘制显示排版结果。
实现了将全部的矩形紧凑封装在一个近似正方形的空间中,提高了空间利用率,减少了内存资源的浪费。
B站算法讲解与展示

配置:

简单的使用了Glut库进行Opengl绘制窗体与矩形,首次编译需要配置glut环境,这也是我博客的博文,求关注嘿嘿
配置结束后,记得将解决方案配置设置为Debug x86,否则glut.h文件会找不到

内含:

  • 7个数据集,数据需为整数,5和7数据集复杂度高,新增了叶子链表查询后才跑的通

功能:

  • 按照近似正方形的规则,添加矩形时会自适应的不断扩充外接矩形的大小
  • 按照宽度/高度/面积/最大边排序算法对矩形数据集排序
  • 调用windows文件浏览窗口,选择本地txt数据集作为输入(矩形格式为 宽 高 数量)
  • 使用Opengl显示列表在窗口中绘制空间利用率
  • 一次性绘制左键点击逐个绘制矩形排版结果(在glDraw.cpp中通过define设置)

运行结果

数据集5
2 2 256
4 4 128
8 8 64
16 16 32
32 32 16
64 64 8
128 128 4
256 256 2
5powersOf2
数据集7
100 100 3
60 60 3
50 20 20
20 50 20
250 250 1
250 100 1
100 250 1
400 80 1
80 400 1
10 10 100
5 5 500
7complex