0

ニュートンの第 2 法則を使用して太陽地球月系をシミュレートしようとしています。月と地球が太陽の周りを平行に回転することができます。しかし、月は地球の周りを回っていません。

月と太陽の間、そして月と地球の間にも引力があるはずだと私は知っています。だから私は加速度を一緒に追加しました。しかし、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)

どうもありがとう!

4

2 に答える 2