[Proj] Reduced length of geodesics

Charles Karney ckarney at sarnoff.com
Fri May 1 04:50:17 EST 2009

I've updated my geodesic routines again.  For documentation go to


The code itself (C++ classes and the Geod utility) is available at


The main changes are:

    * I use Bessel's technique to halve the number of terms in the
      series for the distance and longitude integrals.  The resulting
      series converge faster than before; so I trimmed the order of the
      distance series.  The resulting speed up of the code is then
      canceled by...

    * The reduced length, m12, is returned.  This is rate at which the
      second end point moves when the geodesic is rotated about the
      first point (and vice versa).  Christoffel (1868) introduced this
      quantity in his study of geodesic triangles.  For geodesics on a
      flat surface the geodesic length and the reduced length are the

    * An AzimuthalEquidistant class is provided which is a wrapper on
      top of the Geodesic class.  The azimuth at the second point and
      the reduced length are returned by the projection methods of this
      class since they serve to specify the local metric in the
      projected space.  (In particular, the ratio s12/m12 gives the
      azimuthal scale factor.)

    * The Geocentric, TransverseMercator, and PolarStereographic classes
      now work with prolate ellipsoids.  (TransverseMercatorExact is
      still restricted to prolate ellipsoids and will likely remain so).

Unfortunately, I've made little progress with documenting the geodesic
routines over the past month (because I've been concentrating on making
them better).  However, if anyone has a specific question about the
code, please ask me.

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

Tel: +1 609 734 2312
Fax: +1 609 734 2662

More information about the Proj mailing list