/// <summary> /// Parent ralitive velocity vector. /// </summary> /// <returns>The orbital vector ralitive to the parent</returns> /// <param name="orbit">Orbit.</param> /// <param name="atDateTime">At date time.</param> public static Vector3 InstantaneousOrbitalVelocityVector_m(OrbitDB orbit, DateTime atDateTime) { var position = GetPosition_m(orbit, atDateTime); var sma = orbit.SemiMajorAxis; if (orbit.GravitationalParameter_Km3S2 == 0 || sma == 0) { return(new Vector3()); //so we're not returning NaN; } var sgp = orbit.GravitationalParameter_m3S2; double e = orbit.Eccentricity; double trueAnomaly = GetTrueAnomaly(orbit, atDateTime); double aoP = orbit.ArgumentOfPeriapsis; double i = orbit.Inclination; double loAN = orbit.LongitudeOfAscendingNode; return(OrbitMath.ParentLocalVeclocityVector(sgp, position, sma, e, trueAnomaly, aoP, i, loAN)); }