[Proj] Accurate algorithm for geodesic calculations

Charles Karney ckarney at sarnoff.com
Sat Feb 28 14:17:14 PST 2009


I've implemented an algorithm for geodesic calculations for an ellipsoid
with the following features:

 * It uses expansions accurate to 8th order in the ellipsoid flattening.
   This gives 12 nm accuracy using doubles and 6 pm accuracy using long
   doubles.
 * The direct calculation uses a reverted series and is therefore
   non-iterative.  A mechanism is provided to do a series of direct
   calculations on a single geodesic which is faster by a factor of 2.5.
 * The inverse calculation uses Newton's method to determine the
   azimuth.  This typically converges in 3 iterations.  I haven't found
   any cases where it fails to converge.
 * I provide a large test set geodesics for the WGS84 ellipsoid which is
   accurate to 0.1 pm and 10^-18 degree.  Thus was generated by Maxima
   using 20th order expansions (approximately accurate to 1 part in
   10^50).

Further information is available at

    http://charles.karney.info/geographic/geodesic.html

The code itself (C++ classes and a program for doing geodesic
calculations) is available at

    http://charles.karney.info/geographic

This compiles with g++ and Visual Studio 2005.

Still to do:

 * Reduce the order of the expansions to match precision available with
   doubles.
 * Improve the starting guesses for Newton's method to reduce to number
   of iterations in some cases.
 * More documentation on the method.
 * Provide Maxima code to generate the expansions.

-- 
Charles Karney <ckarney at sarnoff.com>
Sarnoff Corporation, Princeton, NJ 08543-5300

URL: http://charles.karney.info
Tel: +1 609 734 2312
Fax: +1 609 734 2662



More information about the Proj mailing list