Menu

GeographicLib 2.0 (released 2022-05-06)

Changes between 2.0 (released 2022-05-06) and 1.52 versions:

  • Remove non C++ implementations from this package. These are now
    managed as separate packages. See
    https://geographiclib.sourceforge.io/doc/library.html#languages

  • This allowed the cmake interface to be rationalized:

    • Replace GEOGRAPHICLIB_LIB_TYPE by BUILD_SHARED_LIBS (a standard
      cmake variable) and BUILD_BOTH_LIBS.
    • Remove COMMON_INSTALL_PATH and replace with variables to
      specify where various components are to be installed.
    • Remove BUILD_NETGEOGRAPHICLIB.
    • Remove legacy cmake config support (non-namespace).
    • make exampleprograms does a separate cmake configuration to
      mimic how a user's program might find GeographicLib.
    • find_package (GeographicLib) now sets and checks the value of
      GEOGRAPHICLIB_PRECISION.
    • Improve the separation of end-user and maintain cmake code.
  • More careful treatment of +/-0d and +/-180d.

    • These behave consistently with taking the limits
      • +/-0 means +/-eps as eps -> 0+
      • +/-180 means +/-(180 - eps) as eps -> 0+
    • As a consequence, azimuths of +0d and +180d are reckoned to be
      east-going, as far as tracking the longitude with
      Geodesic::LONG_UNROLL and the area goes, while azimuths -0d and
      -180d are reckoned to be west-going.
    • When computing longitude differences, if lat2 - lat1 = +/-180d
      (mod 360d), then the sign is picked depending on the sign of
      the difference.
    • The normal range for returned longitudes and azimuths is
      [-180d, 180d].
  • Programs in directory tests now allow testing to extend beyond
    invocations of the utility programs.

  • BUG FIXES:

    • Fixed bug where in the solution of the inverse geodesic problem where
      with lat1 = 0 and lat2 = nan was treated as equatorial.
    • Fixed roundoff corner case in geodesic area computation (only
      triggered with long double).
  • Minor changes in code:

    • Use fmin, fmax, fabs instead of min, max, abs, where appropriate.
    • Parameterize the conversion units for degrees, minutes, seconds as
      Math::qd, Math::dm, Math::ms.
    • Ellipsoid::MinorRadius() has be renamed Ellipsoid::PolarRadius().
    • Remove deprecated functions: XXX::MajorRadius, Utility::val, and
      placeholders (Math::cbrt, etc.) for C++11 math functions.
    • Can specify the comment character in Utility::ParseLine.
    • Rename various internal identifiers to avoid reserved names.
    • Remove unused internal variable in RhumbLine.
    • The documentation for EllipticFunction specifies restrictions on
      the arguments.
    • Put GeodesicExactC4.cpp back into GeodesicExact.cpp.
  • Library file now called libGeographicLib.so, etc., instead of
    libGeographic.so.

  • The .NET version of GeographicLib has been removed.

Posted by Charles Karney 2022-05-06

Log in to post a comment.