在VPython中同时以不同的速率旋转多个对象

时间:2017-07-25 20:30:53

标签: python vpython

我正在练习我的物理编码,我对以下问题有点困惑:

“使用视觉包提供的设施,创建一个太阳系的动画,显示......太阳和行星作为球体在适当的位置,大小与其实际大小成比例......和行星的运动当他们围绕太阳移动时(通过使行星的球体移动)。“

提供了一个表格,给出了6个最里面的行星和太阳的半径,以及行星轨道的半径和轨道的周期(近似圆形)。

我能够通过创建一些具有表格中给出的值的数组(加上选择一个常数以使行星在给定比例中可见)并创建一个球体数组来完成第一部分。

这是我被挂断的动作部分。我可以让所有的行星同时以相同的角速度旋转。或者我可以使所有的行星以不同的速度旋转(与给定的周期成比例),但它一次只能进行一次。有没有办法让动画在VPython中同时发生?我使用的是VPython 6.11和Python 2.7.13。下面的代码(这是以不同的速率顺序运行它们的版本)。

#Orbital Motion
for frame in range(1000):
    for n in range(6):
        theta = period[n] * frame
        rate(60)
        x = r[n]*cos(theta)
        y = r[n]*sin(theta)
        s[n].pos = [x,y]

知道了!对于任何未来的读者,我的最后一个代码现在看起来像:

{{1}}

1 个答案:

答案 0 :(得分:0)

这样的事情:

for frame in range(1000):
    for n in range(6):
        theta = angular_speed[n] * frame
        ...