用python随机画相同大小的圆且不能重叠
时间: 2024-09-07 22:05:13 浏览: 43
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
5星 · 资源好评率100%
在Python中,你可以使用matplotlib库以及random模块来随机绘制同样大小的圆并避免它们重叠。以下是一个简单的示例:
```python
import matplotlib.pyplot as plt
import numpy as np
import random
def draw_circle(radius, pos):
center_x, center_y = pos
circle = plt.Circle((center_x, center_y), radius, fill=False)
return circle
fig, ax = plt.subplots()
# 定义圆的半径和最大尝试次数防止无限循环
radius = 50
max_tries = 100
while True:
# 随机生成圆的位置
x, y = np.random.rand(2) * fig.get_size_inches()
# 创建一个圈并添加到图上
circle = draw_circle(radius, (x, y))
ax.add_patch(circle)
# 检查是否与其他圆重叠
if not any(circle.contains_point(p) for p in ax.patches if id(circle) != id(p)):
break
# 如果重叠,移除该圆并增加尝试次数
ax.collections.remove(circle)
max_tries -= 1
if max_tries == 0:
print("无法在有限次尝试内找到不重叠的位置,强行退出")
break
plt.show()
阅读全文