123456789101112131415161718192021222324252627282930313233343536373839 |
- //
- // BoxPositionTool.hpp
- // auto_fill_jewel_v3
- //
- // Created by Red on 2024/11/29.
- // 多个盘子包围盒子摆放工具类
- #ifndef BoxPositionTool_hpp
- #define BoxPositionTool_hpp
- #include "BoostGeometryTools.hpp"
- #include <stdio.h>
- #include <vector>
- using std::vector;
- #define BOXPOSITIONTOOL_CONTAINER_WIDTH 650
- struct BoxPositionTool {
-
- /// 算法从左下角开始填,向右,填满水平空间向上填,超出来的就想上填
- /// @param visWidth 可视化区域宽度
- /// @param visHeight 可视化区域高度
- /// @param boxSizeArr 输入矩形数组,数据是宽和高
- /// @param resultPositions 是输出结果,对应输入矩形顺序,每个数据是一个box中心在整个可视化区域的坐标。可视化区域坐标原点在左下角。
- void solve(const int visWidth,const int visHeight,vector<vector<int>>& boxSizeArr, vector<vector<int>>& resultPositions ) ;
-
- /// 只考虑宽度方向是否放的下不,宽度最大不能超过 270+270+110=650
- bool withinContainer(const int llx,const int lly,const int wid,const int hei) ;
- bool interectsWithOthers(BoostGeometryTools::BoostPolygon& poly) ;
-
- private:
- vector<BoostGeometryTools::BoostPolygon> _boxes ;
-
-
- } ;
- #endif /* BoxPositionTool_hpp */
|