From 573535b6fd8a0c5d0d734777556cf7cba39cace8 Mon Sep 17 00:00:00 2001 From: Phil de Joux Date: Mon, 29 Jan 2018 17:35:31 -0500 Subject: [PATCH] Add a section for finding the optimal route, #4. --- apx-flare-timing.tex | 140 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/apx-flare-timing.tex b/apx-flare-timing.tex index 7195e46..fb4c1d0 100644 --- a/apx-flare-timing.tex +++ b/apx-flare-timing.tex @@ -107,6 +107,146 @@ \subsection{Extracting Inputs} \end{lstlisting} +\newpage +\subsection{Finding an Optimal Route} + +To find the best route \texttt{flare-timing} constructs a graph and finds the +shortest path connecting the nodes. It puts nodes on the turnpoint cylinder arc +boundaries and uses the haversine distance as the cost of connecting nodes in +the network. It would be expensive to construct and evaluate a large network +with the accuracy required so in an iterative process, as the arc of the circle +is closed, the density of nodes is increased. All happening on the FAI sphere, +this is the edge to edge distance. + +\begin{lstlisting}[caption={Edge to edge distance of the optimal route, \texttt{edgeToEdge} node of \texttt{*.task-length.yaml}.}] +taskRoutes: + edgeToEdge: + distance: 159.373683 + legs: + - 10.078208 + - 42.525217 + - 0 + - 64.949832 + - 41.820427 + legsSum: + - 10.078208 + - 52.603424 + - 52.603424 + - 117.553256 + - 159.373683 + waypoints: + - lat: -33.36047067 + lng: 147.93206999 + - lat: -33.43411056 + lng: 147.86878018 + - lat: -33.7159199 + lng: 147.55846831 + - lat: -33.7159199 + lng: 147.55846831 + - lat: -33.13199024 + lng: 147.57575486 + - lat: -33.35857718 + lng: 147.93468357 +\end{lstlisting} + +The naive way to measure task length would just be to connect the centers of each control zone. This is the point to point distance. + +\begin{lstlisting}[caption={Which fixes are considered flown, \texttt{flying} +nodes of \texttt{*.task-length.yaml}.}] +taskRoutes: + pointToPoint: + distance: 169.10714 + legs: + - 57.427511 + - 69.547668 + - 42.131961 + legsSum: + - 57.427511 + - 126.975179 + - 169.10714 + waypoints: + - lat: -33.36137 + lng: 147.93207 + - lat: -33.75343 + lng: 147.52864998 + - lat: -33.12908 + lng: 147.57322998 + - lat: -33.36099999 + lng: 147.93149998 +\end{lstlisting} + +Knowing that FS uses a plane to work out the shortest route in two dimensions, +on the the Universal Transverse Mercator projection. We can also do that with +our graph algorithm. + +\begin{lstlisting}[caption={Points on the plane, distances on the sphere, \texttt{projection/spherical} nodes of +\texttt{*.task-length.yaml}.}] +taskRoutes: + projection: + spherical: + distance: 159.373683 + legs: + - 10.078208 + - 42.525217 + - 0 + - 64.949832 + - 41.820427 + legsSum: + - 10.078208 + - 52.603424 + - 52.603424 + - 117.553256 + - 159.373683 + waypoints: + - lat: -33.36047067 + lng: 147.93206999 + - lat: -33.43411056 + lng: 147.86878018 + - lat: -33.7159199 + lng: 147.55846831 + - lat: -33.7159199 + lng: 147.55846831 + - lat: -33.13199024 + lng: 147.57575486 + - lat: -33.35857718 + lng: 147.93468357 +\end{lstlisting} +\begin{lstlisting}[caption={Points and distances on the plane, \texttt{projection/planar} nodes of +\texttt{*.task-length.yaml}.}] +taskRoutes: + projection: + planar: + distance: 159.144781 + legs: + - 10.065441 + - 42.4942 + - 0 + - 64.761082 + - 41.820427 + legsSum: + - 10.065441 + - 52.559642 + - 52.559642 + - 117.320723 + - 159.14115 + mappedPoints: + - easting: 586715.834 + northing: 6308362.198 + - easting: 580759.282 + northing: 6300248.47 + - easting: 551744.701 + northing: 6269201.551 + - easting: 551744.701 + northing: 6269201.551 + - easting: 553704.761 + northing: 6333932.964 + - easting: 586960.882 + northing: 6308569.955 + mappedZones: + - latZone: H + lngZone: 55 +\end{lstlisting} + \newpage \subsection{Finding Zone Crossings}