我要在此处实现的目标是创建一个球下落并弹回的轨迹,该运动的方程式为y,每次球反弹时,v_0变为e * v_0或之前的3/4。我先计算y(t)而不会跳动,让y变为负值,然后轨迹的负部分将被以反弹开始的新轨迹替换,其v_0为之前的3/4,然后重复直到没有负y值为止。 (我尝试了一个嵌套循环,但是我还没有真正弄清楚如何,我们不必使用嵌套循环,但是我真的看不到另一种方式)。最终,我想使用函数下方的t_test生成一个球的所有y数组。


def traj_y_bounce(t, v_0, y_0=0, e=0.75):
    y = y_0 + v_0 * t - (1/2)*g*(t**2)
    return y
#    for i in range(len(y)):
#        while y[i] < 0:
#            y[i] ==
#    return y



#t_test = np.linspace(0,5,10)
#print(traj_y_bounce(t_test, 4))

最佳答案

这是一个从高度h掉落的球的简单模拟示例

def traj_y_bounce(tmax, v0, y0, e0=0.75):
    g = 9.9 # meters/s/s
    y = [y0] # heights over time

    dt = 0.01 # integrate in hundredths of a second

    v = v0
    t = 0
    while t <= tmax:
        if y[-1] <= 0 and v < 0:
            v = -e0*v   # reflect off ground
        v = v - g*dt    # integrate velocity
        y.append(y[-1] + v*dt)  # integrate position

        t = t + dt  # integrate time
    return y

y = traj_y_bounce(5, 0, 10)

%matplotlib notebook
import matplotlib.pyplot as plt
plt.plot(y, linewidth=4, label='height')
plot.show()


情节
python - 基本的Python弹跳球问题(可能还有嵌套循环?)-LMLPHP

09-20 13:36