算法解释
算法逻辑来自 两个矩形的相交面积,怎么求算法效率相对较高? - ying xiong的回答 - 知乎
假设矩形的边都平行于坐标轴,分别表示为(left1,top1,right1,bottom1), (left2,top2,right2,bottom2),则相交部分必定也是矩形,算 长 x 宽 就可以.
相交部分的宽,可以看成两个矩形的宽,在x轴上的投影的长度, 也就是两条线段的总长度,减去重叠之后新线段的长度. 按下图示意,算出 A+B-W 就可以了:
用矩形坐标套进去,就是 overlapX = (right1-left1)+(right2-left2) - ( max(right1,right2) - min(left1,left2) )不管A B两条线段怎么移来移去,谁长谁短,这个式子都不变的,如果是 <=0,自然是没有相交.
同理再算出高就可以了。
作者:ying xiong
链接:https://www.zhihu.com/question/28854765/answer/42331859
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
JavaScript实现
/** * 计算重叠面积 * @param {{left: number, right: number, top: number, bottom: number}} pos1 * @param {{left: number, right: number, top: number, bottom: number}} pos2 */function elementInterectArea(pos1, pos2) { const pos1Width = pos1.right - pos1.left; const pos1Height = pos1.bottom - pos1.top; const pos2Width = pos2.right - pos2.left; const pos2Height = pos2.bottom - pos2.top; const axisOverlap = pos1Width + pos2Width - (Math.max(pos1.right, pos2.right) - Math.min(pos1.left, pos2.left)); const crossOverlap = pos1Height + pos2Height - (Math.max(pos1.bottom, pos2.bottom) - Math.min(pos1.top, pos2.top)); if (axisOverlap <= 0 || crossOverlap <= 0) { return 0; } return axisOverlap * crossOverlap;}// 下面计算两个HTML元素的重叠面积const area = elementInterectArea(element1.getBoundingClientRect(), element2.getBoundingClientRect());
将遮住元素全部删除JS hide-verlap.js.
- 金京浩为什么留长发? 金京浩是男是女结婚没有?金庆皓(金京浩)是韩国乐坛重要的实力唱将,一直以来以长发造型示人,俊美的容貌,他17岁的时候就以惊人的成绩获得了韩青少年创作音乐...
- win11如何设置不让应用下载?如何完全禁止应用安装?0.1折手游推荐内部号 0.1折手游在线选,喜欢哪个下哪个,1元=100元。 查看 ST手游盒子充值0.1折 内含千款游戏,充值0.1折起,上线直接领福利,...
- 任意球精妙配合!劳塔罗门前吃饼,奥古斯托送助攻,国米1-1扳平直播吧06月18日讯 世俱杯E组首轮比赛,蒙特雷vs国际米兰。 比赛第42分钟,国米任意球配合,阿切尔比吊禁区,奥古斯托得球横传门前,劳塔罗...
- 【步骤】花呗开通学历认证怎么弄?手把手教你快速设置,精简流程明明白白!在支付宝中进行花呗学历认证步骤如下: 首先打开支付宝APP,点击右下角“我的”。进入后找到芝麻信用选项点击进入芝麻信用页面。 在芝麻...
- 当发现男友的胸变得越来越大,那你得警惕了原创 木子九 第十一诊室 图片: 黄仔 | 撰稿: 木子九 | 责编: 浮游炮 原创文章,未经许可,请勿转载 大家好哇~今天是木子九值班! 「忍一时卵...
- 灵魂撕裂最强阵容排名?(灵魂撕裂最强角色)NO1:蓝大 在目前的游戏进度的情况下,蓝大当第一无非是首当其选的,不要看蓝大是人手一个的,看着是烂大街,人人都有的,就觉得他没有什...
- 神经网络算法 - 一文搞懂回归和分类本文将从 Softmax 的本质、Softmax 的原理、Softmax的应用 三个方面,带 您一文搞懂 Softmax 函数 。 Softmax激活函数 一、 Softmax 的 本质 Softmax一般用来...
- 关于法线教学的几点思考厉红燕 袁海泉 (苏州大学物理科学与技术学院 江苏 苏州 215000;南京一中明发滨江分校 江苏 南京 210000) (苏州大学物理科学与技术学院 江苏 苏...
- 《赛博朋克2077》速览蜥蜴蛋孵化具体流程在充满高科技的《赛博朋克2077》中,玩家们将会展开一场场惊心动魄的冒险,其中一个重要的冒险就是孵化蜥蜴蛋,玩家们需要找到一个合适的...
- 微信为什么会自动退出在日常使用微信的过程中,许多用户可能会遇到微信自动退出的情况。这不仅影响了用户的正常使用体验,还可能造成聊天记录等重要信息的丢...