Home | Back
# $Id: NEWS 6898 2010-11-19 19:21:49Z karney $

A reverse chronological list of changes to GeographicLib

For more information, see

    http://geographiclib.sourceforge.net/

The current version of the library is 1.5.

Changes between 1.5 (released 2010-11-19) and 1.4 versions:

  * Improve area calculations for small polygons.

  * Add -s and -r flags to Planimeter utility.

  * Improve the accuracy of GeographicLib::LambertConformalConic using
    divided differences.

  * FIX BUG in meridian convergence returned by
    LambertConformalConic::Forward.

  * Add optional threadsafe parameter to GeographicLib::Geoid
    constructor.  WARNING: This changes may break binary compatibility
    with previous versions of GeographicLib.  However, the library is
    source compatible.

  * Add GeographicLib::OSGB.

  * Matlab and Octave interfaces to GeographicLib::UTMUPS,
    GeographicLib::MGRS, GeographicLib::Geoid, GeographicLib::Geodesic
    provided.

  * Minor changes
    + explicitly turn on optimization in Visual Studio 2008 projects;
    + add missing dependencies in some Makefiles;
    + move pi() and degree() from GeographicLib::Constants to
      GeographicLib::Math;
    + introduce GeographicLib::Math::extended type to aid testing;
    + add GeographicLib::Math::epi() and GeographicLib::Math::edegree().
    + fixes to compile under cygwin;
    + tweak expression used to find latitude from conformal latitude.

Changes between 1.4 (released 2010-09-12) and 1.3 versions:

  * Changes to GeographicLib::Geodesic and GeographicLib::GeodesicLine:
    + FIX BUG in Geodesic::Inverse with prolate ellipsoids;
    + add area computations to Geodesic::Direct and Geodesic::Inverse;
    + add geodesic areas to geodesic test set;
    + make GeodesicLine constructor public;
    + change longitude series in Geodesic into Helmert-like form;
    + ensure that equatorial geodesics have cos(alpha0) = 0 identically;
    + generalize interface for Geodesic and GeodesicLine;
    + split GeodesicLine and Geodesic into different files;
    + signal convergence failure in Geodesic::Inverse with NaNs;
    + deprecate one function in Geodesic and two functions in
      GeodesicLine;
    + deprecate -n option for Geod.
    WARNING: These changes may break binary compatibility with previous
    versions of GeographicLib.  However, the library is source
    compatible (with the proviso that GeographicLib/GeodesicLine.hpp may
    now need to be included).

  * Add the Planimeter utility for computing the areas of
    geodesic polygons.

  * Improve iterative solution of GeographicLib::Gnomonic::Reverse.

  * Add GeographicLib::Geoid::ConvertHeight.

  * Add -msltohae, -haetomsl, and -z options to \ref geoideval.

  * Constructors check that minor radius is positive.

  * Add overloaded Forward and Reverse functions to the projection
    classes which don't return the convergence (or azimuth) and scale.

  * Document function parameters and return values consistently.

Changes between 1.3 (released 2010-07-21) and 1.2 versions:

  * Add GeographicLib::Gnomonic, the ellipsoid generalization of the
    gnomonic projection.

  * Add -g and -e options to Equidistanttest.

  * Use fixed-point notation for output from Cartconvert,
    Equidistanttest, Transversemercatortest.

  * PolarStereographic:
    + Improved conversion to conformal coordinates;
    + Fix bug with scale at opposite pole;
    + Complain if latitude out of range in SetScale.

  * Add GeographicLib::Math::NaN().

  * Add long double version of hypot for Windows.

  * Add EllipticFunction::E(real).

  * Update references to Geotrans in MGRS documentation.

  * Speed up tmseries.mac.

Changes between 1.2 (released 2010-05-21) and 1.1 versions:

  * FIX BUGS in GeographicLib::Geodesic,
    + wrong azimuth returned by Direct if point 2 is on a pole;
    + Inverse sometimes fails with very close points.

  * Improve calculation of scale in GeographicLib::CassiniSoldner,
    + add GeodesicLine::Scale, GeodesicLine::EquatorialAzimuth, and
      GeodesicLine::EquatorialArc;
    + break friend connection between CassiniSoldner and Geodesic.

  * Add DMS::DecodeAngle and DMS::DecodeAzimuth. Extend DMS::Decode and
    DMS::Encode to deal with distances.

  * Code and documentation changes in Geodesic and Geocentric for
    consistency with the forthcoming paper on geodesics.

  * Increase order of series using in Geodesic to 6 (full accuracy
    maintained for ellipsoid flattening < 0.01).

  * Macro __NO_LONG_DOUBLE_MATH to disable use of long double.

  * Correct declaration of Math::isfinite to return a bool.

  * Changes in the Utility Programs,
    + improve error reporting when parsing command line arguments;
    + accept latitudes and longitudes in decimal degrees or degrees,
      minutes, and seconds, with optional hemisphere designators;
    + GeoConvert -z accepts zone or zone+hemisphere;
    + GeoidEval accepts any of the input formats used by GeoConvert;
    + CartConvert allows the ellipsoid to be specified with -e.

Changes between 1.1 (released 2010-02-09) and 1.0 versions:

  * FIX BUG (introduced in 2009-03) in EllipticFunction::E(sn,cn,dn).

  * Increase accuracy of scale calculation in TransverseMercator and
    TransverseMercatorExact.

  * Code and documentation changes for consistency with arXiv:1002.1417

