php面试之判断两个矩形是否相交

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;
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值