# $Id: bf487351aa8f47c072bea91c7eaab8234f76a049 $
A reverse chronological list of changes to GeographicLib For more information, see http://geographiclib.sourceforge.net/ The current version of the library is 1.10. Changes between 1.10 (released 2011-06-11) and 1.9 versions: * Improvements to Matlab/Octave interface: + add {geocentric,localcartesian}{forward,reverse}; + make geographiclibinterface more general; + install the source for the interface; + cmake compiles the interface if ENABLE_MATLAB=ON; + include compiled interface with Windows binary installer. * Fix various configuration issues + autoconf did not install Config.h; + cmake installed in man/man1 instead of share/man/man1; + cmake did not set the rpath on the tools. * FIX BUG: cmake installed in man/man1 instead of share/man/man1. Changes between 1.9 (released 2011-05-28) and 1.8 versions: * FIX BUG in area returned by Planimeter for pole encircling polygons. * FIX BUG in error message reported when DMS::Decode reads the string "5d.". * FIX BUG in AlbersEqualArea::Reverse (lon0 not being used). * Ensure that all exceptions thrown in the Utility Programs are caught. * Avoid using catch within GeographicLib::DMS. * Move Accumulator class from Planimeter.cpp to Constants.hpp. * Add Math::sq<T>. * Simplify Installing the geoid datasets + add geographiclib-get-geoids for Unix-like systems; + add installers for Windows. * Provide cmake support: + build binary installer for Windows; + include regression tests; + add --input-string, --input-file, --output-file options to the Utility Programs to support tests. * Rename utility EquidistantTest as GeodesicProj and TransverseMercatorTest as TransverseMercatorProj. * Add ConicProj. * Reverse the initial sense of the -s option for Planimeter. * Migrate source from subversion to git. Changes between 1.8 (released 2011-02-22) and 1.7 versions: * Optionally return rotation matrix from GeographicLib::Geocentric and GeographicLib::LocalCartesian. * For the Utility Programs, supply man pages, -h prints the synopsis, --help prints the man page, --version prints the version. * Use accurate summation in Planimeter. * Add 64-bit targets for Visual Studio 2010. * Use templates for defining math functions and some constants. * GeographicLib::Geoid updates + Add GeographicLib::Geoid::DefaultGeoidPath and GeographicLib::Geoid::DefaultGeoidName; + GeoidEval uses environment variable GEOID_NAME as the default geoid; + Add --msltohae and --haetomsl as GeoidEval options (and don't document the single hyphen versions). * Remove documentation that duplicates papers on transverse Mercator and geodesics. Changes between 1.7 (released 2010-12-21) and 1.6 versions: * FIX BUG in scale returned by GeographicLib::LambertConformalConic::Reverse. * Add GeographicLib::AlbersEqualArea projection. * Library created by Visual Studio is Geographic.lib instead of GeographicLib.lib (compatible with makefiles). * Make classes NaN aware. * Use cell arrays for MGRS strings in Matlab. * Add solution/project files for Visual Studio 2010 (32-bit only). * Use C++0X static_assert and math functions, if available. Change between 1.6 (released 2010-11-23) and 1.5 versions: * FIX BUG introduced in GeographicLib::Geoid in version 1.5 (found by Dave Edwards). 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. |