예제 #1
0
        /// <summary>
        /// Currently this only calculates the change in velocity from 0 to planet radius +* 0.33333.
        /// TODO: add gravity drag and atmosphere drag, and tech improvements for such.
        /// </summary>
        /// <param name="planetEntity"></param>
        /// <param name="payload"></param>
        /// <returns></returns>
        public static double FuelCostToLowOrbit(Entity planetEntity, double payload)
        {
            var lowOrbit = LowOrbitRadius(planetEntity);

            var     exaustVelocity = 275;
            var     sgp            = OrbitMath.CalculateStandardGravityParameter(payload, planetEntity.GetDataBlob <MassVolumeDB>().Mass);
            Vector3 pos            = new Vector3(lowOrbit, 0, 0);

            var vel      = OrbitMath.ObjectLocalVelocityPolar(sgp, pos, lowOrbit, 0, 0, 0);
            var fuelCost = OrbitMath.TsiolkovskyFuelCost(payload, exaustVelocity, vel.speed);

            return(fuelCost);
        }