php面试之判断两个矩形是否相交
转自:https://blog.csdn.net/QIJINGBO123/article/details/87366209
判断两个矩形是否相交的依据:两个矩形的中心点之间的水平和垂直距离小于边长之和
矩形A[x1,y1,x2,y2],矩形B[w1,h1,w2,h2]
矩形A的宽:x2-x1; 高:y2-y1;
矩形B的宽:w2-w1;高:h2-h1;
矩形A的中心点的横坐标 (x2+x1)/2; 纵坐标:(y2+y1)/2
矩形B的中心点的横坐标 (w2+w1)/2; 纵坐标:(h2+h1)/2
只要满足A、B中心点的横向距离小于二分之一的A宽和二分之一的B宽;
同时满足A、B中心点的纵向距离小于二分之一的A高和二分之一的B高;
即:
(w2+w1)/2 - (x2+x1)/2 < (x2-x1)/2+ (w2-w1)/2 ;
(h2+h1)/2 - (y2+y1)/2 < (h2-h1)/2 + (y2-y1)/2;
两种条件同时成立则证明矩形A和矩形B相交。
$x1 = 2; $w1 = 3;
$y1 = 4; $h1 = 6;
$x2 = 4; $w2 = 6;
$y2 = 2; $h2 = 2;
$A = [$x1,$y1,$x2,$y2]; $B = [$w1,$h1,$w2,$h2];
$AW = abs($x2-$x1);
$AH = abs($y2-$y1);
$BW = abs($w2-$w1);
$BH = abs($h2-$h1);
if((($w2-$x2+$w1-$x1)/2 < ($AW+$BW)/2) && (($h2-$y2+$h1-$y1)/2 < ($AH+$BH)/2)){
echo true;
} else {
echo false;
}