基本思想
求两个矩形是否相连或相交,两个矩形的最小外包矩形宽小于两个矩形宽的和,且两个矩形最小外包矩形的的高小于两个矩形高的和,则两个矩形相交。
外包矩形的宽等于两个矩形的y轴最大值减去y轴的最小值。
外包矩形的高等于两个矩形的x轴最大值减去x轴最小值。
y轴最小值为两矩形左上角取小者,最大值为两矩形左上角加高取大值。
x轴最小值为两矩形左上角取小者,x轴最大值为两矩形左上角加宽取大值。
具体代码实现
var collide = function(rect1,rect2) {
var maxX,maxY,minX,minY
maxX = rect1.x+rect1.width >= rect2.x+rect2.width ? rect1.x+rect1.width : rect2.x+rect2.width
maxY = rect1.y+rect1.height >= rect2.y+rect2.height ? rect1.y+rect1.height : rect2.y+rect2.height
minX = rect1.x <= rect2.x ? rect1.x : rect2.x
minY = rect1.y <= rect2.y ? rect1.y : rect2.y
if(maxX - minX <= rect1.width+rect2.width && maxY - minY <= rect1.height+rect2.height){
return true
}else{
return false
}
}