矩形相交判断超简单方法

设矩形A(xa1,ya1),(xa2,ya2),B(xb1,yb1 ),(xb2,yb2)
其中:
xa1<=xa2,ya1<=ya2
xb1<=xb2,yb1<=yb2

先看线段相交的判断:
La:xa1,xa2   xa1<=xa2
Lb:xb1,  xb2   xb1<=xb2
考虑对立面(只有两种情况):
不相交的条件:xa2xb2
由摩根律,得出相交条件:xa2>=xb1&&xa1<=xb2

矩形A B相交的条件为:分别在X和Y轴上的投影相交。
也就是:
对X轴,线段相交条件,有
xa2>=xb1(1)
xa1<=xb2(2)
xa1<=xa2(3)
xb1<=xb2(4)
(1),(3)<=> xa2>=max(xa1,xb1);
(2),(4)<=> xb2>=max(xa1,xb1);
min(xa2,xb2)>=max(xa1,xb1);
同理可得:min(ya2,yb2)>=max(ya1,yb1);
故相交条件为:
min(xa2,xb2)>=max (xa1,xb1)&&min(ya2,yb2)>=max(ya1,yb1)
其中:
xa1<=xa2,ya1<=ya2
xb1<=xb2,yb1<=yb2

你可能感兴趣的:(数据结构&算法,数学)