我正在尝试在Python中创建一个简单的“盒子中的粒子”,其中多个粒子在边界之间来回反弹。 我需要跟踪粒子的de x-pos和y-pos以及速度的x和y分量,以将它们绘制在最后。
根据每个dt,程序将计算新位置。我不想一次遍历每个粒子,而是想一次更新整个列表。否则,计算和替换将永远花费更多的粒子。 @ user17670已经询问了此question。但是,我每步都要计算每个值。这不同于将项目更改为预定值。
那么,在计算新值之后如何在列表中一次替换每个项目?
dt = 0.001
pos_x = []
pos_y = []
speed_x = []
speed_y = []
用于设置每个粒子速度的循环:
for i in range(5):
alpha = random.random() * 360
speed = 0.1 * random.random() * alpha
speed_x.append(math.sin(speed))
speed_y.append(math.cos(speed))
pos_x.append(0.25)
pos_y.append(0.75)
For循环可更新每个粒子的位置:
for n in range(5):
pos_x[n] = pos_x[n] + speed_x[n] * dt
pos_y[n] = pos_y[n] + speed_y[n] * dt
此后,我将绘制所有点并在每次暂停时更新窗口以使其移动。 谢谢你。
答案 0 :(得分:0)
import numpy as np
if __name__ == "__main__":
pos = np.array([5,5,5,5,5])
speed = np.array([2,2,2,2,2])
new_pos = pos + speed * 0.01
print(new_pos)
输出:
[5.02 5.02 5.02 5.02 5.02]
使用numpy包,您可以轻松地将数组加在一起或将它们与预定义值相乘。