卫星不断被吸进地核

问题描述 投票:0回答:0

我正在尝试制作一个程序来模拟绕地球运行的卫星,有点像月球,但是当我尝试这样做时,它会被吸入地球核心。 这是我程序中的数学

`

    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)));
    `

我试过上面发生的事情,我得到的是这个

程序开始here结束here

我想知道我的数学有什么问题

java math game-physics physics
© www.soinside.com 2019 - 2024. All rights reserved.