Проблема с двумя вращениями в Vpython за другим - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь создать анимацию в VPython, которая представляет Землю, вращающуюся вокруг Солнца по кругу, а ось вращения Луны - это линия Солнца и Земли. Таким образом, орбита Луны перпендикулярна Солнцу.

Проблема в том, что если я использую два поворота за другим, одно вращение не выполняется или я получаю странные результаты. Я также попробовал это с векторными поворотами и обновил позицию после обеих операций, но это, похоже, не сработало. Читая на этом форуме, я думаю, это может быть потому, что мне нужно будет использовать setDuration(0) и fill() после каждого поворота, но я не мог заставить его работать. Я также не понимаю, как и когда использовать методы fill(), и как это может вызвать мою проблему.

from vpython import *
el = simple_sphere(pos=vector(10, 3, 0), 
               radius=2, 
               color=color.red, 
               make_trail=True, 
               trail_type='points', 
               interval=10,
               retain=50)
dTh = 0.01

while(1 <= 10000):
#    pos1 = rotate(el.pos, dTh, vecor(1,0,0))  THIS WAS THE VECTOR VERSION I TRIED
#   pos2 =  rotate(pos1, dTh, vector(0,1,0))
#   el.pos = pos2

    el.rotate(dTh, axis=vector(1.0,0), origin=vector(1,1,1)).setDuration(0)
    fill()
    el.rotate(dTh, axis=vector(0,1,0), origin=vector(1,1,1)).fill()  

Я ожидаю, что анимация будет соответствовать движению, которое я описал выше.

...