Планеты в солнечной системе не движутся (функции написаны) - PullRequest
0 голосов
/ 06 сентября 2018

В моей ООП-версии Солнечной системы мои планеты отображаются, но не движутся. Функции написаны, но почему-то это не работает. Я думаю, что это может быть что-то маленькое, но я не узнал об этом. Я уже пытался писать планеты строчными буквами везде, но это не помогло. В моей обычной версии это работало, но теперь генерируются только планеты, и больше ничего не происходит. Они просто застряли в исходном положении.

from vpython import *

#constants

#array 
planets = []

class Sphere(object):
    def __init__(self, pos, radius, make_trail):
        self.pos = pos
        self.radius = radius
        self.make_trail = make_trail


class planet(Sphere):
    def __init__(self, pos, radius, make_trail, mass, velocity):
        super().__init__(pos, radius, make_trail)
        self.mass = mass
        self.velocity = velocity
        planetSphere = sphere(pos = self.pos,
                              radius = self.radius,
                              make_trail = self.make_trail,
                              mass = self.mass,
                              velocity = self.velocity)


sun = planet(pos=vec(0,0,0), radius=s_rad1*1.5,
             make_trail=True, mass=2e30,
             velocity=vec(0,0,0))
mercury = planet(pos=vec(ae/3,0,0), radius=s_rad1/1.5,
                 make_trail=True, mass=3.25e23,
                 velocity=vec(0,0,-47000))
#...Other Planets
pluto = planet(pos=vec(ae*39.37,0,0), radius=s_rad1/2.4,
               make_trail=True, mass=1.3e22,
               velocity=vec(0,0,-4740))

planets.extend((mercury, venus, earth, mars, jupiter, saturn, uranus, neptun, pluto))

dt = 10000
time = 0.1

while (True):

    rate(framerate) 
    g_forceS = vec(0,0,0)

    for planet in planets:
        g_force = g * sun.mass * planet.mass * (sun.pos - planet.pos).norm()  / (sun.pos - planet.pos).mag2
        g_forceS -= g_force

        planet.velocity = planet.velocity + ( g_force / planet.mass) * dt 
        planet.pos += planet.velocity * dt 

    sun.velocity = sun.velocity + ( g_forceS / sun.mass) * dt 
    sun.pos += sun.velocity * dt
...