matplotlib绘制一个来回运动的障碍物
时间: 2023-06-11 20:10:19 浏览: 346
可以使用matplotlib模块的animation功能来实现绘制一个来回运动的障碍物。
首先,需要导入以下库:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
```
然后,可以定义一个函数来生成障碍物的位置和大小:
```python
def generate_obstacle(x_pos, y_pos, size, speed, x_range):
"""
生成障碍物的位置和大小
:param x_pos: 障碍物的x坐标
:param y_pos: 障碍物的y坐标
:param size: 障碍物的大小
:param speed: 障碍物移动的速度
:param x_range: 障碍物在x轴上移动的范围
:return: 障碍物的位置和大小
"""
# 计算障碍物在x轴上的位置
x_pos = x_pos + speed
if x_pos > x_range[1]:
x_pos = x_range[1]
speed = -speed
elif x_pos < x_range[0]:
x_pos = x_range[0]
speed = -speed
# 计算障碍物的大小
size = size
# 返回障碍物的位置和大小
return x_pos, y_pos, size, speed
```
接下来,可以定义一个动画函数,不断更新障碍物的位置和大小,并将其绘制在画布上:
```python
def animate(frame):
"""
动画函数,不断更新障碍物的位置和大小,并将其绘制在画布上
:param frame: 帧数
:return: 障碍物图形
"""
# 生成障碍物的位置和大小
x_pos, y_pos, size, speed = generate_obstacle(x_pos, y_pos, size, speed, x_range)
# 清空画布
plt.cla()
# 绘制障碍物
obstacle = plt.Circle((x_pos, y_pos), size, color='red')
plt.gca().add_patch(obstacle)
# 设置坐标轴范围
plt.xlim(0, 10)
plt.ylim(0, 10)
# 返回障碍物图形
return obstacle,
```
最后,可以定义一些初始参数,并调用FuncAnimation函数来执行动画:
```python
# 初始障碍物位置和大小
x_pos = 5
y_pos = 5
size = 1
speed = 0.1
x_range = (1, 9)
# 创建画布
fig, ax = plt.subplots()
# 调用FuncAnimation函数来执行动画
ani = FuncAnimation(fig, animate, frames=np.arange(0, 200), interval=50, blit=True)
# 显示动画
plt.show()
```
这样就可以生成一个来回运动的障碍物的动画了。
阅读全文