我试图以初始角度以初始速度发射的射弹的路径动画。我试图修改此处的代码:http://matplotlib.org/examples/animation/simple_anim.html
我的代码如下所示:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
g = 9.8 #value of gravity
v = 20 #initial velocity
theta = 20*np.pi/180 #initial angle of launch in radians
tt = 2*v*np.sin(theta)/g #total time of flight
t = np.linspace(0, tt, 0.01) #time of flight into an array
x = v*np.cos(theta)*t #x position as function of time
line, = ax.plot(x, v*np.sin(theta)*t-(0.5)*g*t**2) #plot of x and y in time
def animate(i):
line.set_xdata(v*np.cos(theta)*(t+i/10.0))
line.set_ydata(v*np.sin(theta)*(t+i/10.0)-(0.5)*g*(t+i/10.0)**2)
return line,
#Init only required for blitting to give a clean slate.
def init():
line.set_xdata(np.ma.array(t, mask=True))
line.set_ydata(np.ma.array(t, mask=True))
return line,
ani = animation.FuncAnimation(fig, animate, np.arange(1, 200),
init_func=init, interval=25, blit=True)
plt.show()
如图所示,代码给出了绘图窗口,但没有轨迹,也没有动画。我在这里搜索过,看看是否有人在其他地方询问过,我还没有找到它。如果有人询问,只需链接到已经回答的问题。任何帮助是极大的赞赏。谢谢大家。
答案 0 :(得分:3)
我能够使用python 3.4.3进行以下操作:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
g = 9.8 #value of gravity
v = 10.0 #initial velocity
theta = 40.0 * np.pi / 180.0 #initial angle of launch in radians
t = 2 * v * np.sin(theta) / g
t = np.arange(0, 0.1, 0.01) #time of flight into an array
x = np.arange(0, 0.1, 0.01)
line, = ax.plot(x, v * np.sin(theta) * x - (0.5) * g * x**2) # plot of x and y in time
def animate(i):
"""change the divisor of i to get a faster (but less precise) animation """
line.set_xdata(v * np.cos(theta) * (t + i /100.0))
line.set_ydata(v * np.sin(theta) * (x + i /100.0) - (0.5) * g * (x + i / 100.0)**2)
return line,
plt.axis([0.0, 10.0, 0.0, 5.0])
ax.set_autoscale_on(False)
ani = animation.FuncAnimation(fig, animate, np.arange(1, 200))
plt.show()
轴需要重新缩放,&许多其他事情发生了变化。
它并不完美,但显示了遵循所需轨迹的抛射物。
你现在可以玩它&看看代码并摆弄它来学习。我还建议你花一点时间来学习numpy / pyplot的基础知识;这将在未来支付巨额红利。