void ComputeTimes(Orbit o, Orbit destination, double universalTime) { if (destination == null || o == null || o.referenceBody.orbit == null) return; double synodic_period = o.referenceBody.orbit.SynodicPeriod(destination); double hohmann_transfer_time = OrbitUtil.GetTransferTime(o.referenceBody.orbit, destination); minDepartureTime = universalTime; minTransferTime = 3600; maxDepartureTime = minDepartureTime + synodic_period * 1.5; maxTransferTime = hohmann_transfer_time * 1.5; maxArrivalTime.val = (synodic_period + hohmann_transfer_time) * 1.5; }
void ComputeTimes(Orbit o, Orbit destination, double universalTime) { if (destination == null || o == null || o.referenceBody.orbit == null) { return; } double synodic_period = o.referenceBody.orbit.SynodicPeriod(destination); double hohmann_transfer_time = OrbitUtil.GetTransferTime(o.referenceBody.orbit, destination); // Both orbit have the same period if (double.IsInfinity(synodic_period)) { synodic_period = o.referenceBody.orbit.period; } minDepartureTime = universalTime; minTransferTime = 3600; maxDepartureTime = minDepartureTime + synodic_period * 1.5; maxTransferTime = hohmann_transfer_time * 2.0; maxArrivalTime.val = synodic_period * 1.5 + hohmann_transfer_time * 2.0; }