From 582ca1be0db91a3b825fa9b2fc346e991de7b76c Mon Sep 17 00:00:00 2001 From: jd284 <jd284@users.noreply.github.com> Date: Sat, 22 Jul 2017 00:33:58 +0200 Subject: [PATCH] Correctly compute relative velocity when target is in different SOI FlightGlobals.ship_tgtSpeed is not correct when the target is in a different SOI. Fixed by subtracting the GetFrameVel() values instead. --- .../Readouts/Rendezvous/RendezvousProcessor.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs b/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs index a26d9827..b570f58a 100644 --- a/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs +++ b/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs @@ -182,7 +182,16 @@ public void Update() : FlightGlobals.ship_orbit.referenceBody.orbit; RelativeInclination = originOrbit.GetRelativeInclination(targetOrbit); - RelativeVelocity = FlightGlobals.ship_tgtSpeed; + + if (targetOrbit.referenceBody == FlightGlobals.ship_orbit.referenceBody) + { + RelativeVelocity = FlightGlobals.ship_tgtSpeed; + } + else + { + RelativeVelocity = (FlightGlobals.ship_orbit.GetFrameVel() - targetOrbit.GetFrameVel()).magnitude; + } + RelativeSpeed = FlightGlobals.ship_obtSpeed - targetOrbit.orbitalSpeed; PhaseAngle = originOrbit.GetPhaseAngle(targetOrbit); InterceptAngle = CalcInterceptAngle(targetOrbit, originOrbit); @@ -229,4 +238,4 @@ private Vector3d GetDescendingNode(Orbit targetOrbit, Orbit originOrbit) return Vector3d.Cross(originOrbit.GetOrbitNormal(), targetOrbit.GetOrbitNormal()); } } -} \ No newline at end of file +}