Back to resource page for geodesics.

Implementations of the geodesic routines are now available in C,
Fortran, Java, JavaScript, Python, and Matlab (in addition to
C++). For details see
this link.

Care needs to be taken when solving the inverse problem for a
nonequatorial geodesic when both end points on the equator. In
Table 5, the quadrants for \(\sigma_1\) and \(\omega_1\) must be
determined taking \(\sin\sigma_1\) and \(\sin\omega_1\) to be
negative; this is consistent with the ordering \(\phi_1 \le 0\).

The 6thorder series given in the paper provide solutions for
the geodesic problem which are accurate to round off for
\(\leftf\right \lt 0.01\). The least accurate of the series
is the reverted series for \(\sigma\) in terms of \(\tau\),
Eqs. (20) and (21), which is used only in solving the direct
problem. The accuracy can be improved by using these equations
to give an initial approximation for \(\sigma\) which is
following by one step of Newton's method applied to Eq. (7),
with \(dI_1(\sigma)/d\sigma = \sqrt{1 + k^2 \sin^2\sigma}\).
With this change (which need only be applied for
\(\leftf\right \gt 0.01\)), the 6thorder series are accurate
to roundoff for \(\leftf\right \lt 0.02\).

Equation (63) give expansions for the area integral using
\(e'^2\) and \(k^2\) as small parameters. Unfortunately the
resulting series diverges for \(e' \gt 1\) or \(b/a \lt
1/\sqrt2\). This problem is remedied by expanding instead in
terms of \(n\) and \(\epsilon\). Thus Eq. (63) becomes
\[
\begin{align}
C_{40} &\textstyle= \bigl(\frac{2}{3}  \frac{4}{15} n + \frac{8}{105} n^2 +
\frac{4}{315} n^3 + \frac{16}{3465} n^4 + \frac{20}{9009} n^5\bigr)\\
&\textstyle\quad{} \bigl(\frac{1}{5}  \frac{16}{35} n +
\frac{32}{105} n^2  \frac{16}{385} n^3 
\frac{64}{15015} n^4\bigr) \epsilon\\
&\textstyle\quad{} \bigl(\frac{2}{105} + \frac{32}{315} n 
\frac{1088}{3465} n^2 + \frac{1184}{5005} n^3\bigr) \epsilon^2\\
&\textstyle\quad{}+ \bigl(\frac{11}{315}  \frac{368}{3465} n 
\frac{32}{6435} n^2\bigr) \epsilon^3\\
&\textstyle\quad{}+ \bigl(\frac{4}{1155} +
\frac{1088}{45045} n\bigr) \epsilon^4
+ \frac{97}{15015} \epsilon^5 + \ldots,\\
C_{41} &\textstyle= \bigl(\frac{1}{45}  \frac{16}{315} n +
\frac{32}{945} n^2  \frac{16}{3465} n^3 
\frac{64}{135135} n^4\bigr) \epsilon\\
&\textstyle\quad{} \bigl(\frac{2}{105}  \frac{64}{945} n +
\frac{128}{1485} n^2  \frac{1984}{45045} n^3\bigr) \epsilon^2\\
&\textstyle\quad{} \bigl(\frac{1}{105}  \frac{16}{2079} n 
\frac{5792}{135135} n^2\bigr) \epsilon^3\\
&\textstyle\quad{}+ \bigl(\frac{4}{1155} 
\frac{2944}{135135} n\bigr) \epsilon^4
+ \frac{1}{9009} \epsilon^5 + \ldots,\\
C_{42} &\textstyle= \bigl(\frac{4}{525}  \frac{32}{1575} n +
\frac{64}{3465} n^2  \frac{32}{5005} n^3\bigr) \epsilon^2\\
&\textstyle\quad{} \bigl(\frac{8}{1575}  \frac{128}{5775} n +
\frac{256}{6825} n^2\bigr) \epsilon^3\\
&\textstyle\quad{} \bigl(\frac{8}{1925} 
\frac{1856}{225225} n\bigr) \epsilon^4
+ \frac{8}{10725} \epsilon^5 + \ldots,\\
C_{43} &\textstyle= \bigl(\frac{8}{2205}  \frac{256}{24255} n +
\frac{512}{45045} n^2\bigr) \epsilon^3\\
&\textstyle\quad{} \bigl(\frac{16}{8085} 
\frac{1024}{105105} n\bigr) \epsilon^4
 \frac{136}{63063} \epsilon^5 + \ldots,\\
C_{44} &\textstyle= \bigl(\frac{64}{31185} 
\frac{512}{81081} n\bigr) \epsilon^4
 \frac{128}{135135} \epsilon^5 + \ldots,\\
C_{45} &\textstyle= \frac{128}{99099} \epsilon^5 + \ldots.
\end{align}
\]

In some applications, it is necessary to keep track of how many
times a geodesic encircles the earth, i.e., to determine the
value of \(\lambda_{12}\) without reducing it to some canonical
range. The geodesic classes offer this option through the
Geodesic::LONG_NOWRAP mask bit. In the case of the inverse
problem, we are interested in the shortest geodesic and thus
\(\lambda_{12}\in(\frac12\pi,\frac12\pi]\) (the geodesic
between points on opposite meridians is taken to be eastgoing).
When solving the direct geodesic problem, \(\sigma_{12}\) is
found in terms of the length of the geodesic, \(\omega\) and
\(\sigma\) are in the same quadrant, and they are related by
\(\tan\omega = \sin\alpha_0 \tan\sigma\). The "unwrapped" value
of \(\lambda_{12}\) is then given by
\[
\begin{align}
\omega_{12} &= \sigma_{12}
 \biggl(\tan^{1}\frac{\sin\sigma_2}{\cos\sigma_2} 
\tan^{1}\frac{\sin\sigma_1}{\cos\sigma_1}\biggr)\\
&\quad\qquad{}+ \biggl(\tan^{1}\frac{\sin\omega_2}{\cos\omega_2} 
\tan^{1}\frac{\sin\omega_1}{\cos\omega_1}\biggr),\\
\lambda_{12} &= \omega_{12}  f\sin\alpha_0
\bigl(I_3(\sigma_2)I_3(\sigma_1)\bigr).
\end{align}
\]

The starting guesses for Newton's method given in Sec. 5 are not
very good for highly eccentric ellipsoids. It's possible to
modify Newton's method so that it converges even for poor
initial guesses. The goal is to find the root of
\[
f(\alpha_1) \equiv \lambda_{12}(\alpha_1)  \lambda_{12} = 0,
\]
where \(\lambda_{12}(\alpha_1)\) is the solution of the hybrid
problem. There is exactly one root to this equation in the
interval \(\alpha_1 \in (0,\pi)\) and its derivative
\(f'(\alpha_1)\) is positive at the root. During the course of
the iteration, a range \((\alpha_{1a}, \alpha_{1b})\) is
maintained which brackets the root and with each evaluation of
\(f(\alpha_1)\) the range is shrunk, if possible. Newton's
method is restarted whenever the derivative of \(f(\alpha_1)\)
is negative (because the new value of \(\alpha_1\) is then
further from the solution) or if the new estimate of
\(\alpha_1\) lies outside \((0,\pi)\); in this case, the new
starting guess is taken to be \((\alpha_{1a} + \alpha_{1b}) /
2\).

In order to obtain accurate solutions for ellipsoids of
arbitrary eccentricity, it is necessary to replace the series
expansions for the integrals (which are valid only if \(f\) is
small) with direct evaluation in terms of elliptic integrals
(which are valid for all \(f\)). The key relations used are
\[
\begin{align}
\frac sb &= E(\sigma, ik), \\
\lambda &= \chi
 \frac{e'^2}{\sqrt{1+e'^2}}\sin\alpha_0 H(\sigma, e'^2, ik), \\
J(\sigma) &= k^2 D(\sigma, ik),
\end{align}
\]
where
\[
\begin{align}
\tan\chi &= \sqrt{\frac{1+e'^2}{1+k^2\sin^2\sigma}}\tan\omega, \\
H(\phi, \alpha^2, k)
&=
\frac1{\alpha^2} F(\phi, k) +
\biggl(1  \frac1{\alpha^2}\biggr) \Pi(\phi, \alpha^2, k),
\end{align}
\]
and \(F(\phi, k)\), \(E(\phi, k)\), \(D(\phi, k)\), and
\(\Pi(\phi, \alpha^2, k)\), are incomplete elliptic integrals
(see
http://dlmf.nist.gov/19.2.ii).

Google Books does not consistently provide access to the full
text. If you encounter this situation, you can download the
pdf files listed here:
Items 3–7 represent changes since the publication of the
paper. Changes 3–6 have been implemented in the
GeographicLib classes
Geodesic and
GeodesicLine
in GeographicLib versions 1.27, 1.26, 1.39, and 1.25, respectively.
Change 7 (the evaluation of the integrals in terms of elliptic
integrals) is implemented in the
GeographicLib
classes
GeodesicExact and
GeodesicLineExact which were added to GeographicLib 1.25.
For geodetic applications,
Geodesic and
GeodesicLine
are preferred, because they are about 2–3 times faster and the
roundoff errors are about 2–3 times smaller.
Some notes on geodesics on a triaxial ellipsoid are given
in Geodesics on a triaxial
ellipsoid. This examines the solution to this problem found
by Jacobi in 1839.
These errata apply to
the preprint
only:

p. 1, col. 2, last 2 lines: replace “present accuracy
and timing data are discussed” by “accuracy and
timing data are presented”.

p. 6, col. 1, last para.: replace “Eq. (6),
solve” by “Eq. (6). Solve”.

p. 10, col. 1, line 10: replace “using with
highprecision” by “using highprecision”.

p. 10, col. 1, 2nd para. of Sec. 8: replace “parallel
to the geodesic AB at A” by
“parallel to the geodesic AB
at A' ”.

p. 10, col. 2, before Eq. (67): replace “the curvature
is given by differentiating Eq. (37) with respect to φ
and dividing by” by “∇K is found by
differentiating Eq. (37) with respect to φ and dividing
the result by”.
Addenda:

Google Books does not consistently provide access to the full
text. If you encounter this situation, you can download the
pdf files listed here:

Christoffel (1910),
Google id:
9W9tAAAAMAAJ,
pdf:
christoffelV1.pdf.

Darboux (1894),
Google id:
hGMSAAAAIAAJ,
pdf:
darboux94.pdf.

Eisenhart (1909),
Google id:
hkENAAAAYAAJ,
pdf:
eisenhart09.pdf.

Forsyth (1896),
Google id:
YsAKAAAAIAAJ,
pdf:
messmathV25.pdf.

Gauss (1902),
Google id:
a1wTJR3kHwUC,
pdf:
gauss28en.pdf.

Gauss (1903),
Google id:
ICwPAAAAIAAJ,
pdf:
gaussV9.pdf.

Helmert (1880),
Google id:
qt2CAAAAIAAJ,
pdf:
helmert80.pdf.

Jacobi (1891),
Google id:
_09tAAAAMAAJ,
pdf:
jacobiV7.pdf.
Errata:

Sec. 1, para. 1, line 7: replace “taking” by
“taken”.

Sec. 1, last para., line 4: replace “concerned
the” by “concerned with the”.

p. 5, Eq. (44): replace “2l,σ” by
“2lσ,”.

Sec. 5, para. 1, line 1: replace “simply matter”
by “simply a matter”.

p. 5, col. 2, para. 1, 2nd last line: replace “gave him
with a” by “gave him a”.

p. 6, col. 2, following Eq. (53): replace “as noted as
the end” by “as noted at the end”.

p. 8, col. 1, para. 2, line 3: replace “the pair the
pair” by “the pair”.

Fig. 4, 2nd line of caption: delete “close”.

p. 9, col. 1, 2nd last line: replace “loose” by
“lose”.

p. 9, col. 2, Eq. (64): Helmert (1880), Eq. (7.3.7), also
suggested using this equation to solve for
α_{1}.

Sec. 7, 2nd last para., last line: replace “Helmert
(1880, §9.2)” by “Helmert (1880,
§7.2)”.

Sec. 7: remove the last sentence; there's an updated version
of Rapp (1993) available
at
http://hdl.handle.net/1811/24409.

p. 12, col. 1, Eq. (73): this equation may be obtained from
Helmert (1880), Eq. (6.9.8b).

p. 13, col. 1, para. 2, line 3: replace
“φ_{1} + φ_{1} = 0” by
“φ_{1} + φ_{2} = 0”.

Sec. 11, last para., line 1: replace “solution” by
“solutions”.

Sec. 11, last line: replace “slowly that” by
“slowly than”.

p. 19, col. 2, line 6: replace “Thus leads to” by
“This leads to”.

p. 20, col. 2, 4 lines before 2nd eq.: replace
“solving” by “solved”.

Sec. 14, line 4: replace “these rule” by
“these rules”.

p. 20, col. 2, line 5: replace “of of” by
“of”.

p. 21, col. 2, 9th last line: replace “the
point with is a distance” by “the point which is a
distance”.

p. 21, col. 2, 3rd last line: replace “it can also be
solving” by “it can also be solved”.

p. 23, col. 1, para. 2, line 3: replace
“2πc^{2}” by
“2πR_{q}^{2}”.

p. 23, col. 1, para. 2, 4th last line: replace
“the Japan” by “Japan”.

p. 23, col. 2, last line: replace “has has” by
“has”.

App. B, line 7: replace “can therefore by used” by
“can therefore be used”.

p. 25, col. 1, 2nd last line: the link to Olver et al.,
Sec. 1.11(iii), is incorrect; it should be
http://dlmf.nist.gov/1.11.iii.

p. 25, col. 2, last line: replace “x
≤ e^{2}” by “x
≤ e^{2}”.

p. 26, col. 1, line 2 following Eq. (C1): replace
“AFGB” by “AFHB”.

p. 26, col. 2, following 3rd eq.: insert comma between the
inline equations for b and γ.

p. 27, col. 2, Eq. (D4): replace
“c^{2}” by
“R_{q}^{2}”.

p. 29, col. 1, refs. Oriani (1806, 1808, 1810): replace
“trigonemetria” by “trigonometria”.
Back to resource page for geodesics.
Charles Karney
<charles@karney.com>
(20141231)
GeographicLib home