重叠的情况比较多,这里用反向的排除法,画图更好理解:
用一个矩形的下边缘和另一个矩形的上边缘比较,下边缘比上边缘还高或重叠,则比无正相交。
同理,用一个矩形的右边缘和另一个矩形的左边缘比较,左边缘在右边缘的右边或重叠,则必无正相交部分。
其他情况就可能相交
#include<stdbool.h> bool overlapRec(int* r1, int r1Len, int* r2, int r2Len ) { if( r1[0] >= r2[2] //第一个矩形在第二个矩形右边 || r1[2] <= r2[0] //第一个矩形在第二个矩形左边 || r1[1] >= r2[3] //第一个矩形在第二个矩形上边 || r1[3] <= r2[1]) //第一个矩形在第二个矩形下边 return false; else return true; }