转载:http://blog.sina.com.cn/s/blog_7865b083010100ah.html
判断两个矩形是否相交的算法
(2011-11-07 19:38:48)
#include<stdio.h>
int ab(int n){
if(n >= 0) return n ;
else return -n ;
}
int main(){
int cases ;
int x01 , x02 , y01 , y02 ;
int x11 , x12 , y11 , y12 ;
scanf("%d" , &cases) ;
while(cases--){
scanf("%d %d %d %d" ,&x01 ,&y01 ,&x02 , &y02) ;
scanf("%d %d %d %d" ,&x11 , &y11 , &x12 , &y12) ;
int zx = ab(x01+x02-x11-x12) ; //两个矩形重心在x轴上的距离的两倍
int x = ab(x01-x02)+ab(x11-x12) ; //两矩形在x方向的边长的和
int zy = ab(y01+y02-y11-y12) ;
//重心在y轴上距离的两倍
int y = ab(y01-y02)+ab(y11-y12) ; //y方向边长的和
if(zx <= x && zy <= y)
printf("YES\n") ;
else printf("NO\n") ;
}
return 0 ;
}