public Vector3d GetWaypointPosition(double latitude, double longitude, CelestialBody body, Vector3d bodyPosition, double time)
 {
     Planetarium.CelestialFrame BodyFrame = default;
     if (body.rotationPeriod != 0)
     {
         var rotPeriodRecip = 1.0 / body.rotationPeriod;
         var rotationAngle  = (body.initialRotation + 360.0 * rotPeriodRecip * time) % 360.0;
         var directRotAngle = (rotationAngle - Planetarium.InverseRotAngle) % 360.0;
         Planetarium.CelestialFrame.PlanetaryFrame(0.0, 90.0, directRotAngle, ref BodyFrame);
     }
     return(BodyFrame.LocalToWorld(body.GetRelSurfacePosition(latitude, longitude, 0).xzy).xzy + bodyPosition);
 }