我正在尝试使用牛顿第二定律来模拟日地月系统。我可以让月球和地球绕太阳平行旋转。但是月球不绕地球旋转。
我知道月亮和太阳之间应该有引力,月球和地球之间也应该有引力。所以我把加速度加在一起。但在 3D 可视化中,似乎没有地球对月球的影响。
谁能检查我在运动部分的代码:
def movePlanets(self):
rate(200)
G = (6.673e-11)
dt = 12*3600 # half day
for p in self.planets:
p.moveTo((p.getXPos() + dt * p.getXVel()),
(p.getYPos() + dt * p.getYVel()),
(p.getZPos() + dt * p.getZVel()))
rx = self.thesun.getXPos() - p.getXPos()
ry = self.thesun.getYPos() - p.getYPos()
rz = self.thesun.getZPos() - p.getZPos()
r = math.sqrt(rx**2 + ry**2 + rz**2)
accx = G * self.thesun.getMass()*rx/r**3
accy = G * self.thesun.getMass()*ry/r**3
accz = G * self.thesun.getMass()*rz/r**3
for pTwo in self.planets:
if(pTwo != p):
rx = pTwo.getXPos() - p.getXPos()
ry = pTwo.getYPos() - p.getYPos()
rz = pTwo.getZPos() - p.getZPos()
r = math.sqrt(rx**2 + ry**2 + rz**2)
accx = accx + (G * pTwo.getMass()*rx/r**3)
accy = accy + (G * pTwo.getMass()*ry/r**3)
accz = accz + (G * pTwo.getMass()*rz/r**3)
p.setXVel(p.getXVel() + dt * accx)
p.setYVel(p.getYVel() + dt * accy)
p.setZVel(p.getZVel() + dt * accz)
太感谢了!