把小球平抛运动的轨迹用matplolib 中animation画出来
时间: 2024-02-16 22:00:39 浏览: 77
好的,下面是一个简单的小球平抛运动的轨迹动画示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
g = 9.8 # 重力加速度
t_max = 10 # 模拟时间
dt = 0.01 # 时间步长
# 计算小球运动轨迹
t = np.arange(0, t_max, dt)
x = np.zeros_like(t)
y = np.zeros_like(t)
v_x = 50 # 初始水平速度
v_y = 50 # 初始竖直速度
x[0] = 0
y[0] = 0
for i in range(1, len(t)):
x[i] = x[i-1] + v_x * dt
y[i] = y[i-1] + v_y * dt - 0.5 * g * dt ** 2
v_y = v_y - g * dt
# 绘制小球运动轨迹动画
fig, ax = plt.subplots()
ax.set_xlim(0, np.max(x))
ax.set_ylim(0, np.max(y))
ax.set_aspect('equal')
line, = ax.plot([], [], 'o-', lw=2)
def update(frame):
line.set_data(x[:frame+1], y[:frame+1])
return line,
ani = FuncAnimation(fig, update, frames=len(t), interval=20)
plt.show()
```
在这个例子中,我们首先定义了重力加速度、模拟时间和时间步长等参数,然后根据初速度和重力加速度计算出小球的运动轨迹。接着,我们创建了绘图对象 fig 和坐标轴对象 ax,并设置了坐标轴的范围和纵横比。在 update 函数中,我们根据帧数将小球运动轨迹的前面一部分数据绘制出来,并将其设置为 line 的数据。最后,我们使用 FuncAnimation 函数创建动画对象 ani,并将其显示在窗口中。
在这个例子中,frames 参数设为 len(t),因此动画共包含 len(t) 帧,interval 参数设为 20,因此每帧之间的间隔时间为 20 毫秒。
阅读全文