Changes between 1.0 (released 2010-01-07) and 2009-11 versions:

  * Add autoconf configuration files.

  * BUG FIX: Improve initial guess for Newton's method in
    PolarStereographic::Reverse.  (Previously this failed to converge
    when the co-latitude exceeded about 130 deg.)

  * Constructors for TransverseMercator, TransverseMercatorExact,
    PolarStereographic, Geocentric, and Geodesic now check for obvious
    problems with their arguments and throw an exception if necessary.

  * Most classes now include inspector functions such as MajorRadius()
    so that you can determine how instances were constructed.

  * Add GeographicLib::LambertConformalConic class.

  * Add GeographicLib::PolarStereographic::SetScale to allow the
    latitude of true scale to be specified.

  * Add solution and project files for Visual Studio 2008.

  * Add GeographicLib::GeographicErr for exceptions.

  * GeographicLib::Geoid changes:
    + BUG FIX: fix typo in GeographicLib::Geoid::Cache which could cause
      a segmentation fault in some cases when the cached area spanned
      the prime meridian.
    + Include sufficient edge data to allow heights to be returned for
      cached area without disk reads;
    + Add inspector functions to query the extent of the cache.

Changes between 2009-11 and 2009-10 versions:

  * Allow specification of "closest UTM zone" in GeographicLib::UTMUPS
    and GeoConvert (via -t option).

  * Utilities now complain is there are too many tokens on input lines.

  * Include real-to-real versions of GeographicLib::DMS::Decode and
    GeographicLib::DMS::Encode.

  * More house-cleaning changes:
    + Ensure that functions which return results through reference
      arguments do not alter the arguments when an exception is thrown.
    + Improve accuracy of GeographicLib::MGRS::Forward.
    + Include more information in some error messages.
    + Improve accuracy of inverse hypobolic functions.
    + Fix the way GeographicLib::Math functions handle different
      precisions.

Changes between 2009-10 and 2009-09 versions:

  * Change web site to http://geographiclib.sourceforge.net

  * Several house-cleaning changes:
    + Change from the a flat directory structure to a more easily
      maintained one.
    + Introduce Math class for common mathematical functions (in
      Constants.hpp).
    + Use Math::real as the type for all real quantities.  By default this
      is typedefed to double; and the library should be installed this
      way.
    + Eliminate const reference members of AzimuthalEquidistant,
      CassiniSoldner and LocalCartesian so that they may be copied.
    + Make several constructors explicit.  Disallow some constructors.
      Disallow copy constructor/assignment for Geoid.
    + Document least square formulas in Geoid.cpp.
    + Use unsigned long long for files positions of geoid files in Geoid.
    + Introduce optional mgrslimits argument in UTMUPS::Forward and
      UTMUPS::Reverse to enforce stricter MGRS limits on eastings and
      northings.in
    + Add 64-bit targets in Visual Studio project files.

Changes between 2009-09 and 2009-08 versions:

  * Add GeographicLib::Geoid and GeoidEval utility.

Changes between 2009-08 and 2009-07 versions:

  * Add GeographicLib::CassiniSoldner class and EquidistantTest utility.

  * Fix bug in GeographicLib::Geodesic::Inverse where NaNs were
    sometimes returned.

  * INCOMPATIBLE CHANGE: AzimuthalEquidistant now returns the reciprocal
    of the azimuthal scale instead of the reduced length.

  * Add -n option to GeoConvert.

Changes between 2009-07 and 2009-06 versions:

  * Speed up the series inversion code in tmseries.mac and geod.mac.

  * Reference Borkowski in section on Geocentric coordinates.

Changes between 2009-06 and 2009-05 versions:

  * Add routines to decode and encode zone+hemisphere to GeographicLib::UTMUPS.

  * Clean up code in GeographicLib::Geodesic.

Changes between 2009-05 and 2009-04 versions:

  * Improvements to GeographicLib::Geodesic:
    + more economical series expansions,
    + return reduced length (as does the Geod utility),
    + improved calculation of starting point for inverse method,
    + use reduced length to give derivative for Newton's method.

  * Add AzimuthalEquidistant class.

  + Make GeographicLib::Geocentric, GeographicLib::TransverseMercator,
    and GeographicLib::PolarStereographic classes work with prolate
    ellipsoids.

  * CartConvert checks its inputs more carefully.

  * Remove reference to defunct Constants.cpp from GeographicLib.vcproj.

Changes between 2009-04 and 2009-03 versions:

  * Use compile-time constants to select the order of series in
    GeographicLib::TransverseMercator.

  * 2x unroll of Clenshaw summation to avoid data shuffling.

  * Simplification of GeographicLib::EllipticFunction::E.

  * Use STATIC_ASSERT for compile-time checking of constants.

  * Improvements to GeographicLib::Geodesic:
    + compile-time option to change order of series used,
    + post maxima code for generating the series,
    + tune the order of series for double,
    + improvements in the selection of starting points for Newton's
      method,
    + accept and return spherical arc lengths,
    + works with both oblate and prolate spheroids,
    + add -a, -e, -b options to the Geod utility.

Changes between 2009-03 and 2009-02 versions:

  * Add GeographicLib::Geodesic and the Geod utility.

  * Declare when no exceptions are thrown by functions.

  * Minor changes to GeographicLib::DMS class.

  * Use invf = 0 to mean a sphere in constructors to some classes.

  * The makefile creates a library and includes an install target.

  * Rename GeographicLib::ECEF to GeographicLib::Geocentric, ECEFConvert
    to CartConvert.

  * Use inline functions to define constant doubles in Constants.hpp.

Changes between 2009-02 and 2009-01 versions:

  * Fix documentation of constructors (flattening -> inverse
    flattening).

  * Use std versions of math functions.

  * Add ECEF and LocalCartesian classes and ECEFConvert utility.

  * Gather the documentation on the utility programs onto one page.