我正在尝试制作一个程序来模拟绕地球运行的卫星,有点像月球,但是当我尝试这样做时,它会被吸入地球核心。 这是我程序中的数学
`
w = 1920;
h = 1080;
SCALINGFACTOR = 1083569.4051;
Earth = new Planet(w/2, h/2, 5.97219E24/SCALINGFACTOR);
SpaceShip = new Satellite(1200, 300, 2.03E6/SCALINGFACTOR);`
`
SpaceShip.setOrbitRadius((Math.sqrt(Math.pow(Earth.getX()-SpaceShip.getX(), 2)+Math.pow(Earth.getY()-SpaceShip.getY(), 2))));
SpaceShip.setTime(2*Math.PI*Math.sqrt(Math.pow(SpaceShip.getOrbitRadius(), 3)/(GCONSTANT*Earth.getMass())));
System.out.println("gggg\t" + (SCALINGFACTOR * SpaceShip.getMass()));
Earth.setGravity(GCONSTANT*(Earth.getMass()*SCALINGFACTOR)*(SpaceShip.getMass()*SCALINGFACTOR)/(SpaceShip.getOrbitRadius()*SCALINGFACTOR));
SpaceShip.setAcceleration(Earth.getGravity()/SpaceShip.getMass());
SpaceShip.setForce(Earth.getGravity());
//System.out.println(SpaceShip.getOrbitRadius());
SpaceShip.setVelocity(2*Math.PI*SpaceShip.getOrbitRadius()/SpaceShip.getTime());
//System.out.println(SpaceShip.getTime());
//System.out.println("start\t" + SpaceShip.getVelocity());
//System.out.println(SpaceShip.getOrbitRadius());
//System.out.println(timeChange);
double thetaChange = (SpaceShip.getVelocity()*timeChange/(SpaceShip.getOrbitRadius()));
//System.out.println("tChange\t" + thetaChange);
initialTheta += thetaChange;
//System.out.println("xxxxx\t" + SpaceShip.getOrbitRadius());
//System.out.println("yyyyyyyyy\t" + initialTheta);
System.out.println(Earth.getMass());
System.out.println(SpaceShip.getMass());
System.out.println(SpaceShip.getOrbitRadius());
System.out.println(Earth.getGravity());
SpaceShip.setX(Earth.getX() + (int)(SpaceShip.getOrbitRadius()*Math.cos(initialTheta)));
SpaceShip.setY(Earth.getY() + (int)(SpaceShip.getOrbitRadius()*Math.sin(initialTheta)));
`
我试过上面发生的事情,我得到的是这个
我想知道我的数学有什么问题