太阳系模拟 - 获得加速度

时间:2016-12-07 21:14:24

标签: java simulation

我正在写一些简单的太阳系模拟。当我开始编写一个在地球引力场中移动的粒子的模拟时,现在我正在尝试更改代码,使其适用于所有行星和太阳。

在我的主类中,我用来计算加速度然后更新行星位置和速度的代码是:

double sum=0;

    while (sum<=t)
    {   
        for (int i=0; i<Solar.length; i++){

        Sun.updateAcceleration(new PhysicsVector(4.349667090137737E10,1.415796493305069E11), 5.97219E24);
        Earth.updateAcceleration(new PhysicsVector(5.165897176059002E8, 5.617786927434339E8), 1.988544E30);

        Solar[i].updateEulerCramer(dt);
        sum=sum+dt;

    }
    }

它调用Planet.class中的updateAcceleration方法:

public void updateAcceleration(PhysicsVector Position2, double Mass)

{   
    Acceleration=GravField.Acceleration(Position1, Position2, Mass); 
    return; 
}
另一方面,

调用Gravfield.class中的Acceleration方法:

public static PhysicsVector Acceleration(PhysicsVector Position1, PhysicsVector Position2, double M)
{

    PhysicsVector Distance = new PhysicsVector();
    Distance=PhysicsVector.subtract(Position1,Position2);

    r=Distance.magnitude();

    g=(-1.*G*M)/Math.pow(r,2);


    return PhysicsVector.scale(g,Distance.getUnitVector());
}

它适用于Sun和Earth,但显然,当我添加其他对象时,它会变得非常混乱。更重要的是,我不确定如何以及在哪个文件中更改代码,以便它计算所有行星和恒星的加速度,而不仅仅是一个。我会感激任何暗示或方向,我应该从那里去哪里。

0 个答案:

没有答案