В моей версии Солнечной системы ООП мои планеты отображаются, но не движутся. Функции написаны, но как-то не работает. Думаю, это может быть что-то мелкое, но я этого не обнаружил. Я уже пробовал везде писать планеты в нижнем регистре, но это не помогло. В моей обычной версии это работало, но теперь генерируются только планеты и больше ничего не происходит. Они просто застряли в исходном положении.
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
Невозможно отладить без всей программы, включая константы.
Добро пожаловать в StackOverflow. Пожалуйста, прочтите и следуйте инструкциям по публикации в справочной документации, как было предложено при создании этой учетной записи. Здесь применяется Минимальный, полный, проверяемый пример. Мы не сможем эффективно помочь вам, пока вы не опубликуете свой код MCVE и точно не опишете проблему. Мы сможем вставить ваш опубликованный код в текстовый файл и воспроизвести описанную вами проблему.