码迷,mamicode.com
首页 > Web开发 > 详细

PHP判断两个矩形是否相交

时间:2019-06-12 18:00:37      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:fun   物理   sax   判断   function   color   tail   return   das   

<?php

$s = is_rect_intersect(1,2,1,2,4,5,0,3);
var_dump($s);


/*
如果两个矩形相交,那么矩形A B的中心点和矩形的边长是有一定关系的。
Case 2345中,两个中心点间的距离肯定小于AB边长和的一半。
Case 1中就像等了。
设A[x01,y01,x02,y02]  B[x11,y11,x12,y12].
矩形A和矩形B物理中心点X方向的距离为Lx:abs( (x01+x02)/2 – (x11+x12) /2)
矩形A和矩形B物理中心点Y方向的距离为Ly:abs( (y01+y02)/2 – (y11+y12) /2)
矩形A和矩形B X方向的边长为 Sax:abs(x01-x02)  Sbx: abs(x11-x12)
矩形A和矩形B Y方向的边长为 Say:abs(y01-y02)  Sby: abs(y11-y12)
如果AB相交,则满足下列关系:
Lx <= (Sax + Sbx)/2 && Ly <=(Say+ Sby)/2
参考地址:https://blog.csdn.net/szfhy/article/details/49740191
 */
function is_rect_intersect($x01,$x02,$y01,$y02,$x11,$x12,$y11,$y12){
    $zx = abs($x01+$x02-$x11-$x12);                 
    $x  = abs($x01 - $x02) + abs($x11 - $x12);      
    $zy = abs($y01 + $y02 - $y11 - $y12);           
    $y  = abs($y01 - $y02) + abs($y11 - $y12);      
    if($zx <= $x && $zy <= $y){
        return 1;
    }else{
        return 0;
    }
}

 

PHP判断两个矩形是否相交

标签:fun   物理   sax   判断   function   color   tail   return   das   

原文地址:https://www.cnblogs.com/wanghaokun/p/11011064.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!