一个布局算法问题解析

已知条件:在宽度已知且有限,高度无限的区域内,有n个方格,已知这些方格的x ,y 坐标以及宽度w和高度h,方格不重叠需求:在空间内找个一个位置,可以放的下一个固定宽高(如4 x 4)的方格,原则:离原点最近且Y轴最上关键点:位置信息转化为二维数组目标点:每个已知方格的左下角点 A,右下角点 B,和右上角点 C目标点位置调整:A点依照高度向左平移,B C点按照宽度向上平移
摘要由CSDN通过智能技术生成

已知条件:

宽度已知且有限,高度无限的区域内,有n个方格,已知这些方格的x ,y 坐标以及宽度w和高度h,方格不重叠

需求:

在空间内找个一个位置,可以放的下一个固定宽高(如4 x 4)的方格,原则:离原点最近且Y轴最上

关键点:

  1. 位置信息转化为二维数组
  2. 目标点:每个已知方格的左下角点 A,右下角点 B,和右上角点 C
  3. 目标点位置调整:A点依照高度向左平移,B C点按照宽度向上平移
  4. 补充点:原点检测
具体实现思路:

位置信息转化为二维数组 => 目标点获取  => 目标点位置调整 => 空间检测 => 最优点获取,原则:原点最近 && Y轴最上

代码实现:

/** 
 *  spotGenerator
 *     将该文件中的 spotGenerator 方法暴露出去以供调用
 * 
 *  1. 实现思想:位置信息转化为二维数组 => 目标点获取  => 目标点位置调整 => 空间检测 => 最优点获取,原则:原点最近 && Y轴最上
 *  2. 使用:调用spotGenerator(data, column, initialWidth, initialHeight) 方法
 *          参数:
 *              1. data :  类型 Array, 现有gird的位置信息,示例[{ x: 9, y: 9, w: 6, h: 7 }]
 *              2. column: 类型 Number,分割的列数,例如 24
 *              3. initialWidth: 类型 Number,新添加grid的默认宽度,如 4
 *              4. initialHeight: 类型 Number,新添加grid时默认高度,如 4
 *          返回值:
 *              最优点的位置坐标,类型:Object  示例 { x:1 , y:1 }
*/



//获取数组的深度
function getDepth(data) {
    var depths = [];
    for (var i = 0; i < data.length; i++) {
        depths.push(data[i].y + data[i].h)
    }
    return
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值