2017-07-07 16 views
0

私は地球の速度が原点と水平に対する角度によって決定される太陽の周りを移動する地球をシミュレートしようとしています。私はこれを、三角形のためにtanh(反対/隣接)規則を使用する関数を作成することによって行った。O_correction(x,y)。問題は、円軌道の代わりに螺旋状に飛び出して、なぜそれがわからないのかということです。軌道をシミュレートする

scene = canvas() 
scene.background = color.white 


O = 0 
ball = sphere(pos=vector(10,0,0), radius=0.1, color=color.blue) 

x = ball.pos.x 
y = ball.pos.y 

def O_correction(x,y): 
    O = math.atan((((y)**2)**0.5)/(((x)**2)**0.5)) 
    answer = O 
    if x >= 0 and y >= 0: 
     answer = O 
    if x < 0 and y >= 0: 
     answer = pi - O 
    if x <= 0 and y < 0: 
     answer = O + pi 
    if x > 0 and y < 0: 
     answer =pi*2 - O  
    return answer 

t =0 
while t < 100: 
    x = ball.pos.x 
    y = ball.pos.y 
    print = (float(O_correction(x,y)) 
    print = ((x**2) + (y**2))**0.5) 
    ball.pos.x -= sin(O_correction(x,y)) 
    ball.pos.y += cos(O_correction(x,y)) 
    print(" ") 
    t += 1 

は非常に私のpythonを知らないが、私は物理学を知って 乾杯

+0

これはあなたの質問には答えませんが、私は 'O_correction'の代わりに[' atan2'](https://docs.python.org/2/library/math.html#math.atan2) 'atan'の代わりに。 – jadhachem

答えて

0

、いくつかの助けをお願い申し上げます。

各ステップで、の接線に沿って固定距離をの軌道に移動します。軌道は、軌道そのものではなく、軌道に固定します。それはあなたに外向きのスパイラルを与えます(あなたが外出するほど実際にはそれほど重度にはなりません)。

時間の増分を小さくする(たとえば、位置調整を100で割るなど)、スパイラル効果が大幅に小さくなるようにしてください。

これ以上のことをしたい場合は、別の式が必要です。 円軌道をかけることも、保存された量に基づいて何かをすることもできます(基本的な物理をかなり理解する必要があります)。

+0

ええ、それは意味があります、私は増分の間の時間を考慮していませんでした。ありがとう – ojj920