Code covered by the BSD License  

Highlights from
Geodesics on an ellipsoid of revolution

5.0 | 2 ratings Rate this file 41 Downloads (last 30 days) File Size: 26.2 KB File ID: #39108
image thumbnail

Geodesics on an ellipsoid of revolution



20 Nov 2012 (Updated )

Solutions of the direct and inverse geodesic problems

| Watch this File

File Information

This package includes three routines GEODDISTANCE, GEODRECKON, and
GEODAREA which solve various problems involving geodesics on the surface
of an ellipsoid of revolution. These are based on the paper
  C. F. F. Karney, Algorithms for geodesics,
  J. Geodesy 87, 43-55 (2013);
which, in turn, is based on the classic solution of the geodesic
problems pioneered by Legendre (1806), Bessel (1825), and Helmert
GEODRECKON solves the direct geodesic problem (determining an end point
given a starting point, range, and bearing). GEODDISTANCE solves the
inverse geodesic problem (determining the shortest distance between two
points). GEODAREA determines the area of a polygon whose edges are
  * The routines are accurate to round off for abs(f) < 1/50. For
    example, for the WGS84 ellipsoid, the error in the distance returned
    by GEODDISTANCE is less then 15 nanometers.
  * The routines work for prolate (as well as oblate) ellipsoids.
  * GEODDISTANCE converges for all inputs.
  * Differential and integral properties of the geodesics are computed.
  * GEODAREA is accurate regardless of the length of the edges of the
Also provided are 3 auxiliary routines, DEFAULTELLIPSOID, ECC2FLAT, and

This package is used by the MATLAB File Exchange packages "Geodesic
projections for an ellipsoid",

and "Great ellipses",

Use GEODDOC to obtain a more detailed description.


This file inspired Geographiclib, Great Ellipses, and Geodesic Projections For An Ellipsoid.

Required Products MATLAB
MATLAB release MATLAB 8.1 (R2013a)
MATLAB Search Path
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (3)
29 Oct 2014 Charles Karney

There's a bad bug in the area calculation in the Matlab routine
geodreckon. Probably, most people calculate areas as part of the
solution of inverse problem using geoddistance; this might explain why
this bug has gone unnoticed for so long. Here is the fix which will be
included in the next release of GeographicLib.

--- old/geographiclib-matlab/geodreckon.m 2014-10-02 08:08:46.000000000 -0400
+++ new/geographiclib-matlab/geodreckon.m 2014-10-28 18:02:05.000000000 -0400
@@ -225,7 +225,7 @@

if areap
C4x = C4coeff(n);
- C4a = C4f(eps, C4x);
+ C4a = C4f(epsi, C4x);
A4 = (a^2 * e2) * calp0 .* salp0;
B41 = SinCosSeries(false, ssig1, csig1, C4a);
B42 = SinCosSeries(false, ssig2, csig2, C4a);

Comment only
21 Dec 2013 Ryan

Ryan (view profile)

This... is absolutely wonderful. I spent ages looking for a toolbox that would calculate geodesic areas. I figured that my only two options would be to purchase the MATLAB mapping toolbox or write a routine myself. I'm so glad I finally found this. Thank you kindly, sir.

03 Feb 2013 littyer


03 Dec 2012

Synchronize files with GeographicLib 1.27.

11 Dec 2012

Update to GeographicLib 1.28. Fixes 2 bugs: (1) incorrect area returned in certain obscure cases; (2) m12 incorrect for meridional geodesics.

16 Jan 2013

Update journal reference.

02 Jul 2013

Minor improvements to the calculation of short geodesics and the computation of areas.

02 Oct 2014

Synchronize with GeographicLib 1.38.
Minor documentation changes only.

11 Nov 2014

Synchronize with GeographicLib 1.39. Fix the bug in geodreckon
noted on 2014-10-29. Provide the option to prevent the longitude
returned in geodreckon from being reduced to [-180,180).

12 Nov 2014

Uncheck toolbox

21 Nov 2014

Offer as toolbox.

22 Apr 2015

Update to GeographicLib 1.41.1. Point fix for geodarea.m to handle
polygons which encircle the pole multiple times. E.g.,
  geodarea(89+zeros(6,1), [-360:120:240]')
used to return -2.5500e+14 (incorrect);
it now returns 3.2415e+10 (correct).

Contact us