public void TestFromEarth300kmToEarth1024000km() { var deltaVelocity = HohmannTransfer.GetDeltaVelocity( gravitationalModifier: 3.9857e14, originParkingOrbit: 300000 + 6.3710e6, destinationParkingOrbit: 1024000000 + 6.3710e6); Assert.Equal(3718, deltaVelocity, 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); }
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))); }
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); }