【发布时间】:2020-02-11 21:20:49
【问题描述】:
我正在模拟太阳系,并且正在使用面向对象的编程来简化添加新行星的过程。
from vpython import *
#gravitational constant
G = 6.674e-11
#seconds in a day
dt = 86400
step = 1
maxstep = 3000
class Planet:
def __init__(self, mass, radius, position, velocity):
self.mass = mass
self.radius = radius
self.position = position
self.velocity = velocity
class Star:
def __init__(self, mass, radius):
self.mass = mass
self.radius = radius
Earth = Planet(5.972e24, 6371, vector(0,1.47e8,0), vector(-29.951,0,0))
Mercury = Planet(3.285e23, 2439.7, vector(0,4.6e7,0), vector(-47.400,0,0))
Sun = Star(1.989e30, 696340)
#acceleration vectors
a_Earth = -G*Sun.mass*Earth.position/mag(Earth.position)**3
a_Mercury = -G*Sun.mass*Mercury.position/mag(Mercury.position)**3
#position vectors
Earth.position = Earth.position + Earth.velocity*dt + 0.5*a_Earth*dt**2
我正在尝试做的是使用VPython的sphere命令来表示行星和恒星,有没有办法在定义新的类时使用它?
【问题讨论】:
标签: python-3.x object vpython