js-challenges
js-challenges copied to clipboard
矩形重叠
/**
* @param {number[]} rec1
* @param {number[]} rec2
* @return {boolean}
*/
var isRectangleOverlap = function (rec1, rec2) {
//逆向思维,找不重叠的情况
return !(
rec1[2] <= rec2[0] || //矩形1的最右边小于2的最左边
rec1[3] <= rec2[1] || //最上边小于2的最下边
rec1[0] >= rec2[2] || //最右边大于2的最右边
rec1[1] >= rec2[3] //最下边大于2的最上边
)
};
小学数学题
/**
* @param {number[]} rec1
* @param {number[]} rec2
* @return {boolean}
*/
var isRectangleOverlap = function(rec1, rec2) {
// 找到两个矩形的中点
let px1 = (rec1[0] + rec1[2])/2;
let py1 = (rec1[1] + rec1[3])/2;
let px2 = (rec2[0] + rec2[2])/2;
let py2 = (rec2[1] + rec2[3])/2;
// 获取两个矩形宽高的一半
let d1 = px1 - rec1[0];
let d2 = px2 - rec2[0];
let d3 = py1 - rec1[1];
let d4 = py2 - rec2[1];
// 两个中点在的距离
let dx = Math.abs(px1 - px2);
let dy = Math.abs(py1 - py2);
// 判断条件
if (dx < d1 + d2 && dy < d3 + d4) return true;
return false;
};
/**
* @param {number[]} rec1
* @param {number[]} rec2
* @return {boolean}
*/
var isRectangleOverlap = function(rec1, rec2) {
if(rec1[0]<rec2[2]&&rec1[1]<rec2[3]&&rec1[2]>rec2[0]&&rec1[3]>rec2[1]) return true
return false
};