python 遍历所有矩形数组,判断是否有重叠,如果有就合并起来。
时间: 2024-05-10 17:16:10 浏览: 79
python实现合并两个数组的方法
可以先从第一个矩形开始,遍历所有矩形,检查每个矩形是否与当前矩形重叠。如果有重叠,则将这两个矩形合并成一个新的矩形,并继续进行遍历。如果没有重叠,则将当前矩形添加到新的矩形列表中。
以下是一个示例代码实现:
```python
def merge_rectangles(rectangles):
merged_rectangles = []
for rect in rectangles:
merged = False
for i, merged_rect in enumerate(merged_rectangles):
if rect_overlap(rect, merged_rect):
merged_rectangles[i] = merge_two_rects(rect, merged_rect)
merged = True
break
if not merged:
merged_rectangles.append(rect)
return merged_rectangles
def rect_overlap(rect1, rect2):
x1, y1, w1, h1 = rect1
x2, y2, w2, h2 = rect2
return (x1 < x2 + w2 and x1 + w1 > x2 and
y1 < y2 + h2 and y1 + h1 > y2)
def merge_two_rects(rect1, rect2):
x1, y1, w1, h1 = rect1
x2, y2, w2, h2 = rect2
x = min(x1, x2)
y = min(y1, y2)
w = max(x1 + w1, x2 + w2) - x
h = max(y1 + h1, y2 + h2) - y
return [x, y, w, h]
```
其中,`rectangles` 是一个矩形列表,每个矩形由其左上角坐标和宽度高度组成。`rect_overlap` 函数判断两个矩形是否重叠,`merge_two_rects` 函数将两个矩形合并成一个新的矩形。`merge_rectangles` 函数遍历所有矩形,合并重叠的矩形,并返回新的矩形列表。
阅读全文