コード例 #1
0
        public void TestFromEarth300kmToEarth1024000km()
        {
            var deltaVelocity = HohmannTransfer.GetDeltaVelocity(
                gravitationalModifier: 3.9857e14,
                originParkingOrbit: 300000 + 6.3710e6,
                destinationParkingOrbit: 1024000000 + 6.3710e6);

            Assert.Equal(3718, deltaVelocity, 0);
        }
コード例 #2
0
        public void TestFromEarth300kmToMarsOrbit()
        {
            var deltaVelocity = HohmannTransfer.GetDeltaVelocity(
                primaryGravitationalModifier: 1.32715e20,
                origin: new HohmannTransfer.Target(
                    gravitationalModifier: 3.9857e14,
                    orbit: 1.496e11,
                    parkingOrbit: 300000 + 6.3710e6),
                destinationParkingOrbit: 2.280e11);

            Assert.Equal(6242, deltaVelocity, 0);
        }
コード例 #3
0
ファイル: Ship.cs プロジェクト: JunkProvider/jpv-dotnet
        public double GetRequiredDeltaVelocity(Station destination)
        {
            var primaryGravitySource = CurrentStation.CelestialSystem.Parent.CentralBody;
            var originSystem         = CurrentStation.CelestialSystem;
            var destinationSystem    = destination.CelestialSystem;

            return(HohmannTransfer.GetDeltaVelocity(
                       primaryGravitySource.GetGravitationalModifier(),
                       new HohmannTransfer.Target(
                           gravitationalModifier: originSystem.CentralBody.GetGravitationalModifier(),
                           orbit: originSystem.Orbit,
                           parkingOrbit: CurrentStation.ParkingOrbit),
                       new HohmannTransfer.Target(
                           gravitationalModifier: destinationSystem.CentralBody.GetGravitationalModifier(),
                           orbit: destinationSystem.Orbit,
                           parkingOrbit: destination.ParkingOrbit)));
        }
コード例 #4
0
    public InterplanetaryTransfer(SatelliteMotion original_motion,
                                  SatelliteMotion target_motion,
                                  System.DateTime earliest_launch_date)
        : base(original_motion, target_motion)
    {
        Satellite transfer_primary = null;

        foreach (SatelliteMotion octave in original_motion.Hierarchy)
        {
            if (target_motion.Hierarchy.Contains(octave.Primary.Motion))
            {
                transfer_primary = octave.Primary;
                break;
            }
        }
        Debug.Assert(transfer_primary != null);

        hohmann_transfer = new HohmannTransfer(
            OriginalMotion.Hierarchy.PreviousElement(transfer_primary.Motion),
            TargetMotion.Hierarchy.PreviousElement(transfer_primary.Motion),
            earliest_launch_date);
    }