public static double GetAngleToRetrograde(this Orbit orbit, double universalTime) { if (orbit.referenceBody == CelestialBodies.SystemBody.CelestialBody) { return(0.0); } Vector3d orbitVector = orbit.getRelativePositionAtUT(universalTime); orbitVector.z = 0.0; Vector3d bodyVector = orbit.referenceBody.orbit.getOrbitalVelocityAtUT(universalTime); bodyVector.z = 0.0; double angle = AngleHelper.GetAngleBetweenVectors(-bodyVector, orbitVector); return(AngleHelper.Clamp360(orbit.inclination < 90.0 ? angle : 360.0 - angle)); }
public static double GetPhaseAngle(this Orbit orbit, Orbit target) { var angle = AngleHelper.GetAngleBetweenVectors(Vector3d.Exclude(orbit.GetOrbitNormal(), target.pos), orbit.pos); return((orbit.semiMajorAxis < target.semiMajorAxis) ? angle : angle - 360.0); }