省料算法在数学模型里叫矩形排版算法,有非常多的论文介绍了不少算法以及算法优化。
还是由于项目时间不能拖,三四天需要解决这个问题,算法自己写太费时间,找现成的算法代码,然后修改bug,进行算法优化。
c++、c#、js写的算法都找了一遍,都是半成品,通过比较,选择了js写的一个排版算法,进行优化。做的工作如下:
将js的算法移植到unity3d中,也就是改成用c#语言写这个算法,算法还是很简洁的,用了递归,移植很好移植。然后就是优化,优化的重点在有些剩余空间浪费了,所以需要合并剩余空间,针对于多种木板大小情况,写了很多if判断,来合并剩余空间,最终效果非常好。如下: