private static (float extraDistance, float percentageAlongRoute) ExtraDistanceIncurred(
            GalacticSystem systemA, GalacticSystem systemB, GalacticPOI poi, float originalDistance)
        {
            var a = systemA.Coordinates;
            var b = systemB.Coordinates;
            var p = poi.Coordinates;

            var aToPOI = System.Numerics.Vector3.Distance(a, p);

            if (a == b)
            {
                return(aToPOI, 0f);
            }

            // Find the closest point to the POI along the straight line route, expressed as 0 (closest to a) to 1 (closest to b).
            float distanceSquared    = originalDistance * originalDistance;
            float distanceAlongRoute = Math.Max(0f, Math.Min(1f, System.Numerics.Vector3.Dot(p - a, b - a) / distanceSquared));

            var bToPOI                     = System.Numerics.Vector3.Distance(b, p);
            var distanceViaPOI             = aToPOI + bToPOI;
            var extraDistance              = distanceViaPOI - originalDistance;
            var approxPercentageAlongRoute = distanceAlongRoute * 100f;

            return(extraDistance, approxPercentageAlongRoute);
        }
 public ScenicSuggestion(EDScenicRouteWeb.Server.Models.GalacticPOI poi, float extraDistance, float percentageAlongRoute)
 {
     POI                  = poi;
     ExtraDistance        = extraDistance;
     PercentageAlongRoute = percentageAlongRoute;
 }