判断两个矩形是否重叠/相交

题目:有两个矩形,别且已知两个矩形的左上角和右下角顶点的坐标值。如何判断两个矩形是否重叠/相交。

分析:

首先要明确一点,据题意,每个矩形只知道左上角和右下角的点,所以题目暗示(或者说默认)矩形的边与坐标轴平行,否则仅知两个顶点无法确定一个唯一的矩形。

矩形A内的任意点(x,y),包括四边上的点,应满足如下不等式组
Xa1 ≤ x ≤ Xa2   

Ya1 ≤ y ≤ Ya2   


同理,B内的点满足
Xb1 ≤ x ≤ Xb2   

Yb1 ≤ y ≤ Yb2   


AB有重合,则必定存在点同时满足①②③④,所以有
max(Xa1,Xb1) <= min(Xa2,Xb2)
max(Ya1,Yb1) <= min(Ya2,Yb2)

 

注:如果一个矩形包含另一个矩形不算相交/重叠的话,写程序时需要判断并排除一下 (需要跟面试官阐明一下问题)。



你可能感兴趣的:(算法C++描述)