请用python3以上的版本语言写一个程序:分别给出两个长方形左上角得坐标和长度宽度,计算这两个长方形的交集面积
时间: 2024-04-29 22:25:35 浏览: 66
假设第一个长方形的左上角坐标为(x1, y1),长度为w1,宽度为h1;第二个长方形的左上角坐标为(x2, y2),长度为w2,宽度为h2。则两个长方形的交集面积可以计算如下:
1. 计算两个长方形的右下角坐标
设第一个长方形的右下角坐标为(x1+w1, y1+h1),第二个长方形的右下角坐标为(x2+w2, y2+h2)。
2. 计算两个长方形的左上角坐标
设第一个长方形的左上角坐标为(x1, y1),第二个长方形的左上角坐标为(x2, y2)。
3. 计算交集面积
如果两个长方形不相交,则交集面积为0;否则,交集面积为两个长方形右下角坐标中横坐标较小的值减去左上角坐标中横坐标较大的值,乘以两者纵坐标的差值中较小的值。
根据上述算法,可以写出如下的程序:
```python
def rectangle_intersection(x1, y1, w1, h1, x2, y2, w2, h2):
# 计算两个长方形的右下角坐标
r1 = (x1 + w1, y1 + h1)
r2 = (x2 + w2, y2 + h2)
# 计算两个长方形的左上角坐标
l1 = (x1, y1)
l2 = (x2, y2)
# 计算交集面积
if r1[0] < l2[0] or r2[0] < l1[0] or r1[1] < l2[1] or r2[1] < l1[1]:
return 0
else:
x = min(r1[0], r2[0]) - max(l1[0], l2[0])
y = min(r1[1], r2[1]) - max(l1[1], l2[1])
return x * y
```
使用示例:
```python
>>> rectangle_intersection(0, 0, 5, 5, 2, 2, 6, 6)
9
>>> rectangle_intersection(0, 0, 5, 5, 6, 6, 3, 3)
0
```
阅读全文