给出3组点坐标(x, y, w, h),-1000
x, y为矩形左上角坐标点,w, h向右w,向下h。
(x, y, w, h)表示x轴(x, x+w)和y轴(y, y-h)围成的矩形区域;
(0, 0, 2, 2)表示 x轴(0, 2)和y 轴(0, -2)围成的矩形区域;
(3, 5, 4, 6)表示x轴(3, 7)和y轴(5, -1)围成的矩形区域;
求3组坐标构成的矩形区域重合部分的面积。
输入描述
3行输入分别为3个矩形的位置,分别代表“左上角x坐标”,“左上角y坐标”,“矩形宽”,“矩形高” -1000 <= x,y < 1000
输出描述
输出3个矩形相交的面积,不相交的输出0。
输入示例
1 6 4 4
3 5 3 4
0 3 7 3
输出示例
2
本题主要需要一个清晰的思路:难点在于矩形相交的判断 以及 相交时相交区域计算。
给出的是矩形的点坐标形式,主要关注关于这部分的描述:
(x, y, w, h)表示x轴(x, x+w)和y轴(y, y-h)围成的矩形区域;
矩形是由这四条线围成的区域也就是(x < 横坐标 所以判断矩形相交也就可以看做判断横线以及纵线是否有相交部分。 相交情况:内部以及交叉 不想交情况:外部 所以逆向思维:不相交 一组横线中较大的横(/纵)坐标值小于另一组横线较小的横(/纵)坐标值。 仍然以一组横线作讨论: 小的更小,大的更大 小的比小的小,大的也比大的小(大的比小的大,如果为false:这样就是不相交了,不必讨论)相交区域:
内部:
交叉:
#如果相交,计算相交区域(横线、纵线)
def func1(a1,a2,b1,b2):
x1, x2 = 0, 0
if a1 < b1 and a2 > b2:
x1 = a1
x2 = b1
elif a1