[geographiclib] 01/04: Imported Upstream version 1.21
Francesco Lovergine
frankie at moszumanska.debian.org
Wed Mar 12 08:59:48 UTC 2014
This is an automated email from the git hooks/post-receive script.
frankie pushed a commit to branch master
in repository geographiclib.
commit de34085519d95238a5062a7fb8ccc7506848abd3
Author: Francesco Paolo Lovergine <frankie at debian.org>
Date: Thu May 24 16:19:33 2012 +0200
Imported Upstream version 1.21
---
00README.txt | 5 +-
CMakeLists.txt | 245 +-
LICENSE.txt | 2 +-
Makefile.mk | 14 +-
NEWS | 53 +-
cmake/FindGeographicLib.cmake | 6 +-
cmake/Makefile.am | 5 +-
cmake/Makefile.in | 5 +-
cmake/geographiclib-config-version.cmake.in | 38 +-
cmake/geographiclib-config.cmake.in | 52 +-
configure | 26 +-
configure.ac | 10 +-
doc/CMakeLists.txt | 38 +-
doc/Geographic.doc | 492 ++--
doc/Makefile.am | 34 +-
doc/Makefile.in | 55 +-
doc/Makefile.mk | 11 +-
doc/{Doxyfile => doxyfile.in} | 12 +-
doc/html/Accumulator_8hpp.html | 40 +-
doc/html/Accumulator_8hpp_source.html | 64 +-
doc/html/AlbersEqualArea_8cpp.html | 38 +-
doc/html/AlbersEqualArea_8cpp_source.html | 148 +-
doc/html/AlbersEqualArea_8hpp.html | 42 +-
doc/html/AlbersEqualArea_8hpp_source.html | 540 ++--
doc/html/AzimuthalEquidistant_8cpp.html | 44 +-
doc/html/AzimuthalEquidistant_8cpp_source.html | 46 +-
doc/html/AzimuthalEquidistant_8hpp.html | 44 +-
doc/html/AzimuthalEquidistant_8hpp_source.html | 262 +-
doc/html/CartConvert.1.html | 21 +-
doc/html/CartConvert_8cpp.html | 38 +-
doc/html/CartConvert_8cpp_source.html | 345 +--
doc/html/CassiniSoldner_8cpp.html | 44 +-
doc/html/CassiniSoldner_8cpp_source.html | 50 +-
doc/html/CassiniSoldner_8hpp.html | 44 +-
doc/html/CassiniSoldner_8hpp_source.html | 394 +--
doc/html/CircularEngine_8cpp.html | 38 +-
doc/html/CircularEngine_8cpp_source.html | 36 +-
doc/html/CircularEngine_8hpp.html | 38 +-
doc/html/CircularEngine_8hpp_source.html | 68 +-
doc/html/ConicProj.1.html | 24 +-
doc/html/ConicProj_8cpp.html | 38 +-
doc/html/ConicProj_8cpp_source.html | 425 +--
doc/html/Constants_8hpp.html | 48 +-
doc/html/Constants_8hpp_source.html | 464 ++--
doc/html/DMS_8cpp.html | 44 +-
doc/html/DMS_8cpp_source.html | 202 +-
doc/html/DMS_8hpp.html | 44 +-
doc/html/DMS_8hpp_source.html | 258 +-
doc/html/EllipticFunction_8cpp.html | 44 +-
doc/html/EllipticFunction_8cpp_source.html | 64 +-
doc/html/EllipticFunction_8hpp.html | 44 +-
doc/html/EllipticFunction_8hpp_source.html | 82 +-
doc/html/GeoConvert.1.html | 35 +-
doc/html/GeoConvert_8cpp.html | 38 +-
doc/html/GeoConvert_8cpp_source.html | 383 +--
doc/html/GeoCoords_8cpp.html | 44 +-
doc/html/GeoCoords_8cpp_source.html | 188 +-
doc/html/GeoCoords_8hpp.html | 44 +-
doc/html/GeoCoords_8hpp_source.html | 881 +++---
doc/html/Geocentric_8cpp.html | 44 +-
doc/html/Geocentric_8cpp_source.html | 78 +-
doc/html/Geocentric_8hpp.html | 44 +-
doc/html/Geocentric_8hpp_source.html | 475 ++--
doc/html/Geod.1.html | 55 +-
doc/html/Geod_8cpp.html | 64 +-
doc/html/Geod_8cpp_source.html | 501 ++--
doc/html/GeodesicLine_8cpp.html | 44 +-
doc/html/GeodesicLine_8cpp_source.html | 64 +-
doc/html/GeodesicLine_8hpp.html | 44 +-
doc/html/GeodesicLine_8hpp_source.html | 1103 ++++----
doc/html/GeodesicProj.1.html | 24 +-
doc/html/GeodesicProj_8cpp.html | 38 +-
doc/html/GeodesicProj_8cpp_source.html | 375 +--
doc/html/Geodesic_8cpp.html | 44 +-
doc/html/Geodesic_8cpp_source.html | 2807 ++++++++++----------
doc/html/Geodesic_8hpp.html | 44 +-
doc/html/Geodesic_8hpp_source.html | 1477 +++++-----
doc/html/Geographic.tag | 297 +--
doc/html/Geographic_8doc.html | 36 +-
doc/html/GeoidEval.1.html | 66 +-
doc/html/GeoidEval_8cpp.html | 38 +-
doc/html/GeoidEval_8cpp_source.html | 526 ++--
doc/html/Geoid_8cpp.html | 51 +-
doc/html/Geoid_8cpp_source.html | 1040 ++++----
doc/html/Geoid_8hpp.html | 61 +-
doc/html/Geoid_8hpp_source.html | 941 ++++---
doc/html/Gnomonic_8cpp.html | 38 +-
doc/html/Gnomonic_8cpp_source.html | 46 +-
doc/html/Gnomonic_8hpp.html | 42 +-
doc/html/Gnomonic_8hpp_source.html | 284 +-
doc/html/Gravity.1.html | 26 +-
doc/html/GravityCircle_8cpp.html | 38 +-
doc/html/GravityCircle_8cpp_source.html | 56 +-
doc/html/GravityCircle_8hpp.html | 42 +-
doc/html/GravityCircle_8hpp_source.html | 567 ++--
doc/html/GravityModel_8cpp.html | 44 +-
doc/html/GravityModel_8cpp_source.html | 118 +-
doc/html/GravityModel_8hpp.html | 42 +-
doc/html/GravityModel_8hpp_source.html | 897 ++++---
doc/html/Gravity_8cpp.html | 38 +-
doc/html/Gravity_8cpp_source.html | 560 ++--
doc/html/LICENSE.txt | 2 +-
doc/html/LambertConformalConic_8cpp.html | 42 +-
doc/html/LambertConformalConic_8cpp_source.html | 124 +-
doc/html/LambertConformalConic_8hpp.html | 42 +-
doc/html/LambertConformalConic_8hpp_source.html | 576 ++--
doc/html/LocalCartesian_8cpp.html | 44 +-
doc/html/LocalCartesian_8cpp_source.html | 44 +-
doc/html/LocalCartesian_8hpp.html | 44 +-
doc/html/LocalCartesian_8hpp_source.html | 449 ++--
doc/html/MGRS_8cpp.html | 44 +-
doc/html/MGRS_8cpp_source.html | 60 +-
doc/html/MGRS_8hpp.html | 44 +-
doc/html/MGRS_8hpp_source.html | 90 +-
doc/html/MagneticCircle_8cpp.html | 38 +-
doc/html/MagneticCircle_8cpp_source.html | 34 +-
doc/html/MagneticCircle_8hpp.html | 42 +-
doc/html/MagneticCircle_8hpp_source.html | 283 +-
doc/html/MagneticField.1.html | 26 +-
doc/html/MagneticField_8cpp.html | 38 +-
doc/html/MagneticField_8cpp_source.html | 625 +++--
doc/html/MagneticModel_8cpp.html | 42 +-
doc/html/MagneticModel_8cpp_source.html | 68 +-
doc/html/MagneticModel_8hpp.html | 42 +-
doc/html/MagneticModel_8hpp_source.html | 601 +++--
doc/html/Math_8hpp.html | 52 +-
doc/html/Math_8hpp_source.html | 112 +-
doc/html/NormalGravity_8cpp.html | 42 +-
doc/html/NormalGravity_8cpp_source.html | 98 +-
doc/html/NormalGravity_8hpp.html | 38 +-
doc/html/NormalGravity_8hpp_source.html | 94 +-
doc/html/OSGB_8cpp.html | 44 +-
doc/html/OSGB_8cpp_source.html | 44 +-
doc/html/OSGB_8hpp.html | 42 +-
doc/html/OSGB_8hpp_source.html | 140 +-
doc/html/Planimeter.1.html | 21 +-
doc/html/Planimeter_8cpp.html | 38 +-
doc/html/Planimeter_8cpp_source.html | 317 ++-
doc/html/PolarStereographic_8cpp.html | 44 +-
doc/html/PolarStereographic_8cpp_source.html | 80 +-
doc/html/PolarStereographic_8hpp.html | 44 +-
doc/html/PolarStereographic_8hpp_source.html | 126 +-
doc/html/PolygonArea_8cpp.html | 38 +-
doc/html/PolygonArea_8cpp_source.html | 34 +-
doc/html/PolygonArea_8hpp.html | 42 +-
doc/html/PolygonArea_8hpp_source.html | 323 +--
doc/html/SphericalEngine_8cpp.html | 42 +-
doc/html/SphericalEngine_8cpp_source.html | 100 +-
doc/html/SphericalEngine_8hpp.html | 42 +-
doc/html/SphericalEngine_8hpp_source.html | 60 +-
doc/html/SphericalHarmonic1_8hpp.html | 38 +-
doc/html/SphericalHarmonic1_8hpp_source.html | 68 +-
doc/html/SphericalHarmonic2_8hpp.html | 38 +-
doc/html/SphericalHarmonic2_8hpp_source.html | 70 +-
doc/html/SphericalHarmonic_8hpp.html | 42 +-
doc/html/SphericalHarmonic_8hpp_source.html | 68 +-
doc/html/TransverseMercatorExact_8cpp.html | 44 +-
doc/html/TransverseMercatorExact_8cpp_source.html | 136 +-
doc/html/TransverseMercatorExact_8hpp.html | 44 +-
doc/html/TransverseMercatorExact_8hpp_source.html | 428 +--
doc/html/TransverseMercatorProj.1.html | 24 +-
doc/html/TransverseMercatorProj_8cpp.html | 38 +-
doc/html/TransverseMercatorProj_8cpp_source.html | 399 +--
doc/html/TransverseMercator_8cpp.html | 44 +-
doc/html/TransverseMercator_8cpp_source.html | 100 +-
doc/html/TransverseMercator_8hpp.html | 44 +-
doc/html/TransverseMercator_8hpp_source.html | 306 ++-
doc/html/UTMUPS_8cpp.html | 44 +-
doc/html/UTMUPS_8cpp_source.html | 84 +-
doc/html/UTMUPS_8hpp.html | 44 +-
doc/html/UTMUPS_8hpp_source.html | 98 +-
doc/html/Utility_8cpp.html | 38 +-
doc/html/Utility_8cpp_source.html | 38 +-
doc/html/Utility_8hpp.html | 42 +-
doc/html/Utility_8hpp_source.html | 156 +-
doc/html/annotated.html | 36 +-
.../classGeographicLib_1_1Accumulator-members.html | 64 +-
doc/html/classGeographicLib_1_1Accumulator.html | 151 +-
...ssGeographicLib_1_1AlbersEqualArea-members.html | 35 +-
.../classGeographicLib_1_1AlbersEqualArea.html | 80 +-
...graphicLib_1_1AzimuthalEquidistant-members.html | 35 +-
...classGeographicLib_1_1AzimuthalEquidistant.html | 72 +-
...assGeographicLib_1_1CassiniSoldner-members.html | 35 +-
doc/html/classGeographicLib_1_1CassiniSoldner.html | 80 +-
...assGeographicLib_1_1CircularEngine-members.html | 34 +-
doc/html/classGeographicLib_1_1CircularEngine.html | 42 +-
.../classGeographicLib_1_1Constants-members.html | 59 +-
doc/html/classGeographicLib_1_1Constants.html | 181 +-
doc/html/classGeographicLib_1_1DMS-members.html | 39 +-
doc/html/classGeographicLib_1_1DMS.html | 186 +-
...sGeographicLib_1_1EllipticFunction-members.html | 34 +-
.../classGeographicLib_1_1EllipticFunction.html | 42 +-
.../classGeographicLib_1_1GeoCoords-members.html | 36 +-
doc/html/classGeographicLib_1_1GeoCoords.html | 186 +-
.../classGeographicLib_1_1Geocentric-members.html | 35 +-
doc/html/classGeographicLib_1_1Geocentric.html | 96 +-
.../classGeographicLib_1_1Geodesic-members.html | 35 +-
doc/html/classGeographicLib_1_1Geodesic.html | 124 +-
...classGeographicLib_1_1GeodesicLine-members.html | 35 +-
doc/html/classGeographicLib_1_1GeodesicLine.html | 126 +-
...lassGeographicLib_1_1GeographicErr-members.html | 34 +-
doc/html/classGeographicLib_1_1GeographicErr.html | 40 +-
doc/html/classGeographicLib_1_1Geoid-members.html | 35 +-
doc/html/classGeographicLib_1_1Geoid.html | 128 +-
.../classGeographicLib_1_1Gnomonic-members.html | 35 +-
doc/html/classGeographicLib_1_1Gnomonic.html | 74 +-
...lassGeographicLib_1_1GravityCircle-members.html | 34 +-
doc/html/classGeographicLib_1_1GravityCircle.html | 63 +-
...classGeographicLib_1_1GravityModel-members.html | 34 +-
doc/html/classGeographicLib_1_1GravityModel.html | 77 +-
...raphicLib_1_1LambertConformalConic-members.html | 35 +-
...lassGeographicLib_1_1LambertConformalConic.html | 136 +-
...assGeographicLib_1_1LocalCartesian-members.html | 35 +-
doc/html/classGeographicLib_1_1LocalCartesian.html | 82 +-
doc/html/classGeographicLib_1_1MGRS-members.html | 35 +-
doc/html/classGeographicLib_1_1MGRS.html | 61 +-
...assGeographicLib_1_1MagneticCircle-members.html | 34 +-
doc/html/classGeographicLib_1_1MagneticCircle.html | 57 +-
...lassGeographicLib_1_1MagneticModel-members.html | 34 +-
doc/html/classGeographicLib_1_1MagneticModel.html | 67 +-
doc/html/classGeographicLib_1_1Math-members.html | 62 +-
doc/html/classGeographicLib_1_1Math.html | 118 +-
...lassGeographicLib_1_1NormalGravity-members.html | 34 +-
doc/html/classGeographicLib_1_1NormalGravity.html | 42 +-
doc/html/classGeographicLib_1_1OSGB-members.html | 35 +-
doc/html/classGeographicLib_1_1OSGB.html | 69 +-
...eographicLib_1_1PolarStereographic-members.html | 35 +-
.../classGeographicLib_1_1PolarStereographic.html | 73 +-
.../classGeographicLib_1_1PolygonArea-members.html | 34 +-
doc/html/classGeographicLib_1_1PolygonArea.html | 47 +-
...ssGeographicLib_1_1SphericalEngine-members.html | 38 +-
.../classGeographicLib_1_1SphericalEngine.html | 54 +-
...hicLib_1_1SphericalEngine_1_1coeff-members.html | 34 +-
...sGeographicLib_1_1SphericalEngine_1_1coeff.html | 42 +-
...GeographicLib_1_1SphericalHarmonic-members.html | 34 +-
.../classGeographicLib_1_1SphericalHarmonic.html | 38 +-
...eographicLib_1_1SphericalHarmonic1-members.html | 34 +-
.../classGeographicLib_1_1SphericalHarmonic1.html | 38 +-
...eographicLib_1_1SphericalHarmonic2-members.html | 34 +-
.../classGeographicLib_1_1SphericalHarmonic2.html | 38 +-
...eographicLib_1_1TransverseMercator-members.html | 35 +-
.../classGeographicLib_1_1TransverseMercator.html | 82 +-
...phicLib_1_1TransverseMercatorExact-members.html | 35 +-
...ssGeographicLib_1_1TransverseMercatorExact.html | 76 +-
doc/html/classGeographicLib_1_1UTMUPS-members.html | 35 +-
doc/html/classGeographicLib_1_1UTMUPS.html | 75 +-
.../classGeographicLib_1_1Utility-members.html | 50 +-
doc/html/classGeographicLib_1_1Utility.html | 173 +-
doc/html/classes.html | 80 +-
doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html | 146 +-
doc/html/dir_27ad12676aedce3065ab152db424ea04.html | 74 +-
doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html | 34 +-
doc/html/dir_b4d36717c8020107727c093197410e9d.html | 170 +-
doc/html/dirs.html | 34 +-
doc/html/doxygen.css | 127 +-
doc/html/files.html | 34 +-
doc/html/functions.html | 40 +-
doc/html/functions_0x62.html | 34 +-
doc/html/functions_0x63.html | 38 +-
doc/html/functions_0x64.html | 53 +-
doc/html/functions_0x65.html | 38 +-
doc/html/functions_0x66.html | 38 +-
doc/html/functions_0x67.html | 46 +-
doc/html/functions_0x68.html | 36 +-
doc/html/functions_0x69.html | 61 +-
doc/html/functions_0x6b.html | 34 +-
doc/html/functions_0x6c.html | 46 +-
doc/html/functions_0x6d.html | 34 +-
doc/html/functions_0x6e.html | 40 +-
doc/html/functions_0x6f.html | 58 +-
doc/html/functions_0x70.html | 36 +-
doc/html/functions_0x72.html | 36 +-
doc/html/functions_0x73.html | 40 +-
doc/html/functions_0x74.html | 34 +-
doc/html/functions_0x75.html | 36 +-
doc/html/functions_0x76.html | 36 +-
doc/html/functions_0x77.html | 45 +-
doc/html/functions_0x79.html | 34 +-
doc/html/functions_0x7a.html | 34 +-
doc/html/functions_enum.html | 34 +-
doc/html/functions_eval.html | 34 +-
doc/html/functions_func.html | 40 +-
doc/html/functions_func_0x63.html | 38 +-
doc/html/functions_func_0x64.html | 52 +-
doc/html/functions_func_0x65.html | 38 +-
doc/html/functions_func_0x66.html | 38 +-
doc/html/functions_func_0x67.html | 42 +-
doc/html/functions_func_0x68.html | 36 +-
doc/html/functions_func_0x69.html | 61 +-
doc/html/functions_func_0x6b.html | 34 +-
doc/html/functions_func_0x6c.html | 36 +-
doc/html/functions_func_0x6d.html | 34 +-
doc/html/functions_func_0x6e.html | 40 +-
doc/html/functions_func_0x6f.html | 58 +-
doc/html/functions_func_0x70.html | 36 +-
doc/html/functions_func_0x72.html | 36 +-
doc/html/functions_func_0x73.html | 42 +-
doc/html/functions_func_0x74.html | 34 +-
doc/html/functions_func_0x75.html | 36 +-
doc/html/functions_func_0x76.html | 36 +-
doc/html/functions_func_0x77.html | 43 +-
doc/html/functions_func_0x79.html | 34 +-
doc/html/functions_func_0x7a.html | 34 +-
doc/html/functions_rela.html | 34 +-
doc/html/functions_type.html | 34 +-
doc/html/functions_vars.html | 34 +-
doc/html/geocentric.html | 38 +-
doc/html/geodesic.html | 42 +-
doc/html/geoid.html | 76 +-
doc/html/globals.html | 50 +-
doc/html/globals_defs.html | 46 +-
doc/html/globals_func.html | 38 +-
doc/html/globals_type.html | 34 +-
doc/html/gravity.html | 167 +-
doc/html/index.html | 57 +-
doc/html/install.html | 106 +-
doc/html/intro.html | 40 +-
doc/html/magnetic.html | 43 +-
doc/html/namespaceGeographicLib.html | 34 +-
doc/html/namespaces.html | 34 +-
doc/html/old.html | 171 +-
doc/html/organization.html | 42 +-
doc/html/other.html | 47 +-
doc/html/pages.html | 42 +-
doc/html/start.html | 44 +-
doc/html/transversemercator.html | 42 +-
doc/html/utilities.html | 44 +-
doc/scripts/GeographicLib/Geodesic.js | 36 +-
doc/scripts/GeographicLib/GeodesicLine.js | 6 +-
doc/scripts/GeographicLib/Math.js | 6 +-
doc/scripts/GeographicLib/PolygonArea.js | 4 +-
examples/CMakeLists.txt | 25 +-
examples/GeoidToGTX.cpp | 103 +
examples/Makefile.am | 5 +-
examples/Makefile.in | 5 +-
examples/example-GeodesicLine.cpp | 8 +-
examples/example-LambertConformalConic.cpp | 60 +-
include/GeographicLib/AlbersEqualArea.hpp | 8 +-
include/GeographicLib/AzimuthalEquidistant.hpp | 14 +-
include/GeographicLib/CassiniSoldner.hpp | 16 +-
include/GeographicLib/Config.h | 2 +-
include/GeographicLib/Constants.hpp | 10 +-
include/GeographicLib/DMS.hpp | 50 +-
include/GeographicLib/EllipticFunction.hpp | 6 +-
include/GeographicLib/GeoCoords.hpp | 59 +-
include/GeographicLib/Geocentric.hpp | 13 +-
include/GeographicLib/Geodesic.hpp | 11 +-
include/GeographicLib/GeodesicLine.hpp | 11 +-
include/GeographicLib/Geoid.hpp | 53 +-
include/GeographicLib/Gnomonic.hpp | 10 +-
include/GeographicLib/GravityCircle.hpp | 5 +-
include/GeographicLib/GravityModel.hpp | 5 +-
include/GeographicLib/LambertConformalConic.hpp | 14 +-
include/GeographicLib/LocalCartesian.hpp | 13 +-
include/GeographicLib/MGRS.hpp | 10 +-
include/GeographicLib/MagneticCircle.hpp | 5 +-
include/GeographicLib/MagneticModel.hpp | 5 +-
include/GeographicLib/Math.hpp | 44 +-
include/GeographicLib/OSGB.hpp | 6 +-
include/GeographicLib/PolarStereographic.hpp | 8 +-
include/GeographicLib/PolygonArea.hpp | 5 +-
include/GeographicLib/SphericalEngine.hpp | 10 +-
include/GeographicLib/SphericalHarmonic.hpp | 4 +-
include/GeographicLib/TransverseMercator.hpp | 12 +-
include/GeographicLib/TransverseMercatorExact.hpp | 12 +-
include/GeographicLib/UTMUPS.hpp | 10 +-
include/GeographicLib/Utility.hpp | 62 +-
ltmain.sh | 2 +-
man/CMakeLists.txt | 18 +-
man/CartConvert.1 | 21 +-
man/CartConvert.1.html | 21 +-
man/CartConvert.pod | 21 +-
man/CartConvert.usage | 30 +-
man/ConicProj.1 | 24 +-
man/ConicProj.1.html | 24 +-
man/ConicProj.pod | 24 +-
man/ConicProj.usage | 26 +-
man/GeoConvert.1 | 33 +-
man/GeoConvert.1.html | 35 +-
man/GeoConvert.pod | 34 +-
man/GeoConvert.usage | 37 +-
man/Geod.1 | 53 +-
man/Geod.1.html | 55 +-
man/Geod.pod | 56 +-
man/Geod.usage | 61 +-
man/GeodesicProj.1 | 24 +-
man/GeodesicProj.1.html | 24 +-
man/GeodesicProj.pod | 24 +-
man/GeodesicProj.usage | 30 +-
man/GeoidEval.1 | 64 +-
man/GeoidEval.1.html | 66 +-
man/GeoidEval.pod | 65 +-
man/GeoidEval.usage | 68 +-
man/Gravity.1 | 26 +-
man/Gravity.1.html | 26 +-
man/Gravity.pod | 26 +-
man/Gravity.usage | 28 +-
man/MagneticField.1 | 26 +-
man/MagneticField.1.html | 26 +-
man/MagneticField.pod | 26 +-
man/MagneticField.usage | 32 +-
man/Makefile.am | 6 +-
man/Makefile.in | 32 +-
man/Makefile.mk | 5 +-
man/Planimeter.1 | 21 +-
man/Planimeter.1.html | 21 +-
man/Planimeter.pod | 21 +-
man/Planimeter.usage | 26 +-
man/TransverseMercatorProj.1 | 24 +-
man/TransverseMercatorProj.1.html | 24 +-
man/TransverseMercatorProj.pod | 24 +-
man/TransverseMercatorProj.usage | 26 +-
matlab/CMakeLists.txt | 54 +-
matlab/Makefile.am | 58 +-
matlab/Makefile.in | 58 +-
python/Makefile.am | 18 +-
python/Makefile.in | 18 +-
python/geographiclib/CMakeLists.txt | 4 +-
python/geographiclib/accumulator.py | 4 +-
python/geographiclib/geodesic.py | 41 +-
python/geographiclib/geodesicline.py | 8 +-
python/geographiclib/polygonarea.py | 4 +-
python/setup.py | 7 +-
src/AzimuthalEquidistant.cpp | 6 +-
src/CMakeLists.txt | 22 +-
src/CassiniSoldner.cpp | 6 +-
src/DMS.cpp | 30 +-
src/EllipticFunction.cpp | 8 +-
src/GeoCoords.cpp | 16 +-
src/Geocentric.cpp | 8 +-
src/Geodesic.cpp | 37 +-
src/GeodesicLine.cpp | 6 +-
src/Geographic.pro | 74 +-
src/Geoid.cpp | 34 +-
src/GravityModel.cpp | 14 +-
src/LambertConformalConic.cpp | 6 +-
src/LocalCartesian.cpp | 6 +-
src/MGRS.cpp | 18 +-
src/MagneticModel.cpp | 8 +-
src/Makefile.am | 4 +-
src/Makefile.in | 4 +-
src/NormalGravity.cpp | 12 +-
src/OSGB.cpp | 6 +-
src/PolarStereographic.cpp | 8 +-
src/SphericalEngine.cpp | 4 +-
src/TransverseMercator.cpp | 6 +-
src/TransverseMercatorExact.cpp | 6 +-
src/UTMUPS.cpp | 24 +-
tools/CMakeLists.txt | 40 +-
tools/CartConvert.cpp | 37 +-
tools/ConicProj.cpp | 35 +-
tools/GeoConvert.cpp | 41 +-
tools/Geod.cpp | 67 +-
tools/GeodesicProj.cpp | 33 +-
tools/GeoidEval.cpp | 50 +-
tools/Gravity.cpp | 40 +-
tools/MagneticField.cpp | 35 +-
tools/Makefile.am | 5 +-
tools/Makefile.in | 6 +-
tools/Planimeter.cpp | 33 +-
tools/TransverseMercatorProj.cpp | 33 +-
461 files changed, 23598 insertions(+), 16130 deletions(-)
diff --git a/00README.txt b/00README.txt
index 4dfdb42..902f3af 100644
--- a/00README.txt
+++ b/00README.txt
@@ -1,4 +1,4 @@
-# $Id: ce05798271e2894b05e0e01a36a3f55ab9c8a94a $
+# $Id: 1001171ae9372d1bfc31646763709bc4e4f279e1 $
A library for geographic projections.
@@ -49,6 +49,7 @@ Files
examples/
example-*.cpp -- simple usage examples for all the classes
+ GeoidToGTX.cpp -- a parallelization example
tools/
GeoConvert.cpp -- geographic conversion utility
@@ -97,7 +98,7 @@ Files
polygonarea.{cpp,m} -- Matlab code for polygon areas
doc/
- Doxyfile -- Doxygen config file
+ doxyfile.in -- Doxygen config file
Geographic.doc -- main page of Doxygen documentation
geodseries30.html -- geodesic series to 30th order
tmseries30.html -- transverse Mercator series to 30th order
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dd17710..559ce10 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,17 +1,28 @@
-# $Id: 59c5ef60981a8c92e428ce2762b4f925abee2cfc $
+# $Id: a3ad2e3a9ae71b3bc393ca9a3f1ab2277f171d35 $
cmake_minimum_required (VERSION 2.6)
project (GeographicLib)
# Version information
set (GeographicLib_VERSION_MAJOR 1)
-set (GeographicLib_VERSION_MINOR 18)
+set (GeographicLib_VERSION_MINOR 21)
set (GeographicLib_VERSION
"${GeographicLib_VERSION_MAJOR}.${GeographicLib_VERSION_MINOR}")
# The library version tracks the numbering given by libtool in the
# autoconf set up.
set (LIBVERSION 9)
-set (LIBVERSIONFULL 9.2.2)
+set (LIBVERSIONFULL 9.3.0)
+
+# Set CMAKE_INSTALL_PREFIX from first element of CMAKE_PREFIX_PATH
+if (WIN32)
+ if (DEFINED CMAKE_PREFIX_PATH
+ AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
+ list (GET CMAKE_PREFIX_PATH 0 CMAKE_INSTALL_PREFIX)
+ set (CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}
+ CACHE PATH "Installation directory for GeographicLib" FORCE)
+ endif ()
+ message (STATUS "CMAKE_INSTALL_PREFIX set to ${CMAKE_INSTALL_PREFIX}")
+endif ()
# User-settable cache variables
@@ -19,24 +30,40 @@ set (LIBVERSIONFULL 9.2.2)
# more trouble than it's worth.
if (WIN32)
option (GEOGRAPHIC_SHARED_LIB "Build GeographicLib as a shared library" OFF)
-else (WIN32)
+else ()
option (GEOGRAPHIC_SHARED_LIB "Build GeographicLib as a shared library" ON)
-endif (WIN32)
+endif ()
-# (2) Try to compile the Matlab interfaces?
-option (ENABLE_MATLAB "Try to compile matlab/octave interface" OFF)
+# (2) Compiler the Matlab interfaces? Skip Matlab compilation if OFF
+option (MATLAB_COMPILER
+ "Compiler for matlab/octave interface: mex or mkoctfile or OFF" OFF)
# (3) Where to look for data files. Various classes look in the geoids,
# gravity, magnetic, subdirectories of ${GEOGRAPHICLIB_DATA}.
if (WIN32)
+ # The binary installers for the data files for Windows are created
+ # with Inno Setup which uses {commonappdata}. On most Windows
+ # systems this is
+ # "C:/Documents and Settings/All Users/Application Data", while on
+ # newer systems (Windows 7), it is C:/ProgramData. However the
+ # longer name "works" on all Windows systems.
set (GEOGRAPHICLIB_DATA
"C:/Documents and Settings/All Users/Application Data/GeographicLib"
CACHE PATH "Location for data for GeographicLib")
-else (WIN32)
+else ()
set (GEOGRAPHICLIB_DATA
"${CMAKE_INSTALL_PREFIX}/share/GeographicLib"
CACHE PATH "Location for data for GeographicLib")
-endif (WIN32)
+endif ()
+
+# (4) Compiler the Matlab interfaces? Skip Matlab compilation if OFF
+if (WIN32)
+ option (GEOGRAPHICLIB_EXAMPLES
+ "Build example programs in examples directory" OFF)
+elseif ()
+ option (GEOGRAPHICLIB_EXAMPLES
+ "Build example programs in examples directory" ON)
+endif ()
# The debug version of the library is called Geographic_d.
set (CMAKE_DEBUG_POSTFIX _d)
@@ -60,52 +87,59 @@ configure_file (
# distrib-all" which installs the transformed documentation files into
# the source tree.
if (NOT WIN32)
+ set (DOXYGEN_SKIP_DOT ON)
+ find_package (Doxygen)
find_program (HAVE_POD2MAN pod2man)
find_program (HAVE_POD2HTML pod2html)
find_program (HAVE_DOXYGEN doxygen)
-endif (NOT WIN32)
-if (NOT WIN32 AND HAVE_POD2MAN AND HAVE_POD2HTML AND HAVE_DOXYGEN)
+endif ()
+if (NOT WIN32 AND HAVE_POD2MAN AND HAVE_POD2HTML AND DOXYGEN_FOUND)
set (MAINTAINER ON CACHE BOOL "Allow build of additional components")
-else (NOT WIN32 AND HAVE_POD2MAN AND HAVE_POD2HTML AND HAVE_DOXYGEN)
+else ()
set (MAINTAINER OFF CACHE BOOL "Allow build of additional components")
-endif (NOT WIN32 AND HAVE_POD2MAN AND HAVE_POD2HTML AND HAVE_DOXYGEN)
+endif ()
if (MAINTAINER)
add_custom_target (distrib-all)
add_dependencies (distrib-all distrib-man distrib-doc)
-endif (MAINTAINER)
+endif ()
-# Look for the tool to compile the Matlab interfaces. On Linux systems,
-# octave is used, since I couldn't find a version of Matlab that
-# supported sufficiently recent versions of g++.
-if (ENABLE_MATLAB)
- if (NOT WIN32)
- find_program (HAVE_MEX mkoctfile)
- if (HAVE_MEX)
- set (MEX "mkoctfile")
- set (MEXEXT "mex")
- endif (HAVE_MEX)
- else (NOT WIN32)
- find_program (HAVE_MEX mex.bat)
- if (HAVE_MEX)
- set (MEX "mex")
- execute_process (COMMAND mexext.bat
- OUTPUT_VARIABLE MEXEXT OUTPUT_STRIP_TRAILING_WHITESPACE)
- endif (HAVE_MEX)
- endif (NOT WIN32)
-else (ENABLE_MATLAB)
- set (HAVE_MEX OFF)
-endif (ENABLE_MATLAB)
+# Look for the tool to compile the Matlab interfaces.
+if (MATLAB_COMPILER)
+ if (WIN32)
+ set (MATLAB_COMPILER_EXT ".bat")
+ else ()
+ set (MATLAB_COMPILER_EXT "")
+ endif ()
+ find_program (MEX "${MATLAB_COMPILER}${MATLAB_COMPILER_EXT}")
+ if (MATLAB_COMPILER MATCHES "mex")
+ get_filename_component (MATLABDIR "${MEX}" REALPATH)
+ get_filename_component (MATLABDIR "${MATLABDIR}" PATH)
+ find_program (MEXEXTPROG "mexext${MATLAB_COMPILER_EXT}"
+ PATHS "${MATLABDIR}")
+ execute_process (COMMAND "${MEXEXTPROG}"
+ OUTPUT_VARIABLE MEXEXT OUTPUT_STRIP_TRAILING_WHITESPACE)
+ else ()
+ set (MEXEXT "mex")
+ endif ()
+ if (NOT MEX)
+ message (WARNING
+ "Cannot find Matlab compiler ${MATLAB_COMPILER}${MATLAB_COMPILER_EXT}")
+ elseif (NOT MEXEXT)
+ set (MEX OFF)
+ message (WARNING "Cannot determine extension for Matlab compiled code")
+ endif ()
+endif ()
# Set a default build type for single-configuration cmake generators if
# no build type is set.
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE Release)
-endif (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
+endif ()
# On non-Windows machine, make the compiler more picky.
if (NOT WIN32)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
-endif (NOT WIN32)
+endif ()
# The list of tools (to be installed into, e.g., /usr/local/bin)
set (TOOLS CartConvert ConicProj GeodesicProj GeoConvert Geod
@@ -127,58 +161,38 @@ add_subdirectory (man)
add_subdirectory (doc)
add_subdirectory (matlab)
add_subdirectory (python/geographiclib)
-if (MAINTAINER)
+if (GEOGRAPHICLIB_EXAMPLES)
add_subdirectory (examples)
-endif (MAINTAINER)
-
-# config file support for find_package(GeographicLib). This needs to
-# deal with two environments: (1) finding the build tree and (2) finding
-# the install tree. geographiclib-config.cmake detects which situation
-# it is handing by looking at @GEOGRAPHICLIB_ROOT_DIR at . If this is an
-# absolute path, it's in the build tree; otherwise, it's in the install
-# tree (incidentally, this allows the install tree to be relocated).
+endif ()
-# geographiclib-config.cmake for the build tree
-set (GEOGRAPHICLIB_ROOT_DIR "${PROJECT_BINARY_DIR}")
-set (GeographicLib_INCLUDE_DIRS
- "${PROJECT_BINARY_DIR}/include" "${PROJECT_SOURCE_DIR}/include" )
-configure_file (cmake/geographiclib-config.cmake.in
- "${PROJECT_BINARY_DIR}/geographiclib-config.cmake" @ONLY)
-configure_file (cmake/geographiclib-config-version.cmake.in
- "${PROJECT_BINARY_DIR}/geographiclib-config-version.cmake" @ONLY)
-
-# geographiclib-config.cmake for the install tree. It's installed in
-# ${INSTALL_CMAKE_DIR} and @GEOGRAPHICLIB_ROOT_DIR@ is the relative
-# path to the root from there.
+# config file support for find_package(GeographicLib). This only
+# supports finding GeographicLib in the "install" tree (as opposed to
+# the "build" tree). The process installs geographiclib-config.cmake in
+# ${INSTALL_CMAKE_DIR} and @GEOGRAPHICLIB_ROOT_DIR@ is the relative path
+# to the root from there. (Thus the whole install tree can be
+# relocated.)
if (WIN32)
set (INSTALL_CMAKE_DIR "cmake")
set (GEOGRAPHICLIB_ROOT_DIR "..")
-else (WIN32)
+else ()
set (INSTALL_CMAKE_DIR
- "share/cmake/${CMAKE_PROJECT_NAME}-${GeographicLib_VERSION}")
+ "share/cmake/${PROJECT_NAME}-${GeographicLib_VERSION}")
set (GEOGRAPHICLIB_ROOT_DIR "../../..")
-endif (WIN32)
-# @GeographicLib_INCLUDE_DIRS@ is not used in the install tree;
-# reset it to prevent the source and build paths appearing in the
-# installed config files
-set (GeographicLib_INCLUDE_DIRS IGNORE)
+endif ()
configure_file (cmake/geographiclib-config.cmake.in
- "${PROJECT_BINARY_DIR}/InstallFiles/geographiclib-config.cmake" @ONLY)
+ "${PROJECT_BINARY_DIR}/cmake/geographiclib-config.cmake" @ONLY)
configure_file (cmake/geographiclib-config-version.cmake.in
- "${PROJECT_BINARY_DIR}/InstallFiles/geographiclib-config-version.cmake" @ONLY)
+ "${PROJECT_BINARY_DIR}/cmake/geographiclib-config-version.cmake" @ONLY)
install (FILES
- "${PROJECT_BINARY_DIR}/InstallFiles/geographiclib-config.cmake"
- "${PROJECT_BINARY_DIR}/InstallFiles/geographiclib-config-version.cmake"
+ "${PROJECT_BINARY_DIR}/cmake/geographiclib-config.cmake"
+ "${PROJECT_BINARY_DIR}/cmake/geographiclib-config-version.cmake"
DESTINATION "${INSTALL_CMAKE_DIR}")
# Make information about the cmake targets (the library and the tools)
# available.
-export (TARGETS Geographic ${TOOLS}
- FILE "${PROJECT_BINARY_DIR}/GeographicLibDepends.cmake")
-install (EXPORT GeographicLibDepends DESTINATION "${INSTALL_CMAKE_DIR}")
-
-# Don't want find_package to look in build trees, so don't do...
-# export (PACKAGE GeographicLib)
+install (EXPORT depends
+ FILE geographiclib-depends.cmake
+ DESTINATION "${INSTALL_CMAKE_DIR}")
# Packaging support; we deal with
# (1) a source distribution: cmake make a tar.gz file and the zip file
@@ -188,6 +202,11 @@ install (EXPORT GeographicLibDepends DESTINATION "${INSTALL_CMAKE_DIR}")
# Windows, but only the Windows distribution has been exercised.
# Need to ensure that system dlls get included in a binary distribution
+if (NOT DEFINED CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS)
+ # Visual Studio Express does include redistributable components so
+ # squelch the warning.
+ set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+endif ()
include (InstallRequiredSystemLibraries)
# The configuration of CPack is via variable that need to be set before
@@ -199,55 +218,22 @@ set (CPACK_PACKAGE_CONTACT charles at karney.com)
set (CPACK_PACKAGE_VENDOR "GeographicLib")
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY
"Geographic library, utilities, and documentation")
-# It's necessary to specify a rather long list of files to be excluded
-# in the source distribution.
+# The list of files to be excluded from the source distribution.
set (CPACK_SOURCE_IGNORE_FILES
"#"
"~\$"
- "${PROJECT_SOURCE_DIR}/(BUILD|WINDOWS|TAGS|geographiclib-[0-9])"
- "${PROJECT_SOURCE_DIR}/release-notes/"
- "${PROJECT_SOURCE_DIR}/(geoids-distrib|geoids-installer)/"
- "${PROJECT_SOURCE_DIR}/(magnetic-distrib|magnetic-installer)/"
- "${PROJECT_SOURCE_DIR}/(gravity-distrib|gravity-installer)/"
- "${PROJECT_SOURCE_DIR}/(magnetic|gravity)/"
- "${PROJECT_SOURCE_DIR}/(distrib|cgi-bin|scratch|srcL|workspace)/"
- "${PROJECT_SOURCE_DIR}/(tests|testdata)/"
- "${PROJECT_SOURCE_DIR}/python/(MANIFEST\$|build/)"
- "${PROJECT_SOURCE_DIR}/(geodesic.*|makefile-admin|install_manifest.txt)"
- "Makefile\$"
- "Config.h\$"
- "TAGS\$"
- "/GeographicLibL"
- "/\\\\.(deps|libs|svn)/"
"/\\\\.git"
- "/(UpgradeLog|_UpgradeReport)"
- "/(CMakeCache.txt|CPack)"
- "/(CMakeFiles|_CPack_Packages|BACKUP)/"
- "/config\\\\.(h|status)"
- "/Config-ac\\\\.h\$"
- "/(status|libtool)\$"
- "/stamp-"
- "/junk"
- "/octave-core"
- "\\\\.(bak|BAK|patch|tmp|zip|gz|lo|o|ncb|suo|a|la|log|exe|pyc)\$"
- "\\\\.(mex|mexw32|mexw64|mexa64|kml|kmz)\$"
- "/(Release|Debug|Win32)"
- "\\\\.cache/"
- "proj.*\\\\.user\$"
- "lib.*\\\\.so"
- "tools/[A-Za-z]+\$"
- "tools/geographiclib-get-geoids\$"
- "tools/geographiclib-get-magnetic\$"
- "tools/geographiclib-get-gravity\$"
- "tools/.*\\\\.usage\$"
- "scripts/geographiclib.js\$"
- "/(fix-permissions|autogen|biblio|js-compress)\\\\.sh"
- "${PROJECT_SOURCE_DIR}/[^/]*\\\\.html" )
+ "${PROJECT_SOURCE_DIR}/BUILD"
+ "${PROJECT_SOURCE_DIR}/(tests|testdata|cgi-bin|.*\\\\.cache)/"
+ "${PROJECT_SOURCE_DIR}/(distrib|.*-distrib|.*-installer|geodesic-papers)/"
+ "${PROJECT_SOURCE_DIR}/[^/]*\\\\.(html|kmz)\$"
+ "${PROJECT_SOURCE_DIR}/(autogen|biblio|js-compress)\\\\.sh\$"
+ "${PROJECT_SOURCE_DIR}/(geodesic-biblio.txt|makefile-admin)\$" )
set (CPACK_SOURCE_GENERATOR TGZ)
set (CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/LICENSE.txt)
set (CPACK_PACKAGE_INSTALL_DIRECTORY
- "${CMAKE_PROJECT_NAME}-${GeographicLib_VERSION}")
+ "${PROJECT_NAME}-${GeographicLib_VERSION}")
set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
if (WIN32)
@@ -256,11 +242,24 @@ if (WIN32)
set (CPACK_NSIS_CONTACT "charles at karney.com")
set (CPACK_NSIS_URL_INFO_ABOUT "http://geographiclib.sf.net")
set (CPACK_NSIS_HELP_LINK "mailto:charles at karney.com")
- set (CPACK_NSIS_PACKAGE_NAME
- "${CMAKE_PROJECT_NAME} ${GeographicLib_VERSION}")
+ if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+ # Hardcode the prefix for Visual Studio 10
+ set (CPACK_NSIS_INSTALL_ROOT "C:\\\\pkg-vc10-x64")
+ set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}-win64")
+ set (CPACK_NSIS_PACKAGE_NAME
+ "${PROJECT_NAME} x64 ${GeographicLib_VERSION}")
+ set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY
+ "${PROJECT_NAME}-x64-${GeographicLib_VERSION}")
+ else ()
+ # Hardcode the prefix for Visual Studio 10
+ set (CPACK_NSIS_INSTALL_ROOT "C:\\\\pkg-vc10")
+ set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}-win32")
+ set (CPACK_NSIS_PACKAGE_NAME
+ "${PROJECT_NAME} ${GeographicLib_VERSION}")
+ set (CPACK_PACKAGE_INSTALL_REGISTRY_KEY
+ "${PROJECT_NAME}-${GeographicLib_VERSION}")
+ endif ()
set (CPACK_NSIS_DISPLAY_NAME ${CPACK_NSIS_PACKAGE_NAME})
- set (CPACK_NSIS_INSTALL_ROOT "C:\\\\pkg-vc10")
- set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}-win32")
set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Library Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\GeographicLib\\\\html\\\\index.html\\\"
CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Utility Documentation.lnk\\\" \\\"$INSTDIR\\\\share\\\\doc\\\\GeographicLib\\\\html\\\\utilities.html\\\"
@@ -275,10 +274,10 @@ elseif (APPLE)
# Not tested
set (CPACK_GENERATOR DMG)
set (CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}-darwin")
-else (WIN32)
+else ()
# Not tested
set (CPACK_GENERATOR TGZ)
-endif (WIN32)
+endif ()
include (CPack)
@@ -315,7 +314,7 @@ if (MAINTAINER)
zip -q ${CMAKE_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}.zip -@
)
add_dependencies (dist distrib-all)
-endif (MAINTAINER)
+endif ()
# Add a test target; the tests are in tools.
enable_testing ()
diff --git a/LICENSE.txt b/LICENSE.txt
index e8bc663..692304c 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,6 +1,6 @@
This license applies to GeographicLib, versions 1.12 and later.
-Copyright (c) 2008-2011, Charles Karney
+Copyright (c) 2008-2012, Charles Karney
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
diff --git a/Makefile.mk b/Makefile.mk
index dd5c373..b75eef6 100644
--- a/Makefile.mk
+++ b/Makefile.mk
@@ -1,4 +1,4 @@
-# $Id: 35334b3609333ad2c87f9d3d6dab1165d59d377c $
+# $Id: e41e5a29e46933b242fce49416e474403fc4bb65 $
MAKEFILE := $(lastword $(MAKEFILE_LIST))
MAKE := $(MAKE) -f $(MAKEFILE)
@@ -14,7 +14,7 @@ tools: src
install: install-headers install-lib install-tools install-man install-cmake \
install-doc install-matlab install-python
clean: clean-src clean-tools clean-doc clean-man clean-matlab clean-python
-distclean: clean distclean-doc distclean-man
+maintainer-clean: clean maintainer-clean-doc maintainer-clean-man
install-headers:
$(MAKE) -C include install
install-lib:
@@ -43,10 +43,10 @@ clean-matlab: matlab
$(MAKE) -C matlab clean
clean-python: python
$(MAKE) -C python clean
-distclean-doc:
- $(MAKE) -C doc distclean
-distclean-man:
- $(MAKE) -C man distclean
+maintainer-clean-doc:
+ $(MAKE) -C doc maintainer-clean
+maintainer-clean-man:
+ $(MAKE) -C man maintainer-clean
VERSION:=$(shell grep '\bVERSION=' configure | cut -f2 -d\' | head -1)
@@ -54,4 +54,4 @@ VERSION:=$(shell grep '\bVERSION=' configure | cut -f2 -d\' | head -1)
install-headers install-lib install-tools install-cmake install-man \
install-matlab install-python \
clean clean-src clean-tools clean-doc clean-man clean-matlab \
- clean-python distclean distclean-doc distclean-man
+ clean-python maintainer-clean maintainer-clean-doc maintainer-clean-man
diff --git a/NEWS b/NEWS
index a0bd36e..f7093d6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-# $Id: 58995016b89e2b4ae8d6cca5003d0d7070a8b28e $
+# $Id: a8ebe2940755523ec7b77a1645c4155c441a7f17 $
A reverse chronological list of changes to GeographicLib
@@ -6,9 +6,54 @@ For more information, see
http://geographiclib.sourceforge.net/
-The current version of the library is 1.18.
+The current version of the library is 1.21.
-Changes between 1.18 (released 2012-02-18) and 1.17 versions
+Changes between 1.21 (released 2012-04-25) and 1.20 versions:
+
+ * Support colon-separated DMS output:
+ + DMS::Encode and GeoCoords::DMSRepresentation generalized;
+ + GeoConvert and Geod now accept a -: option.
+
+ * GeoidEval does not print the gradient of the geoid height by default
+ (because it's subject to large errors); give the -g option to get
+ the gradient printed.
+
+ * Work around optimization BUG in GeographicLib::Geodesic::Inverse
+ with tdm mingw g++ version 4.6.1.
+
+ * autoconf fixed to ensure that that out-of-sources builds work;
+ document this as the preferred method of using autoconf.
+
+ * cmake tweaks:
+ + simplify the configuration of doxygen;
+ + allow the Matlab compiler to be specified with the MATLAB_COMPILER option.
+
+Changes between 1.20 (released 2012-03-23) and 1.19 versions:
+
+ * cmake tweaks:
+ + improve find_package's matching of compiler versions;
+ + CMAKE_INSTALL_PREFIX set from CMAKE_PREFIX_PATH if available;
+ + add "x64" to the package name for the 64-bit binary installer;
+ + fix cmake warning with Visual Studio Express.
+
+ * Fix SphericalEngine to deal with aggessive iterator checking by
+ Visual Studio.
+
+ * Fix transcription BUG is Geodesic.js.
+
+Changes between 1.19 (released 2012-03-13) and 1.18 versions:
+
+ * Slight improvement in Geodesic::Inverse for very short lines.
+
+ * Fix argument checking tests in MGRS::Forward.
+
+ * Add --comment-delimiter and --line-separator options to the utility
+ programs.
+
+ * Add installer for 64-bit Windows; the compiled Matlab interface is
+ supplied with the Windows 64-bit installer only.
+
+Changes between 1.18 (released 2012-02-18) and 1.17 versions:
* Improve documentation on configuration with cmake.
@@ -275,7 +320,7 @@ Changes between 1.7 (released 2010-12-21) and 1.6 versions:
* Add solution/project files for Visual Studio 2010 (32-bit only).
- * Use C++0X static_assert and math functions, if available.
+ * Use C++11 static_assert and math functions, if available.
Change between 1.6 (released 2010-11-23) and 1.5 versions:
diff --git a/cmake/FindGeographicLib.cmake b/cmake/FindGeographicLib.cmake
index 375dfef..ce626c0 100644
--- a/cmake/FindGeographicLib.cmake
+++ b/cmake/FindGeographicLib.cmake
@@ -1,4 +1,4 @@
-# $Id: 19e15da16267903c945c4163b24be13e4e4b6ddc $
+# $Id: 68ad590f505a0fc2f5419b6abf59d457d7901fc7 $
#
# Look for GeographicLib
#
@@ -22,8 +22,8 @@ if (GeographicLib_LIBRARIES)
unset (GeographicLib_INCLUDE_DIRS)
unset (GeographicLib_LIBRARIES)
unset (GeographicLib_LIBRARY_DIRS)
- endif (NOT EXISTS "${GeographicLib_INCLUDE_DIRS}/GeographicLib/Config.h")
-endif (GeographicLib_LIBRARIES)
+ endif ()
+endif ()
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (GeographicLib DEFAULT_MSG
diff --git a/cmake/Makefile.am b/cmake/Makefile.am
index 74e5860..bcb82ef 100644
--- a/cmake/Makefile.am
+++ b/cmake/Makefile.am
@@ -2,13 +2,14 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: a072d10e7ea813c07a37d1d612a72ab82d0406d2 $
+# $Id: f340bddbdd117ebc666bf508bc582ac92690bf57 $
cmakedir=$(datadir)/cmake/GeographicLib
install:
$(INSTALL) -d $(DESTDIR)$(cmakedir)
- $(INSTALL) -m 644 FindGeographicLib.cmake $(DESTDIR)$(cmakedir)
+ $(INSTALL) -m 644 $(srcdir)/FindGeographicLib.cmake \
+ $(DESTDIR)$(cmakedir)
EXTRA_DIST = Makefile.mk FindGeographicLib.cmake \
geographiclib-config-version.cmake.in geographiclib-config.cmake.in
diff --git a/cmake/Makefile.in b/cmake/Makefile.in
index a6f6c6b..be90427 100644
--- a/cmake/Makefile.in
+++ b/cmake/Makefile.in
@@ -19,7 +19,7 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: a072d10e7ea813c07a37d1d612a72ab82d0406d2 $
+# $Id: f340bddbdd117ebc666bf508bc582ac92690bf57 $
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -373,7 +373,8 @@ uninstall-am:
install:
$(INSTALL) -d $(DESTDIR)$(cmakedir)
- $(INSTALL) -m 644 FindGeographicLib.cmake $(DESTDIR)$(cmakedir)
+ $(INSTALL) -m 644 $(srcdir)/FindGeographicLib.cmake \
+ $(DESTDIR)$(cmakedir)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/cmake/geographiclib-config-version.cmake.in b/cmake/geographiclib-config-version.cmake.in
index f5b77bc..791732c 100644
--- a/cmake/geographiclib-config-version.cmake.in
+++ b/cmake/geographiclib-config-version.cmake.in
@@ -1,33 +1,19 @@
-# $Id: d56386731b1434d6b8f62c8e3e29078534ab59be $
+# $Id: bcb4b84d50be4e5bf5a85d13dff07dcfa3e6715a $
# Version checking for GeographicLib
-set(PACKAGE_VERSION "@GeographicLib_VERSION@")
-set(PACKAGE_VERSION_MAJOR "@GeographicLib_VERSION_MAJOR@")
-set(PACKAGE_VERSION_MINOR "@GeographicLib_VERSION_MINOR@")
+set (PACKAGE_VERSION "@GeographicLib_VERSION@")
+set (PACKAGE_VERSION_MAJOR "@GeographicLib_VERSION_MAJOR@")
+set (PACKAGE_VERSION_MINOR "@GeographicLib_VERSION_MINOR@")
-if (PACKAGE_FIND_VERSION)
+if (WIN32 AND NOT "${CMAKE_GENERATOR}" STREQUAL "@CMAKE_GENERATOR@")
+ # Reject if there's a mismatch on compiler versions (Windows only)
+ set (PACKAGE_VERSION_UNSUITABLE TRUE)
+elseif (PACKAGE_FIND_VERSION)
if (${PACKAGE_FIND_VERSION} VERSION_EQUAL ${PACKAGE_VERSION})
- # Versions match
set (PACKAGE_VERSION_EXACT TRUE)
+ elseif (${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION}
+ AND ${PACKAGE_FIND_VERSION_MAJOR} EQUAL ${PACKAGE_VERSION_MAJOR})
set (PACKAGE_VERSION_COMPATIBLE TRUE)
- elseif (${PACKAGE_FIND_VERSION_MAJOR} EQUAL ${PACKAGE_VERSION_MAJOR})
- # Only major versions match
- set (PACKAGE_VERSION_EXACT FALSE)
- if (${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION})
- # Backwards compatible
- set (PACKAGE_VERSION_COMPATIBLE TRUE)
- else (${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION})
- # No forwards compatibility
- set (PACKAGE_VERSION_COMPATIBLE FALSE)
- endif (${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION})
- else (${PACKAGE_FIND_VERSION} VERSION_EQUAL ${PACKAGE_VERSION})
- # No compatibility across major versions
- set (PACKAGE_VERSION_COMPATIBLE FALSE)
- set (PACKAGE_VERSION_EXACT FALSE)
- endif (${PACKAGE_FIND_VERSION} VERSION_EQUAL ${PACKAGE_VERSION})
-else (PACKAGE_FIND_VERSION)
- # No version requested
- set (PACKAGE_VERSION_COMPATIBLE TRUE)
- set (PACKAGE_VERSION_EXACT FALSE)
-endif (PACKAGE_FIND_VERSION)
+ endif ()
+endif ()
diff --git a/cmake/geographiclib-config.cmake.in b/cmake/geographiclib-config.cmake.in
index 1722c03..95ea765 100644
--- a/cmake/geographiclib-config.cmake.in
+++ b/cmake/geographiclib-config.cmake.in
@@ -1,4 +1,4 @@
-# $Id: 5b8a75e3009521d99a88d4cd0ec9de00b14e2ab9 $
+# $Id: 6f2f024584465d9903d8e3cd313cd876a850b4d2 $
#
# Configure GeographicLib
#
@@ -16,49 +16,13 @@ message (STATUS "GeographicLib configuration, version "
# Tell the user project where to find our headers and libraries
get_filename_component (_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
-if (IS_ABSOLUTE "@GEOGRAPHICLIB_ROOT_DIR@")
- # This is an uninstalled package (still in the build tree)
- set (GEOGRAPHICLIB_ROOT_DIR "@GEOGRAPHICLIB_ROOT_DIR@")
- set (GeographicLib_INCLUDE_DIRS "@GeographicLib_INCLUDE_DIRS@")
- set (GeographicLib_LIBRARY_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/src")
-else (IS_ABSOLUTE "@GEOGRAPHICLIB_ROOT_DIR@")
- # This is an installed package; figure out the paths relative to the
- # current directory.
- get_filename_component (GEOGRAPHICLIB_ROOT_DIR
- "${_DIR}/@GEOGRAPHICLIB_ROOT_DIR@" ABSOLUTE)
- set (GeographicLib_INCLUDE_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/include")
- set (GeographicLib_LIBRARY_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/lib")
-endif (IS_ABSOLUTE "@GEOGRAPHICLIB_ROOT_DIR@")
-
-# Do a sanity check by looking for include/GeographicLib/Config.h
-foreach (p ${GeographicLib_INCLUDE_DIRS})
- # Only check first include dir
- if (NOT EXISTS "${p}/GeographicLib/Config.h")
- unset (GeographicLib_INCLUDE_DIRS)
- unset (GeographicLib_LIBRARY_DIRS)
- unset (GeographicLib_VERSION)
- endif (NOT EXISTS "${p}/GeographicLib/Config.h")
- break (p ${GeographicLib_INCLUDE_DIRS})
-endforeach (p ${GeographicLib_INCLUDE_DIRS})
-
-# Verify that the compiler versions match on Windows
-if (DEFINED GeographicLib_INCLUDE_DIRS AND
- NOT "${CMAKE_GENERATOR}" STREQUAL "@CMAKE_GENERATOR@")
- unset (GeographicLib_INCLUDE_DIRS)
- unset (GeographicLib_LIBRARY_DIRS)
- unset (GeographicLib_VERSION)
-endif (DEFINED GeographicLib_INCLUDE_DIRS AND
- NOT "${CMAKE_GENERATOR}" STREQUAL "@CMAKE_GENERATOR@")
+get_filename_component (GEOGRAPHICLIB_ROOT_DIR
+ "${_DIR}/@GEOGRAPHICLIB_ROOT_DIR@" ABSOLUTE)
+set (GeographicLib_INCLUDE_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/include")
+set (GeographicLib_LIBRARY_DIRS "${GEOGRAPHICLIB_ROOT_DIR}/lib")
# Read in the exported definition of the library
-if (DEFINED GeographicLib_INCLUDE_DIRS)
- include ("${_DIR}/GeographicLibDepends.cmake")
- set (GeographicLib_LIBRARIES Geographic)
-endif (DEFINED GeographicLib_INCLUDE_DIRS)
+include ("${_DIR}/geographiclib-depends.cmake")
+set (GeographicLib_LIBRARIES Geographic)
-# Boiler plate check
-include (FindPackageHandleStandardArgs)
-find_package_handle_standard_args (GeographicLib DEFAULT_MSG
- GeographicLib_LIBRARY_DIRS GeographicLib_LIBRARIES GeographicLib_INCLUDE_DIRS)
-mark_as_advanced (GeographicLib_LIBRARY_DIRS GeographicLib_LIBRARIES
- GeographicLib_INCLUDE_DIRS)
+set (GEOGRAPHICLIB_FOUND TRUE)
diff --git a/configure b/configure
index 02012fa..429c6cc 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for GeographicLib 1.18.
+# Generated by GNU Autoconf 2.68 for GeographicLib 1.21.
#
# Report bugs to <charles at karney.com>.
#
@@ -570,8 +570,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GeographicLib'
PACKAGE_TARNAME='geographiclib'
-PACKAGE_VERSION='1.18'
-PACKAGE_STRING='GeographicLib 1.18'
+PACKAGE_VERSION='1.21'
+PACKAGE_STRING='GeographicLib 1.21'
PACKAGE_BUGREPORT='charles at karney.com'
PACKAGE_URL=''
@@ -1309,7 +1309,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GeographicLib 1.18 to adapt to many kinds of systems.
+\`configure' configures GeographicLib 1.21 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1380,7 +1380,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GeographicLib 1.18:";;
+ short | recursive ) echo "Configuration of GeographicLib 1.21:";;
esac
cat <<\_ACEOF
@@ -1486,7 +1486,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GeographicLib configure 1.18
+GeographicLib configure 1.21
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2030,7 +2030,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GeographicLib $as_me 1.18, which was
+It was created by GeographicLib $as_me 1.21, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -2959,7 +2959,7 @@ fi
# Define the identity of the package.
PACKAGE='geographiclib'
- VERSION='1.18'
+ VERSION='1.21'
cat >>confdefs.h <<_ACEOF
@@ -3027,9 +3027,9 @@ fi
ac_config_headers="$ac_config_headers include/GeographicLib/Config-ac.h"
-LT_CURRENT=11
-LT_REVISION=2
-LT_AGE=2
+LT_CURRENT=12
+LT_REVISION=0
+LT_AGE=3
@@ -16353,7 +16353,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GeographicLib $as_me 1.18, which was
+This file was extended by GeographicLib $as_me 1.21, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16419,7 +16419,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GeographicLib config.status 1.18
+GeographicLib config.status 1.21
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 31659a5..c56338e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,8 +1,8 @@
dnl
dnl Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-dnl $Id: 0416840386348cbdbacd4188f1324c6f754c033e $
+dnl $Id: 681a427014d2d61ab6b066354ed7b0ef245f75c3 $
-AC_INIT([GeographicLib],[1.18],[charles at karney.com])
+AC_INIT([GeographicLib],[1.21],[charles at karney.com])
AC_CANONICAL_SYSTEM
AC_PREREQ(2.61)
AC_CONFIG_SRCDIR(src/Geodesic.cpp)
@@ -22,9 +22,9 @@ dnl Library code modified: REVISION++
dnl Interfaces changed/added/removed: CURRENT++ REVISION=0
dnl Interfaces added: AGE++
dnl Interfaces removed: AGE=0
-LT_CURRENT=11
-LT_REVISION=2
-LT_AGE=2
+LT_CURRENT=12
+LT_REVISION=0
+LT_AGE=3
AC_SUBST(LT_CURRENT)
AC_SUBST(LT_REVISION)
AC_SUBST(LT_AGE)
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 5812d08..f251445 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -1,33 +1,36 @@
-# $Id: 523a98c95381ee97f883ae5edca309cc5510817d $
+# $Id: a9ac6876ce9b9276e0b6add11f6d77a9c8f7c75b $
# Where the html versions of the man pages (extension .1.html) are
# found.
if (MAINTAINER)
set (MANDIR ${PROJECT_BINARY_DIR}/man)
-else (MAINTAINER)
+else ()
set (MANDIR ${PROJECT_SOURCE_DIR}/man)
-endif (MAINTAINER)
+endif ()
# BUILD UP A LIST OF THE .1.HTML FILES.
set (HTMLMAN)
foreach (TOOL ${TOOLS})
set (HTMLMAN ${HTMLMAN} ${MANDIR}/${TOOL}.1.html)
-endforeach (TOOL)
+endforeach ()
-# The maintainer runs doxygen...
+# Run doxygen, if available
# First assemble a list of all the files the documentation uses. Add a
# dependency on htmlman (from man/CMakeLists.txt). Use doxygen.log as
# the make target. To make this target, copy the non-doxygen generated
-# files into html/. Run Doxfile thru a sed command so that absolute
-# path names are used and so that the pathnames are properly stripped by
-# doxygen (via STRIP_FROM_PATH). The distrib-doc target copies the html
-# directory into the source tree.
+# files into html/. Run doxfile.in cmake's config process so that
+# absolute path names are used and so that the pathnames are properly
+# stripped by doxygen (via STRIP_FROM_PATH). The distrib-doc target
+# copies the html directory into the source tree.
-# In non-maintenance mode, only the install step (from the source tree)
-# is needed.
+# If doxygen is not available, only the install step (from the source
+# tree) is done.
-if (MAINTAINER)
+if (DOXYGEN_FOUND)
+ configure_file (
+ "${CMAKE_CURRENT_SOURCE_DIR}/doxyfile.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/doxyfile" )
file (GLOB SOURCES
../src/*.cpp ../include/GeographicLib/*.hpp
../tools/*.cpp ../examples/*.cpp)
@@ -37,13 +40,12 @@ if (MAINTAINER)
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxygen.log)
add_dependencies (doc htmlman)
add_custom_command (OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen.log
- DEPENDS Doxyfile Geographic.doc ${SOURCES} ${EXTRA_FILES} ${HTMLMAN}
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxyfile
+ Geographic.doc ${SOURCES} ${EXTRA_FILES} ${HTMLMAN}
COMMAND rm -rf html && mkdir html
COMMAND
cp -p ${EXTRA_FILES} ${HTMLMAN} html/
- COMMAND
- sed \"s%\\.\\./%${PROJECT_SOURCE_DIR}/%g\"
- ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile | doxygen - > doxygen.log
+ COMMAND ${DOXYGEN_EXECUTABLE} doxyfile > doxygen.log
COMMENT "Generating html documentation tree")
install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
DESTINATION share/doc/GeographicLib)
@@ -55,9 +57,9 @@ if (MAINTAINER)
COMMAND touch ${CMAKE_CURRENT_SOURCE_DIR}/html/index.html
COMMENT "Installing html documentation tree in source tree")
-else (MAINTAINER)
+else ()
install (DIRECTORY html DESTINATION share/doc/GeographicLib)
-endif (MAINTAINER)
+endif ()
# Finally install the Javascript files
file (GLOB SCRIPTDRIVERS scripts/*.html)
diff --git a/doc/Geographic.doc b/doc/Geographic.doc
index eff5725..769e694 100644
--- a/doc/Geographic.doc
+++ b/doc/Geographic.doc
@@ -7,13 +7,13 @@
* MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
-// $Id: 1c850cc00ad5b02d90dfea3c3cbd7aa998bb2bc6 $
+// $Id: 39fe7aa302faa3170132f94a3e800b401ce18c89 $
/**
\mainpage Geographic library
\author Charles Karney
<charles at karney.com>
-\version 1.18
-\date 2012-02-18
+\version 1.21
+\date 2012-04-25
\section abstract Abstract
@@ -45,10 +45,10 @@ The main project page is at
http://sourceforge.net/projects/geographiclib </a>
.
The code is available for download at
-- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">
- GeographicLib-1.18.tar.gz</a>
-- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.zip/download">
- GeographicLib-1.18.zip</a>
+- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21.tar.gz/download">
+ GeographicLib-1.21.tar.gz</a>
+- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21.zip/download">
+ GeographicLib-1.21.zip</a>
.
as either a compressed tar file (tar.gz) or a zip file. (The two archives
have identical contents.) Alternatively you can get the latest stable release
@@ -56,9 +56,11 @@ using git \verbatim
git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib-release geographiclib
cd geographiclib; git checkout stable
\endverbatim
-There is also a binary installer for Windows available at
-- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">
- GeographicLib-1.18-win32.exe</a>
+There are also a binary installers for Windows available at
+- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">
+ GeographicLib-1.21-win32.exe</a>
+- <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">
+ GeographicLib-1.21-win64.exe</a>
.
It is licensed under the
<a href="http://www.opensource.org/licenses/MIT">MIT/X11 License</a>;
@@ -159,12 +161,14 @@ Back to \ref intro. Forward to \ref start. Up to \ref contents.
2010. Earlier versions were tested also under Darwin and Solaris. It
should compile on a wide range of other systems. First
download either
-<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">
-GeographicLib-1.18.tar.gz</a> or
-<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18.zip/download">
-GeographicLib-1.18.zip</a> (or
-<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">
-GeographicLib-1.18-win32.exe</a> for binary installation under Windows).
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21.tar.gz/download">
+GeographicLib-1.21.tar.gz</a> or
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21.zip/download">
+GeographicLib-1.21.zip</a> (or
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">
+GeographicLib-1.21-win32.exe</a> or
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">
+GeographicLib-1.21-win64.exe</a> for binary installation under Windows).
Then pick one of the first five options below:
- \ref cmake. This is the preferred installation method as it will work
on the widest range of platforms. However it requires that you have
@@ -176,7 +180,7 @@ Then pick one of the first five options below:
- \ref windows. This is a simple installation method that works with
Visual Studio 2005, 2008, and 2010 under Windows.
- \ref windowsbin. Use this installation method if you only need to use
- the utility programs supplied with %GeographicLib. (This method also
+ the \ref utilities supplied with %GeographicLib. (This method also
installs the header files and the static library for use by Visual
Studio 2010.)
- \ref qt. How to compile %GeographicLib so that it can be used by Qt
@@ -184,12 +188,33 @@ Then pick one of the first five options below:
- \ref maintainer. This describes addition tasks of interest only to
the maintainers of this code.
.
-This section documents only how to install the software. If you wish to
-use %GeographicLib to evaluate geoid heights or the earth's
+This section documents only how to install the <i>software</i>. If you
+wish to use %GeographicLib to evaluate geoid heights or the earth's
gravitational or magnetic fields, then you must also install the
relevant data files. See \ref geoidinst, \ref gravityinst, and \ref
magneticinst for instructions.
+The first two installation methods use two important techniques which
+make software maintanence simpler
+- <b>Out-of-source builds:</b> This means that you create a separate
+ directory for compiling the code. In the description here the
+ directories are called BUILD and are located in the top-level of the
+ source tree. You might want to use a suffix to denote the type of
+ build, e.g., BUILD-vc9 for Visual Studio 9, or BUILD-shared for a
+ build which creates a shared library. The advantages of out-of-source
+ builds are:
+ - You don't mess up the source tree, so it's easy to "clean up".
+ Indeed the source tree might be on a read-only file system.
+ - Builds for multiple platforms or compilers don't interfere with each
+ other.
+- <b>The library is installed:</b> After compilation, there is a
+ separate <i>install</i> step which copies the headers, libraries,
+ tools, and documentation to a "central" location. You may at this
+ point delete the source and build directories. If you have
+ administrative privileges, you can install %GeographicLib for the use
+ of all users (e.g., in /usr/local). Otherwise, you can install it for
+ your personal use (e.g., in $HOME/packages).
+
\section cmake Installation with cmake
This is the recommended method of installation; however it requires that
@@ -216,23 +241,25 @@ Windows.
Here are the steps to compile and install %GeographicLib:
- Unpack the source, running one of \verbatim
- tar xfpz GeographicLib-1.18.tar.gz
- unzip -q GeographicLib-1.18.zip
- git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib-release geographiclib \endverbatim
+ tar xfpz GeographicLib-1.21.tar.gz
+ unzip -q GeographicLib-1.21.zip \endverbatim
then enter the directory created with one of \verbatim
- cd GeographicLib-1.18
- cd geographiclib; git checkout stable \endverbatim
+ cd GeographicLib-1.21 \endverbatim
- Create a separate build directory and enter it, for example, \verbatim
mkdir BUILD
cd BUILD\endverbatim
-- Run cmake, pointing it to the parent directory (..). On Linux,
- Unix, and MaxOSX systems, the command is \verbatim
+- Run cmake, pointing it to the source directory (..). On Linux, Unix,
+ and MacOSX systems, the command is \verbatim
cmake .. \endverbatim
For Windows, the command is typically one of \verbatim
cmake -G "Visual Studio 10" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc10/GeographicLib ..
cmake -G "Visual Studio 9 2008" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc9/GeographicLib ..
cmake -G "Visual Studio 8 2005" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc8/GeographicLib ..
\endverbatim
+ Instead of setting CMAKE_INSTALL_PREFIX, you can (on Windows) set
+ CMAKE_PREFIX_PATH to point to its parent directory, e.g., \verbatim
+ cmake -G "Visual Studio 10" -D CMAKE_PREFIX_PATH=C:/pkg-vc10 ..
+\endverbatim
The definitions of CMAKE_INSTALL_PREFIX are optional (see below). The
settings given above are recommended to ensure that packages that use
%GeographicLib use the version compiled with the right compiler.
@@ -278,14 +305,17 @@ Here are the steps to compile and install %GeographicLib:
\endverbatim
(With IDE compile environments, you get to select the build type in
the IDE.)
- - <code>ENABLE_MATLAB</code> (default: OFF). Set this to ON to get
- cmake to try to compile and install the Matlab/Octave interface. At
- present this is compiled for Matlab under Windows and for Octave
- under Linux. See \ref matlab for more information.
+ - <code>MATLAB_COMPILER</code> (default: OFF). Set this to either
+ "mex" (for Matlab) or "mkoctfile" (for Octave) to specify the
+ compiler to use for the Matlab/Octave interface. See \ref matlab
+ for more information.
- <code>MAINTAINER</code> (default: ON for non-Windows environments
provided doxygen, pod2man, and pod2html are found). This affects
whether the targets for creating source packages are activated.
See \ref maintainer for details.
+ - <code>GEOGRAPHICLIB_EXAMPLES</code> (default: ON for the maintainer
+ and OFF otherwise). If set to ON, then the short example programs
+ in the <code>examples</code> directory are built.
- Build and install the software. In non-IDE environments, run
\verbatim
make # compile the library and the examples
@@ -309,14 +339,18 @@ Here are the steps to compile and install %GeographicLib:
The method works on most Unix-like systems including Linux and Mac OS X.
Here are the steps to compile and install %GeographicLib:
- Unpack the source, running \verbatim
- tar xfpz GeographicLib-1.18.tar.gz \endverbatim
+ tar xfpz GeographicLib-1.21.tar.gz \endverbatim
then enter the directory created \verbatim
- cd GeographicLib-1.18 \endverbatim
-- Configure the software with \verbatim
- ./configure \endverbatim
+ cd GeographicLib-1.21 \endverbatim
+- Create a separate build directory and enter it, for example, \verbatim
+ mkdir BUILD
+ cd BUILD\endverbatim
+- Configure the software, specifing the path of the source directory,
+ with \verbatim
+ ../configure \endverbatim
- By default %GeographicLib will be installed under /usr/local.
You can change this with, for example \verbatim
- ./configure --prefix=/tmp/geographic \endverbatim
+ ../configure --prefix=/tmp/geographic \endverbatim
- Compile and install the software with \verbatim
make
make install \endverbatim
@@ -336,9 +370,9 @@ and g++. This builds a static library and the examples.
Here are the steps to compile and install %GeographicLib:
- Unpack the source, running \verbatim
- tar xfpz GeographicLib-1.18.tar.gz \endverbatim
+ tar xfpz GeographicLib-1.21.tar.gz \endverbatim
then enter the directory created \verbatim
- cd GeographicLib-1.18 \endverbatim
+ cd GeographicLib-1.21 \endverbatim
- Edit \verbatim
include/GeographicLib/Config.h \endverbatim
If your C++ compiler does not recognize the long double type
@@ -369,8 +403,8 @@ static library and the utilities. If you only have Visual Studio 2003,
use cmake to create the necessary solution file, see \ref cmake. (cmake
is needed to build the Matlab interface and to run the tests.)
- Unpack the source, running \verbatim
- unzip -q GeographicLib-1.18.zip \endverbatim
-- Open GeographicLib-1.18/windows/GeographicLib-vc10.sln in Visual Studio
+ unzip -q GeographicLib-1.21.zip \endverbatim
+- Open GeographicLib-1.21/windows/GeographicLib-vc10.sln in Visual Studio
2010 (for Visual Studio 2005 and 2008, replace -vc10 by -vc8 or -vc9).
- Pick the build type (e.g., Release), and select "Build Solution".
- The library and the compiled examples are in the windows/Release.
@@ -384,7 +418,7 @@ is needed to build the Matlab interface and to run the tests.)
<a href="index.html">doc/html/index.html</a> in a web
browser.
-\section windowsbin Using a binary installer for Windows.
+\section windowsbin Using a binary installer for Windows
Use this method if you only need to use the %GeographicLib utilities.
The header files and static library are provided, but can only be used
@@ -393,12 +427,14 @@ library, it is advisable to build it with the compiler you are using for
your own code using either \ref cmake or \ref windows.
Download and run
-<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">
-GeographicLib-1.18-win32.exe</a>:
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">
+GeographicLib-1.21-win32.exe</a> or
+<a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">
+GeographicLib-1.21-win64.exe</a>:
- read the MIT/X11 License agreement,
- select whether you want your PATH modified,
- select the installation folder, by default
- C:\\pkg-vc10\\GeographicLib-1.18.
+ C:\\pkg-vc10\\GeographicLib-1.21 or C:\\pkg-vc10-x64\\GeographicLib-1.21,
- select the start menu folder,
- and install.
.
@@ -406,14 +442,14 @@ GeographicLib-1.18-win32.exe</a>:
given in \ref cmake.) The start menu will now include links to the
documentation for the library and for the utilities (and a link for
uninstalling the library). If you ask for your PATH to be modified, it
-will include C:/pkg-vc10/GeographicLib-1.18/bin where the utilities are
+will include C:/pkg-vc10/GeographicLib-1.21/bin where the utilities are
installed. The headers and library are installed in the
-include/GeographicLib and lib folders. The Matlab interface is
-installed in the libexec/GeographicLib/matlab folder. Add this to your
-path in Matlab to access this interface. The binaries were built using
-Visual Studio 10 (2010) for Win32 in Release mode. The Matlab interface
-was compiled with Matlab R2010b, however it works with some other
-versions of Matlab (e.g., R2008a).
+include/GeographicLib and lib folders. With the 64-bit installer, the
+Matlab interface is installed in the libexec/GeographicLib/matlab
+folder. Add this to your path in Matlab to access this interface. The
+binaries were built using Visual Studio 10 (2010) in Release mode. The
+Matlab interface was compiled with Matlab R2010b 64-bit, however it may
+work with some other 64-bit versions of Matlab.
\section qt Building the library for use with Qt
@@ -457,21 +493,27 @@ in the top level directory. Provided you are running on a system with
doxygen, pod2man, and pod2html installed, then you can create the
documentation and the man pages by building the system using cmake (the
<code>MAINTAINER</code> configuration variable set to ON, if the
-necessary tools are found) or configure. In the
-case of cmake, you must in addition run \verbatim
+necessary tools are found) or configure.
+
+In the case of cmake, you then run \verbatim
make dist \endverbatim
which will copy the documentation and man pages from the build directory
back into the source tree and package the resulting source tree for
-distribution as
-\verbatim
- GeographicLib-1.18.tar.gz
- GeographicLib-1.18.zip \endverbatim
+distribution as \verbatim
+ GeographicLib-1.21.tar.gz
+ GeographicLib-1.21.zip \endverbatim
Finally, \verbatim
make package \endverbatim
or building PACKAGE in Visual Studio will create a binary installer for
%GeographicLib. For Windows, this requires in the installation of
<a href="http://nsis.sourceforge.net">NSIS</a>.
+With configure, run \verbatim
+ make dist-gzip \endverbatim
+which will create the additional files and packages the results ready
+for distribution as \verbatim
+ geographiclib-1.21.tar.gz \endverbatim
+
<center>
Back to \ref intro. Forward to \ref start. Up to \ref contents.
</center>
@@ -559,7 +601,7 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\GeographicLib\
of the compiler and you use for your code. In addition, you have
to build a separate debug version of the library when you can
compiling your code in debug mode. The configuration of cmake
- described above ensure that the right version of the compiler is used
+ described above ensures that the right version of the compiler is used
and, assuming you built and installed %GeographicLib in debug mode, the
debug version of the library Geographic_d.lib will be used.
@@ -607,7 +649,7 @@ Back to \ref install. Forward to \ref utilities. Up to \ref contents.
</center>
**********************************************************************/
/**
-\page utilities Utility Programs
+\page utilities Utility programs
<center>
Back to \ref start. Forward to \ref organization. Up to \ref contents.
@@ -627,7 +669,7 @@ The utilities are
GeographicLib::Geodesic and GeographicLib::GeodesicLine.
- <a href="Planimeter.1.html">
<b>Planimeter</b></a>: compute the area of geodesic polygons using
- the area facilities provided by GeographicLib::Geodesic.
+ GeographicLib::PolygonArea.
- <a href="TransverseMercatorProj.1.html">
<b>TransverseMercatorProj</b></a>: convert between geographic
and transverse Mercator. This is for testing
@@ -650,10 +692,10 @@ The utilities are
GeographicLib::Geoid.
- <a href="Gravity.1.html">
<b>Gravity</b></a>: compute the earth's gravitational field using
- GeographicLib::GravityModel.
+ GeographicLib::GravityModel and GeographicLib::GravityCircle.
- <a href="MagneticField.1.html">
<b>MagneticField</b></a>: compute the earth's magnetic field using
- GeographicLib::MagneticModel.
+ GeographicLib::MagneticModel and GeographicLib::MagneticCircle.
.
The documentation for these utilities is in the form of man pages. This
documentation can be accessed by clicking on the utility name in the
@@ -838,7 +880,7 @@ and should be able to be deployed on any system with a modern C++
compiler. System dependencies come into
- GeographicLib::Math -- GeographicLib needs to define functions such
as atanh for systems that lack them. The system dependence will
- disappear with the adoption of C++0x because the needed functions are
+ disappear with the adoption of C++11 because the needed functions are
part of that standard.
- use of long double -- the type is used only for testing. On systems
which lack this data type the cmake and autoconf configuration
@@ -968,34 +1010,33 @@ Matlab.
Compiler: 2
etc. \endverbatim
- (This will require that mex.bat is in your PATH.) Then configure cmake
- with, for example \verbatim
- cmake -G "Visual Studio 10" -D ENABLE_MATLAB=ON .. \endverbatim
+ (This will require that mex.bat is in your PATH. With Linux, use
+ <code>mex -setup</code>.) Then configure cmake with, for example
+ \verbatim
+ cmake -G "Visual Studio 10" -D MATLAB_COMPILER=mex .. \endverbatim
If you are running a 64-bit version of Matlab, be sure to select a
64-bit generator with cmake, e.g., "Visual Studio 10 Win64". Finally
compile %GeographicLib with Visual Studio. (The binary installer for
- Windows includes the compiled interface built with Visual Studio 10
- and Matlab R2010b).<br>
- On Linux systems, cmake is configured to use Octave instead of Matlab,
- because Matlab typically supports out-of-date versions of gcc. However
- the steps are similar (use <code>mex -setup</code> instead of
- <code>mex.bat -setup</code>).
+ 64-bit Windows includes the compiled interface built with Visual
+ Studio 10 and Matlab R2010b 64-bit).<br>
+ On Linux systems, you can compile the interface for use with octave
+ instead by using \verbatim
+ cmake -D MATLAB_COMPILER=mkoctfile .. \endverbatim
- <b>Invoking the compiler from Matlab or Octave:</b> Start Matlab or
Octave and run, e.g., \code
mex -setup
- cd 'C:/pkg-vc10/GeographicLib-1.18/libexec/GeographicLib/matlab'
+ cd 'C:/pkg-vc10-x64/GeographicLib-1.21/libexec/GeographicLib/matlab'
help geographiclibinterface
- geographiclibinterface('C:/pkg-vc10/GeographicLib-1.18');
+ geographiclibinterface('C:/pkg-vc10/GeographicLib-1.21');
addpath(pwd);
\endcode
The first command allows you to select the compiler to use (which
should be the same as that used to compile %GeographicLib).
-
To use the interface routines for %GeographicLib, run one of (for
example) \verbatim
addpath /usr/local/libexec/GeographicLib/matlab
- addpath 'C:/pkg-vc10/GeographicLib-1.18/libexec/GeographicLib/matlab'
+ addpath 'C:/pkg-vc10-x64/GeographicLib-1.21/libexec/GeographicLib/matlab'
\endverbatim
in Octave or Matlab. The available functions are:
- geodesicdirect: solve direct geodesic problem
@@ -1233,12 +1274,14 @@ installation directory, which is typically
flag), and the data will then be placed in the "geoids" subdirectory.
Windows users should download and run the Windows installers. These
-will prompt for an installation directory with the default being
+will prompt for an installation directory with the default being one of
\verbatim
C:/Documents and Settings/All Users/Application Data/GeographicLib
+ C:/ProgramData/GeographicLib
\endverbatim
(which you probably should not change) and the data is installed in the
-"geoids" sub-directory.
+"geoids" sub-directory. (The second directory name is an alternate name
+that Windows 7 for the "Application Data" directory.)
Otherwise download \e either the tar.bz2 file \e or the zip file (they
have the same contents). If possible use the tar.bz2 files, since these
@@ -1386,7 +1429,14 @@ compressed format.
GeographicLib::Geoid evaluates the geoid height using bilinear or cubic
interpolation. The gradient of the geoid height is obtained by
differentiating the interpolated height and referencing the result to
-distance on the WGS84 ellipsoid.
+distance on the WGS84 ellipsoid.
+
+<b>WARNING</b>: Although GeographicLib::Geoid computes the gradient of
+the geoid height, this is subject to large quantization errors as a
+result of the way that the geoid data is stored. This is particularly
+acute for fine grids, at high latitudes, and for the easterly gradient.
+If you need to compute the direction of the acceleration due to gravity
+accurately, you should use GeographicLib::GravityModel::Gravity.
The bilinear interpolation is based on the values at the 4 corners of
the enclosing cell. The interpolated height is a continuous function of
@@ -1422,7 +1472,7 @@ The interpolation methods are quick and give good accuracy. Here is a
summary of the combined quantization and interpolation errors for the
heights.
<center><table>
-<caption>Interpolation errors for geoid heights</caption>
+<caption>Interpolation and quantization errors for geoid heights</caption>
<tr>
<th rowspan="2">name
<th rowspan="2">geoid
@@ -1439,36 +1489,68 @@ heights.
<tr>
<td>egm84-15 <td>EGM84 <td><center>15' </center>
<td><center>0.413 m</center><td><center>18 mm</center>
- <td><center>0.020 m</center><td><center> 1 mm</center>
+ <td><center>0.021 m</center><td><center>1.2 mm</center>
<tr>
<td>egm96-15 <td>EGM96 <td><center>15' </center>
<td><center>1.152 m</center><td><center>40 mm</center>
- <td><center>0.169 m</center><td><center> 7 mm</center>
+ <td><center>0.169 m</center><td><center>7.0 mm</center>
<tr>
<td>egm96-5 <td>EGM96 <td><center> 5' </center>
- <td><center>0.140 m</center><td><center> 5 mm</center>
- <td><center>0.003 m</center><td><center> 1 mm</center>
+ <td><center>0.140 m</center><td><center>4.6 mm</center>
+ <td><center>0.0032 m</center><td><center>0.7 mm</center>
<tr>
<td>egm2008-5 <td>EGM2008<td><center> 5' </center>
<td><center>0.478 m</center><td><center>12 mm</center>
- <td><center>0.294 m</center><td><center> 5 mm</center>
+ <td><center>0.294 m</center><td><center>4.5 mm</center>
<tr>
<td>egm2008-2_5<td>EGM2008<td><center> 2.5'</center>
- <td><center>0.135 m</center><td><center> 3 mm</center>
- <td><center>0.031 m</center><td><center> 1 mm</center>
+ <td><center>0.135 m</center><td><center>3.2 mm</center>
+ <td><center>0.031 m</center><td><center>0.8 mm</center>
<tr>
<td>egm2008-1 <td>EGM2008<td><center> 1' </center>
- <td><center>0.025 m</center><td><center> 1 mm</center>
- <td><center>0.003 m</center><td><center> 1 mm</center>
+ <td><center>0.025 m</center><td><center>0.8 mm</center>
+ <td><center>0.0022 m</center><td><center>0.7 mm</center>
</table></center>
The errors are with respect to the specific NGA earth gravity model
(not to any "real" geoid). The RMS values are obtained using 5 million
uniformly distributed random points. The maximum values are obtained by
-evaluating the errors using a different grid with points at or near the
+evaluating the errors using a different grid with points at the
centers of the original grid. (The RMS difference between EGM96 and
EGM2008 is about 0.5 m. The RMS difference between EGM84 and EGM96 is
about 1.5 m.)
+The errors in the table above include the quantization errors that arise
+because the height data that GeographicLib::Geoid uses are quantized to
+3 mm. If, instead, GeographicLib::Geoid were to use data files without
+such quantization artifacts, the overall error would be reduced <i>but
+only modestly</i> as shown in the following table, where only the
+changed rows are included and where the changed entries are given in
+bold:
+<center><table>
+<caption>Interpolation (only!) errors for geoid heights</caption>
+<tr>
+ <th rowspan="2">name
+ <th rowspan="2">geoid
+ <th rowspan="2">grid
+ <th colspan="2"><center>bilinear error</center></th>
+ <th colspan="2"><center>cubic error</center></th>
+<tr>
+ <th><center>max</center><th><center>rms</center>
+ <th><center>max</center><th><center>rms</center>
+<tr>
+ <td>egm96-5 <td>EGM96 <td><center> 5' </center>
+ <td><center>0.140 m</center><td><center>4.6 mm</center>
+ <td><center><b>0.0026 m</b></center><td><center><b>0.1 mm</b></center>
+<tr>
+ <td>egm2008-2_5<td>EGM2008<td><center> 2.5'</center>
+ <td><center>0.135 m</center><td><center>3.2 mm</center>
+ <td><center>0.031 m</center><td><center><b>0.4 mm</b></center>
+<tr>
+ <td>egm2008-1 <td>EGM2008<td><center> 1' </center>
+ <td><center>0.025 m</center><td><center><b>0.6 mm</b></center>
+ <td><center><b>0.0010 m</b></center><td><center><b>0.011 mm</b></center>
+</table></center>
+
\section geoidcache Caching the geoid data
A simple way of calling Geoid is as follows
@@ -1518,7 +1600,7 @@ two alternatives:
A test set for the geoid models is available at
- <a href="http://sf.net/projects/geographiclib/files/testdata/GeoidHeights.dat.gz/download">
- GeoidHeight.dat.gz</a>
+ GeoidHeights.dat.gz</a>
.
This is about 11 MB (compressed). This test set consists of a set of
500000 geographic coordinates together with the corresponding geoid
@@ -1679,12 +1761,14 @@ installation directory, which is typically
flag), and the data will then be placed in the "gravity" subdirectory.
Windows users should download and run the Windows installers. These
-will prompt for an installation directory with the default being
+will prompt for an installation directory with the default being one of
\verbatim
C:/Documents and Settings/All Users/Application Data/GeographicLib
+ C:/ProgramData/GeographicLib
\endverbatim
(which you probably should not change) and the data is installed in the
-"gravity" sub-directory.
+"gravity" sub-directory. (The second directory name is an alternate name
+that Windows 7 for the "Application Data" directory.)
Otherwise download \e either the tar.bz2 file \e or the zip file (they
have the same contents). To unpack these, run, for example
@@ -2024,87 +2108,18 @@ point. There are two ways to speed up this computation:
this can speed up the computation by another factor of 8.
.
Both of these techniques are illustrated by the following code,
-GeoidHeightTable.cpp, which computes a table of egm2008 geoid heights on
-a 1 minute grid. On an 8-processor Intel 2.66 GHz machine using OpenMP
-(-DHAVE_OPENMP=1), this takes about 40 minutes of elapsed time.
-(Without these optimizations, the computation would have taken about 200
-days!) \code
-// Compute a table of egm2008 geoid heights on a 1' grid.
-
-#include <vector>
-#include <fstream>
-#include <algorithm>
-
-#if HAVE_OPENMP
-#include <omp.h>
-#endif
-
-#include <GeographicLib/GravityModel.hpp>
-#include <GeographicLib/GravityCircle.hpp>
-
-using namespace std;
-using namespace GeographicLib;
-
-int main() {
- GravityModel g("egm2008");
- int
- ndeg = 60, // Number of intervals per degree
- nlat = 180 * ndeg + 1,
- nlon = 360 * ndeg;
- double delta = 1 / double(ndeg); // Grid spacing
-
- // Write results as floats in binary mode
- ofstream file("egm2008-geoid.dat", ios::binary);
-
- // Compute and store results for nbatch latitudes at a time
- const int nbatch = 64;
- vector< vector<float> > N(nbatch, vector<float>(nlon));
-
- for (int ilat0 = 0; ilat0 < nlat; ilat0 += nbatch) { // Loop over batches
- int nlat0 = min(nlat, ilat0 + nbatch);
-
-#if HAVE_OPENMP
-#pragma omp parallel for
-#endif
- for (int ilat = ilat0; ilat < nlat0; ++ilat) { // Loop over latitudes
- double lat = 90 - ilat * delta, h = 0;
- GravityCircle c(g.Circle(lat, h, GravityModel::GEOID_HEIGHT));
- for (int ilon = 0; ilon < nlon; ++ilon) { // Loop over longitudes
- double lon = ilon * delta;
- N[ilat - ilat0][ilon] = float(c.GeoidHeight(lon));
- } // longitude loop
- } // latitude loop
- for (int ilat = ilat0; ilat < nlat0; ++ilat)
- file.write(reinterpret_cast<char *>(N[ilat - ilat0].data()),
- nlon * sizeof(float));
-
- } // batch loop
-}
-\endcode
-
-OpenMP is supported by g++ and Visual Studio but these compilers need to
-be instructed to honor the OpenMP directives. CMake can do the
-necessary work with this CMakeLists.txt: \verbatim
-cmake_minimum_required (VERSION 2.6)
-project (GeoidHeightTable)
-# GravityModel was introduced in GeographicLib 1.16.
-find_package (GeographicLib 1.16 REQUIRED)
-find_package (OpenMP)
-
-include_directories (${GeographicLib_INCLUDE_DIRS})
-add_executable (GeoidHeightTable GeoidHeightTable.cpp)
-target_link_libraries (GeoidHeightTable ${GeographicLib_LIBRARIES})
-
-if (OPENMP_FOUND OR OpenMP_FOUND)
- set_target_properties (GeoidHeightTable PROPERTIES
- COMPILE_FLAGS ${OpenMP_CXX_FLAGS}
- COMPILE_DEFINITIONS HAVE_OPENMP=1)
- if (NOT WIN32)
- set_target_properties (GeoidHeightTable PROPERTIES
- LINK_FLAGS ${OpenMP_CXX_FLAGS})
- endif (NOT WIN32)
-endif (OPENMP_FOUND OR OpenMP_FOUND)
-\endverbatim
+which computes a table of geoid heights on
+a regular grid and writes on the result in a
+<a href="http://vdatum.noaa.gov/dev/gtx_info.html#dev_gtx_binary">.gtx</a>
+file. On an 8-processor Intel 2.66 GHz machine using OpenMP
+(-DHAVE_OPENMP=1), it takes about 40 minutes of elapsed time to compute
+the geoid height for EGM2008 on a 1' gride. (Without these
+optimizations, the computation would have taken about 200 days!)
+\include GeoidToGTX.cpp
+
+This example is built if cmake is invoked with <code>-D
+GEOGRAPHICLIB_EXAMPLES=ON</code>. cmake will add in support for OpenMP,
+if it is available.
<center>
Back to \ref geoid. Forward to \ref magnetic. Up to \ref contents.
@@ -2223,12 +2238,14 @@ installation directory, which is typically
flag), and the data will then be placed in the "magnetic" subdirectory.
Windows users should download and run the Windows installers. These
-will prompt for an installation directory with the default being
+will prompt for an installation directory with the default being one of
\verbatim
C:/Documents and Settings/All Users/Application Data/GeographicLib
+ C:/ProgramData/GeographicLib
\endverbatim
(which you probably should not change) and the data is installed in the
-"magnetic" sub-directory.
+"magnetic" sub-directory. (The second directory name is an alternate name
+that Windows 7 for the "Application Data" directory.)
Otherwise download \e either the tar.bz2 file \e or the zip file (they
have the same contents). To unpack these, run, for example
@@ -2398,7 +2415,7 @@ Back to \ref gravity. Forward to \ref geodesic. Up to \ref contents.
</center>
**********************************************************************/
/**
-\page geodesic Geodesics on the Ellipsoid
+\page geodesic Geodesics on the ellipsoid
<center>
Back to \ref magnetic. Forward to \ref transversemercator. Up to
@@ -2875,7 +2892,7 @@ Back to \ref magnetic. Forward to \ref transversemercator. Up to
</center>
**********************************************************************/
/**
-\page transversemercator Transverse Mercator Projection
+\page transversemercator Transverse Mercator projection
<center>
Back to \ref geodesic. Forward to \ref geocentric. Up to \ref contents.
@@ -3242,7 +3259,7 @@ Back to \ref transversemercator. Forward to \ref old. Up to \ref contents.
</center>
**********************************************************************/
/**
-\page old Old Versions
+\page old Old versions
<center>
Back to \ref geocentric. Up to \ref contents.
@@ -3251,15 +3268,57 @@ Back to \ref geocentric. Up to \ref contents.
List of versions in reverse chronological order together with a brief
list of changes. (Note: Old versions of the library use a year-month
style of numbering. Now, the library uses a major and minor version
-number.)
-
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">1.18 (released 2012-02-18)</a>
+number.) Recent versions of %GeographicLib are available at
+<a href="http://sf.net/projects/geographiclib/files/distrib/">
+http://sourceforge.net/projects/geographiclib/files/distrib/</a>.
+Older versions are in
+<a href="http://sf.net/projects/geographiclib/files/distrib/archive/">
+http://sourceforge.net/projects/geographiclib/files/distrib/archive/</a>.
+
+ - Version 1.21 (released 2012-04-25)
+ - Support colon-separated DMS output:
+ - GeographicLib::DMS::Encode and
+ GeographicLib::GeoCoords::DMSRepresentation generalized;
+ - <a href="GeoConvert.1.html">GeoConvert</a> and
+ <a href="Geod.1.html">Geod</a> now accept a -: option.
+ - <a href="GeoidEval.1.html">GeoidEval</a> does not print the gradient
+ of the geoid height by default (because it's subject to large
+ errors); give the -g option to get the gradient printed.
+ - Work around optimization BUG in GeographicLib::Geodesic::Inverse
+ with tdm mingw g++ version 4.6.1.
+ - autoconf fixed to ensure that that out-of-sources builds work;
+ document this as the preferred method of using autoconf.
+ - cmake tweaks:
+ - simplify the configuration of doxygen;
+ - allow the Matlab compiler to be specified with the
+ MATLAB_COMPILER option.
+
+ - Version 1.20 (released 2012-03-23)
+ - cmake tweaks:
+ - improve find_package's matching of compiler versions;
+ - CMAKE_INSTALL_PREFIX set from CMAKE_PREFIX_PATH if available;
+ - add "x64" to the package name for the 64-bit binary installer;
+ - fix cmake warning with Visual Studio Express.
+ - Fix GeographicLib::SphericalEngine to deal with aggessive iterator
+ checking by Visual Studio.
+ - Fix transcription BUG is Geodesic.js.
+
+ - Version 1.19 (released 2012-03-13)
+ - Slight improvement in GeographicLib::Geodesic::Inverse for very
+ short lines.
+ - Fix argument checking tests in GeographicLib::MGRS::Forward.
+ - Add --comment-delimiter and --line-separator options to the \ref
+ utilities.
+ - Add installer for 64-bit Windows; the compiled Matlab interface is
+ supplied with the Windows 64-bit installer only.
+
+ - Version 1.18 (released 2012-02-18)
- Improve documentation on configuration with cmake.
- cmake's find_package ensures that the compiler versions match on Windows.
- Improve documentation on compiling Matlab interface.
- Binary installer for Windows installs under C:/pkg-vc10 by default.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.17.tar.gz/download">1.17 (released 2012-01-21)</a>
+ - Version 1.17 (released 2012-01-21)
- Work around optimization BUG in GeographicLib::Geodesic::Inverse
with g++ version 4.4.0 (mingw).
- Fix BUG in argument checking with GeographicLib::OSGB::GridReference.
@@ -3267,10 +3326,10 @@ number.)
- Add simple examples of usage for each class.
- Add internal documentation to the cmake configuration files.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.16.tar.gz/download">1.16 (released 2011-12-07)</a>
+ - Version 1.16 (released 2011-12-07)
- Add calculation of the earth's gravitational field:
- add GeographicLib::NormalGravity GeographicLib::GravityModel and
- GeographicLib::GravityCircle classes;
+ GeographicLib::GravityCircle classes;
- add command line utility
<a href="Gravity.1.html">Gravity</a>;
- add \ref gravity;
@@ -3300,7 +3359,7 @@ number.)
- default height to zero in
<a href="MagneticField.1.html">MagneticField</a>.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.15.tar.gz/download">1.15 (released 2011-11-08)</a>
+ - Version 1.15 (released 2011-11-08)
- Add calculation of the earth's magnetic field:
- add GeographicLib::MagneticModel and GeographicLib::MagneticCircle
classes;
@@ -3322,7 +3381,7 @@ number.)
install setup.py for non-Windows systems.
- Include Doxygen tag file in distribution as doc/html/Geographic.tag.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.14.tar.gz/download">1.14 (released 2011-09-30)</a>
+ - Version 1.14 (released 2011-09-30)
- Ensure that geographiclib-config.cmake is relocatable.
- Allow more unicode symbols to be used in GeographicLib::DMS::Decode.
- Modify <a href="GeoidEval.1.html">GeoidEval</a> so that it can be
@@ -3336,7 +3395,7 @@ number.)
- Supply a minimal Qt qmake project file for library
src/Geographic.pro.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.13.tar.gz/download">1.13 (released 2011-08-13)</a>
+ - Version 1.13 (released 2011-08-13)
- Changes to I/O:
- allow : (colon) to be used as a DMS separator in
GeographicLib::DMS::Decode(const std::string&, flag&);
@@ -3364,7 +3423,7 @@ number.)
geographiclib-config.cmake;
- better support for building a shared library under Windows.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.12.tar.gz/download">1.12 (released 2011-07-21)</a>
+ - Version 1.12 (released 2011-07-21)
- Change license to MIT/X11.
- Add GeographicLib::PolygonArea class and equivalent Matlab function.
- Provide Javascript and Python implementations of geodesic routines.
@@ -3372,10 +3431,10 @@ number.)
- Fix (innocuous) unassigned variable in Geodesic::GenInverse.
- Geodesic routines in Matlab return a12 as first column of aux return
value (incompatible change).
- - A couple of code changes to enable compilation with Visual Studio
- 2003.
+ - A couple of code changes to enable compilation with Visual
+ Studio 2003.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.11.tar.gz/download">1.11 (released 2011-06-27)</a>
+ - Version 1.11 (released 2011-06-27)
- Changes to <a href="Planimeter.1.html">Planimeter</a>:
- add -l flag to <a href="Planimeter.1.html">Planimeter</a> for polyline
calculations;
@@ -3401,7 +3460,7 @@ number.)
- InverseFlattening() has been deprecated (and now returns inf for a
sphere, instead of 0).
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.10.tar.gz/download">1.10 (released 2011-06-11)</a>
+ - Version 1.10 (released 2011-06-11)
- Improvements to Matlab/Octave interface:
- add {geocentric,localcartesian}{forward,reverse};
- make geographiclibinterface more general;
@@ -3413,7 +3472,7 @@ number.)
- cmake installed in man/man1 instead of share/man/man1;
- cmake did not set the rpath on the tools.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.9.tar.gz/download">1.9 (released 2011-05-28)</a>
+ - Version 1.9 (released 2011-05-28)
- FIX BUG in area returned by
<a href="Planimeter.1.html">Planimeter</a> for pole encircling polygons.
- FIX BUG in error message reported when DMS::Decode reads the string
@@ -3442,7 +3501,7 @@ number.)
<a href="http://geographiclib.git.sf.net/git/gitweb-index.cgi">
git</a>.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.8.tar.gz/download">1.8 (released 2011-02-22)</a>
+ - Version 1.8 (released 2011-02-22)
- Optionally return rotation matrix from GeographicLib::Geocentric and
GeographicLib::LocalCartesian.
- For the \ref utilities, supply man pages, -h prints the synopsis,
@@ -3461,7 +3520,7 @@ number.)
- Remove documentation that duplicates papers on transverse Mercator
and geodesics.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.7.tar.gz/download">1.7 (released 2010-12-21)</a>
+ - Version 1.7 (released 2010-12-21)
- FIX BUG in scale returned by GeographicLib::LambertConformalConic::Reverse.
- Add GeographicLib::AlbersEqualArea projection.
- Library created by Visual Studio is Geographic.lib instead of
@@ -3469,13 +3528,13 @@ number.)
- 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.
+ - Use C++11 static_assert and math functions, if available.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.6.tar.gz/download">1.6 (released 2010-11-23)</a>
+ - Version 1.6 (released 2010-11-23)
- FIX BUG introduced in GeographicLib::Geoid in version 1.5 (found by
Dave Edwards).
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.5.tar.gz/download">1.5 (released 2010-11-19)</a>
+ - Version 1.5 (released 2010-11-19)
- Improve area calculations for small polygons.
- Add -s and -r flags to <a href="Planimeter.1.html">Planimeter</a>.
- Improve the accuracy of GeographicLib::LambertConformalConic using
@@ -3500,7 +3559,7 @@ number.)
- fixes to compile under cygwin;
- tweak expression used to find latitude from conformal latitude.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.4.tar.gz/download">1.4 (released 2010-09-12)</a>
+ - Version 1.4 (released 2010-09-12)
- Changes to GeographicLib::Geodesic and GeographicLib::GeodesicLine:
- FIX BUG in Geodesic::Inverse with prolate ellipsoids;
- add area computations to Geodesic::Direct and Geodesic::Inverse;
@@ -3530,7 +3589,7 @@ number.)
classes which don't return the convergence (or azimuth) and scale.
- Document function parameters and return values consistently.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.3.tar.gz/download">1.3 (released 2010-07-21)</a>
+ - Version 1.3 (released 2010-07-21)
- Add GeographicLib::Gnomonic, the ellipsoid generalization of the
gnomonic projection.
- Add -g and -e options to
@@ -3549,7 +3608,7 @@ number.)
- Update references to Geotrans in MGRS documentation.
- Speed up tmseries.mac.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.2.tar.gz/download">1.2 (released 2010-05-21)</a>
+ - Version 1.2 (released 2010-05-21)
- FIX BUGS in GeographicLib::Geodesic,
- wrong azimuth returned by Direct if point 2 is on a pole;
- Inverse sometimes fails with very close points.
@@ -3580,15 +3639,14 @@ number.)
- <a href="CartConvert.1.html">CartConvert</a> allows the ellipsoid
to be specified with -e.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.1.tar.gz/download">1.1 (released 2010-02-09)</a>
+ - Version 1.1 (released 2010-02-09)
- 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
<a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a>
- - <a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.0.tar.gz/download">
- 1.0 (released 2010-01-07)</a>
+ - Version 1.0 (released 2010-01-07)
- Add autoconf configuration files.
- BUG FIX: Improve initial guess for Newton's method in
PolarStereographic::Reverse. (Previously this failed to converge
@@ -3611,7 +3669,7 @@ number.)
cached area without disk reads;
- Add inspector functions to query the extent of the cache.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-11.tgz/download">2009-11</a>
+ - Version 2009-11
- Allow specification of "closest UTM zone" in GeographicLib::UTMUPS
and <a href="GeoConvert.1.html">GeoConvert</a> (via -t option).
- Utilities now complain is there are too many tokens on input lines.
@@ -3625,7 +3683,7 @@ number.)
- Improve accuracy of inverse hyperbolic functions.
- Fix the way GeographicLib::Math functions handle different precisions.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-10.tgz/download">2009-10</a>
+ - Version 2009-10
- Change web site to http://geographiclib.sourceforge.net
- Several house-cleaning changes:
- Change from the a flat directory structure to a more easily
@@ -3646,11 +3704,11 @@ number.)
northings.
- Add 64-bit targets in Visual Studio project files.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-09.tgz/download">2009-09</a>
+ - Version 2009-09
- Add GeographicLib::Geoid and
<a href="GeoidEval.1.html">GeoidEval</a> utility.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-08.tgz/download">2009-08</a>
+ - Version 2009-08
- Add GeographicLib::CassiniSoldner class and
<a href="GeodesicProj.1.html">EquidistantTest</a> utility.
- Fix bug in GeographicLib::Geodesic::Inverse where NaNs were
@@ -3659,15 +3717,15 @@ number.)
of the azimuthal scale instead of the reduced length.
- Add -n option to <a href="GeoConvert.1.html">GeoConvert</a>.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-07.tgz/download">2009-07</a>
+ - Version 2009-07
- Speed up the series inversion code in tmseries.mac and geod.mac.
- Reference Borkowski in section on \ref geocentric.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-06.tgz/download">2009-06</a>
+ - Version 2009-06
- Add routines to decode and encode zone+hemisphere to GeographicLib::UTMUPS.
- Clean up code in GeographicLib::Geodesic.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-05.tgz/download">2009-05</a>
+ - Version 2009-05
- Improvements to GeographicLib::Geodesic:
- more economical series expansions,
- return reduced length (as does the
@@ -3682,7 +3740,7 @@ number.)
carefully.
- Remove reference to defunct Constants.cpp from GeographicLib.vcproj.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-04.tgz/download">2009-04</a>
+ - Version 2009-04
- Use compile-time constants to select the order of series in
GeographicLib::TransverseMercator.
- 2x unroll of Clenshaw summation to avoid data shuffling.
@@ -3698,7 +3756,7 @@ number.)
- works with both oblate and prolate ellipsoids,
- add -a, -e, -b options to the <a href="Geod.1.html">Geod</a> utility.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-03.tgz/download">2009-03</a>
+ - Version 2009-03
- Add GeographicLib::Geodesic and the <a href="Geod.1.html">Geod</a> utility.
- Declare when no exceptions are thrown by functions.
- Minor changes to GeographicLib::DMS class.
@@ -3708,15 +3766,15 @@ number.)
to <a href="CartConvert.1.html">CartConvert</a>.
- Use inline functions to define constant doubles in Constants.hpp.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-02.tgz/download">2009-02</a>
+ - Version 2009-02
- Fix documentation of constructors (flattening -> inverse
flattening).
- Use std versions of math functions.
- Add GeographicLib::ECEF and GeographicLib::LocalCartesian classes
and the ECEFConvert utility.
- - Gather the documentation on the utility programs onto one page.
+ - Gather the documentation on the \ref utilities onto one page.
- - <a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-01.tgz/download">2009-01</a>
+ - Version 2009-01
- First proper release of library.
- More robust GeographicLib::TransverseMercatorExact:
- Introduce \e extendp version of constructor,
@@ -3728,7 +3786,7 @@ number.)
- Documentation on transverse Mercator projection.
- Add GeographicLib::MGRS, GeographicLib::UTMUPS, etc.
- - 2008-09
+ - Version 2008-09
- Ad hoc posting of information on the transverse Mercator projection.
<center>
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 9d2add1..c5702db 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,19 +1,19 @@
-# $Id: cfece0673e6f2ce525f3a520aa0030e89ad8f686 $
+# $Id: a22d824c2a60646aff275d080be5c805c2c924eb $
-EXTRAFILES = tmseries30.html geodseries30.html
+EXTRAFILES = $(srcdir)/tmseries30.html $(srcdir)/geodseries30.html
SCRIPTDRIVERS = \
-scripts/geod-calc.html \
-scripts/geod-google.html \
-scripts/geod-google-instructions.html
+$(srcdir)/scripts/geod-calc.html \
+$(srcdir)/scripts/geod-google.html \
+$(srcdir)/scripts/geod-google-instructions.html
JSSCRIPTS = \
-scripts/GeographicLib/Math.js \
-scripts/GeographicLib/Geodesic.js \
-scripts/GeographicLib/GeodesicLine.js \
-scripts/GeographicLib/PolygonArea.js \
-scripts/GeographicLib/DMS.js \
-scripts/GeographicLib/Interface.js
+$(srcdir)/scripts/GeographicLib/Math.js \
+$(srcdir)/scripts/GeographicLib/Geodesic.js \
+$(srcdir)/scripts/GeographicLib/GeodesicLine.js \
+$(srcdir)/scripts/GeographicLib/PolygonArea.js \
+$(srcdir)/scripts/GeographicLib/DMS.js \
+$(srcdir)/scripts/GeographicLib/Interface.js
HPPFILES = \
$(top_srcdir)/include/GeographicLib/Accumulator.hpp \
@@ -85,19 +85,21 @@ MANPAGES = \
doc: html/index.html
-html/index.html: Doxyfile Geographic.doc \
+html/index.html: doxyfile.in Geographic.doc \
$(HPPFILES) $(ALLSOURCES) $(EXTRAFILES) $(MANPAGES)
if test -d html; then rm -rf html/*; else mkdir html; fi
cp -p $(EXTRAFILES) $(MANPAGES) $(top_srcdir)/maxima/*.mac \
$(top_srcdir)/LICENSE.txt html/
- doxygen
+ sed -e "s%@PROJECT_SOURCE_DIR@%$(top_srcdir)%g" \
+ -e "s%@GeographicLib_VERSION@%$(VERSION)%g" \
+ $(srcdir)/doxyfile.in | doxygen -
-distclean-local:
+maintainer-clean-local:
rm -rf html
-install-doc: doc
+install-doc: html/index.html
$(INSTALL) -d $(DESTDIR)$(docdir)/html
- $(INSTALL) -m 644 html/* $(DESTDIR)$(docdir)/html
+ $(INSTALL) -m 644 `dirname $<`/* $(DESTDIR)$(docdir)/html
$(INSTALL) -d $(DESTDIR)$(docdir)/scripts
$(INSTALL) -m 644 $(SCRIPTDRIVERS) $(DESTDIR)$(docdir)/scripts
$(INSTALL) -d $(DESTDIR)$(docdir)/scripts/GeographicLib
diff --git a/doc/Makefile.in b/doc/Makefile.in
index f47e2a9..12d6a3e 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -15,7 +15,7 @@
@SET_MAKE@
-# $Id: cfece0673e6f2ce525f3a520aa0030e89ad8f686 $
+# $Id: a22d824c2a60646aff275d080be5c805c2c924eb $
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -179,19 +179,19 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-EXTRAFILES = tmseries30.html geodseries30.html
+EXTRAFILES = $(srcdir)/tmseries30.html $(srcdir)/geodseries30.html
SCRIPTDRIVERS = \
-scripts/geod-calc.html \
-scripts/geod-google.html \
-scripts/geod-google-instructions.html
+$(srcdir)/scripts/geod-calc.html \
+$(srcdir)/scripts/geod-google.html \
+$(srcdir)/scripts/geod-google-instructions.html
JSSCRIPTS = \
-scripts/GeographicLib/Math.js \
-scripts/GeographicLib/Geodesic.js \
-scripts/GeographicLib/GeodesicLine.js \
-scripts/GeographicLib/PolygonArea.js \
-scripts/GeographicLib/DMS.js \
-scripts/GeographicLib/Interface.js
+$(srcdir)/scripts/GeographicLib/Math.js \
+$(srcdir)/scripts/GeographicLib/Geodesic.js \
+$(srcdir)/scripts/GeographicLib/GeodesicLine.js \
+$(srcdir)/scripts/GeographicLib/PolygonArea.js \
+$(srcdir)/scripts/GeographicLib/DMS.js \
+$(srcdir)/scripts/GeographicLib/Interface.js
HPPFILES = \
$(top_srcdir)/include/GeographicLib/Accumulator.hpp \
@@ -372,7 +372,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-local
+distclean-am: clean-am distclean-generic
dvi: dvi-am
@@ -416,7 +416,8 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
mostlyclean: mostlyclean-am
@@ -435,33 +436,35 @@ uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distclean-local \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic maintainer-clean-local mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am
doc: html/index.html
-html/index.html: Doxyfile Geographic.doc \
+html/index.html: doxyfile.in Geographic.doc \
$(HPPFILES) $(ALLSOURCES) $(EXTRAFILES) $(MANPAGES)
if test -d html; then rm -rf html/*; else mkdir html; fi
cp -p $(EXTRAFILES) $(MANPAGES) $(top_srcdir)/maxima/*.mac \
$(top_srcdir)/LICENSE.txt html/
- doxygen
+ sed -e "s%@PROJECT_SOURCE_DIR@%$(top_srcdir)%g" \
+ -e "s%@GeographicLib_VERSION@%$(VERSION)%g" \
+ $(srcdir)/doxyfile.in | doxygen -
-distclean-local:
+maintainer-clean-local:
rm -rf html
-install-doc: doc
+install-doc: html/index.html
$(INSTALL) -d $(DESTDIR)$(docdir)/html
- $(INSTALL) -m 644 html/* $(DESTDIR)$(docdir)/html
+ $(INSTALL) -m 644 `dirname $<`/* $(DESTDIR)$(docdir)/html
$(INSTALL) -d $(DESTDIR)$(docdir)/scripts
$(INSTALL) -m 644 $(SCRIPTDRIVERS) $(DESTDIR)$(docdir)/scripts
$(INSTALL) -d $(DESTDIR)$(docdir)/scripts/GeographicLib
diff --git a/doc/Makefile.mk b/doc/Makefile.mk
index ec3aec4..71460ba 100644
--- a/doc/Makefile.mk
+++ b/doc/Makefile.mk
@@ -1,4 +1,4 @@
-# $Id: a73f5b44ef34121aabca5037e847b0883c33a65d $
+# $Id: 0decae99c6f1f56173f01e0cfadc59032805d104 $
MODULES = DMS EllipticFunction GeoCoords MGRS PolarStereographic \
TransverseMercator TransverseMercatorExact UTMUPS Geocentric \
@@ -22,13 +22,15 @@ MAXIMASOURCES = $(patsubst %,../maxima/%.mac,$(MAXIMA))
doc: html/index.html
-html/index.html: Doxyfile Geographic.doc \
+html/index.html: doxyfile.in Geographic.doc \
$(HEADERS) $(ALLSOURCES) $(MAXIMASOURCES) $(EXTRAFILES) \
$(HTMLMANPAGES)
if test -d html; then rm -rf html/*; else mkdir html; fi
cp -p $(MAXIMASOURCES) $(EXTRAFILES) $(HTMLMANPAGES) \
../LICENSE.txt html/
- doxygen
+ sed -e "s%@PROJECT_SOURCE_DIR@%..%g" \
+ -e "s%@GeographicLib_VERSION@%$(VERSION)%g" \
+ $(srcdir)/doxyfile.in | doxygen -
PREFIX = /usr/local
DEST = $(PREFIX)/share/doc/GeographicLib
@@ -43,7 +45,8 @@ install: html/index.html
mkdir -p $(SCRIPTDEST)/GeographicLib
$(INSTALL) -m 644 $(SCRIPTDRIVERS) $(SCRIPTDEST)/
$(INSTALL) -m 644 $(JSSCRIPTS) $(SCRIPTDEST)/GeographicLib/
-distclean:
+
+maintainer-clean:
rm -rf html
.PHONY: doc install clean
diff --git a/doc/Doxyfile b/doc/doxyfile.in
similarity index 99%
rename from doc/Doxyfile
rename to doc/doxyfile.in
index 9367989..77d3728 100644
--- a/doc/Doxyfile
+++ b/doc/doxyfile.in
@@ -1,5 +1,5 @@
# Doxyfile 1.5.2
-# $Id: df7fe50118980b375038a1edc147497084144c6e $
+# $Id: feb37f825ed10293802f164515d1004cf0c44b79 $
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
@@ -32,7 +32,7 @@ PROJECT_NAME = GeographicLib
# This could be handy for archiving the generated documentation or
# if some version control system is used.
-PROJECT_NUMBER =
+PROJECT_NUMBER = @GeographicLib_VERSION@
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@@ -114,7 +114,7 @@ FULL_PATH_NAMES = NO
# If left blank the directory from which doxygen is run is used as the
# path to strip.
-STRIP_FROM_PATH = ../
+STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@/
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
@@ -123,7 +123,7 @@ STRIP_FROM_PATH = ../
# definition is used. Otherwise one should specify the include paths that
# are normally passed to the compiler using the -I flag.
-STRIP_FROM_INC_PATH = ../include
+STRIP_FROM_INC_PATH = @PROJECT_SOURCE_DIR@/include
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful is your file systems
@@ -456,7 +456,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = ../src ../include/GeographicLib ../tools ../doc/Geographic.doc
+INPUT = @PROJECT_SOURCE_DIR@/src @PROJECT_SOURCE_DIR@/include/GeographicLib @PROJECT_SOURCE_DIR@/tools @PROJECT_SOURCE_DIR@/doc/Geographic.doc
# This tag can be used to specify the character encoding of the source files that
# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default
@@ -511,7 +511,7 @@ EXCLUDE_SYMBOLS =
# directories that contain example code fragments that are included (see
# the \include command).
-EXAMPLE_PATH = ../examples
+EXAMPLE_PATH = @PROJECT_SOURCE_DIR@/examples
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
diff --git a/doc/html/Accumulator_8hpp.html b/doc/html/Accumulator_8hpp.html
index 56bf3a1..c2471d8 100644
--- a/doc/html/Accumulator_8hpp.html
+++ b/doc/html/Accumulator_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Accumulator.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,15 +76,13 @@
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">An accumulator for sums. <a href="classGeographicLib_1_1Accumulator.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Accumulator_8hpp.html#af2ea0de968b20eb37534fa6baedcba54">GEOGRAPHICLIB_ACCUMULATOR_HPP</a> "$Id: 03b7f4fdb9974c822f98d5f5aab1094b5a9ac8f2 $"</td></tr>
@@ -96,8 +109,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Accumulator_8hpp_source.html b/doc/html/Accumulator_8hpp_source.html
index 4146b11..bfa4c47 100644
--- a/doc/html/Accumulator_8hpp_source.html
+++ b/doc/html/Accumulator_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Accumulator.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -90,7 +105,7 @@
<a name="l00040"></a>00040 <span class="comment"> * \include example-Accumulator.cpp</span>
<a name="l00041"></a>00041 <span class="comment"> **********************************************************************/</span>
<a name="l00042"></a>00042 <span class="keyword">template</span><<span class="keyword">typename</span> T = Math::real>
-<a name="l00043"></a><a class="code" href="classGeographicLib_1_1Accumulator.html">00043</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a> {
+<a name="l00043"></a>00043 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Accumulator {
<a name="l00044"></a>00044 <span class="keyword">private</span>:
<a name="l00045"></a>00045 <span class="comment">// _s + _t accumulates for the sum.</span>
<a name="l00046"></a>00046 T _s, _t;
@@ -152,7 +167,7 @@
<a name="l00102"></a>00102 _t += u; <span class="comment">// otherwise just accumulate u to t.</span>
<a name="l00103"></a>00103 }
<a name="l00104"></a>00104 T Sum(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00105"></a>00105 <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a> a(*<span class="keyword">this</span>);
+<a name="l00105"></a>00105 Accumulator a(*<span class="keyword">this</span>);
<a name="l00106"></a>00106 a.Add(y);
<a name="l00107"></a>00107 <span class="keywordflow">return</span> a._s;
<a name="l00108"></a>00108 }
@@ -163,7 +178,7 @@
<a name="l00113"></a>00113 <span class="comment"> *</span>
<a name="l00114"></a>00114 <span class="comment"> * @param[in] y set \e sum = \e y.</span>
<a name="l00115"></a>00115 <span class="comment"> **********************************************************************/</span>
-<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">00116</a> <a class="code" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">Accumulator</a>(T y = T(0)) throw() : _s(y), _t(0) {
+<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">00116</a> <a class="code" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">Accumulator</a>(T y = T(0)) throw() : _s(y), _t(0) {
<a name="l00117"></a>00117 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(!std::numeric_limits<T>::is_integer,
<a name="l00118"></a>00118 <span class="stringliteral">"Accumulator type is not floating point"</span>);
<a name="l00119"></a>00119 }<span class="comment"></span>
@@ -172,32 +187,32 @@
<a name="l00122"></a>00122 <span class="comment"> *</span>
<a name="l00123"></a>00123 <span class="comment"> * @param[in] y set \e sum = \e y.</span>
<a name="l00124"></a>00124 <span class="comment"> **********************************************************************/</span>
-<a name="l00125"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">00125</a> <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a>& <a class="code" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">operator=</a>(T y) <span class="keywordflow">throw</span>() { _s = y; _t = 0; <span class="keywordflow">return</span> *<span class="keyword">this</sp [...]
+<a name="l00125"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">00125</a> Accumulator& <a class="code" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">operator=</a>(T y) <span class="keywordflow">throw</span>() { _s = y; _t = 0; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span>
<a name="l00126"></a>00126 <span class="comment"> /**</span>
<a name="l00127"></a>00127 <span class="comment"> * Return the value held in the accumulator.</span>
<a name="l00128"></a>00128 <span class="comment"> *</span>
<a name="l00129"></a>00129 <span class="comment"> * @return \e sum.</span>
<a name="l00130"></a>00130 <span class="comment"> **********************************************************************/</span>
-<a name="l00131"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">00131</a> T <a class="code" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">operator()</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _s; }<span class="comment"></span>
+<a name="l00131"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">00131</a> T <a class="code" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">operator()</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _s; }<span class="comment"></span>
<a name="l00132"></a>00132 <span class="comment"> /**</span>
<a name="l00133"></a>00133 <span class="comment"> * Return the result of adding a number to \e sum (but don't change \e sum).</span>
<a name="l00134"></a>00134 <span class="comment"> *</span>
<a name="l00135"></a>00135 <span class="comment"> * @param[in] y the number to be added to the sum.</span>
<a name="l00136"></a>00136 <span class="comment"> * @return \e sum + \e y.</span>
<a name="l00137"></a>00137 <span class="comment"> **********************************************************************/</span>
-<a name="l00138"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">00138</a> T <a class="code" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">operator()</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> Sum(y); }<span class="comment"></span>
+<a name="l00138"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">00138</a> T <a class="code" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">operator()</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> Sum(y); }<span class="comment"></span>
<a name="l00139"></a>00139 <span class="comment"> /**</span>
<a name="l00140"></a>00140 <span class="comment"> * Add a number to the accumulator.</span>
<a name="l00141"></a>00141 <span class="comment"> *</span>
<a name="l00142"></a>00142 <span class="comment"> * @param[in] y set \e sum += \e y.</span>
<a name="l00143"></a>00143 <span class="comment"> **********************************************************************/</span>
-<a name="l00144"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">00144</a> <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a>& <a class="code" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">operator+=</a>(T y) <span class="keywordflow">throw</span>() { Add(y); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }< [...]
+<a name="l00144"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">00144</a> Accumulator& <a class="code" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">operator+=</a>(T y) <span class="keywordflow">throw</span>() { Add(y); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span>
<a name="l00145"></a>00145 <span class="comment"> /**</span>
<a name="l00146"></a>00146 <span class="comment"> * Subtract a number from the accumulator.</span>
<a name="l00147"></a>00147 <span class="comment"> *</span>
<a name="l00148"></a>00148 <span class="comment"> * @param[in] y set \e sum -= \e y.</span>
<a name="l00149"></a>00149 <span class="comment"> **********************************************************************/</span>
-<a name="l00150"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">00150</a> <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a>& <a class="code" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">operator-=</a>(T y) <span class="keywordflow">throw</span>() { Add(-y); <span class="keywordflow">return</span> *<span class="keyword">this</span>; } [...]
+<a name="l00150"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">00150</a> Accumulator& <a class="code" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">operator-=</a>(T y) <span class="keywordflow">throw</span>() { Add(-y); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span>
<a name="l00151"></a>00151 <span class="comment"> /**</span>
<a name="l00152"></a>00152 <span class="comment"> * Multiply accumulator by an integer. To avoid loss of accuracy, use only</span>
<a name="l00153"></a>00153 <span class="comment"> * integers such that \e n * \e T is exactly representable as a \e T (i.e.,</span>
@@ -205,31 +220,31 @@
<a name="l00155"></a>00155 <span class="comment"> *</span>
<a name="l00156"></a>00156 <span class="comment"> * @param[in] n set \e sum *= \e n.</span>
<a name="l00157"></a>00157 <span class="comment"> **********************************************************************/</span>
-<a name="l00158"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">00158</a> <a class="code" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">Accumulator</a>& <a class="code" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">operator*=</a>(<span class="keywordtype">int</span> n) <span class="keywordflow">throw</span>() { _s *= n; _t *= n; <span class="keywordflow">return< [...]
+<a name="l00158"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">00158</a> Accumulator& <a class="code" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">operator*=</a>(<span class="keywordtype">int</span> n) <span class="keywordflow">throw</span>() { _s *= n; _t *= n; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span>
<a name="l00159"></a>00159 <span class="comment"> /**</span>
<a name="l00160"></a>00160 <span class="comment"> * Test equality of an Accumulator with a number.</span>
<a name="l00161"></a>00161 <span class="comment"> **********************************************************************/</span>
-<a name="l00162"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">00162</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">operator==</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s == y; }<span class="comment"></span>
+<a name="l00162"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">00162</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">operator==</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s == y; }<span class="comment"></span>
<a name="l00163"></a>00163 <span class="comment"> /**</span>
<a name="l00164"></a>00164 <span class="comment"> * Test inequality of an Accumulator with a number.</span>
<a name="l00165"></a>00165 <span class="comment"> **********************************************************************/</span>
-<a name="l00166"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">00166</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">operator!=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s != y; }<span class="comment"></span>
+<a name="l00166"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">00166</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">operator!=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s != y; }<span class="comment"></span>
<a name="l00167"></a>00167 <span class="comment"> /**</span>
<a name="l00168"></a>00168 <span class="comment"> * Less operator on an Accumulator and a number.</span>
<a name="l00169"></a>00169 <span class="comment"> **********************************************************************/</span>
-<a name="l00170"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">00170</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">operator<</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s < y; }<span class="comment"></span>
+<a name="l00170"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">00170</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">operator<</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s < y; }<span class="comment"></span>
<a name="l00171"></a>00171 <span class="comment"> /**</span>
<a name="l00172"></a>00172 <span class="comment"> * Less or equal operator on an Accumulator and a number.</span>
<a name="l00173"></a>00173 <span class="comment"> **********************************************************************/</span>
-<a name="l00174"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">00174</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">operator<=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s <= y; }<span class="comment"></span>
+<a name="l00174"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">00174</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">operator<=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s <= y; }<span class="comment"></span>
<a name="l00175"></a>00175 <span class="comment"> /**</span>
<a name="l00176"></a>00176 <span class="comment"> * Greater operator on an Accumulator and a number.</span>
<a name="l00177"></a>00177 <span class="comment"> **********************************************************************/</span>
-<a name="l00178"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">00178</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">operator></a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s > y; }<span class="comment"></span>
+<a name="l00178"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">00178</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">operator></a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s > y; }<span class="comment"></span>
<a name="l00179"></a>00179 <span class="comment"> /**</span>
<a name="l00180"></a>00180 <span class="comment"> * Greater or equal operator on an Accumulator and a number.</span>
<a name="l00181"></a>00181 <span class="comment"> **********************************************************************/</span>
-<a name="l00182"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">00182</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">operator>=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s >= y; }
+<a name="l00182"></a><a class="code" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">00182</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">operator>=</a>(T y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> _s >= y; }
<a name="l00183"></a>00183 };
<a name="l00184"></a>00184
<a name="l00185"></a>00185 } <span class="comment">// namespace GeographicLib</span>
@@ -237,8 +252,13 @@
<a name="l00187"></a>00187 <span class="preprocessor">#endif // GEOGRAPHICLIB_ACCUMULATOR_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/AlbersEqualArea_8cpp.html b/doc/html/AlbersEqualArea_8cpp.html
index 8727ddd..e6d5dd4 100644
--- a/doc/html/AlbersEqualArea_8cpp.html
+++ b/doc/html/AlbersEqualArea_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: AlbersEqualArea.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,10 +75,8 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8cpp.html#a0cbf05d716ed87a0d1bc3cc16e6adb2a">GEOGRAPHICLIB_ALBERSEQUALAREA_CPP</a> "$Id: a7aa5e2e232feec5c866f0d645f110fd0bb38dd2 $"</td></tr>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/AlbersEqualArea_8cpp_source.html b/doc/html/AlbersEqualArea_8cpp_source.html
index 983f071..5fbfbf5 100644
--- a/doc/html/AlbersEqualArea_8cpp_source.html
+++ b/doc/html/AlbersEqualArea_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: AlbersEqualArea.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,12 +83,12 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">using namespace </span>std;
<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::eps_ = numeric_limits<real>::epsilon();
-<a name="l00023"></a>00023 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::epsx_ = Math::sq(eps_);
-<a name="l00024"></a>00024 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::epsx2_ = Math::sq(epsx_);
-<a name="l00025"></a>00025 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::tol_ = sqrt(eps_);
-<a name="l00026"></a>00026 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::tol0_ = tol_ * sqrt(sqrt(eps_));
-<a name="l00027"></a>00027 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::ahypover_ =
+<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::eps_ = numeric_limits<real>::epsilon();
+<a name="l00023"></a>00023 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::epsx_ = Math::sq(eps_);
+<a name="l00024"></a>00024 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::epsx2_ = Math::sq(epsx_);
+<a name="l00025"></a>00025 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::tol_ = sqrt(eps_);
+<a name="l00026"></a>00026 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::tol0_ = tol_ * sqrt(sqrt(eps_));
+<a name="l00027"></a>00027 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>::ahypover_ =
<a name="l00028"></a>00028 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::digits) * log(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::radix))
<a name="l00029"></a>00029 + 2;
<a name="l00030"></a>00030
@@ -87,16 +102,16 @@
<a name="l00038"></a>00038 , _qZ(1 + _e2m * atanhee(real(1)))
<a name="l00039"></a>00039 , _qx(_qZ / ( 2 * _e2m ))
<a name="l00040"></a>00040 {
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00042"></a>00042 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00044"></a>00044 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00045"></a>00045 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k0) && k0 > 0))
+<a name="l00045"></a>00045 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k0) && k0 > 0))
<a name="l00046"></a>00046 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00047"></a>00047 <span class="keywordflow">if</span> (!(abs(stdlat) <= 90))
<a name="l00048"></a>00048 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude not in [-90, 90]"</span>);
<a name="l00049"></a>00049 real
-<a name="l00050"></a>00050 phi = stdlat * Math::degree<real>(),
+<a name="l00050"></a>00050 phi = stdlat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00051"></a>00051 sphi = sin(phi),
<a name="l00052"></a>00052 cphi = abs(stdlat) != 90 ? cos(phi) : 0;
<a name="l00053"></a>00053 Init(sphi, cphi, sphi, cphi, k0);
@@ -113,18 +128,18 @@
<a name="l00064"></a>00064 , _qZ(1 + _e2m * atanhee(real(1)))
<a name="l00065"></a>00065 , _qx(_qZ / ( 2 * _e2m ))
<a name="l00066"></a>00066 {
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00068"></a>00068 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00070"></a>00070 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k1) && k1 > 0))
+<a name="l00071"></a>00071 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k1) && k1 > 0))
<a name="l00072"></a>00072 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00073"></a>00073 <span class="keywordflow">if</span> (!(abs(stdlat1) <= 90))
<a name="l00074"></a>00074 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 1 not in [-90, 90]"</span>);
<a name="l00075"></a>00075 <span class="keywordflow">if</span> (!(abs(stdlat2) <= 90))
<a name="l00076"></a>00076 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 2 not in [-90, 90]"</span>);
<a name="l00077"></a>00077 real
-<a name="l00078"></a>00078 phi1 = stdlat1 * Math::degree<real>(),
+<a name="l00078"></a>00078 phi1 = stdlat1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00079"></a>00079 phi2 = stdlat2 * Math::degree<real>();
<a name="l00080"></a>00080 Init(sin(phi1), abs(stdlat1) != 90 ? cos(phi1) : 0,
<a name="l00081"></a>00081 sin(phi2), abs(stdlat2) != 90 ? cos(phi2) : 0, k1);
@@ -143,11 +158,11 @@
<a name="l00094"></a>00094 , _qZ(1 + _e2m * atanhee(real(1)))
<a name="l00095"></a>00095 , _qx(_qZ / ( 2 * _e2m ))
<a name="l00096"></a>00096 {
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00098"></a>00098 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00099"></a>00099 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00100"></a>00100 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k1) && k1 > 0))
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k1) && k1 > 0))
<a name="l00102"></a>00102 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00103"></a>00103 <span class="keywordflow">if</span> (!(coslat1 >= 0))
<a name="l00104"></a>00104 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 1 not in [-90, 90]"</span>);
@@ -167,9 +182,9 @@
<a name="l00118"></a>00118 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1) <span class="keywordflow">throw</span>() {
<a name="l00119"></a>00119 {
<a name="l00120"></a>00120 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r;
-<a name="l00121"></a>00121 r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sphi1, cphi1);
+<a name="l00121"></a>00121 r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sphi1, cphi1);
<a name="l00122"></a>00122 sphi1 /= r; cphi1 /= r;
-<a name="l00123"></a>00123 r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sphi2, cphi2);
+<a name="l00123"></a>00123 r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sphi2, cphi2);
<a name="l00124"></a>00124 sphi2 /= r; cphi2 /= r;
<a name="l00125"></a>00125 }
<a name="l00126"></a>00126 <span class="keywordtype">bool</span> polar = (cphi1 == 0);
@@ -213,12 +228,12 @@
<a name="l00164"></a>00164 C = 1; <span class="comment">// ignored</span>
<a name="l00165"></a>00165 } <span class="keywordflow">else</span> {
<a name="l00166"></a>00166 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00167"></a>00167 tbet1 = _fm * tphi1, scbet12 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tbet1),
-<a name="l00168"></a>00168 tbet2 = _fm * tphi2, scbet22 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tbet2),
+<a name="l00167"></a>00167 tbet1 = _fm * tphi1, scbet12 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tbet1),
+<a name="l00168"></a>00168 tbet2 = _fm * tphi2, scbet22 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tbet2),
<a name="l00169"></a>00169 txi1 = txif(tphi1), cxi1 = 1/hyp(txi1), sxi1 = txi1 * cxi1,
<a name="l00170"></a>00170 txi2 = txif(tphi2), cxi2 = 1/hyp(txi2), sxi2 = txi2 * cxi2,
<a name="l00171"></a>00171 dtbet2 = _fm * (tbet1 + tbet2),
-<a name="l00172"></a>00172 es1 = 1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi1), es2 = 1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi2),
+<a name="l00172"></a>00172 es1 = 1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi1), es2 = 1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi2),
<a name="l00173"></a>00173 <span class="comment">/*</span>
<a name="l00174"></a>00174 <span class="comment"> dsxi = ( (_e2 * sq(sphi2 + sphi1) + es2 + es1) / (2 * es2 * es1) +</span>
<a name="l00175"></a>00175 <span class="comment"> Datanhee(sphi2, sphi1) ) * Dsn(tphi2, tphi1, sphi2, sphi1) /</span>
@@ -236,13 +251,13 @@
<a name="l00187"></a>00187 <span class="comment">// sq(scbet)*(1-sxi) = sq(scbet)*(1-sphi) * (1-sxi)/(1-sphi)</span>
<a name="l00188"></a>00188 sm1 = -Dsn(tphi2, tphi1, sphi2, sphi1) *
<a name="l00189"></a>00189 ( -( ((sphi2 <= 0 ? (1 - sxi2) / (1 - sphi2) :
-<a name="l00190"></a>00190 <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cxi2/cphi2) * (1 + sphi2) / (1 + sxi2)) +
+<a name="l00190"></a>00190 <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cxi2/cphi2) * (1 + sphi2) / (1 + sxi2)) +
<a name="l00191"></a>00191 (sphi1 <= 0 ? (1 - sxi1) / (1 - sphi1) :
-<a name="l00192"></a>00192 <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cxi1/cphi1) * (1 + sphi1) / (1 + sxi1))) ) *
+<a name="l00192"></a>00192 <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cxi1/cphi1) * (1 + sphi1) / (1 + sxi1))) ) *
<a name="l00193"></a>00193 (1 + _e2 * (sphi1 + sphi2 + sphi1 * sphi2)) /
<a name="l00194"></a>00194 (1 + (sphi1 + sphi2 + sphi1 * sphi2)) +
-<a name="l00195"></a>00195 (scbet22 * (sphi2 <= 0 ? 1 - sphi2 : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cphi2) / ( 1 + sphi2)) +
-<a name="l00196"></a>00196 scbet12 * (sphi1 <= 0 ? 1 - sphi1 : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cphi1) / ( 1 + sphi1)))
+<a name="l00195"></a>00195 (scbet22 * (sphi2 <= 0 ? 1 - sphi2 : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cphi2) / ( 1 + sphi2)) +
+<a name="l00196"></a>00196 scbet12 * (sphi1 <= 0 ? 1 - sphi1 : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cphi1) / ( 1 + sphi1)))
<a name="l00197"></a>00197 * (_e2 * (1 + sphi1 + sphi2 + _e2 * sphi1 * sphi2)/(es1 * es2)
<a name="l00198"></a>00198 +_e2m * DDatanhee(sphi1, sphi2) ) / _qZ ) / den;
<a name="l00199"></a>00199 <span class="comment">// C = (scbet22*sxi2 - scbet12*sxi1) / (scbet22 * scbet12 * (sx2 - sx1))</span>
@@ -282,25 +297,25 @@
<a name="l00233"></a>00233 <span class="comment">// ((1-e2)*(1-e2*sphi0^2)^2)</span>
<a name="l00234"></a>00234
<a name="l00235"></a>00235 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00236"></a>00236 scphi02 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi0), scphi0 = sqrt(scphi02),
+<a name="l00236"></a>00236 scphi02 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi0), scphi0 = sqrt(scphi02),
<a name="l00237"></a>00237 <span class="comment">// sphi0m = 1-sin(phi0) = 1/( sec(phi0) * (tan(phi0) + sec(phi0)) )</span>
<a name="l00238"></a>00238 sphi0 = tphi0 / scphi0, sphi0m = 1/(scphi0 * (tphi0 + scphi0)),
<a name="l00239"></a>00239 <span class="comment">// scbet0^2 * sphi0</span>
-<a name="l00240"></a>00240 g = (1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>( _fm * tphi0 )) * sphi0,
+<a name="l00240"></a>00240 g = (1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>( _fm * tphi0 )) * sphi0,
<a name="l00241"></a>00241 <span class="comment">// dg/dsphi0 = dg/dtphi0 * scphi0^3</span>
-<a name="l00242"></a>00242 dg = _e2m * scphi02 * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi0)) + _e2,
+<a name="l00242"></a>00242 dg = _e2m * scphi02 * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi0)) + _e2,
<a name="l00243"></a>00243 D = sphi0m * (1 - _e2*(1 + 2*sphi0*(1+sphi0))) / (_e2m * (1+sphi0)),
<a name="l00244"></a>00244 <span class="comment">// dD/dsphi0</span>
-<a name="l00245"></a>00245 dD = -2 * (1 - _e2*<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0) * (2*sphi0+3)) /
-<a name="l00246"></a>00246 (_e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(1+sphi0)),
-<a name="l00247"></a>00247 A = -_e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0m) * (2+(1+_e2)*sphi0) /
-<a name="l00248"></a>00248 (_e2m*(1-_e2*<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0))),
+<a name="l00245"></a>00245 dD = -2 * (1 - _e2*<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0) * (2*sphi0+3)) /
+<a name="l00246"></a>00246 (_e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(1+sphi0)),
+<a name="l00247"></a>00247 A = -_e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0m) * (2+(1+_e2)*sphi0) /
+<a name="l00248"></a>00248 (_e2m*(1-_e2*<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0))),
<a name="l00249"></a>00249 B = (sphi0m * _e2m / (1 - _e2*sphi0) *
<a name="l00250"></a>00250 (atanhxm1(_e2 *
-<a name="l00251"></a>00251 <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0m / (1-_e2*sphi0))) - _e2*sphi0m/_e2m)),
+<a name="l00251"></a>00251 <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0m / (1-_e2*sphi0))) - _e2*sphi0m/_e2m)),
<a name="l00252"></a>00252 <span class="comment">// d(A+B)/dsphi0</span>
-<a name="l00253"></a>00253 dAB = (2 * _e2 * (2 - _e2 * (1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0))) /
-<a name="l00254"></a>00254 (_e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(1 - _e2*<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi0)) * scphi02)),
+<a name="l00253"></a>00253 dAB = (2 * _e2 * (2 - _e2 * (1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0))) /
+<a name="l00254"></a>00254 (_e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(1 - _e2*<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi0)) * scphi02)),
<a name="l00255"></a>00255 u = sm1 * g - s/_qZ * ( D - g * (A + B) ),
<a name="l00256"></a>00256 <span class="comment">// du/dsphi0</span>
<a name="l00257"></a>00257 du = sm1 * dg - s/_qZ * (dD - dg * (A + B) - g * dAB),
@@ -312,10 +327,10 @@
<a name="l00263"></a>00263 }
<a name="l00264"></a>00264 _txi0 = txif(tphi0); _scxi0 = hyp(_txi0); _sxi0 = _txi0 / _scxi0;
<a name="l00265"></a>00265 _n0 = tphi0/hyp(tphi0);
-<a name="l00266"></a>00266 _m02 = 1 / (1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_fm * tphi0));
+<a name="l00266"></a>00266 _m02 = 1 / (1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_fm * tphi0));
<a name="l00267"></a>00267 _nrho0 = polar ? 0 : _a * sqrt(_m02);
<a name="l00268"></a>00268 _k0 = sqrt(tphi1 == tphi2 ? 1 : C / (_m02 + _n0 * _qZ * _sxi0)) * k1;
-<a name="l00269"></a>00269 _k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_k0);
+<a name="l00269"></a>00269 _k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_k0);
<a name="l00270"></a>00270 _lat0 = _sign * atan(tphi0)/Math::degree<real>();
<a name="l00271"></a>00271 }
<a name="l00272"></a>00272
@@ -337,7 +352,7 @@
<a name="l00288"></a>00288 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(-1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(-1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
<a name="l00289"></a>00289 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
<a name="l00290"></a>00290
-<a name="l00291"></a>00291 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::txif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tphi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00291"></a>00291 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AlbersEqualArea::txif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tphi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00292"></a>00292 <span class="comment">// sxi = ( sphi/(1-e2*sphi^2) + atanhee(sphi) ) /</span>
<a name="l00293"></a>00293 <span class="comment">// ( 1/(1-e2) + atanhee(1) )</span>
<a name="l00294"></a>00294 <span class="comment">//</span>
@@ -351,7 +366,7 @@
<a name="l00302"></a>00302 <span class="keywordtype">int</span> s = tphi < 0 ? -1 : 1; <span class="comment">// Enforce odd parity</span>
<a name="l00303"></a>00303 tphi *= s;
<a name="l00304"></a>00304 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00305"></a>00305 cphi2 = 1 / (1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi)),
+<a name="l00305"></a>00305 cphi2 = 1 / (1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi)),
<a name="l00306"></a>00306 sphi = tphi * sqrt(cphi2),
<a name="l00307"></a>00307 es1 = _e2 * sphi,
<a name="l00308"></a>00308 es2m1 = 1 - es1 * sphi,
@@ -364,7 +379,7 @@
<a name="l00315"></a>00315 ( es1m1 / es2m1a + atanhee(es1p1) ) );
<a name="l00316"></a>00316 }
<a name="l00317"></a>00317
-<a name="l00318"></a>00318 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::tphif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> txi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00318"></a>00318 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AlbersEqualArea::tphif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> txi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00319"></a>00319 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00320"></a>00320 tphi = txi,
<a name="l00321"></a>00321 stol = tol_ * max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), abs(txi));
@@ -373,11 +388,11 @@
<a name="l00324"></a>00324 <span class="comment">// dtxi/dtphi = (scxi/scphi)^3 * 2*(1-e^2)/(qZ*(1-e^2*sphi^2)^2)</span>
<a name="l00325"></a>00325 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00326"></a>00326 txia = txif(tphi),
-<a name="l00327"></a>00327 tphi2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi),
+<a name="l00327"></a>00327 tphi2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi),
<a name="l00328"></a>00328 scphi2 = 1 + tphi2,
-<a name="l00329"></a>00329 scterm = scphi2/(1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(txia)),
+<a name="l00329"></a>00329 scterm = scphi2/(1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(txia)),
<a name="l00330"></a>00330 dtphi = (txi - txia) * scterm * sqrt(scterm) *
-<a name="l00331"></a>00331 _qx * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(1 - _e2 * tphi2 / scphi2);
+<a name="l00331"></a>00331 _qx * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(1 - _e2 * tphi2 / scphi2);
<a name="l00332"></a>00332 tphi += dtphi;
<a name="l00333"></a>00333 <span class="keywordflow">if</span> (!(abs(dtphi) >= stol))
<a name="l00334"></a>00334 <span class="keywordflow">break</span>;
@@ -387,7 +402,7 @@
<a name="l00338"></a>00338
<a name="l00339"></a>00339 <span class="comment">// return atanh(sqrt(x))/sqrt(x) - 1 = y/3 + y^2/5 + y^3/7 + ...</span>
<a name="l00340"></a>00340 <span class="comment">// typical x < e^2 = 2*f</span>
-<a name="l00341"></a>00341 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::atanhxm1(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00341"></a>00341 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AlbersEqualArea::atanhxm1(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
<a name="l00342"></a>00342 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s = 0;
<a name="l00343"></a>00343 <span class="keywordflow">if</span> (abs(x) < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) {
<a name="l00344"></a>00344 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> os = -1, y = 1, k = 1;
@@ -399,13 +414,13 @@
<a name="l00350"></a>00350 }
<a name="l00351"></a>00351 } <span class="keywordflow">else</span> {
<a name="l00352"></a>00352 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xs = sqrt(abs(x));
-<a name="l00353"></a>00353 s = (x > 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(xs) : atan(xs)) / xs - 1;
+<a name="l00353"></a>00353 s = (x > 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(xs) : atan(xs)) / xs - 1;
<a name="l00354"></a>00354 }
<a name="l00355"></a>00355 <span class="keywordflow">return</span> s;
<a name="l00356"></a>00356 }
<a name="l00357"></a>00357
<a name="l00358"></a>00358 <span class="comment">// return (Datanhee(1,y) - Datanhee(1,x))/(y-x)</span>
-<a name="l00359"></a>00359 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AlbersEqualArea::DDatanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00359"></a>00359 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AlbersEqualArea::DDatanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00360"></a>00360 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s = 0;
<a name="l00361"></a>00361 <span class="keywordflow">if</span> (_e2 * (abs(x) + abs(y)) < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) {
<a name="l00362"></a>00362 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> os = -1, z = 1, k = 1, t = 0, c = 0, en = 1;
@@ -436,7 +451,7 @@
<a name="l00387"></a>00387 lon -= lon0;
<a name="l00388"></a>00388 lat *= _sign;
<a name="l00389"></a>00389 real
-<a name="l00390"></a>00390 lam = lon * Math::degree<real>(),
+<a name="l00390"></a>00390 lam = lon * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00391"></a>00391 phi = lat * Math::degree<real>(),
<a name="l00392"></a>00392 sphi = sin(phi), cphi = abs(lat) != 90 ? cos(phi) : epsx_,
<a name="l00393"></a>00393 tphi = sphi/cphi, txi = txif(tphi), sxi = txi/hyp(txi),
@@ -447,12 +462,12 @@
<a name="l00398"></a>00398 x = t * (_n0 != 0 ? stheta / _n0 : _k2 * lam) / _k0;
<a name="l00399"></a>00399 y = (_nrho0 *
<a name="l00400"></a>00400 (_n0 != 0 ?
-<a name="l00401"></a>00401 (ctheta < 0 ? 1 - ctheta : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(stheta)/(1 + ctheta)) / _n0 :
+<a name="l00401"></a>00401 (ctheta < 0 ? 1 - ctheta : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(stheta)/(1 + ctheta)) / _n0 :
<a name="l00402"></a>00402 0)
<a name="l00403"></a>00403 - drho * ctheta) / _k0;
<a name="l00404"></a>00404 k = _k0 * (t != 0 ? t * hyp(_fm * tphi) / _a : 1);
<a name="l00405"></a>00405 y *= _sign;
-<a name="l00406"></a>00406 gamma = _sign * theta / Math::degree<real>();
+<a name="l00406"></a>00406 gamma = _sign * theta / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00407"></a>00407 }
<a name="l00408"></a>00408
<a name="l00409"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a577a9f43be8c1e238a4d56158acf8625">00409</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a577a9f43be8c1e238a4d56158acf8625">AlbersEqualArea::Reverse</a>(real lon0, real x, real y,
@@ -462,19 +477,19 @@
<a name="l00413"></a>00413 y *= _sign;
<a name="l00414"></a>00414 real
<a name="l00415"></a>00415 nx = _k0 * _n0 * x, ny = _k0 * _n0 * y, y1 = _nrho0 - ny,
-<a name="l00416"></a>00416 den = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(nx, y1) + _nrho0, <span class="comment">// 0 implies origin with polar aspect</span>
+<a name="l00416"></a>00416 den = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(nx, y1) + _nrho0, <span class="comment">// 0 implies origin with polar aspect</span>
<a name="l00417"></a>00417 drho = den != 0 ? (_k0*x*nx - 2*_k0*y*_nrho0 + _k0*y*ny) / den : 0,
<a name="l00418"></a>00418 <span class="comment">// dsxia = scxi0 * dsxi</span>
<a name="l00419"></a>00419 dsxia = - _scxi0 * (2 * _nrho0 + _n0 * drho) * drho /
-<a name="l00420"></a>00420 (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_a) * _qZ),
+<a name="l00420"></a>00420 (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_a) * _qZ),
<a name="l00421"></a>00421 txi = (_txi0 + dsxia) / sqrt(max(1 - dsxia * (2*_txi0 + dsxia), epsx2_)),
<a name="l00422"></a>00422 tphi = tphif(txi),
<a name="l00423"></a>00423 phi = _sign * atan(tphi),
<a name="l00424"></a>00424 theta = atan2(nx, y1),
<a name="l00425"></a>00425 lam = _n0 != 0 ? theta / (_k2 * _n0) : x / (y1 * _k0);
-<a name="l00426"></a>00426 gamma = _sign * theta / Math::degree<real>();
-<a name="l00427"></a>00427 lat = phi / Math::degree<real>();
-<a name="l00428"></a>00428 lon = lam / Math::degree<real>();
+<a name="l00426"></a>00426 gamma = _sign * theta / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00427"></a>00427 lat = phi / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00428"></a>00428 lon = lam / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00429"></a>00429 <span class="comment">// Avoid losing a bit of accuracy in lon (assuming lon0 is an integer)</span>
<a name="l00430"></a>00430 <span class="keywordflow">if</span> (lon + lon0 >= 180)
<a name="l00431"></a>00431 lon += lon0 - 360;
@@ -486,7 +501,7 @@
<a name="l00437"></a>00437 }
<a name="l00438"></a>00438
<a name="l00439"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a0c00022edeb6b67dcd4e00f087b412c4">00439</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a0c00022edeb6b67dcd4e00f087b412c4">AlbersEqualArea::SetScale</a>(real lat, real k) {
-<a name="l00440"></a>00440 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k) && k > 0))
+<a name="l00440"></a>00440 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k) && k > 0))
<a name="l00441"></a>00441 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00442"></a>00442 <span class="keywordflow">if</span> (!(abs(lat) < 90))
<a name="l00443"></a>00443 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude for SetScale not in (-90, 90)"</span>);
@@ -494,14 +509,19 @@
<a name="l00445"></a>00445 <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aac57f3a9c0c08fb897a1e37034d127c1">Forward</a>(0, lat, 0, x, y, gamma, kold);
<a name="l00446"></a>00446 k /= kold;
<a name="l00447"></a>00447 _k0 *= k;
-<a name="l00448"></a>00448 _k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_k0);
+<a name="l00448"></a>00448 _k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_k0);
<a name="l00449"></a>00449 }
<a name="l00450"></a>00450
<a name="l00451"></a>00451 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/AlbersEqualArea_8hpp.html b/doc/html/AlbersEqualArea_8hpp.html
index ebc8e5b..f21285a 100644
--- a/doc/html/AlbersEqualArea_8hpp.html
+++ b/doc/html/AlbersEqualArea_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: AlbersEqualArea.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,13 +82,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8hpp.html#aa9494d369d907d2b285fcb2f45b4689c">GEOGRAPHICLIB_ALBERSEQUALAREA_HPP</a> "$Id: c9f194023273bee32876018a1f6a548e35303836 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8hpp.html#aa9494d369d907d2b285fcb2f45b4689c">GEOGRAPHICLIB_ALBERSEQUALAREA_HPP</a> "$Id: d17f37d1bec84543dc3753e882d8e95f1c1d5a1b $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_ALBERSEQUALAREA_HPP "$Id: c9f194023273bee32876018a1f6a548e35303836 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_ALBERSEQUALAREA_HPP "$Id: d17f37d1bec84543dc3753e882d8e95f1c1d5a1b $"</td>
</tr>
</table>
</div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/AlbersEqualArea_8hpp_source.html b/doc/html/AlbersEqualArea_8hpp_source.html
index bee5400..b4d684f 100644
--- a/doc/html/AlbersEqualArea_8hpp_source.html
+++ b/doc/html/AlbersEqualArea_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: AlbersEqualArea.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_ALBERSEQUALAREA_HPP)</span>
<a name="l00011"></a><a class="code" href="AlbersEqualArea_8hpp.html#aa9494d369d907d2b285fcb2f45b4689c">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_ALBERSEQUALAREA_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: c9f194023273bee32876018a1f6a548e35303836 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: d17f37d1bec84543dc3753e882d8e95f1c1d5a1b $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <algorithm></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -104,260 +119,271 @@
<a name="l00054"></a>00054 <span class="comment"> *</span>
<a name="l00055"></a>00055 <span class="comment"> * Example of use:</span>
<a name="l00056"></a>00056 <span class="comment"> * \include example-AlbersEqualArea.cpp</span>
-<a name="l00057"></a>00057 <span class="comment"> **********************************************************************/</span>
-<a name="l00058"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html">00058</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> {
-<a name="l00059"></a>00059 <span class="keyword">private</span>:
-<a name="l00060"></a>00060 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00061"></a>00061 real _a, _f, _fm, _e2, _e, _e2m, _qZ, _qx;
-<a name="l00062"></a>00062 real _sign, _lat0, _k0;
-<a name="l00063"></a>00063 real _n0, _m02, _nrho0, _k2, _txi0, _scxi0, _sxi0;
-<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
-<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">const</span> real epsx_;
-<a name="l00066"></a>00066 <span class="keyword">static</span> <span class="keyword">const</span> real epsx2_;
-<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keyword">const</span> real tol0_;
-<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keyword">const</span> real ahypover_;
-<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5; <span class="comment">// Newton iterations in Reverse</span>
-<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit0_ = 20; <span class="comment">// Newton iterations in Init</span>
-<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keyword">inline</span> real hyp(real x) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), x); }
-<a name="l00073"></a>00073 <span class="comment">// atanh( e * x)/ e if f > 0</span>
-<a name="l00074"></a>00074 <span class="comment">// atan (sqrt(-e2) * x)/sqrt(-e2) if f < 0</span>
-<a name="l00075"></a>00075 <span class="comment">// x if f = 0</span>
-<a name="l00076"></a>00076 <span class="keyword">inline</span> real atanhee(real x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00077"></a>00077 <span class="keywordflow">return</span> _f > 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * x)/_e :
-<a name="l00078"></a>00078 (_f < 0 ? std::atan(_e * x)/_e : x);
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 <span class="comment">// return atanh(sqrt(x))/sqrt(x) - 1, accurate for small x</span>
-<a name="l00081"></a>00081 <span class="keyword">static</span> real atanhxm1(real x) <span class="keywordflow">throw</span>();
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 <span class="comment">// Divided differences</span>
-<a name="l00084"></a>00084 <span class="comment">// Definition: Df(x,y) = (f(x)-f(y))/(x-y)</span>
-<a name="l00085"></a>00085 <span class="comment">// See: W. M. Kahan and R. J. Fateman,</span>
-<a name="l00086"></a>00086 <span class="comment">// Symbolic computation of divided differences,</span>
-<a name="l00087"></a>00087 <span class="comment">// SIGSAM Bull. 33(3), 7-28 (1999)</span>
-<a name="l00088"></a>00088 <span class="comment">// http://doi.acm.org/10.1145/334714.334716</span>
-<a name="l00089"></a>00089 <span class="comment">// http://www.cs.berkeley.edu/~fateman/papers/divdiff.pdf</span>
-<a name="l00090"></a>00090 <span class="comment">//</span>
-<a name="l00091"></a>00091 <span class="comment">// General rules</span>
-<a name="l00092"></a>00092 <span class="comment">// h(x) = f(g(x)): Dh(x,y) = Df(g(x),g(y))*Dg(x,y)</span>
-<a name="l00093"></a>00093 <span class="comment">// h(x) = f(x)*g(x):</span>
-<a name="l00094"></a>00094 <span class="comment">// Dh(x,y) = Df(x,y)*(g(x)+g(y))/2 + Dg(x,y)*(f(x)+f(y))/2</span>
-<a name="l00095"></a>00095 <span class="comment">//</span>
-<a name="l00096"></a>00096 <span class="comment">// sn(x) = x/sqrt(1+x^2): Dsn(x,y) = (x+y)/((sn(x)+sn(y))*(1+x^2)*(1+y^2))</span>
-<a name="l00097"></a>00097 <span class="keyword">static</span> <span class="keyword">inline</span> real Dsn(real x, real y, real sx, real sy) <span class="keywordflow">throw</span>() {
-<a name="l00098"></a>00098 <span class="comment">// sx = x/hyp(x)</span>
-<a name="l00099"></a>00099 real t = x * y;
-<a name="l00100"></a>00100 <span class="keywordflow">return</span> t > 0 ? (x + y) * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>( (sx * sy)/t ) / (sx + sy) :
-<a name="l00101"></a>00101 (x - y != 0 ? (sx - sy) / (x - y) : 1);
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 <span class="comment">// Datanhee(x,y) = atanhee((x-y)/(1-e^2*x*y))/(x-y)</span>
-<a name="l00104"></a>00104 <span class="keyword">inline</span> real Datanhee(real x, real y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00105"></a>00105 real t = x - y, d = 1 - _e2 * x * y;
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> t != 0 ? atanhee(t / d) / t : 1 / d;
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 <span class="comment">// DDatanhee(x,y) = (Datanhee(1,y) - Datanhee(1,x))/(y-x)</span>
-<a name="l00109"></a>00109 real DDatanhee(real x, real y) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00110"></a>00110 <span class="keywordtype">void</span> Init(real sphi1, real cphi1, real sphi2, real cphi2, real k1) <span class="keywordflow">throw</span>();
-<a name="l00111"></a>00111 real txif(real tphi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00112"></a>00112 real tphif(real txi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00113"></a>00113 <span class="keyword">public</span>:
-<a name="l00114"></a>00114 <span class="comment"></span>
-<a name="l00115"></a>00115 <span class="comment"> /**</span>
-<a name="l00116"></a>00116 <span class="comment"> * Constructor with a single standard parallel.</span>
-<a name="l00117"></a>00117 <span class="comment"> *</span>
-<a name="l00118"></a>00118 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00119"></a>00119 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00120"></a>00120 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00121"></a>00121 <span class="comment"> * to 1/\e f.</span>
-<a name="l00122"></a>00122 <span class="comment"> * @param[in] stdlat standard parallel (degrees), the circle of tangency.</span>
-<a name="l00123"></a>00123 <span class="comment"> * @param[in] k0 azimuthal scale on the standard parallel.</span>
-<a name="l00124"></a>00124 <span class="comment"> *</span>
-<a name="l00125"></a>00125 <span class="comment"> * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat</span>
-<a name="l00126"></a>00126 <span class="comment"> * is not in the range [-90, 90].</span>
-<a name="l00127"></a>00127 <span class="comment"> **********************************************************************/</span>
-<a name="l00128"></a>00128 <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(real a, real f, real stdlat, real k0);
-<a name="l00129"></a>00129 <span class="comment"></span>
-<a name="l00130"></a>00130 <span class="comment"> /**</span>
-<a name="l00131"></a>00131 <span class="comment"> * Constructor with two standard parallels.</span>
-<a name="l00132"></a>00132 <span class="comment"> *</span>
-<a name="l00133"></a>00133 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00134"></a>00134 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00135"></a>00135 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00136"></a>00136 <span class="comment"> * to 1/\e f.</span>
-<a name="l00137"></a>00137 <span class="comment"> * @param[in] stdlat1 first standard parallel (degrees).</span>
-<a name="l00138"></a>00138 <span class="comment"> * @param[in] stdlat2 second standard parallel (degrees).</span>
-<a name="l00139"></a>00139 <span class="comment"> * @param[in] k1 azimuthal scale on the standard parallels.</span>
-<a name="l00140"></a>00140 <span class="comment"> *</span>
-<a name="l00141"></a>00141 <span class="comment"> * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat1</span>
-<a name="l00142"></a>00142 <span class="comment"> * or \e stdlat2 is not in the range [-90, 90]. In addition, an exception</span>
-<a name="l00143"></a>00143 <span class="comment"> * is thrown if \e stdlat1 and \e stdlat2 are opposite poles.</span>
-<a name="l00144"></a>00144 <span class="comment"> **********************************************************************/</span>
-<a name="l00145"></a>00145 <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(real a, real f, real stdlat1, real stdlat2, real k1);
-<a name="l00146"></a>00146 <span class="comment"></span>
-<a name="l00147"></a>00147 <span class="comment"> /**</span>
-<a name="l00148"></a>00148 <span class="comment"> * Constructor with two standard parallels specified by sines and cosines.</span>
-<a name="l00149"></a>00149 <span class="comment"> *</span>
-<a name="l00150"></a>00150 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00151"></a>00151 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00152"></a>00152 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00153"></a>00153 <span class="comment"> * to 1/\e f.</span>
-<a name="l00154"></a>00154 <span class="comment"> * @param[in] sinlat1 sine of first standard parallel.</span>
-<a name="l00155"></a>00155 <span class="comment"> * @param[in] coslat1 cosine of first standard parallel.</span>
-<a name="l00156"></a>00156 <span class="comment"> * @param[in] sinlat2 sine of second standard parallel.</span>
-<a name="l00157"></a>00157 <span class="comment"> * @param[in] coslat2 cosine of second standard parallel.</span>
-<a name="l00158"></a>00158 <span class="comment"> * @param[in] k1 azimuthal scale on the standard parallels.</span>
-<a name="l00159"></a>00159 <span class="comment"> *</span>
-<a name="l00160"></a>00160 <span class="comment"> * This allows parallels close to the poles to be specified accurately.</span>
-<a name="l00161"></a>00161 <span class="comment"> * This routine computes the latitude of origin and the azimuthal scale at</span>
-<a name="l00162"></a>00162 <span class="comment"> * this latitude. If \e dlat = abs(\e lat2 - \e lat1) <= 160<sup>o</sup>,</span>
-<a name="l00163"></a>00163 <span class="comment"> * then the error in the latitude of origin is less than</span>
-<a name="l00164"></a>00164 <span class="comment"> * 4.5e-14<sup>o</sup>.</span>
-<a name="l00165"></a>00165 <span class="comment"> **********************************************************************/</span>
-<a name="l00166"></a>00166 <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(real a, real f,
-<a name="l00167"></a>00167 real sinlat1, real coslat1,
-<a name="l00168"></a>00168 real sinlat2, real coslat2,
-<a name="l00169"></a>00169 real k1);
-<a name="l00170"></a>00170 <span class="comment"></span>
-<a name="l00171"></a>00171 <span class="comment"> /**</span>
-<a name="l00172"></a>00172 <span class="comment"> * Set the azimuthal scale for the projection.</span>
-<a name="l00173"></a>00173 <span class="comment"> *</span>
-<a name="l00174"></a>00174 <span class="comment"> * @param[in] lat (degrees).</span>
-<a name="l00175"></a>00175 <span class="comment"> * @param[in] k azimuthal scale at latitude \e lat (default 1).</span>
-<a name="l00176"></a>00176 <span class="comment"> *</span>
-<a name="l00177"></a>00177 <span class="comment"> * This allows a "latitude of conformality" to be specified. An exception</span>
-<a name="l00178"></a>00178 <span class="comment"> * is thrown if \e k is not positive or if \e lat is not in the range (-90,</span>
-<a name="l00179"></a>00179 <span class="comment"> * 90).</span>
-<a name="l00180"></a>00180 <span class="comment"> **********************************************************************/</span>
-<a name="l00181"></a>00181 <span class="keywordtype">void</span> SetScale(real lat, real k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
-<a name="l00182"></a>00182 <span class="comment"></span>
-<a name="l00183"></a>00183 <span class="comment"> /**</span>
-<a name="l00184"></a>00184 <span class="comment"> * Forward projection, from geographic to Lambert conformal conic.</span>
-<a name="l00185"></a>00185 <span class="comment"> *</span>
-<a name="l00186"></a>00186 <span class="comment"> * @param[in] lon0 central meridian longitude (degrees).</span>
-<a name="l00187"></a>00187 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00188"></a>00188 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00189"></a>00189 <span class="comment"> * @param[out] x easting of point (meters).</span>
-<a name="l00190"></a>00190 <span class="comment"> * @param[out] y northing of point (meters).</span>
-<a name="l00191"></a>00191 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00192"></a>00192 <span class="comment"> * @param[out] k azimuthal scale of projection at point; the radial</span>
-<a name="l00193"></a>00193 <span class="comment"> * scale is the 1/\e k.</span>
-<a name="l00194"></a>00194 <span class="comment"> *</span>
-<a name="l00195"></a>00195 <span class="comment"> * The latitude origin is given by AlbersEqualArea::LatitudeOrigin(). No</span>
-<a name="l00196"></a>00196 <span class="comment"> * false easting or northing is added and \e lat should be in the range</span>
-<a name="l00197"></a>00197 <span class="comment"> * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360]. The</span>
-<a name="l00198"></a>00198 <span class="comment"> * values of \e x and \e y returned for points which project to infinity</span>
-<a name="l00199"></a>00199 <span class="comment"> * (i.e., one or both of the poles) will be large but finite.</span>
-<a name="l00200"></a>00200 <span class="comment"> **********************************************************************/</span>
-<a name="l00201"></a>00201 <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00202"></a>00202 real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00203"></a>00203 <span class="comment"></span>
-<a name="l00204"></a>00204 <span class="comment"> /**</span>
-<a name="l00205"></a>00205 <span class="comment"> * Reverse projection, from Lambert conformal conic to geographic.</span>
-<a name="l00206"></a>00206 <span class="comment"> *</span>
-<a name="l00207"></a>00207 <span class="comment"> * @param[in] lon0 central meridian longitude (degrees).</span>
-<a name="l00208"></a>00208 <span class="comment"> * @param[in] x easting of point (meters).</span>
-<a name="l00209"></a>00209 <span class="comment"> * @param[in] y northing of point (meters).</span>
-<a name="l00210"></a>00210 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00211"></a>00211 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00212"></a>00212 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00213"></a>00213 <span class="comment"> * @param[out] k azimuthal scale of projection at point; the radial</span>
-<a name="l00214"></a>00214 <span class="comment"> * scale is the 1/\e k.</span>
-<a name="l00215"></a>00215 <span class="comment"> *</span>
-<a name="l00216"></a>00216 <span class="comment"> * The latitude origin is given by AlbersEqualArea::LatitudeOrigin(). No</span>
-<a name="l00217"></a>00217 <span class="comment"> * false easting or northing is added. \e lon0 should be in the range</span>
-<a name="l00218"></a>00218 <span class="comment"> * [-180, 360]. The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00219"></a>00219 <span class="comment"> * The value of \e lat returned is in the range [-90,90]. If the input</span>
-<a name="l00220"></a>00220 <span class="comment"> * point is outside the legal projected space the nearest pole is returned.</span>
-<a name="l00221"></a>00221 <span class="comment"> **********************************************************************/</span>
-<a name="l00222"></a>00222 <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00223"></a>00223 real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00224"></a>00224 <span class="comment"></span>
-<a name="l00225"></a>00225 <span class="comment"> /**</span>
-<a name="l00226"></a>00226 <span class="comment"> * AlbersEqualArea::Forward without returning the convergence and</span>
-<a name="l00227"></a>00227 <span class="comment"> * scale.</span>
-<a name="l00228"></a>00228 <span class="comment"> **********************************************************************/</span>
-<a name="l00229"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a68a13780a73bcf9c8e50a3ce4eae3086">00229</a> <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00230"></a>00230 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00231"></a>00231 real gamma, k;
-<a name="l00232"></a>00232 Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234 <span class="comment"></span>
-<a name="l00235"></a>00235 <span class="comment"> /**</span>
-<a name="l00236"></a>00236 <span class="comment"> * AlbersEqualArea::Reverse without returning the convergence and</span>
-<a name="l00237"></a>00237 <span class="comment"> * scale.</span>
-<a name="l00238"></a>00238 <span class="comment"> **********************************************************************/</span>
-<a name="l00239"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a871246cba03145512f3f12ceb3e3e3a8">00239</a> <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00240"></a>00240 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00241"></a>00241 real gamma, k;
-<a name="l00242"></a>00242 Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00243"></a>00243 }
-<a name="l00244"></a>00244 <span class="comment"></span>
-<a name="l00245"></a>00245 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00246"></a>00246 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00247"></a>00247 <span class="comment"> ///@{</span>
-<a name="l00248"></a>00248 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00249"></a>00249 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00250"></a>00250 <span class="comment"> * the value used in the constructor.</span>
-<a name="l00251"></a>00251 <span class="comment"> **********************************************************************/</span>
-<a name="l00252"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">00252</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00253"></a>00253 <span class="comment"></span>
-<a name="l00254"></a>00254 <span class="comment"> /**</span>
-<a name="l00255"></a>00255 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value used in</span>
-<a name="l00256"></a>00256 <span class="comment"> * the constructor.</span>
-<a name="l00257"></a>00257 <span class="comment"> **********************************************************************/</span>
-<a name="l00258"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">00258</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00259"></a>00259 <span class="comment"></span>
-<a name="l00260"></a>00260 <span class="comment"> /**</span>
-<a name="l00261"></a>00261 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00262"></a>00262 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00263"></a>00263 <span class="comment"> **********************************************************************/</span>
-<a name="l00264"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">00264</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00265"></a>00265 <span class="comment"></span>
-<a name="l00266"></a>00266 <span class="comment"> /**</span>
-<a name="l00267"></a>00267 <span class="comment"> * @return latitude of the origin for the projection (degrees).</span>
-<a name="l00268"></a>00268 <span class="comment"> *</span>
-<a name="l00269"></a>00269 <span class="comment"> * This is the latitude of minimum azimuthal scale and equals the \e stdlat</span>
-<a name="l00270"></a>00270 <span class="comment"> * in the 1-parallel constructor and lies between \e stdlat1 and \e stdlat2</span>
-<a name="l00271"></a>00271 <span class="comment"> * in the 2-parallel constructors.</span>
-<a name="l00272"></a>00272 <span class="comment"> **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">00273</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">OriginLatitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
-<a name="l00274"></a>00274 <span class="comment"></span>
-<a name="l00275"></a>00275 <span class="comment"> /**</span>
-<a name="l00276"></a>00276 <span class="comment"> * @return central scale for the projection. This is the azimuthal scale</span>
-<a name="l00277"></a>00277 <span class="comment"> * on the latitude of origin.</span>
+<a name="l00057"></a>00057 <span class="comment"> *</span>
+<a name="l00058"></a>00058 <span class="comment"> * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility</span>
+<a name="l00059"></a>00059 <span class="comment"> * providing access to the functionality of LambertConformalConic and</span>
+<a name="l00060"></a>00060 <span class="comment"> * AlbersEqualArea.</span>
+<a name="l00061"></a>00061 <span class="comment"> **********************************************************************/</span>
+<a name="l00062"></a>00062 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> AlbersEqualArea {
+<a name="l00063"></a>00063 <span class="keyword">private</span>:
+<a name="l00064"></a>00064 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00065"></a>00065 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _fm, _e2, _e, _e2m, _qZ, _qx;
+<a name="l00066"></a>00066 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _sign, _lat0, _k0;
+<a name="l00067"></a>00067 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _n0, _m02, _nrho0, _k2, _txi0, _scxi0, _sxi0;
+<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
+<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> epsx_;
+<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> epsx2_;
+<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol0_;
+<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ahypover_;
+<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5; <span class="comment">// Newton iterations in Reverse</span>
+<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit0_ = 20; <span class="comment">// Newton iterations in Init</span>
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hyp(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp. [...]
+<a name="l00077"></a>00077 <span class="comment">// atanh( e * x)/ e if f > 0</span>
+<a name="l00078"></a>00078 <span class="comment">// atan (sqrt(-e2) * x)/sqrt(-e2) if f < 0</span>
+<a name="l00079"></a>00079 <span class="comment">// x if f = 0</span>
+<a name="l00080"></a>00080 <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> atanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00081"></a>00081 <span class="keywordflow">return</span> _f > 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * x)/_e :
+<a name="l00082"></a>00082 (_f < 0 ? std::atan(_e * x)/_e : x);
+<a name="l00083"></a>00083 }
+<a name="l00084"></a>00084 <span class="comment">// return atanh(sqrt(x))/sqrt(x) - 1, accurate for small x</span>
+<a name="l00085"></a>00085 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> atanhxm1(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>();
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="comment">// Divided differences</span>
+<a name="l00088"></a>00088 <span class="comment">// Definition: Df(x,y) = (f(x)-f(y))/(x-y)</span>
+<a name="l00089"></a>00089 <span class="comment">// See: W. M. Kahan and R. J. Fateman,</span>
+<a name="l00090"></a>00090 <span class="comment">// Symbolic computation of divided differences,</span>
+<a name="l00091"></a>00091 <span class="comment">// SIGSAM Bull. 33(3), 7-28 (1999)</span>
+<a name="l00092"></a>00092 <span class="comment">// http://doi.acm.org/10.1145/334714.334716</span>
+<a name="l00093"></a>00093 <span class="comment">// http://www.cs.berkeley.edu/~fateman/papers/divdiff.pdf</span>
+<a name="l00094"></a>00094 <span class="comment">//</span>
+<a name="l00095"></a>00095 <span class="comment">// General rules</span>
+<a name="l00096"></a>00096 <span class="comment">// h(x) = f(g(x)): Dh(x,y) = Df(g(x),g(y))*Dg(x,y)</span>
+<a name="l00097"></a>00097 <span class="comment">// h(x) = f(x)*g(x):</span>
+<a name="l00098"></a>00098 <span class="comment">// Dh(x,y) = Df(x,y)*(g(x)+g(y))/2 + Dg(x,y)*(f(x)+f(y))/2</span>
+<a name="l00099"></a>00099 <span class="comment">//</span>
+<a name="l00100"></a>00100 <span class="comment">// sn(x) = x/sqrt(1+x^2): Dsn(x,y) = (x+y)/((sn(x)+sn(y))*(1+x^2)*(1+y^2))</span>
+<a name="l00101"></a>00101 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dsn(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184 [...]
+<a name="l00102"></a>00102 <span class="comment">// sx = x/hyp(x)</span>
+<a name="l00103"></a>00103 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x * y;
+<a name="l00104"></a>00104 <span class="keywordflow">return</span> t > 0 ? (x + y) * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>( (sx * sy)/t ) / (sx + sy) :
+<a name="l00105"></a>00105 (x - y != 0 ? (sx - sy) / (x - y) : 1);
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 <span class="comment">// Datanhee(x,y) = atanhee((x-y)/(1-e^2*x*y))/(x-y)</span>
+<a name="l00108"></a>00108 <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Datanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00109"></a>00109 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x - y, d = 1 - _e2 * x * y;
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> t != 0 ? atanhee(t / d) / t : 1 / d;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="comment">// DDatanhee(x,y) = (Datanhee(1,y) - Datanhee(1,x))/(y-x)</span>
+<a name="l00113"></a>00113 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> DDatanhee(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00114"></a>00114 <span class="keywordtype">void</span> Init(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781 [...]
+<a name="l00115"></a>00115 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> txif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tphi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00116"></a>00116 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tphif(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> txi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00117"></a>00117 <span class="keyword">public</span>:
+<a name="l00118"></a>00118 <span class="comment"></span>
+<a name="l00119"></a>00119 <span class="comment"> /**</span>
+<a name="l00120"></a>00120 <span class="comment"> * Constructor with a single standard parallel.</span>
+<a name="l00121"></a>00121 <span class="comment"> *</span>
+<a name="l00122"></a>00122 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00123"></a>00123 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00124"></a>00124 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00125"></a>00125 <span class="comment"> * to 1/\e f.</span>
+<a name="l00126"></a>00126 <span class="comment"> * @param[in] stdlat standard parallel (degrees), the circle of tangency.</span>
+<a name="l00127"></a>00127 <span class="comment"> * @param[in] k0 azimuthal scale on the standard parallel.</span>
+<a name="l00128"></a>00128 <span class="comment"> *</span>
+<a name="l00129"></a>00129 <span class="comment"> * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat</span>
+<a name="l00130"></a>00130 <span class="comment"> * is not in the range [-90, 90].</span>
+<a name="l00131"></a>00131 <span class="comment"> **********************************************************************/</span>
+<a name="l00132"></a>00132 AlbersEqualArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0);
+<a name="l00133"></a>00133 <span class="comment"></span>
+<a name="l00134"></a>00134 <span class="comment"> /**</span>
+<a name="l00135"></a>00135 <span class="comment"> * Constructor with two standard parallels.</span>
+<a name="l00136"></a>00136 <span class="comment"> *</span>
+<a name="l00137"></a>00137 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00138"></a>00138 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00139"></a>00139 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00140"></a>00140 <span class="comment"> * to 1/\e f.</span>
+<a name="l00141"></a>00141 <span class="comment"> * @param[in] stdlat1 first standard parallel (degrees).</span>
+<a name="l00142"></a>00142 <span class="comment"> * @param[in] stdlat2 second standard parallel (degrees).</span>
+<a name="l00143"></a>00143 <span class="comment"> * @param[in] k1 azimuthal scale on the standard parallels.</span>
+<a name="l00144"></a>00144 <span class="comment"> *</span>
+<a name="l00145"></a>00145 <span class="comment"> * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat1</span>
+<a name="l00146"></a>00146 <span class="comment"> * or \e stdlat2 is not in the range [-90, 90]. In addition, an exception</span>
+<a name="l00147"></a>00147 <span class="comment"> * is thrown if \e stdlat1 and \e stdlat2 are opposite poles.</span>
+<a name="l00148"></a>00148 <span class="comment"> **********************************************************************/</span>
+<a name="l00149"></a>00149 AlbersEqualArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1);
+<a name="l00150"></a>00150 <span class="comment"></span>
+<a name="l00151"></a>00151 <span class="comment"> /**</span>
+<a name="l00152"></a>00152 <span class="comment"> * Constructor with two standard parallels specified by sines and cosines.</span>
+<a name="l00153"></a>00153 <span class="comment"> *</span>
+<a name="l00154"></a>00154 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00155"></a>00155 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00156"></a>00156 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00157"></a>00157 <span class="comment"> * to 1/\e f.</span>
+<a name="l00158"></a>00158 <span class="comment"> * @param[in] sinlat1 sine of first standard parallel.</span>
+<a name="l00159"></a>00159 <span class="comment"> * @param[in] coslat1 cosine of first standard parallel.</span>
+<a name="l00160"></a>00160 <span class="comment"> * @param[in] sinlat2 sine of second standard parallel.</span>
+<a name="l00161"></a>00161 <span class="comment"> * @param[in] coslat2 cosine of second standard parallel.</span>
+<a name="l00162"></a>00162 <span class="comment"> * @param[in] k1 azimuthal scale on the standard parallels.</span>
+<a name="l00163"></a>00163 <span class="comment"> *</span>
+<a name="l00164"></a>00164 <span class="comment"> * This allows parallels close to the poles to be specified accurately.</span>
+<a name="l00165"></a>00165 <span class="comment"> * This routine computes the latitude of origin and the azimuthal scale at</span>
+<a name="l00166"></a>00166 <span class="comment"> * this latitude. If \e dlat = abs(\e lat2 - \e lat1) <= 160<sup>o</sup>,</span>
+<a name="l00167"></a>00167 <span class="comment"> * then the error in the latitude of origin is less than</span>
+<a name="l00168"></a>00168 <span class="comment"> * 4.5e-14<sup>o</sup>.</span>
+<a name="l00169"></a>00169 <span class="comment"> **********************************************************************/</span>
+<a name="l00170"></a>00170 AlbersEqualArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f,
+<a name="l00171"></a>00171 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinlat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> coslat1,
+<a name="l00172"></a>00172 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinlat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> coslat2,
+<a name="l00173"></a>00173 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1);
+<a name="l00174"></a>00174 <span class="comment"></span>
+<a name="l00175"></a>00175 <span class="comment"> /**</span>
+<a name="l00176"></a>00176 <span class="comment"> * Set the azimuthal scale for the projection.</span>
+<a name="l00177"></a>00177 <span class="comment"> *</span>
+<a name="l00178"></a>00178 <span class="comment"> * @param[in] lat (degrees).</span>
+<a name="l00179"></a>00179 <span class="comment"> * @param[in] k azimuthal scale at latitude \e lat (default 1).</span>
+<a name="l00180"></a>00180 <span class="comment"> *</span>
+<a name="l00181"></a>00181 <span class="comment"> * This allows a "latitude of conformality" to be specified. An exception</span>
+<a name="l00182"></a>00182 <span class="comment"> * is thrown if \e k is not positive or if \e lat is not in the range (-90,</span>
+<a name="l00183"></a>00183 <span class="comment"> * 90).</span>
+<a name="l00184"></a>00184 <span class="comment"> **********************************************************************/</span>
+<a name="l00185"></a>00185 <span class="keywordtype">void</span> SetScale(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
+<a name="l00186"></a>00186 <span class="comment"></span>
+<a name="l00187"></a>00187 <span class="comment"> /**</span>
+<a name="l00188"></a>00188 <span class="comment"> * Forward projection, from geographic to Lambert conformal conic.</span>
+<a name="l00189"></a>00189 <span class="comment"> *</span>
+<a name="l00190"></a>00190 <span class="comment"> * @param[in] lon0 central meridian longitude (degrees).</span>
+<a name="l00191"></a>00191 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00192"></a>00192 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00193"></a>00193 <span class="comment"> * @param[out] x easting of point (meters).</span>
+<a name="l00194"></a>00194 <span class="comment"> * @param[out] y northing of point (meters).</span>
+<a name="l00195"></a>00195 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00196"></a>00196 <span class="comment"> * @param[out] k azimuthal scale of projection at point; the radial</span>
+<a name="l00197"></a>00197 <span class="comment"> * scale is the 1/\e k.</span>
+<a name="l00198"></a>00198 <span class="comment"> *</span>
+<a name="l00199"></a>00199 <span class="comment"> * The latitude origin is given by AlbersEqualArea::LatitudeOrigin(). No</span>
+<a name="l00200"></a>00200 <span class="comment"> * false easting or northing is added and \e lat should be in the range</span>
+<a name="l00201"></a>00201 <span class="comment"> * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360]. The</span>
+<a name="l00202"></a>00202 <span class="comment"> * values of \e x and \e y returned for points which project to infinity</span>
+<a name="l00203"></a>00203 <span class="comment"> * (i.e., one or both of the poles) will be large but finite.</span>
+<a name="l00204"></a>00204 <span class="comment"> **********************************************************************/</span>
+<a name="l00205"></a>00205 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00206"></a>00206 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00207"></a>00207 <span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment"> /**</span>
+<a name="l00209"></a>00209 <span class="comment"> * Reverse projection, from Lambert conformal conic to geographic.</span>
+<a name="l00210"></a>00210 <span class="comment"> *</span>
+<a name="l00211"></a>00211 <span class="comment"> * @param[in] lon0 central meridian longitude (degrees).</span>
+<a name="l00212"></a>00212 <span class="comment"> * @param[in] x easting of point (meters).</span>
+<a name="l00213"></a>00213 <span class="comment"> * @param[in] y northing of point (meters).</span>
+<a name="l00214"></a>00214 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00215"></a>00215 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00216"></a>00216 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00217"></a>00217 <span class="comment"> * @param[out] k azimuthal scale of projection at point; the radial</span>
+<a name="l00218"></a>00218 <span class="comment"> * scale is the 1/\e k.</span>
+<a name="l00219"></a>00219 <span class="comment"> *</span>
+<a name="l00220"></a>00220 <span class="comment"> * The latitude origin is given by AlbersEqualArea::LatitudeOrigin(). No</span>
+<a name="l00221"></a>00221 <span class="comment"> * false easting or northing is added. \e lon0 should be in the range</span>
+<a name="l00222"></a>00222 <span class="comment"> * [-180, 360]. The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00223"></a>00223 <span class="comment"> * The value of \e lat returned is in the range [-90,90]. If the input</span>
+<a name="l00224"></a>00224 <span class="comment"> * point is outside the legal projected space the nearest pole is returned.</span>
+<a name="l00225"></a>00225 <span class="comment"> **********************************************************************/</span>
+<a name="l00226"></a>00226 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00227"></a>00227 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00228"></a>00228 <span class="comment"></span>
+<a name="l00229"></a>00229 <span class="comment"> /**</span>
+<a name="l00230"></a>00230 <span class="comment"> * AlbersEqualArea::Forward without returning the convergence and</span>
+<a name="l00231"></a>00231 <span class="comment"> * scale.</span>
+<a name="l00232"></a>00232 <span class="comment"> **********************************************************************/</span>
+<a name="l00233"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a68a13780a73bcf9c8e50a3ce4eae3086">00233</a> <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
+<a name="l00234"></a>00234 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00235"></a>00235 real gamma, k;
+<a name="l00236"></a>00236 Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238 <span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment"> /**</span>
+<a name="l00240"></a>00240 <span class="comment"> * AlbersEqualArea::Reverse without returning the convergence and</span>
+<a name="l00241"></a>00241 <span class="comment"> * scale.</span>
+<a name="l00242"></a>00242 <span class="comment"> **********************************************************************/</span>
+<a name="l00243"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a871246cba03145512f3f12ceb3e3e3a8">00243</a> <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
+<a name="l00244"></a>00244 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00245"></a>00245 real gamma, k;
+<a name="l00246"></a>00246 Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248 <span class="comment"></span>
+<a name="l00249"></a>00249 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00250"></a>00250 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment"> ///@{</span>
+<a name="l00252"></a>00252 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00253"></a>00253 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00254"></a>00254 <span class="comment"> * the value used in the constructor.</span>
+<a name="l00255"></a>00255 <span class="comment"> **********************************************************************/</span>
+<a name="l00256"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">00256</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00257"></a>00257 <span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment"> /**</span>
+<a name="l00259"></a>00259 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value used in</span>
+<a name="l00260"></a>00260 <span class="comment"> * the constructor.</span>
+<a name="l00261"></a>00261 <span class="comment"> **********************************************************************/</span>
+<a name="l00262"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">00262</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00263"></a>00263 <span class="comment"></span>
+<a name="l00264"></a>00264 <span class="comment"> /// \cond SKIP</span>
+<a name="l00265"></a>00265 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00266"></a>00266 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00267"></a>00267 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00268"></a>00268 <span class="comment"> **********************************************************************/</span>
+<a name="l00269"></a>00269 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00270"></a>00270 <span class="comment"> /// \endcond</span>
+<a name="l00271"></a>00271 <span class="comment"></span><span class="comment"></span>
+<a name="l00272"></a>00272 <span class="comment"> /**</span>
+<a name="l00273"></a>00273 <span class="comment"> * @return latitude of the origin for the projection (degrees).</span>
+<a name="l00274"></a>00274 <span class="comment"> *</span>
+<a name="l00275"></a>00275 <span class="comment"> * This is the latitude of minimum azimuthal scale and equals the \e stdlat</span>
+<a name="l00276"></a>00276 <span class="comment"> * in the 1-parallel constructor and lies between \e stdlat1 and \e stdlat2</span>
+<a name="l00277"></a>00277 <span class="comment"> * in the 2-parallel constructors.</span>
<a name="l00278"></a>00278 <span class="comment"> **********************************************************************/</span>
-<a name="l00279"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">00279</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00280"></a>00280 <span class="comment"> ///@}</span>
-<a name="l00281"></a>00281 <span class="comment"></span><span class="comment"></span>
-<a name="l00282"></a>00282 <span class="comment"> /**</span>
-<a name="l00283"></a>00283 <span class="comment"> * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
-<a name="l00284"></a>00284 <span class="comment"> * stdlat = 0, and \e k0 = 1. This degenerates to the cylindrical equal</span>
-<a name="l00285"></a>00285 <span class="comment"> * area projection.</span>
-<a name="l00286"></a>00286 <span class="comment"> **********************************************************************/</span>
-<a name="l00287"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae643f7f82f5864f95da4cb14571ccf55">00287</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae643f7f82f5864f95da4cb14571ccf55">CylindricalEqualArea</a>;
-<a name="l00288"></a>00288 <span class="comment"></span>
-<a name="l00289"></a>00289 <span class="comment"> /**</span>
-<a name="l00290"></a>00290 <span class="comment"> * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
-<a name="l00291"></a>00291 <span class="comment"> * stdlat = 90<sup>o</sup>, and \e k0 = 1. This degenerates to the</span>
-<a name="l00292"></a>00292 <span class="comment"> * Lambert azimuthal equal area projection.</span>
-<a name="l00293"></a>00293 <span class="comment"> **********************************************************************/</span>
-<a name="l00294"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae65fcb68843b36d206751527ebd08f44">00294</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae65fcb68843b36d206751527ebd08f44">AzimuthalEqualAreaNorth</a>;
-<a name="l00295"></a>00295 <span class="comment"></span>
-<a name="l00296"></a>00296 <span class="comment"> /**</span>
-<a name="l00297"></a>00297 <span class="comment"> * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
-<a name="l00298"></a>00298 <span class="comment"> * stdlat = -90<sup>o</sup>, and \e k0 = 1. This degenerates to the</span>
-<a name="l00299"></a>00299 <span class="comment"> * Lambert azimuthal equal area projection.</span>
-<a name="l00300"></a>00300 <span class="comment"> **********************************************************************/</span>
-<a name="l00301"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aff0ff4e2f162107bd136310b44444cc1">00301</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aff0ff4e2f162107bd136310b44444cc1">AzimuthalEqualAreaSouth</a>;
-<a name="l00302"></a>00302 };
-<a name="l00303"></a>00303
-<a name="l00304"></a>00304 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00305"></a>00305
-<a name="l00306"></a>00306 <span class="preprocessor">#endif // GEOGRAPHICLIB_ALBERSEQUALAREA_HPP</span>
+<a name="l00279"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">00279</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">OriginLatitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
+<a name="l00280"></a>00280 <span class="comment"></span>
+<a name="l00281"></a>00281 <span class="comment"> /**</span>
+<a name="l00282"></a>00282 <span class="comment"> * @return central scale for the projection. This is the azimuthal scale</span>
+<a name="l00283"></a>00283 <span class="comment"> * on the latitude of origin.</span>
+<a name="l00284"></a>00284 <span class="comment"> **********************************************************************/</span>
+<a name="l00285"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">00285</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment" [...]
+<a name="l00286"></a>00286 <span class="comment"> ///@}</span>
+<a name="l00287"></a>00287 <span class="comment"></span><span class="comment"></span>
+<a name="l00288"></a>00288 <span class="comment"> /**</span>
+<a name="l00289"></a>00289 <span class="comment"> * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
+<a name="l00290"></a>00290 <span class="comment"> * stdlat = 0, and \e k0 = 1. This degenerates to the cylindrical equal</span>
+<a name="l00291"></a>00291 <span class="comment"> * area projection.</span>
+<a name="l00292"></a>00292 <span class="comment"> **********************************************************************/</span>
+<a name="l00293"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae643f7f82f5864f95da4cb14571ccf55">00293</a> <span class="keyword">static</span> <span class="keyword">const</span> AlbersEqualArea <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae643f7f82f5864f95da4cb14571ccf55">CylindricalEqualArea</a>;
+<a name="l00294"></a>00294 <span class="comment"></span>
+<a name="l00295"></a>00295 <span class="comment"> /**</span>
+<a name="l00296"></a>00296 <span class="comment"> * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
+<a name="l00297"></a>00297 <span class="comment"> * stdlat = 90<sup>o</sup>, and \e k0 = 1. This degenerates to the</span>
+<a name="l00298"></a>00298 <span class="comment"> * Lambert azimuthal equal area projection.</span>
+<a name="l00299"></a>00299 <span class="comment"> **********************************************************************/</span>
+<a name="l00300"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae65fcb68843b36d206751527ebd08f44">00300</a> <span class="keyword">static</span> <span class="keyword">const</span> AlbersEqualArea <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#ae65fcb68843b36d206751527ebd08f44">AzimuthalEqualAreaNorth</a>;
+<a name="l00301"></a>00301 <span class="comment"></span>
+<a name="l00302"></a>00302 <span class="comment"> /**</span>
+<a name="l00303"></a>00303 <span class="comment"> * A global instantiation of AlbersEqualArea with the WGS84 ellipsoid, \e</span>
+<a name="l00304"></a>00304 <span class="comment"> * stdlat = -90<sup>o</sup>, and \e k0 = 1. This degenerates to the</span>
+<a name="l00305"></a>00305 <span class="comment"> * Lambert azimuthal equal area projection.</span>
+<a name="l00306"></a>00306 <span class="comment"> **********************************************************************/</span>
+<a name="l00307"></a><a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aff0ff4e2f162107bd136310b44444cc1">00307</a> <span class="keyword">static</span> <span class="keyword">const</span> AlbersEqualArea <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html#aff0ff4e2f162107bd136310b44444cc1">AzimuthalEqualAreaSouth</a>;
+<a name="l00308"></a>00308 };
+<a name="l00309"></a>00309
+<a name="l00310"></a>00310 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00311"></a>00311
+<a name="l00312"></a>00312 <span class="preprocessor">#endif // GEOGRAPHICLIB_ALBERSEQUALAREA_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/AzimuthalEquidistant_8cpp.html b/doc/html/AzimuthalEquidistant_8cpp.html
index ae08a4d..94cb17b 100644
--- a/doc/html/AzimuthalEquidistant_8cpp.html
+++ b/doc/html/AzimuthalEquidistant_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: AzimuthalEquidistant.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8cpp.html#a66c8226c0b34ef5b0138d44829f5c394">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP</a> "$Id: e89d51d8fc0c5e7e6941a7efed9f3c55f9b4ab67 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8cpp.html#a66c8226c0b34ef5b0138d44829f5c394">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP</a> "$Id: 324fc318b35a411f024cfd5046ba58b8ef819df7 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="AzimuthalEquidistant_8cpp_source.html">AzimuthalEquidistant.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP "$Id: e89d51d8fc0c5e7e6941a7efed9f3c55f9b4ab67 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP "$Id: 324fc318b35a411f024cfd5046ba58b8ef819df7 $"</td>
</tr>
</table>
</div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/AzimuthalEquidistant_8cpp_source.html b/doc/html/AzimuthalEquidistant_8cpp_source.html
index 6e9c21b..5008193 100644
--- a/doc/html/AzimuthalEquidistant_8cpp_source.html
+++ b/doc/html/AzimuthalEquidistant_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: AzimuthalEquidistant.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
<a name="l00002"></a>00002 <span class="comment"> * \file AzimuthalEquidistant.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::AzimuthalEquidistant class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="AzimuthalEquidistant_8hpp.html" title="Header for GeographicLib::AzimuthalEquidistant class.">GeographicLib/AzimuthalEquidistant.hpp</a>></span>
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="AzimuthalEquidistant_8cpp.html#a66c8226c0b34ef5b0138d44829f5c394">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: e89d51d8fc0c5e7e6941a7efed9f3c55f9b4ab67 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 324fc318b35a411f024cfd5046ba58b8ef819df7 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="AzimuthalEquidistant_8cpp.html#a66c8226c0b34ef5b0138d44829f5c394">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="AzimuthalEquidistant_8hpp.html#a70d20e83eaef9177a9dbc4503fae17b7">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</a>)
@@ -68,7 +83,7 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">using namespace </span>std;
<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> AzimuthalEquidistant::eps_ =
+<a name="l00022"></a>00022 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> AzimuthalEquidistant::eps_ =
<a name="l00023"></a>00023 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) * sqrt(numeric_limits<real>::min());
<a name="l00024"></a>00024
<a name="l00025"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">00025</a> <span class="keywordtype">void</span> AzimuthalEquidistant::Forward(real lat0, real lon0, real lat, real lon,
@@ -76,7 +91,7 @@
<a name="l00027"></a>00027 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00028"></a>00028 real sig, s, azi0, m;
<a name="l00029"></a>00029 sig = _earth.Inverse(lat0, lon0, lat, lon, s, azi0, azi, m);
-<a name="l00030"></a>00030 azi0 *= Math::degree<real>();
+<a name="l00030"></a>00030 azi0 *= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00031"></a>00031 x = s * sin(azi0);
<a name="l00032"></a>00032 y = s * cos(azi0);
<a name="l00033"></a>00033 rk = !(sig <= eps_) ? m / s : 1;
@@ -86,7 +101,7 @@
<a name="l00037"></a>00037 real& lat, real& lon, real& azi, real& rk)
<a name="l00038"></a>00038 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00039"></a>00039 real
-<a name="l00040"></a>00040 azi0 = atan2(x, y) / Math::degree<real>(),
+<a name="l00040"></a>00040 azi0 = atan2(x, y) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00041"></a>00041 s = Math::hypot(x, y);
<a name="l00042"></a>00042 real sig, m;
<a name="l00043"></a>00043 sig = _earth.Direct(lat0, lon0, azi0, s, lat, lon, azi, m);
@@ -96,8 +111,13 @@
<a name="l00047"></a>00047 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/AzimuthalEquidistant_8hpp.html b/doc/html/AzimuthalEquidistant_8hpp.html
index 22445f9..f7aba82 100644
--- a/doc/html/AzimuthalEquidistant_8hpp.html
+++ b/doc/html/AzimuthalEquidistant_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: AzimuthalEquidistant.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8hpp.html#a70d20e83eaef9177a9dbc4503fae17b7">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</a> "$Id: 8883d9b1d45bf4371550426398b39ee5f821ce90 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8hpp.html#a70d20e83eaef9177a9dbc4503fae17b7">GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</a> "$Id: 95a1d6e7a8c4613be25ec32550231601202da1e5 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP "$Id: 8883d9b1d45bf4371550426398b39ee5f821ce90 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP "$Id: 95a1d6e7a8c4613be25ec32550231601202da1e5 $"</td>
</tr>
</table>
</div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/AzimuthalEquidistant_8hpp_source.html b/doc/html/AzimuthalEquidistant_8hpp_source.html
index c2b829e..16b6fc8 100644
--- a/doc/html/AzimuthalEquidistant_8hpp_source.html
+++ b/doc/html/AzimuthalEquidistant_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: AzimuthalEquidistant.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file AzimuthalEquidistant.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::AzimuthalEquidistant class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP)</span>
<a name="l00011"></a><a class="code" href="AzimuthalEquidistant_8hpp.html#a70d20e83eaef9177a9dbc4503fae17b7">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 8883d9b1d45bf4371550426398b39ee5f821ce90 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 95a1d6e7a8c4613be25ec32550231601202da1e5 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -84,118 +99,129 @@
<a name="l00034"></a>00034 <span class="comment"> *</span>
<a name="l00035"></a>00035 <span class="comment"> * Example of use:</span>
<a name="l00036"></a>00036 <span class="comment"> * \include example-AzimuthalEquidistant.cpp</span>
-<a name="l00037"></a>00037 <span class="comment"> **********************************************************************/</span>
-<a name="l00038"></a>00038
-<a name="l00039"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html">00039</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a> {
-<a name="l00040"></a>00040 <span class="keyword">private</span>:
-<a name="l00041"></a>00041 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00042"></a>00042 <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> _earth;
-<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
-<a name="l00044"></a>00044 <span class="keyword">public</span>:
-<a name="l00045"></a>00045 <span class="comment"></span>
-<a name="l00046"></a>00046 <span class="comment"> /**</span>
-<a name="l00047"></a>00047 <span class="comment"> * Constructor for AzimuthalEquidistant.</span>
-<a name="l00048"></a>00048 <span class="comment"> *</span>
-<a name="l00049"></a>00049 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00050"></a>00050 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
-<a name="l00051"></a>00051 <span class="comment"> **********************************************************************/</span>
-<a name="l00052"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a125571cdeed68d10192611cc12e221ce">00052</a> <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="clas [...]
-<a name="l00053"></a>00053 throw() : _earth(earth) {}
-<a name="l00054"></a>00054 <span class="comment"></span>
-<a name="l00055"></a>00055 <span class="comment"> /**</span>
-<a name="l00056"></a>00056 <span class="comment"> * Forward projection, from geographic to azimuthal equidistant.</span>
-<a name="l00057"></a>00057 <span class="comment"> *</span>
-<a name="l00058"></a>00058 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00059"></a>00059 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00060"></a>00060 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00061"></a>00061 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00062"></a>00062 <span class="comment"> * @param[out] x easting of point (meters).</span>
-<a name="l00063"></a>00063 <span class="comment"> * @param[out] y northing of point (meters).</span>
-<a name="l00064"></a>00064 <span class="comment"> * @param[out] azi azimuth of geodesic at point (degrees).</span>
-<a name="l00065"></a>00065 <span class="comment"> * @param[out] rk reciprocal of azimuthal scale at point.</span>
-<a name="l00066"></a>00066 <span class="comment"> *</span>
-<a name="l00067"></a>00067 <span class="comment"> * \e lat0 and \e lat should be in the range [-90, 90] and \e lon0 and \e</span>
-<a name="l00068"></a>00068 <span class="comment"> * lon should be in the range [-180, 360]. The scale of the projection is</span>
-<a name="l00069"></a>00069 <span class="comment"> * 1 in the "radial" direction, \e azi clockwise from true north, and is</span>
-<a name="l00070"></a>00070 <span class="comment"> * 1/\e rk in the direction perpendicular to this. A call to Forward</span>
-<a name="l00071"></a>00071 <span class="comment"> * followed by a call to Reverse will return the original (\e lat, \e lon)</span>
-<a name="l00072"></a>00072 <span class="comment"> * (to within roundoff).</span>
-<a name="l00073"></a>00073 <span class="comment"> **********************************************************************/</span>
-<a name="l00074"></a>00074 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
-<a name="l00075"></a>00075 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00076"></a>00076 <span class="comment"></span>
-<a name="l00077"></a>00077 <span class="comment"> /**</span>
-<a name="l00078"></a>00078 <span class="comment"> * Reverse projection, from azimuthal equidistant to geographic.</span>
-<a name="l00079"></a>00079 <span class="comment"> *</span>
-<a name="l00080"></a>00080 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00081"></a>00081 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00082"></a>00082 <span class="comment"> * @param[in] x easting of point (meters).</span>
-<a name="l00083"></a>00083 <span class="comment"> * @param[in] y northing of point (meters).</span>
-<a name="l00084"></a>00084 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00085"></a>00085 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00086"></a>00086 <span class="comment"> * @param[out] azi azimuth of geodesic at point (degrees).</span>
-<a name="l00087"></a>00087 <span class="comment"> * @param[out] rk reciprocal of azimuthal scale at point.</span>
-<a name="l00088"></a>00088 <span class="comment"> *</span>
-<a name="l00089"></a>00089 <span class="comment"> * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
-<a name="l00090"></a>00090 <span class="comment"> * range [-180, 360]. \e lat will be in the range [-90, 90] and \e lon</span>
-<a name="l00091"></a>00091 <span class="comment"> * will be in the range [-180, 180). The scale of the projection is 1 in</span>
-<a name="l00092"></a>00092 <span class="comment"> * the "radial" direction, \e azi clockwise from true north, and is 1/\e rk</span>
-<a name="l00093"></a>00093 <span class="comment"> * in the direction perpendicular to this. A call to Reverse followed by a</span>
-<a name="l00094"></a>00094 <span class="comment"> * call to Forward will return the original (\e x, \e y) (to roundoff) only</span>
-<a name="l00095"></a>00095 <span class="comment"> * if the geodesic to (\e x, \e y) is a shortest path.</span>
-<a name="l00096"></a>00096 <span class="comment"> **********************************************************************/</span>
-<a name="l00097"></a>00097 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
-<a name="l00098"></a>00098 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00099"></a>00099 <span class="comment"></span>
-<a name="l00100"></a>00100 <span class="comment"> /**</span>
-<a name="l00101"></a>00101 <span class="comment"> * AzimuthalEquidistant::Forward without returning the azimuth and scale.</span>
-<a name="l00102"></a>00102 <span class="comment"> **********************************************************************/</span>
-<a name="l00103"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a950431c3d269fb82e9410f332c401786">00103</a> <span class="keywordtype">void</span> Forward(real lat0, real lon0, real lat, real lon,
-<a name="l00104"></a>00104 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00105"></a>00105 real azi, rk;
-<a name="l00106"></a>00106 Forward(lat0, lon0, lat, lon, x, y, azi, rk);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 <span class="comment"></span>
-<a name="l00109"></a>00109 <span class="comment"> /**</span>
-<a name="l00110"></a>00110 <span class="comment"> * AzimuthalEquidistant::Reverse without returning the azimuth and scale.</span>
-<a name="l00111"></a>00111 <span class="comment"> **********************************************************************/</span>
-<a name="l00112"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a6b86b19f2e1c773e028e386a0f5e00e0">00112</a> <span class="keywordtype">void</span> Reverse(real lat0, real lon0, real x, real y,
-<a name="l00113"></a>00113 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00114"></a>00114 real azi, rk;
-<a name="l00115"></a>00115 Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="comment"></span>
-<a name="l00118"></a>00118 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00119"></a>00119 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00120"></a>00120 <span class="comment"> ///@{</span>
-<a name="l00121"></a>00121 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00122"></a>00122 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00123"></a>00123 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00124"></a>00124 <span class="comment"> **********************************************************************/</span>
-<a name="l00125"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">00125</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00126"></a>00126 <span class="comment"></span>
-<a name="l00127"></a>00127 <span class="comment"> /**</span>
-<a name="l00128"></a>00128 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00129"></a>00129 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
-<a name="l00130"></a>00130 <span class="comment"> **********************************************************************/</span>
-<a name="l00131"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">00131</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }
-<a name="l00132"></a>00132 <span class="comment"></span>
-<a name="l00133"></a>00133 <span class="comment"> /**</span>
-<a name="l00134"></a>00134 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00135"></a>00135 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00136"></a>00136 <span class="comment"> **********************************************************************/</span>
-<a name="l00137"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">00137</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00138"></a>00138 { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
-<a name="l00139"></a>00139 <span class="comment"> ///@}</span>
-<a name="l00140"></a>00140 <span class="comment"></span> };
-<a name="l00141"></a>00141
-<a name="l00142"></a>00142 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00143"></a>00143
-<a name="l00144"></a>00144 <span class="preprocessor">#endif // GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</span>
+<a name="l00037"></a>00037 <span class="comment"> *</span>
+<a name="l00038"></a>00038 <span class="comment"> * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility</span>
+<a name="l00039"></a>00039 <span class="comment"> * providing access to the functionality of AzimuthalEquidistant, Gnomonic,</span>
+<a name="l00040"></a>00040 <span class="comment"> * and CassiniSoldner.</span>
+<a name="l00041"></a>00041 <span class="comment"> **********************************************************************/</span>
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> AzimuthalEquidistant {
+<a name="l00044"></a>00044 <span class="keyword">private</span>:
+<a name="l00045"></a>00045 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00046"></a>00046 Geodesic _earth;
+<a name="l00047"></a>00047 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
+<a name="l00048"></a>00048 <span class="keyword">public</span>:
+<a name="l00049"></a>00049 <span class="comment"></span>
+<a name="l00050"></a>00050 <span class="comment"> /**</span>
+<a name="l00051"></a>00051 <span class="comment"> * Constructor for AzimuthalEquidistant.</span>
+<a name="l00052"></a>00052 <span class="comment"> *</span>
+<a name="l00053"></a>00053 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00054"></a>00054 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
+<a name="l00055"></a>00055 <span class="comment"> **********************************************************************/</span>
+<a name="l00056"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a125571cdeed68d10192611cc12e221ce">00056</a> <span class="keyword">explicit</span> AzimuthalEquidistant(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>)
+<a name="l00057"></a>00057 throw() : _earth(earth) {}
+<a name="l00058"></a>00058 <span class="comment"></span>
+<a name="l00059"></a>00059 <span class="comment"> /**</span>
+<a name="l00060"></a>00060 <span class="comment"> * Forward projection, from geographic to azimuthal equidistant.</span>
+<a name="l00061"></a>00061 <span class="comment"> *</span>
+<a name="l00062"></a>00062 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00063"></a>00063 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00064"></a>00064 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00065"></a>00065 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00066"></a>00066 <span class="comment"> * @param[out] x easting of point (meters).</span>
+<a name="l00067"></a>00067 <span class="comment"> * @param[out] y northing of point (meters).</span>
+<a name="l00068"></a>00068 <span class="comment"> * @param[out] azi azimuth of geodesic at point (degrees).</span>
+<a name="l00069"></a>00069 <span class="comment"> * @param[out] rk reciprocal of azimuthal scale at point.</span>
+<a name="l00070"></a>00070 <span class="comment"> *</span>
+<a name="l00071"></a>00071 <span class="comment"> * \e lat0 and \e lat should be in the range [-90, 90] and \e lon0 and \e</span>
+<a name="l00072"></a>00072 <span class="comment"> * lon should be in the range [-180, 360]. The scale of the projection is</span>
+<a name="l00073"></a>00073 <span class="comment"> * 1 in the "radial" direction, \e azi clockwise from true north, and is</span>
+<a name="l00074"></a>00074 <span class="comment"> * 1/\e rk in the direction perpendicular to this. A call to Forward</span>
+<a name="l00075"></a>00075 <span class="comment"> * followed by a call to Reverse will return the original (\e lat, \e lon)</span>
+<a name="l00076"></a>00076 <span class="comment"> * (to within roundoff).</span>
+<a name="l00077"></a>00077 <span class="comment"> **********************************************************************/</span>
+<a name="l00078"></a>00078 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00079"></a>00079 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00080"></a>00080 <span class="comment"></span>
+<a name="l00081"></a>00081 <span class="comment"> /**</span>
+<a name="l00082"></a>00082 <span class="comment"> * Reverse projection, from azimuthal equidistant to geographic.</span>
+<a name="l00083"></a>00083 <span class="comment"> *</span>
+<a name="l00084"></a>00084 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00085"></a>00085 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00086"></a>00086 <span class="comment"> * @param[in] x easting of point (meters).</span>
+<a name="l00087"></a>00087 <span class="comment"> * @param[in] y northing of point (meters).</span>
+<a name="l00088"></a>00088 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00089"></a>00089 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00090"></a>00090 <span class="comment"> * @param[out] azi azimuth of geodesic at point (degrees).</span>
+<a name="l00091"></a>00091 <span class="comment"> * @param[out] rk reciprocal of azimuthal scale at point.</span>
+<a name="l00092"></a>00092 <span class="comment"> *</span>
+<a name="l00093"></a>00093 <span class="comment"> * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
+<a name="l00094"></a>00094 <span class="comment"> * range [-180, 360]. \e lat will be in the range [-90, 90] and \e lon</span>
+<a name="l00095"></a>00095 <span class="comment"> * will be in the range [-180, 180). The scale of the projection is 1 in</span>
+<a name="l00096"></a>00096 <span class="comment"> * the "radial" direction, \e azi clockwise from true north, and is 1/\e rk</span>
+<a name="l00097"></a>00097 <span class="comment"> * in the direction perpendicular to this. A call to Reverse followed by a</span>
+<a name="l00098"></a>00098 <span class="comment"> * call to Forward will return the original (\e x, \e y) (to roundoff) only</span>
+<a name="l00099"></a>00099 <span class="comment"> * if the geodesic to (\e x, \e y) is a shortest path.</span>
+<a name="l00100"></a>00100 <span class="comment"> **********************************************************************/</span>
+<a name="l00101"></a>00101 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00102"></a>00102 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00103"></a>00103 <span class="comment"></span>
+<a name="l00104"></a>00104 <span class="comment"> /**</span>
+<a name="l00105"></a>00105 <span class="comment"> * AzimuthalEquidistant::Forward without returning the azimuth and scale.</span>
+<a name="l00106"></a>00106 <span class="comment"> **********************************************************************/</span>
+<a name="l00107"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a950431c3d269fb82e9410f332c401786">00107</a> <span class="keywordtype">void</span> Forward(real lat0, real lon0, real lat, real lon,
+<a name="l00108"></a>00108 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00109"></a>00109 real azi, rk;
+<a name="l00110"></a>00110 Forward(lat0, lon0, lat, lon, x, y, azi, rk);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="comment"></span>
+<a name="l00113"></a>00113 <span class="comment"> /**</span>
+<a name="l00114"></a>00114 <span class="comment"> * AzimuthalEquidistant::Reverse without returning the azimuth and scale.</span>
+<a name="l00115"></a>00115 <span class="comment"> **********************************************************************/</span>
+<a name="l00116"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a6b86b19f2e1c773e028e386a0f5e00e0">00116</a> <span class="keywordtype">void</span> Reverse(real lat0, real lon0, real x, real y,
+<a name="l00117"></a>00117 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00118"></a>00118 real azi, rk;
+<a name="l00119"></a>00119 Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 <span class="comment"></span>
+<a name="l00122"></a>00122 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00123"></a>00123 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00124"></a>00124 <span class="comment"> ///@{</span>
+<a name="l00125"></a>00125 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00126"></a>00126 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00127"></a>00127 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00128"></a>00128 <span class="comment"> **********************************************************************/</span>
+<a name="l00129"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">00129</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00130"></a>00130 <span class="comment"></span>
+<a name="l00131"></a>00131 <span class="comment"> /**</span>
+<a name="l00132"></a>00132 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00133"></a>00133 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
+<a name="l00134"></a>00134 <span class="comment"> **********************************************************************/</span>
+<a name="l00135"></a><a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">00135</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening() [...]
+<a name="l00136"></a>00136 <span class="comment"> ///@}</span>
+<a name="l00137"></a>00137 <span class="comment"></span><span class="comment"></span>
+<a name="l00138"></a>00138 <span class="comment"> /// \cond SKIP</span>
+<a name="l00139"></a>00139 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00140"></a>00140 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00141"></a>00141 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00142"></a>00142 <span class="comment"> **********************************************************************/</span>
+<a name="l00143"></a>00143 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00144"></a>00144 { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
+<a name="l00145"></a>00145 <span class="comment"> /// \endcond</span>
+<a name="l00146"></a>00146 <span class="comment"></span> };
+<a name="l00147"></a>00147
+<a name="l00148"></a>00148 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="preprocessor">#endif // GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CartConvert.1.html b/doc/html/CartConvert.1.html
index 6670d9f..a10e55c 100644
--- a/doc/html/CartConvert.1.html
+++ b/doc/html/CartConvert.1.html
@@ -44,8 +44,10 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>CartConvert</strong> [ <strong>-r</strong> ] [ <strong>-l</strong> <em>lat0</em> <em>lon0</em> <em>h0</em> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -87,6 +89,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
1/<em>f</em>.) By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
<em>f</em> = 1/298.257223563.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -112,8 +123,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/doc/html/CartConvert_8cpp.html b/doc/html/CartConvert_8cpp.html
index 98ae0d1..e258d5e 100644
--- a/doc/html/CartConvert_8cpp.html
+++ b/doc/html/CartConvert_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CartConvert.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for geodetic to cartesian coordinate conversions. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o CartConvert \ <a class="el" href="CartConvert_8cpp.html" title="Command line utility for geodetic to cartesian coordinate conversions.">CartConvert.cpp</a> \ ../src/DMS.cpp \ ../src/Geocentric.cpp \ ../src/LocalCartesian.cpp</p>
<p>See the <a href="CartConvert.1.html">man page</a> for usage information. </p>
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="CartConvert_8cpp_source.html#l00032">32</a> of file <a class="el" href="CartConvert_8cpp_source.html">CartConvert.cpp</a>.</p>
-<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="Geocentric_8hpp_source.html#l00131">GeographicLib::Geocentric::Forward()</a>, <a class="el" href="LocalCartesian_8hpp_source.html#l00101">GeographicLib::LocalCartesian::Forward()</a>, <a class="el" href="Geocentric_8hpp_source.html#l00192">GeographicLib::Geocentric::Reverse()</a>, and <a class="el" href="LocalCartesian_8hpp_source.html#l00153">GeographicLib::LocalCar [...]
+<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="LocalCartesian_8hpp_source.html#l00156">GeographicLib::LocalCartesian::Reverse()</a>, <a class="el" href="Geocentric_8hpp_source.html#l00195">GeographicLib::Geocentric::Reverse()</a>, <a class="el" href="LocalCartesian_8hpp_source.html#l00104">GeographicLib::LocalCartesian::Forward()</a>, and <a class="el" href="Geocentric_8hpp_source.html#l00134">GeographicLib::Geoc [...]
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CartConvert_8cpp_source.html b/doc/html/CartConvert_8cpp_source.html
index 016ec22..9669dd3 100644
--- a/doc/html/CartConvert_8cpp_source.html
+++ b/doc/html/CartConvert_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CartConvert.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file CartConvert.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for geodetic to cartesian coordinate conversions</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -81,159 +96,183 @@
<a name="l00032"></a><a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00032</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00033"></a>00033 <span class="keywordflow">try</span> {
<a name="l00034"></a>00034 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00035"></a>00035 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00035"></a>00035 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00036"></a>00036 <span class="keywordtype">bool</span> localcartesian = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
<a name="l00037"></a>00037 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00038"></a>00038 a = Constants::WGS84_a<real>(),
+<a name="l00038"></a>00038 a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
<a name="l00039"></a>00039 f = Constants::WGS84_f<real>();
<a name="l00040"></a>00040 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0 = 0, lon0 = 0, h0 = 0;
-<a name="l00041"></a>00041 std::string istring, ifile, ofile;
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00044"></a>00044 std::string arg(argv[m]);
-<a name="l00045"></a>00045 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00046"></a>00046 reverse = <span class="keyword">true</span>;
-<a name="l00047"></a>00047 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00048"></a>00048 localcartesian = <span class="keyword">true</span>;
-<a name="l00049"></a>00049 <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00050"></a>00050 <span class="keywordflow">try</span> {
-<a name="l00051"></a>00051 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
-<a name="l00052"></a>00052 lat0, lon0);
-<a name="l00053"></a>00053 h0 = Utility::num<real>(std::string(argv[m + 3]));
-<a name="l00054"></a>00054 }
-<a name="l00055"></a>00055 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00056"></a>00056 std::cerr << <span class="stringliteral">"Error decoding arguments of -l: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00057"></a>00057 <span class="keywordflow">return</span> 1;
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059 m += 3;
-<a name="l00060"></a>00060 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00062"></a>00062 <span class="keywordflow">try</span> {
-<a name="l00063"></a>00063 a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00064"></a>00064 f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00067"></a>00067 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00068"></a>00068 <span class="keywordflow">return</span> 1;
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070 m += 2;
-<a name="l00071"></a>00071 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00073"></a>00073 istring = argv[m];
-<a name="l00074"></a>00074 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00076"></a>00076 ifile = argv[m];
-<a name="l00077"></a>00077 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00078"></a>00078 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00079"></a>00079 ofile = argv[m];
-<a name="l00080"></a>00080 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00081"></a>00081 std::cout
-<a name="l00082"></a>00082 << argv[0]
-<a name="l00083"></a>00083 << <span class="stringliteral">": $Id: 990e4bdb8e7edc5c66bca635c284b696aa882956 $\n"</span>
-<a name="l00084"></a>00084 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> 0;
-<a name="l00086"></a>00086 } <span class="keywordflow">else</span>
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00091"></a>00091 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> 1;
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00095"></a>00095 std::ifstream infile;
-<a name="l00096"></a>00096 std::istringstream instring;
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00098"></a>00098 infile.open(ifile.c_str());
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00100"></a>00100 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> 1;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00104"></a>00104 std::string::size_type m = 0;
-<a name="l00105"></a>00105 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00106"></a>00106 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00107"></a>00107 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00108"></a>00108 <span class="keywordflow">break</span>;
-<a name="l00109"></a>00109 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111 instring.str(istring);
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00114"></a>00114 (!istring.empty() ? &instring : &std::cin);
-<a name="l00115"></a>00115
-<a name="l00116"></a>00116 std::ofstream outfile;
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00119"></a>00119 outfile.open(ofile.c_str());
-<a name="l00120"></a>00120 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00121"></a>00121 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00122"></a>00122 <span class="keywordflow">return</span> 1;
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00041"></a>00041 std::string istring, ifile, ofile, cdelim;
+<a name="l00042"></a>00042 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00045"></a>00045 std::string arg(argv[m]);
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00047"></a>00047 reverse = <span class="keyword">true</span>;
+<a name="l00048"></a>00048 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
+<a name="l00049"></a>00049 localcartesian = <span class="keyword">true</span>;
+<a name="l00050"></a>00050 <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00051"></a>00051 <span class="keywordflow">try</span> {
+<a name="l00052"></a>00052 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
+<a name="l00053"></a>00053 lat0, lon0);
+<a name="l00054"></a>00054 h0 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 3]));
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00057"></a>00057 std::cerr << <span class="stringliteral">"Error decoding arguments of -l: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00058"></a>00058 <span class="keywordflow">return</span> 1;
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060 m += 3;
+<a name="l00061"></a>00061 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00062"></a>00062 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00063"></a>00063 <span class="keywordflow">try</span> {
+<a name="l00064"></a>00064 a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00065"></a>00065 f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00068"></a>00068 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00069"></a>00069 <span class="keywordflow">return</span> 1;
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 m += 2;
+<a name="l00072"></a>00072 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00073"></a>00073 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00074"></a>00074 istring = argv[m];
+<a name="l00075"></a>00075 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00077"></a>00077 ifile = argv[m];
+<a name="l00078"></a>00078 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00079"></a>00079 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00080"></a>00080 ofile = argv[m];
+<a name="l00081"></a>00081 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00082"></a>00082 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00084"></a>00084 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00085"></a>00085 <span class="keywordflow">return</span> 1;
+<a name="l00086"></a>00086 }
+<a name="l00087"></a>00087 lsep = argv[m][0];
+<a name="l00088"></a>00088 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00089"></a>00089 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00090"></a>00090 cdelim = argv[m];
+<a name="l00091"></a>00091 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00092"></a>00092 std::cout
+<a name="l00093"></a>00093 << argv[0]
+<a name="l00094"></a>00094 << <span class="stringliteral">": $Id: b9e53a72ea7d026978678f3ab9d726a2d8485079 $\n"</span>
+<a name="l00095"></a>00095 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00096"></a>00096 <span class="keywordflow">return</span> 0;
+<a name="l00097"></a>00097 } <span class="keywordflow">else</span>
+<a name="l00098"></a>00098 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00102"></a>00102 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> 1;
+<a name="l00104"></a>00104 }
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00106"></a>00106 std::ifstream infile;
+<a name="l00107"></a>00107 std::istringstream instring;
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00109"></a>00109 infile.open(ifile.c_str());
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00111"></a>00111 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> 1;
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00115"></a>00115 std::string::size_type m = 0;
+<a name="l00116"></a>00116 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00117"></a>00117 m = istring.find(lsep, m);
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00119"></a>00119 <span class="keywordflow">break</span>;
+<a name="l00120"></a>00120 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122 instring.str(istring);
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00125"></a>00125 (!istring.empty() ? &instring : &std::cin);
<a name="l00126"></a>00126
-<a name="l00127"></a>00127 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> ec(a, f);
-<a name="l00128"></a>00128 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a> lc(lat0, lon0, h0, ec);
-<a name="l00129"></a>00129
-<a name="l00130"></a>00130 std::string s;
-<a name="l00131"></a>00131 <span class="keywordtype">int</span> retval = 0;
-<a name="l00132"></a>00132 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00133"></a>00133 <span class="keywordflow">try</span> {
-<a name="l00134"></a>00134 std::istringstream str(s);
-<a name="l00135"></a>00135 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, h, x, y, z;
-<a name="l00136"></a>00136 std::string stra, strb, strc;
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> (!(str >> stra >> strb >> strc))
-<a name="l00138"></a>00138 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00139"></a>00139 <span class="keywordflow">if</span> (reverse) {
-<a name="l00140"></a>00140 x = Utility::num<real>(stra);
-<a name="l00141"></a>00141 y = Utility::num<real>(strb);
-<a name="l00142"></a>00142 z = Utility::num<real>(strc);
-<a name="l00143"></a>00143 } <span class="keywordflow">else</span> {
-<a name="l00144"></a>00144 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00145"></a>00145 h = Utility::num<real>(strc);
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147 std::string strd;
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> (str >> strd)
-<a name="l00149"></a>00149 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strd);
-<a name="l00150"></a>00150 <span class="keywordflow">if</span> (reverse) {
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (localcartesian)
-<a name="l00152"></a>00152 lc.<a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">Reverse</a>(x, y, z, lat, lon, h);
-<a name="l00153"></a>00153 <span class="keywordflow">else</span>
-<a name="l00154"></a>00154 ec.<a class="code" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">Reverse</a>(x, y, z, lat, lon, h);
-<a name="l00155"></a>00155 *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
-<a name="l00156"></a>00156 << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
-<a name="l00157"></a>00157 << Utility::str<real>(h, 12) << <span class="stringliteral">"\n"</span>;
-<a name="l00158"></a>00158 } <span class="keywordflow">else</span> {
-<a name="l00159"></a>00159 <span class="keywordflow">if</span> (localcartesian)
-<a name="l00160"></a>00160 lc.<a class="code" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">Forward</a>(lat, lon, h, x, y, z);
-<a name="l00161"></a>00161 <span class="keywordflow">else</span>
-<a name="l00162"></a>00162 ec.<a class="code" href="classGeographicLib_1_1Geocentric.html#a65320594cad8c03d28beaa409f3d6fae">Forward</a>(lat, lon, h, x, y, z);
-<a name="l00163"></a>00163 *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
-<a name="l00164"></a>00164 << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
-<a name="l00165"></a>00165 << Utility::str<real>(z, 10) << <span class="stringliteral">"\n"</span>;
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00169"></a>00169 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00170"></a>00170 retval = 1;
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172 }
-<a name="l00173"></a>00173 <span class="keywordflow">return</span> retval;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00176"></a>00176 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> 1;
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179 <span class="keywordflow">catch</span> (...) {
-<a name="l00180"></a>00180 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00181"></a>00181 <span class="keywordflow">return</span> 1;
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183 }
+<a name="l00127"></a>00127 std::ofstream outfile;
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00130"></a>00130 outfile.open(ofile.c_str());
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00132"></a>00132 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> 1;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> ec(a, f);
+<a name="l00139"></a>00139 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a> lc(lat0, lon0, h0, ec);
+<a name="l00140"></a>00140
+<a name="l00141"></a>00141 std::string s;
+<a name="l00142"></a>00142 <span class="keywordtype">int</span> retval = 0;
+<a name="l00143"></a>00143 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00144"></a>00144 <span class="keywordflow">try</span> {
+<a name="l00145"></a>00145 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00146"></a>00146 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00147"></a>00147 std::string::size_type m = s.find(cdelim);
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00149"></a>00149 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00150"></a>00150 s = s.substr(0, m);
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 }
+<a name="l00153"></a>00153 std::istringstream str(s);
+<a name="l00154"></a>00154 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, h, x, y, z;
+<a name="l00155"></a>00155 std::string stra, strb, strc;
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (!(str >> stra >> strb >> strc))
+<a name="l00157"></a>00157 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (reverse) {
+<a name="l00159"></a>00159 x = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(stra);
+<a name="l00160"></a>00160 y = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strb);
+<a name="l00161"></a>00161 z = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strc);
+<a name="l00162"></a>00162 } <span class="keywordflow">else</span> {
+<a name="l00163"></a>00163 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00164"></a>00164 h = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strc);
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166 std::string strd;
+<a name="l00167"></a>00167 <span class="keywordflow">if</span> (str >> strd)
+<a name="l00168"></a>00168 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strd);
+<a name="l00169"></a>00169 <span class="keywordflow">if</span> (reverse) {
+<a name="l00170"></a>00170 <span class="keywordflow">if</span> (localcartesian)
+<a name="l00171"></a>00171 lc.<a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">Reverse</a>(x, y, z, lat, lon, h);
+<a name="l00172"></a>00172 <span class="keywordflow">else</span>
+<a name="l00173"></a>00173 ec.<a class="code" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">Reverse</a>(x, y, z, lat, lon, h);
+<a name="l00174"></a>00174 *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
+<a name="l00175"></a>00175 << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
+<a name="l00176"></a>00176 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(h, 12) << eol;
+<a name="l00177"></a>00177 } <span class="keywordflow">else</span> {
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (localcartesian)
+<a name="l00179"></a>00179 lc.<a class="code" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">Forward</a>(lat, lon, h, x, y, z);
+<a name="l00180"></a>00180 <span class="keywordflow">else</span>
+<a name="l00181"></a>00181 ec.<a class="code" href="classGeographicLib_1_1Geocentric.html#a65320594cad8c03d28beaa409f3d6fae">Forward</a>(lat, lon, h, x, y, z);
+<a name="l00182"></a>00182 *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
+<a name="l00183"></a>00183 << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
+<a name="l00184"></a>00184 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(z, 10) << eol;
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00188"></a>00188 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00189"></a>00189 retval = 1;
+<a name="l00190"></a>00190 }
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192 <span class="keywordflow">return</span> retval;
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00195"></a>00195 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00196"></a>00196 <span class="keywordflow">return</span> 1;
+<a name="l00197"></a>00197 }
+<a name="l00198"></a>00198 <span class="keywordflow">catch</span> (...) {
+<a name="l00199"></a>00199 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00200"></a>00200 <span class="keywordflow">return</span> 1;
+<a name="l00201"></a>00201 }
+<a name="l00202"></a>00202 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CassiniSoldner_8cpp.html b/doc/html/CassiniSoldner_8cpp.html
index 4896ff9..a9e0538 100644
--- a/doc/html/CassiniSoldner_8cpp.html
+++ b/doc/html/CassiniSoldner_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CassiniSoldner.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8cpp.html#a91edbe2e2eaf2776b80aecf2107909d4">GEOGRAPHICLIB_CASSINISOLDNER_CPP</a> "$Id: f267ed9f1d5af5f602a8997a7705efda7fc34395 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8cpp.html#a91edbe2e2eaf2776b80aecf2107909d4">GEOGRAPHICLIB_CASSINISOLDNER_CPP</a> "$Id: 2823df38f3e31fd8b882e2f55ad72d6419b03246 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="CassiniSoldner_8cpp_source.html">CassiniSoldner.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_CASSINISOLDNER_CPP "$Id: f267ed9f1d5af5f602a8997a7705efda7fc34395 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_CASSINISOLDNER_CPP "$Id: 2823df38f3e31fd8b882e2f55ad72d6419b03246 $"</td>
</tr>
</table>
</div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CassiniSoldner_8cpp_source.html b/doc/html/CassiniSoldner_8cpp_source.html
index fa78125..21b1ab8 100644
--- a/doc/html/CassiniSoldner_8cpp_source.html
+++ b/doc/html/CassiniSoldner_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CassiniSoldner.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
<a name="l00002"></a>00002 <span class="comment"> * \file CassiniSoldner.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::CassiniSoldner class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="CassiniSoldner_8hpp.html" title="Header for GeographicLib::CassiniSoldner class.">GeographicLib/CassiniSoldner.hpp</a>></span>
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="CassiniSoldner_8cpp.html#a91edbe2e2eaf2776b80aecf2107909d4">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_CASSINISOLDNER_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: f267ed9f1d5af5f602a8997a7705efda7fc34395 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 2823df38f3e31fd8b882e2f55ad72d6419b03246 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="CassiniSoldner_8cpp.html#a91edbe2e2eaf2776b80aecf2107909d4">GEOGRAPHICLIB_CASSINISOLDNER_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="CassiniSoldner_8hpp.html#ab674f10f5e4e3b25dc68c65fa408e315">GEOGRAPHICLIB_CASSINISOLDNER_HPP</a>)
@@ -68,9 +83,9 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">using namespace </span>std;
<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> CassiniSoldner::eps1_ =
+<a name="l00022"></a>00022 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> CassiniSoldner::eps1_ =
<a name="l00023"></a>00023 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) * sqrt(numeric_limits<real>::epsilon());
-<a name="l00024"></a>00024 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> CassiniSoldner::tiny_ = sqrt(numeric_limits<real>::min());
+<a name="l00024"></a>00024 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> CassiniSoldner::tiny_ = sqrt(numeric_limits<real>::min());
<a name="l00025"></a>00025
<a name="l00026"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#af9bdc7088bca547dcc191691b2737759">00026</a> <span class="keywordtype">void</span> CassiniSoldner::Reset(real lat0, real lon0) <span class="keywordflow">throw</span>() {
<a name="l00027"></a>00027 _meridian = _earth.Line(lat0, lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
@@ -78,7 +93,7 @@
<a name="l00029"></a>00029 Geodesic::DISTANCE | Geodesic::DISTANCE_IN |
<a name="l00030"></a>00030 Geodesic::AZIMUTH);
<a name="l00031"></a>00031 real
-<a name="l00032"></a>00032 phi = LatitudeOrigin() * Math::degree<real>(),
+<a name="l00032"></a>00032 phi = LatitudeOrigin() * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00033"></a>00033 f = _earth.Flattening();
<a name="l00034"></a>00034 _sbet0 = (1 - f) * sin(phi);
<a name="l00035"></a>00035 _cbet0 = abs(LatitudeOrigin()) == 90 ? 0 : cos(phi);
@@ -121,13 +136,13 @@
<a name="l00072"></a>00072 t, t, t, t, t, t, rk, t);
<a name="l00073"></a>00073
<a name="l00074"></a>00074 real
-<a name="l00075"></a>00075 alp0 = perp.EquatorialAzimuth() * Math::degree<real>(),
+<a name="l00075"></a>00075 alp0 = perp.EquatorialAzimuth() * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00076"></a>00076 calp0 = cos(alp0), salp0 = sin(alp0),
<a name="l00077"></a>00077 sbet1 = lat >=0 ? calp0 : -calp0,
<a name="l00078"></a>00078 cbet1 = abs(dlon) <= 90 ? abs(salp0) : -abs(salp0),
<a name="l00079"></a>00079 sbet01 = sbet1 * _cbet0 - cbet1 * _sbet0,
<a name="l00080"></a>00080 cbet01 = cbet1 * _cbet0 + sbet1 * _sbet0,
-<a name="l00081"></a>00081 sig01 = atan2(sbet01, cbet01) / Math::degree<real>();
+<a name="l00081"></a>00081 sig01 = atan2(sbet01, cbet01) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00082"></a>00082 _meridian.GenPosition(<span class="keyword">true</span>, sig01,
<a name="l00083"></a>00083 Geodesic::DISTANCE,
<a name="l00084"></a>00084 t, t, t, y, t, t, t, t);
@@ -146,8 +161,13 @@
<a name="l00097"></a>00097 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CassiniSoldner_8hpp.html b/doc/html/CassiniSoldner_8hpp.html
index 7d89e81..4abd88a 100644
--- a/doc/html/CassiniSoldner_8hpp.html
+++ b/doc/html/CassiniSoldner_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CassiniSoldner.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,17 +83,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8hpp.html#ab674f10f5e4e3b25dc68c65fa408e315">GEOGRAPHICLIB_CASSINISOLDNER_HPP</a> "$Id: 5e164482237fc52a63dda3d7e4f287f6313fc79a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8hpp.html#ab674f10f5e4e3b25dc68c65fa408e315">GEOGRAPHICLIB_CASSINISOLDNER_HPP</a> "$Id: d794ea8a1e64fd9cbb8dcee34755b6dc4fee623a $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_CASSINISOLDNER_HPP "$Id: 5e164482237fc52a63dda3d7e4f287f6313fc79a $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_CASSINISOLDNER_HPP "$Id: d794ea8a1e64fd9cbb8dcee34755b6dc4fee623a $"</td>
</tr>
</table>
</div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CassiniSoldner_8hpp_source.html b/doc/html/CassiniSoldner_8hpp_source.html
index ed3ee67..09ef314 100644
--- a/doc/html/CassiniSoldner_8hpp_source.html
+++ b/doc/html/CassiniSoldner_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CassiniSoldner.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file CassiniSoldner.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::CassiniSoldner class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_CASSINISOLDNER_HPP)</span>
<a name="l00011"></a><a class="code" href="CassiniSoldner_8hpp.html#ab674f10f5e4e3b25dc68c65fa408e315">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_CASSINISOLDNER_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 5e164482237fc52a63dda3d7e4f287f6313fc79a $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: d794ea8a1e64fd9cbb8dcee34755b6dc4fee623a $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="GeodesicLine_8hpp.html" title="Header for GeographicLib::GeodesicLine class.">GeographicLib/GeodesicLine.hpp</a>></span>
@@ -111,184 +126,195 @@
<a name="l00061"></a>00061 <span class="comment"> *</span>
<a name="l00062"></a>00062 <span class="comment"> * Example of use:</span>
<a name="l00063"></a>00063 <span class="comment"> * \include example-CassiniSoldner.cpp</span>
-<a name="l00064"></a>00064 <span class="comment"> **********************************************************************/</span>
-<a name="l00065"></a>00065
-<a name="l00066"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html">00066</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a> {
-<a name="l00067"></a>00067 <span class="keyword">private</span>:
-<a name="l00068"></a>00068 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00069"></a>00069 <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> _earth;
-<a name="l00070"></a>00070 <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> _meridian;
-<a name="l00071"></a>00071 real _sbet0, _cbet0;
-<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keyword">const</span> real eps1_;
-<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keyword">const</span> real tiny_;
-<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxit_ = 10;
-<a name="l00075"></a>00075
-<a name="l00076"></a>00076 <span class="comment">// The following private helper functions are copied from Geodesic.</span>
-<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keyword">inline</span> real AngNormalize(real x) <span class="keywordflow">throw</span>() {
-<a name="l00078"></a>00078 <span class="comment">// Place angle in [-180, 180). Assumes x is in [-540, 540).</span>
-<a name="l00079"></a>00079 <span class="keywordflow">return</span> x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
-<a name="l00080"></a>00080 }
-<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keyword">inline</span> real AngRound(real x) <span class="keywordflow">throw</span>() {
-<a name="l00082"></a>00082 <span class="comment">// The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57</span>
-<a name="l00083"></a>00083 <span class="comment">// for reals = 0.7 pm on the earth if x is an angle in degrees. (This</span>
-<a name="l00084"></a>00084 <span class="comment">// is about 1000 times more resolution than we get with angles around 90</span>
-<a name="l00085"></a>00085 <span class="comment">// degrees.) We use this to avoid having to deal with near singular</span>
-<a name="l00086"></a>00086 <span class="comment">// cases when x is non-zero but tiny (e.g., 1.0e-200).</span>
-<a name="l00087"></a>00087 <span class="keyword">const</span> real z = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0625); <span class="comment">// 1/16</span>
-<a name="l00088"></a>00088 <span class="keyword">volatile</span> real y = std::abs(x);
-<a name="l00089"></a>00089 <span class="comment">// The compiler mustn't "simplify" z - (z - y) to y</span>
-<a name="l00090"></a>00090 y = y < z ? z - (z - y) : y;
-<a name="l00091"></a>00091 <span class="keywordflow">return</span> x < 0 ? -y : y;
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SinCosNorm(real& sinx, real& cosx) <span class="keywordflow">throw</span>() {
-<a name="l00094"></a>00094 real r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sinx, cosx);
-<a name="l00095"></a>00095 sinx /= r;
-<a name="l00096"></a>00096 cosx /= r;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 <span class="keyword">public</span>:
-<a name="l00099"></a>00099 <span class="comment"></span>
-<a name="l00100"></a>00100 <span class="comment"> /**</span>
-<a name="l00101"></a>00101 <span class="comment"> * Constructor for CassiniSoldner.</span>
-<a name="l00102"></a>00102 <span class="comment"> *</span>
-<a name="l00103"></a>00103 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00104"></a>00104 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
-<a name="l00105"></a>00105 <span class="comment"> *</span>
-<a name="l00106"></a>00106 <span class="comment"> * This constructor makes an "uninitialized" object. Call Reset to set the</span>
-<a name="l00107"></a>00107 <span class="comment"> * central latitude and longitude, prior to calling Forward and Reverse.</span>
-<a name="l00108"></a>00108 <span class="comment"> **********************************************************************/</span>
-<a name="l00109"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a948f9d934615c4120eb23740635200bc">00109</a> <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodes [...]
-<a name="l00110"></a>00110 : _earth(earth) {}
-<a name="l00111"></a>00111 <span class="comment"></span>
-<a name="l00112"></a>00112 <span class="comment"> /**</span>
-<a name="l00113"></a>00113 <span class="comment"> * Constructor for CassiniSoldner specifying a center point.</span>
-<a name="l00114"></a>00114 <span class="comment"> *</span>
-<a name="l00115"></a>00115 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00116"></a>00116 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00117"></a>00117 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00118"></a>00118 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
-<a name="l00119"></a>00119 <span class="comment"> *</span>
-<a name="l00120"></a>00120 <span class="comment"> * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
-<a name="l00121"></a>00121 <span class="comment"> * range [-180, 360].</span>
-<a name="l00122"></a>00122 <span class="comment"> **********************************************************************/</span>
-<a name="l00123"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a1b19cedb287ec9bbe59ec18a0ad2a5e4">00123</a> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>(real lat0, real lon0,
-<a name="l00124"></a>00124 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>) throw()
-<a name="l00125"></a>00125 : _earth(earth) {
-<a name="l00126"></a>00126 Reset(lat0, lon0);
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128 <span class="comment"></span>
-<a name="l00129"></a>00129 <span class="comment"> /**</span>
-<a name="l00130"></a>00130 <span class="comment"> * Set the central point of the projection</span>
-<a name="l00131"></a>00131 <span class="comment"> *</span>
-<a name="l00132"></a>00132 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00133"></a>00133 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00134"></a>00134 <span class="comment"> *</span>
-<a name="l00135"></a>00135 <span class="comment"> * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
-<a name="l00136"></a>00136 <span class="comment"> * range [-180, 360].</span>
-<a name="l00137"></a>00137 <span class="comment"> **********************************************************************/</span>
-<a name="l00138"></a>00138 <span class="keywordtype">void</span> Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0) <span class="keywordflow">throw</span>();
-<a name="l00139"></a>00139 <span class="comment"></span>
-<a name="l00140"></a>00140 <span class="comment"> /**</span>
-<a name="l00141"></a>00141 <span class="comment"> * Forward projection, from geographic to Cassini-Soldner.</span>
-<a name="l00142"></a>00142 <span class="comment"> *</span>
-<a name="l00143"></a>00143 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00144"></a>00144 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00145"></a>00145 <span class="comment"> * @param[out] x easting of point (meters).</span>
-<a name="l00146"></a>00146 <span class="comment"> * @param[out] y northing of point (meters).</span>
-<a name="l00147"></a>00147 <span class="comment"> * @param[out] azi azimuth of easting direction at point (degrees).</span>
-<a name="l00148"></a>00148 <span class="comment"> * @param[out] rk reciprocal of azimuthal northing scale at point.</span>
-<a name="l00149"></a>00149 <span class="comment"> *</span>
-<a name="l00150"></a>00150 <span class="comment"> * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
-<a name="l00151"></a>00151 <span class="comment"> * range [-180, 360]. A call to Forward followed by a call to Reverse will</span>
-<a name="l00152"></a>00152 <span class="comment"> * return the original (\e lat, \e lon) (to within roundoff). The routine</span>
-<a name="l00153"></a>00153 <span class="comment"> * does nothing if the origin has not been set.</span>
-<a name="l00154"></a>00154 <span class="comment"> **********************************************************************/</span>
-<a name="l00155"></a>00155 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
-<a name="l00156"></a>00156 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00157"></a>00157 <span class="comment"></span>
-<a name="l00158"></a>00158 <span class="comment"> /**</span>
-<a name="l00159"></a>00159 <span class="comment"> * Reverse projection, from Cassini-Soldner to geographic.</span>
-<a name="l00160"></a>00160 <span class="comment"> *</span>
-<a name="l00161"></a>00161 <span class="comment"> * @param[in] x easting of point (meters).</span>
-<a name="l00162"></a>00162 <span class="comment"> * @param[in] y northing of point (meters).</span>
-<a name="l00163"></a>00163 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00164"></a>00164 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00165"></a>00165 <span class="comment"> * @param[out] azi azimuth of easting direction at point (degrees).</span>
-<a name="l00166"></a>00166 <span class="comment"> * @param[out] rk reciprocal of azimuthal northing scale at point.</span>
-<a name="l00167"></a>00167 <span class="comment"> *</span>
-<a name="l00168"></a>00168 <span class="comment"> * A call to Reverse followed by a call to Forward will return the original</span>
-<a name="l00169"></a>00169 <span class="comment"> * (\e x, \e y) (to within roundoff), provided that \e x and \e y are</span>
-<a name="l00170"></a>00170 <span class="comment"> * sufficiently small not to "wrap around" the earth. The routine does</span>
-<a name="l00171"></a>00171 <span class="comment"> * nothing if the origin has not been set.</span>
-<a name="l00172"></a>00172 <span class="comment"> **********************************************************************/</span>
-<a name="l00173"></a>00173 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
-<a name="l00174"></a>00174 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00175"></a>00175 <span class="comment"></span>
-<a name="l00176"></a>00176 <span class="comment"> /**</span>
-<a name="l00177"></a>00177 <span class="comment"> * CassiniSoldner::Forward without returning the azimuth and scale.</span>
-<a name="l00178"></a>00178 <span class="comment"> **********************************************************************/</span>
-<a name="l00179"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a87bf8d3b416bbfd8b7a2c5269245e693">00179</a> <span class="keywordtype">void</span> Forward(real lat, real lon,
-<a name="l00180"></a>00180 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00181"></a>00181 real azi, rk;
-<a name="l00182"></a>00182 Forward(lat, lon, x, y, azi, rk);
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <span class="comment"></span>
-<a name="l00185"></a>00185 <span class="comment"> /**</span>
-<a name="l00186"></a>00186 <span class="comment"> * CassiniSoldner::Reverse without returning the azimuth and scale.</span>
-<a name="l00187"></a>00187 <span class="comment"> **********************************************************************/</span>
-<a name="l00188"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a27a675e995d2c1fdd0ab4c0ab397e065">00188</a> <span class="keywordtype">void</span> Reverse(real x, real y,
-<a name="l00189"></a>00189 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00190"></a>00190 real azi, rk;
-<a name="l00191"></a>00191 Reverse(x, y, lat, lon, azi, rk);
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 <span class="comment"></span>
-<a name="l00194"></a>00194 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00195"></a>00195 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00196"></a>00196 <span class="comment"> ///@{</span>
-<a name="l00197"></a>00197 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00198"></a>00198 <span class="comment"> * @return true if the object has been initialized.</span>
-<a name="l00199"></a>00199 <span class="comment"> **********************************************************************/</span>
-<a name="l00200"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">00200</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _meridian.Init(); }
-<a name="l00201"></a>00201 <span class="comment"></span>
-<a name="l00202"></a>00202 <span class="comment"> /**</span>
-<a name="l00203"></a>00203 <span class="comment"> * @return \e lat0 the latitude of origin (degrees).</span>
-<a name="l00204"></a>00204 <span class="comment"> **********************************************************************/</span>
-<a name="l00205"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a2aa51120af199603f57d54b8c9a0bdde">00205</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> LatitudeOrigin() <span class="keyword">const</span> throw()
-<a name="l00206"></a>00206 { <span class="keywordflow">return</span> _meridian.Latitude(); }
-<a name="l00207"></a>00207 <span class="comment"></span>
-<a name="l00208"></a>00208 <span class="comment"> /**</span>
-<a name="l00209"></a>00209 <span class="comment"> * @return \e lon0 the longitude of origin (degrees).</span>
-<a name="l00210"></a>00210 <span class="comment"> **********************************************************************/</span>
-<a name="l00211"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">00211</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> LongitudeOrigin() <span class="keyword">const</span> throw()
-<a name="l00212"></a>00212 { <span class="keywordflow">return</span> _meridian.Longitude(); }
-<a name="l00213"></a>00213 <span class="comment"></span>
-<a name="l00214"></a>00214 <span class="comment"> /**</span>
-<a name="l00215"></a>00215 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00216"></a>00216 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00217"></a>00217 <span class="comment"> **********************************************************************/</span>
-<a name="l00218"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">00218</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00219"></a>00219 <span class="comment"></span>
-<a name="l00220"></a>00220 <span class="comment"> /**</span>
-<a name="l00221"></a>00221 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00222"></a>00222 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
-<a name="l00223"></a>00223 <span class="comment"> **********************************************************************/</span>
-<a name="l00224"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">00224</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }
-<a name="l00225"></a>00225 <span class="comment"></span>
-<a name="l00226"></a>00226 <span class="comment"> /**</span>
-<a name="l00227"></a>00227 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00228"></a>00228 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00229"></a>00229 <span class="comment"> **********************************************************************/</span>
-<a name="l00230"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">00230</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00231"></a>00231 { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
-<a name="l00232"></a>00232 <span class="comment"> ///@}</span>
-<a name="l00233"></a>00233 <span class="comment"></span> };
-<a name="l00234"></a>00234
-<a name="l00235"></a>00235 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00236"></a>00236
-<a name="l00237"></a>00237 <span class="preprocessor">#endif // GEOGRAPHICLIB_CASSINISOLDNER_HPP</span>
+<a name="l00064"></a>00064 <span class="comment"> *</span>
+<a name="l00065"></a>00065 <span class="comment"> * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility</span>
+<a name="l00066"></a>00066 <span class="comment"> * providing access to the functionality of AzimuthalEquidistant, Gnomonic,</span>
+<a name="l00067"></a>00067 <span class="comment"> * and CassiniSoldner.</span>
+<a name="l00068"></a>00068 <span class="comment"> **********************************************************************/</span>
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> CassiniSoldner {
+<a name="l00071"></a>00071 <span class="keyword">private</span>:
+<a name="l00072"></a>00072 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00073"></a>00073 Geodesic _earth;
+<a name="l00074"></a>00074 GeodesicLine _meridian;
+<a name="l00075"></a>00075 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _sbet0, _cbet0;
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps1_;
+<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tiny_;
+<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxit_ = 10;
+<a name="l00079"></a>00079
+<a name="l00080"></a>00080 <span class="comment">// The following private helper functions are copied from Geodesic.</span>
+<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngNormalize(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00082"></a>00082 <span class="comment">// Place angle in [-180, 180). Assumes x is in [-540, 540).</span>
+<a name="l00083"></a>00083 <span class="keywordflow">return</span> x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngRound(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00086"></a>00086 <span class="comment">// The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57</span>
+<a name="l00087"></a>00087 <span class="comment">// for reals = 0.7 pm on the earth if x is an angle in degrees. (This</span>
+<a name="l00088"></a>00088 <span class="comment">// is about 1000 times more resolution than we get with angles around 90</span>
+<a name="l00089"></a>00089 <span class="comment">// degrees.) We use this to avoid having to deal with near singular</span>
+<a name="l00090"></a>00090 <span class="comment">// cases when x is non-zero but tiny (e.g., 1.0e-200).</span>
+<a name="l00091"></a>00091 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0625); <span class="comment">// 1/16</span>
+<a name="l00092"></a>00092 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y = std::abs(x);
+<a name="l00093"></a>00093 <span class="comment">// The compiler mustn't "simplify" z - (z - y) to y</span>
+<a name="l00094"></a>00094 y = y < z ? z - (z - y) : y;
+<a name="l00095"></a>00095 <span class="keywordflow">return</span> x < 0 ? -y : y;
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SinCosNorm(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& cosx) <span class="keywordflow">throw</span>() {
+<a name="l00098"></a>00098 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sinx, cosx);
+<a name="l00099"></a>00099 sinx /= r;
+<a name="l00100"></a>00100 cosx /= r;
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 <span class="keyword">public</span>:
+<a name="l00103"></a>00103 <span class="comment"></span>
+<a name="l00104"></a>00104 <span class="comment"> /**</span>
+<a name="l00105"></a>00105 <span class="comment"> * Constructor for CassiniSoldner.</span>
+<a name="l00106"></a>00106 <span class="comment"> *</span>
+<a name="l00107"></a>00107 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00108"></a>00108 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
+<a name="l00109"></a>00109 <span class="comment"> *</span>
+<a name="l00110"></a>00110 <span class="comment"> * This constructor makes an "uninitialized" object. Call Reset to set the</span>
+<a name="l00111"></a>00111 <span class="comment"> * central latitude and longitude, prior to calling Forward and Reverse.</span>
+<a name="l00112"></a>00112 <span class="comment"> **********************************************************************/</span>
+<a name="l00113"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a948f9d934615c4120eb23740635200bc">00113</a> <span class="keyword">explicit</span> CassiniSoldner(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>) throw()
+<a name="l00114"></a>00114 : _earth(earth) {}
+<a name="l00115"></a>00115 <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment"> /**</span>
+<a name="l00117"></a>00117 <span class="comment"> * Constructor for CassiniSoldner specifying a center point.</span>
+<a name="l00118"></a>00118 <span class="comment"> *</span>
+<a name="l00119"></a>00119 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00120"></a>00120 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00121"></a>00121 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00122"></a>00122 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
+<a name="l00123"></a>00123 <span class="comment"> *</span>
+<a name="l00124"></a>00124 <span class="comment"> * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
+<a name="l00125"></a>00125 <span class="comment"> * range [-180, 360].</span>
+<a name="l00126"></a>00126 <span class="comment"> **********************************************************************/</span>
+<a name="l00127"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a1b19cedb287ec9bbe59ec18a0ad2a5e4">00127</a> CassiniSoldner(real lat0, real lon0,
+<a name="l00128"></a>00128 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>) throw()
+<a name="l00129"></a>00129 : _earth(earth) {
+<a name="l00130"></a>00130 Reset(lat0, lon0);
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 <span class="comment"></span>
+<a name="l00133"></a>00133 <span class="comment"> /**</span>
+<a name="l00134"></a>00134 <span class="comment"> * Set the central point of the projection</span>
+<a name="l00135"></a>00135 <span class="comment"> *</span>
+<a name="l00136"></a>00136 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00137"></a>00137 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00138"></a>00138 <span class="comment"> *</span>
+<a name="l00139"></a>00139 <span class="comment"> * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
+<a name="l00140"></a>00140 <span class="comment"> * range [-180, 360].</span>
+<a name="l00141"></a>00141 <span class="comment"> **********************************************************************/</span>
+<a name="l00142"></a>00142 <span class="keywordtype">void</span> Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0) <span class="keywordflow">throw</span>();
+<a name="l00143"></a>00143 <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment"> /**</span>
+<a name="l00145"></a>00145 <span class="comment"> * Forward projection, from geographic to Cassini-Soldner.</span>
+<a name="l00146"></a>00146 <span class="comment"> *</span>
+<a name="l00147"></a>00147 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00148"></a>00148 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00149"></a>00149 <span class="comment"> * @param[out] x easting of point (meters).</span>
+<a name="l00150"></a>00150 <span class="comment"> * @param[out] y northing of point (meters).</span>
+<a name="l00151"></a>00151 <span class="comment"> * @param[out] azi azimuth of easting direction at point (degrees).</span>
+<a name="l00152"></a>00152 <span class="comment"> * @param[out] rk reciprocal of azimuthal northing scale at point.</span>
+<a name="l00153"></a>00153 <span class="comment"> *</span>
+<a name="l00154"></a>00154 <span class="comment"> * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
+<a name="l00155"></a>00155 <span class="comment"> * range [-180, 360]. A call to Forward followed by a call to Reverse will</span>
+<a name="l00156"></a>00156 <span class="comment"> * return the original (\e lat, \e lon) (to within roundoff). The routine</span>
+<a name="l00157"></a>00157 <span class="comment"> * does nothing if the origin has not been set.</span>
+<a name="l00158"></a>00158 <span class="comment"> **********************************************************************/</span>
+<a name="l00159"></a>00159 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00160"></a>00160 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00161"></a>00161 <span class="comment"></span>
+<a name="l00162"></a>00162 <span class="comment"> /**</span>
+<a name="l00163"></a>00163 <span class="comment"> * Reverse projection, from Cassini-Soldner to geographic.</span>
+<a name="l00164"></a>00164 <span class="comment"> *</span>
+<a name="l00165"></a>00165 <span class="comment"> * @param[in] x easting of point (meters).</span>
+<a name="l00166"></a>00166 <span class="comment"> * @param[in] y northing of point (meters).</span>
+<a name="l00167"></a>00167 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00168"></a>00168 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00169"></a>00169 <span class="comment"> * @param[out] azi azimuth of easting direction at point (degrees).</span>
+<a name="l00170"></a>00170 <span class="comment"> * @param[out] rk reciprocal of azimuthal northing scale at point.</span>
+<a name="l00171"></a>00171 <span class="comment"> *</span>
+<a name="l00172"></a>00172 <span class="comment"> * A call to Reverse followed by a call to Forward will return the original</span>
+<a name="l00173"></a>00173 <span class="comment"> * (\e x, \e y) (to within roundoff), provided that \e x and \e y are</span>
+<a name="l00174"></a>00174 <span class="comment"> * sufficiently small not to "wrap around" the earth. The routine does</span>
+<a name="l00175"></a>00175 <span class="comment"> * nothing if the origin has not been set.</span>
+<a name="l00176"></a>00176 <span class="comment"> **********************************************************************/</span>
+<a name="l00177"></a>00177 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00178"></a>00178 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00179"></a>00179 <span class="comment"></span>
+<a name="l00180"></a>00180 <span class="comment"> /**</span>
+<a name="l00181"></a>00181 <span class="comment"> * CassiniSoldner::Forward without returning the azimuth and scale.</span>
+<a name="l00182"></a>00182 <span class="comment"> **********************************************************************/</span>
+<a name="l00183"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a87bf8d3b416bbfd8b7a2c5269245e693">00183</a> <span class="keywordtype">void</span> Forward(real lat, real lon,
+<a name="l00184"></a>00184 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00185"></a>00185 real azi, rk;
+<a name="l00186"></a>00186 Forward(lat, lon, x, y, azi, rk);
+<a name="l00187"></a>00187 }
+<a name="l00188"></a>00188 <span class="comment"></span>
+<a name="l00189"></a>00189 <span class="comment"> /**</span>
+<a name="l00190"></a>00190 <span class="comment"> * CassiniSoldner::Reverse without returning the azimuth and scale.</span>
+<a name="l00191"></a>00191 <span class="comment"> **********************************************************************/</span>
+<a name="l00192"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a27a675e995d2c1fdd0ab4c0ab397e065">00192</a> <span class="keywordtype">void</span> Reverse(real x, real y,
+<a name="l00193"></a>00193 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00194"></a>00194 real azi, rk;
+<a name="l00195"></a>00195 Reverse(x, y, lat, lon, azi, rk);
+<a name="l00196"></a>00196 }
+<a name="l00197"></a>00197 <span class="comment"></span>
+<a name="l00198"></a>00198 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00199"></a>00199 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment"> ///@{</span>
+<a name="l00201"></a>00201 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00202"></a>00202 <span class="comment"> * @return true if the object has been initialized.</span>
+<a name="l00203"></a>00203 <span class="comment"> **********************************************************************/</span>
+<a name="l00204"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">00204</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _meridian.Init(); }
+<a name="l00205"></a>00205 <span class="comment"></span>
+<a name="l00206"></a>00206 <span class="comment"> /**</span>
+<a name="l00207"></a>00207 <span class="comment"> * @return \e lat0 the latitude of origin (degrees).</span>
+<a name="l00208"></a>00208 <span class="comment"> **********************************************************************/</span>
+<a name="l00209"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a2aa51120af199603f57d54b8c9a0bdde">00209</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real LatitudeOrigin() <span class="keyword">const</span> throw()
+<a name="l00210"></a>00210 { <span class="keywordflow">return</span> _meridian.Latitude(); }
+<a name="l00211"></a>00211 <span class="comment"></span>
+<a name="l00212"></a>00212 <span class="comment"> /**</span>
+<a name="l00213"></a>00213 <span class="comment"> * @return \e lon0 the longitude of origin (degrees).</span>
+<a name="l00214"></a>00214 <span class="comment"> **********************************************************************/</span>
+<a name="l00215"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">00215</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real LongitudeOrigin() <span class="keyword">const</span> throw()
+<a name="l00216"></a>00216 { <span class="keywordflow">return</span> _meridian.Longitude(); }
+<a name="l00217"></a>00217 <span class="comment"></span>
+<a name="l00218"></a>00218 <span class="comment"> /**</span>
+<a name="l00219"></a>00219 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00220"></a>00220 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00221"></a>00221 <span class="comment"> **********************************************************************/</span>
+<a name="l00222"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">00222</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00223"></a>00223 <span class="comment"></span>
+<a name="l00224"></a>00224 <span class="comment"> /**</span>
+<a name="l00225"></a>00225 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00226"></a>00226 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
+<a name="l00227"></a>00227 <span class="comment"> **********************************************************************/</span>
+<a name="l00228"></a><a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">00228</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span cla [...]
+<a name="l00229"></a>00229 <span class="comment"> ///@}</span>
+<a name="l00230"></a>00230 <span class="comment"></span><span class="comment"></span>
+<a name="l00231"></a>00231 <span class="comment"> /// \cond SKIP</span>
+<a name="l00232"></a>00232 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00233"></a>00233 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00234"></a>00234 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00235"></a>00235 <span class="comment"> **********************************************************************/</span>
+<a name="l00236"></a>00236 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00237"></a>00237 { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
+<a name="l00238"></a>00238 <span class="comment"> /// \endcond</span>
+<a name="l00239"></a>00239 <span class="comment"></span> };
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 <span class="preprocessor">#endif // GEOGRAPHICLIB_CASSINISOLDNER_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CircularEngine_8cpp.html b/doc/html/CircularEngine_8cpp.html
index ff1cc1e..1606779 100644
--- a/doc/html/CircularEngine_8cpp.html
+++ b/doc/html/CircularEngine_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CircularEngine.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,10 +76,8 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CircularEngine_8cpp.html#af686808d87a6f2cd0b1305f1aeac536d">GEOGRAPHICLIB_CIRCULARENGINE_CPP</a> "$Id: bdd0d21aa34063706e4042410f06bb0f7844fea9 $"</td></tr>
@@ -91,8 +104,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CircularEngine_8cpp_source.html b/doc/html/CircularEngine_8cpp_source.html
index b457151..927052b 100644
--- a/doc/html/CircularEngine_8cpp_source.html
+++ b/doc/html/CircularEngine_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CircularEngine.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,7 @@
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="keyword">using namespace </span>std;
<a name="l00022"></a>00022
-<a name="l00023"></a>00023 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> CircularEngine::Value(<span class="keywordtype">bool</span> gradp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cl, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sl,
+<a name="l00023"></a>00023 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> CircularEngine::Value(<span class="keywordtype">bool</span> gradp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cl, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sl,
<a name="l00024"></a>00024 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grady, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradz)
<a name="l00025"></a>00025 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00026"></a>00026 gradp = _gradp && gradp;
@@ -152,8 +167,13 @@
<a name="l00103"></a>00103 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CircularEngine_8hpp.html b/doc/html/CircularEngine_8hpp.html
index 40f02bf..c520ece 100644
--- a/doc/html/CircularEngine_8hpp.html
+++ b/doc/html/CircularEngine_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CircularEngine.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,10 +83,8 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="CircularEngine_8hpp.html#abfcea264d0e3f7a45c8ff8de7f2e539f">GEOGRAPHICLIB_CIRCULARENGINE_HPP</a> "$Id: d0528f468369dbc1b7af11e02278ad7a361d398b $"</td></tr>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/CircularEngine_8hpp_source.html b/doc/html/CircularEngine_8hpp_source.html
index 313411e..fbf5550 100644
--- a/doc/html/CircularEngine_8hpp_source.html
+++ b/doc/html/CircularEngine_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: CircularEngine.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -100,26 +115,26 @@
<a name="l00050"></a>00050 <span class="comment"> * \include example-CircularEngine.cpp</span>
<a name="l00051"></a>00051 <span class="comment"> **********************************************************************/</span>
<a name="l00052"></a>00052
-<a name="l00053"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html">00053</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> {
+<a name="l00053"></a>00053 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> CircularEngine {
<a name="l00054"></a>00054 <span class="keyword">private</span>:
-<a name="l00055"></a>00055 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00055"></a>00055 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00056"></a>00056 <span class="keyword">enum</span> normalization {
-<a name="l00057"></a>00057 FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">SphericalEngine::FULL</a>,
-<a name="l00058"></a>00058 SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SphericalEngine::SCHMIDT</a>,
+<a name="l00057"></a>00057 FULL = SphericalEngine::FULL,
+<a name="l00058"></a>00058 SCHMIDT = SphericalEngine::SCHMIDT,
<a name="l00059"></a>00059 };
<a name="l00060"></a>00060 <span class="keywordtype">int</span> _M;
<a name="l00061"></a>00061 <span class="keywordtype">bool</span> _gradp;
<a name="l00062"></a>00062 <span class="keywordtype">unsigned</span> _norm;
-<a name="l00063"></a>00063 real _a, _r, _u, _t;
+<a name="l00063"></a>00063 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _r, _u, _t;
<a name="l00064"></a>00064 std::vector<real> _wc, _ws, _wrc, _wrs, _wtc, _wts;
-<a name="l00065"></a>00065 real _q, _uq, _uq2;
+<a name="l00065"></a>00065 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _q, _uq, _uq2;
<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Value(<span class="keywordtype">bool</span> gradp, real cl, real sl,
-<a name="l00068"></a>00068 real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00067"></a>00067 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Value(<span class="keywordtype">bool</span> gradp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cl, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sl,
+<a name="l00068"></a>00068 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grady, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00069"></a>00069
-<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> cossin(real x, real& cosx, real& sinx) {
+<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> cossin(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& cosx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sinx) {
<a name="l00071"></a>00071 x = x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
-<a name="l00072"></a>00072 real xi = x * Math::degree<real>();
+<a name="l00072"></a>00072 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xi = x * Math::degree<real>();
<a name="l00073"></a>00073 cosx = std::abs(x) == 90 ? 0 : cos(xi);
<a name="l00074"></a>00074 sinx = x == -180 ? 0 : sin(xi);
<a name="l00075"></a>00075 }
@@ -127,7 +142,7 @@
<a name="l00077"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#ab89064f7f3c32a745c72d8c3188f7485">00077</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>;
<a name="l00078"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a243c90a7f9bf3f7aa96877a4b0667a89">00078</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>; <span class="comment">// Access to cossin</span>
<a name="l00079"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a7294f6a1cc932f8fd1562a15602e9e86">00079</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>; <span class="comment">// Access to cossin</span>
-<a name="l00080"></a>00080 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>(<span class="keywordtype">int</span> M, <span class="keywordtype">bool</span> gradp, <span class="keywordtype">unsigned</span> norm,
+<a name="l00080"></a>00080 CircularEngine(<span class="keywordtype">int</span> M, <span class="keywordtype">bool</span> gradp, <span class="keywordtype">unsigned</span> norm,
<a name="l00081"></a>00081 real a, real r, real u, real t)
<a name="l00082"></a>00082 : _M(M)
<a name="l00083"></a>00083 , _gradp(gradp)
@@ -145,7 +160,7 @@
<a name="l00095"></a>00095 {
<a name="l00096"></a>00096 _q = _a / _r;
<a name="l00097"></a>00097 _uq = _u * _q;
-<a name="l00098"></a>00098 _uq2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_uq);
+<a name="l00098"></a>00098 _uq2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_uq);
<a name="l00099"></a>00099 }
<a name="l00100"></a>00100
<a name="l00101"></a>00101 <span class="keywordtype">void</span> SetCoeff(<span class="keywordtype">int</span> m, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> wc, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ws)
@@ -167,7 +182,7 @@
<a name="l00117"></a>00117 <span class="comment"> * object returns zero. The resulting object can be assigned to the result</span>
<a name="l00118"></a>00118 <span class="comment"> * of SphericalHarmonic::Circle.</span>
<a name="l00119"></a>00119 <span class="comment"> **********************************************************************/</span>
-<a name="l00120"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a91dd2b9cc408e35f8cb6482cdf3aadbf">00120</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>()
+<a name="l00120"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a91dd2b9cc408e35f8cb6482cdf3aadbf">00120</a> CircularEngine()
<a name="l00121"></a>00121 : _M(-1)
<a name="l00122"></a>00122 , _gradp(true)
<a name="l00123"></a>00123 , _u(0)
@@ -185,7 +200,7 @@
<a name="l00135"></a>00135 <span class="comment"> * The arguments must satisfy <i>coslon</i><sup>2</sup> +</span>
<a name="l00136"></a>00136 <span class="comment"> * <i>sinlon</i><sup>2</sup> = 1.</span>
<a name="l00137"></a>00137 <span class="comment"> **********************************************************************/</span>
-<a name="l00138"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a8e39d83fcbed23df36ef4fefe2a86420">00138</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html#a8e39d83fcbed23df36ef4fefe2a86420">operator()</a>(real coslon, real sinlon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00138"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a8e39d83fcbed23df36ef4fefe2a86420">00138</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1CircularEngine.html#a8e39d83fcbed23df36ef4fefe2a86420">operator()</a>(real coslon, real sinlon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00139"></a>00139 real dummy;
<a name="l00140"></a>00140 <span class="keywordflow">return</span> Value(<span class="keyword">false</span>, coslon, sinlon, dummy, dummy, dummy);
<a name="l00141"></a>00141 }
@@ -196,7 +211,7 @@
<a name="l00146"></a>00146 <span class="comment"> * @param[in] lon the longitude (degrees).</span>
<a name="l00147"></a>00147 <span class="comment"> * @return \e V the value of the sum.</span>
<a name="l00148"></a>00148 <span class="comment"> **********************************************************************/</span>
-<a name="l00149"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">00149</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">operator()</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00149"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">00149</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">operator()</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00150"></a>00150 real coslon, sinlon;
<a name="l00151"></a>00151 cossin(lon, coslon, sinlon);
<a name="l00152"></a>00152 <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(coslon, sinlon);
@@ -219,7 +234,7 @@
<a name="l00169"></a>00169 <span class="comment"> * touched. The arguments must satisfy <i>coslon</i><sup>2</sup> +</span>
<a name="l00170"></a>00170 <span class="comment"> * <i>sinlon</i><sup>2</sup> = 1.</span>
<a name="l00171"></a>00171 <span class="comment"> **********************************************************************/</span>
-<a name="l00172"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#aa15c408a0ff4cf17575e62edfeae77a6">00172</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real coslon, real sinlon,
+<a name="l00172"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#aa15c408a0ff4cf17575e62edfeae77a6">00172</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real coslon, real sinlon,
<a name="l00173"></a>00173 real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00174"></a>00174 <span class="keywordflow">return</span> Value(<span class="keyword">true</span>, coslon, sinlon, gradx, grady, gradz);
<a name="l00175"></a>00175 }
@@ -238,7 +253,7 @@
<a name="l00188"></a>00188 <span class="comment"> * SphericalHarmonic::Circle). If not, \e gradx, etc., will not be</span>
<a name="l00189"></a>00189 <span class="comment"> * touched.</span>
<a name="l00190"></a>00190 <span class="comment"> **********************************************************************/</span>
-<a name="l00191"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">00191</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real lon,
+<a name="l00191"></a><a class="code" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">00191</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real lon,
<a name="l00192"></a>00192 real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00193"></a>00193 real coslon, sinlon;
<a name="l00194"></a>00194 cossin(lon, coslon, sinlon);
@@ -255,8 +270,13 @@
<a name="l00205"></a>00205 <span class="preprocessor">#endif // GEOGRAPHICLIB_CIRCULARENGINE_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/ConicProj.1.html b/doc/html/ConicProj.1.html
index 70c00ed..056a59f 100644
--- a/doc/html/ConicProj.1.html
+++ b/doc/html/ConicProj.1.html
@@ -44,8 +44,11 @@
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>ConicProj</strong> ( <strong>-c</strong> | <strong>-a</strong> ) <em>lat1</em> <em>lat2</em>
[ <strong>-l</strong> <em>lon0</em> ] [ <strong>-k</strong> <em>k1</em> ] [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -122,6 +125,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
1/<em>f</em>.) By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
<em>f</em> = 1/298.257223563.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -147,8 +159,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/doc/html/ConicProj_8cpp.html b/doc/html/ConicProj_8cpp.html
index f00460b..ddbb0d9 100644
--- a/doc/html/ConicProj_8cpp.html
+++ b/doc/html/ConicProj_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: ConicProj.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for conical projections. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o ConicProj \ <a class="el" href="ConicProj_8cpp.html" title="Command line utility for conical projections.">ConicProj.cpp</a> \ ../src/AlbersEqualArea.cpp \ ../src/DMS.cpp \ ../src/LambertConformalConic.cpp</p>
<p>See the <a href="ConicProj.1.html">man page</a> for usage information. </p>
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="ConicProj_8cpp_source.html#l00032">32</a> of file <a class="el" href="ConicProj_8cpp_source.html">ConicProj.cpp</a>.</p>
-<p>References <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="DMS_8hpp_source.html#l00073">GeographicLib::DMS::LATITUDE</a>, and <a class="el" href="DMS_8hpp_source.html#l00078">GeographicLib::DMS::LONGITUDE</a>.</p>
+<p>References <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8hpp_source.html#l00078">GeographicLib::DMS::LONGITUDE</a>, <a class="el" href="DMS_8hpp_source.html#l00073">GeographicLib::DMS::LATITUDE</a>, and <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/ConicProj_8cpp_source.html b/doc/html/ConicProj_8cpp_source.html
index 26a962b..1f1c636 100644
--- a/doc/html/ConicProj_8cpp_source.html
+++ b/doc/html/ConicProj_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: ConicProj.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file ConicProj.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for conical projections</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -81,199 +96,223 @@
<a name="l00032"></a><a class="code" href="ConicProj_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00032</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00033"></a>00033 <span class="keywordflow">try</span> {
<a name="l00034"></a>00034 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00035"></a>00035 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00035"></a>00035 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00036"></a>00036 <span class="keywordtype">bool</span> lcc = <span class="keyword">false</span>, albers = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
<a name="l00037"></a>00037 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1 = 0, lat2 = 0, lon0 = 0, k1 = 1;
<a name="l00038"></a>00038 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00039"></a>00039 a = Constants::WGS84_a<real>(),
+<a name="l00039"></a>00039 a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
<a name="l00040"></a>00040 f = Constants::WGS84_f<real>();
-<a name="l00041"></a>00041 std::string istring, ifile, ofile;
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00044"></a>00044 std::string arg(argv[m]);
-<a name="l00045"></a>00045 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00046"></a>00046 reverse = <span class="keyword">true</span>;
-<a name="l00047"></a>00047 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span> || arg == <span class="stringliteral">"-a"</span>) {
-<a name="l00048"></a>00048 lcc = arg == <span class="stringliteral">"-c"</span>;
-<a name="l00049"></a>00049 albers = arg == <span class="stringliteral">"-a"</span>;
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00051"></a>00051 <span class="keywordflow">try</span> {
-<a name="l00052"></a>00052 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 2; ++i) {
-<a name="l00053"></a>00053 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00054"></a>00054 (i ? lat2 : lat1) = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
-<a name="l00056"></a>00056 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
-<a name="l00057"></a>00057 }
-<a name="l00058"></a>00058 }
-<a name="l00059"></a>00059 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00060"></a>00060 std::cerr << <span class="stringliteral">"Error decoding arguments of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00061"></a>00061 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00062"></a>00062 <span class="keywordflow">return</span> 1;
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00066"></a>00066 <span class="keywordflow">try</span> {
-<a name="l00067"></a>00067 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00068"></a>00068 lon0 = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m]), ind);
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
-<a name="l00070"></a>00070 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (!(lon0 >= -180 && lon0 <= 360))
-<a name="l00072"></a>00072 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad longitude"</span>);
-<a name="l00073"></a>00073 <span class="keywordflow">if</span> (lon0 >= 180) lon0 -= 360;
-<a name="l00074"></a>00074 }
-<a name="l00075"></a>00075 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00076"></a>00076 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00077"></a>00077 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00078"></a>00078 <span class="keywordflow">return</span> 1;
-<a name="l00079"></a>00079 }
-<a name="l00080"></a>00080 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-k"</span>) {
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00082"></a>00082 <span class="keywordflow">try</span> {
-<a name="l00083"></a>00083 k1 = Utility::num<real>(std::string(argv[m]));
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00086"></a>00086 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00087"></a>00087 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00088"></a>00088 <span class="keywordflow">return</span> 1;
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00092"></a>00092 <span class="keywordflow">try</span> {
-<a name="l00093"></a>00093 a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00094"></a>00094 f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00097"></a>00097 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00098"></a>00098 <span class="keywordflow">return</span> 1;
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100 m += 2;
-<a name="l00101"></a>00101 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00103"></a>00103 istring = argv[m];
-<a name="l00104"></a>00104 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00105"></a>00105 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00106"></a>00106 ifile = argv[m];
-<a name="l00107"></a>00107 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00108"></a>00108 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00109"></a>00109 ofile = argv[m];
-<a name="l00110"></a>00110 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00111"></a>00111 std::cout
-<a name="l00112"></a>00112 << argv[0]
-<a name="l00113"></a>00113 << <span class="stringliteral">": $Id: 28e29944bd28097eaff577dad02e18ea927a1a87 $\n"</span>
-<a name="l00114"></a>00114 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00115"></a>00115 <span class="keywordflow">return</span> 0;
-<a name="l00116"></a>00116 } <span class="keywordflow">else</span>
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119
-<a name="l00120"></a>00120 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00121"></a>00121 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00122"></a>00122 <span class="keywordflow">return</span> 1;
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00125"></a>00125 std::ifstream infile;
-<a name="l00126"></a>00126 std::istringstream instring;
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00128"></a>00128 infile.open(ifile.c_str());
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00130"></a>00130 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00131"></a>00131 <span class="keywordflow">return</span> 1;
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00134"></a>00134 std::string::size_type m = 0;
-<a name="l00135"></a>00135 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00136"></a>00136 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00138"></a>00138 <span class="keywordflow">break</span>;
-<a name="l00139"></a>00139 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 instring.str(istring);
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00144"></a>00144 (!istring.empty() ? &instring : &std::cin);
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146 std::ofstream outfile;
-<a name="l00147"></a>00147 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00148"></a>00148 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00149"></a>00149 outfile.open(ofile.c_str());
-<a name="l00150"></a>00150 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00151"></a>00151 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00152"></a>00152 <span class="keywordflow">return</span> 1;
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00041"></a>00041 std::string istring, ifile, ofile, cdelim;
+<a name="l00042"></a>00042 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00045"></a>00045 std::string arg(argv[m]);
+<a name="l00046"></a>00046 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00047"></a>00047 reverse = <span class="keyword">true</span>;
+<a name="l00048"></a>00048 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span> || arg == <span class="stringliteral">"-a"</span>) {
+<a name="l00049"></a>00049 lcc = arg == <span class="stringliteral">"-c"</span>;
+<a name="l00050"></a>00050 albers = arg == <span class="stringliteral">"-a"</span>;
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00052"></a>00052 <span class="keywordflow">try</span> {
+<a name="l00053"></a>00053 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < 2; ++i) {
+<a name="l00054"></a>00054 <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00055"></a>00055 (i ? lat2 : lat1) = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
+<a name="l00056"></a>00056 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
+<a name="l00057"></a>00057 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
+<a name="l00058"></a>00058 }
+<a name="l00059"></a>00059 }
+<a name="l00060"></a>00060 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00061"></a>00061 std::cerr << <span class="stringliteral">"Error decoding arguments of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00062"></a>00062 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00063"></a>00063 <span class="keywordflow">return</span> 1;
+<a name="l00064"></a>00064 }
+<a name="l00065"></a>00065 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
+<a name="l00066"></a>00066 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00067"></a>00067 <span class="keywordflow">try</span> {
+<a name="l00068"></a>00068 <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00069"></a>00069 lon0 = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m]), ind);
+<a name="l00070"></a>00070 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
+<a name="l00071"></a>00071 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (!(lon0 >= -180 && lon0 <= 360))
+<a name="l00073"></a>00073 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad longitude"</span>);
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> (lon0 >= 180) lon0 -= 360;
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00077"></a>00077 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00078"></a>00078 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00079"></a>00079 <span class="keywordflow">return</span> 1;
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-k"</span>) {
+<a name="l00082"></a>00082 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00083"></a>00083 <span class="keywordflow">try</span> {
+<a name="l00084"></a>00084 k1 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m]));
+<a name="l00085"></a>00085 }
+<a name="l00086"></a>00086 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00087"></a>00087 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00088"></a>00088 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00089"></a>00089 <span class="keywordflow">return</span> 1;
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00092"></a>00092 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00093"></a>00093 <span class="keywordflow">try</span> {
+<a name="l00094"></a>00094 a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00095"></a>00095 f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00098"></a>00098 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00099"></a>00099 <span class="keywordflow">return</span> 1;
+<a name="l00100"></a>00100 }
+<a name="l00101"></a>00101 m += 2;
+<a name="l00102"></a>00102 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104 istring = argv[m];
+<a name="l00105"></a>00105 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00107"></a>00107 ifile = argv[m];
+<a name="l00108"></a>00108 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00109"></a>00109 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00110"></a>00110 ofile = argv[m];
+<a name="l00111"></a>00111 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00112"></a>00112 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00114"></a>00114 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00115"></a>00115 <span class="keywordflow">return</span> 1;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 lsep = argv[m][0];
+<a name="l00118"></a>00118 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00119"></a>00119 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00120"></a>00120 cdelim = argv[m];
+<a name="l00121"></a>00121 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00122"></a>00122 std::cout
+<a name="l00123"></a>00123 << argv[0]
+<a name="l00124"></a>00124 << <span class="stringliteral">": $Id: 8efb8dcae1b8e8f1abac4d5d6f60e8730ecaa81c $\n"</span>
+<a name="l00125"></a>00125 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00126"></a>00126 <span class="keywordflow">return</span> 0;
+<a name="l00127"></a>00127 } <span class="keywordflow">else</span>
+<a name="l00128"></a>00128 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00132"></a>00132 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00133"></a>00133 <span class="keywordflow">return</span> 1;
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00136"></a>00136 std::ifstream infile;
+<a name="l00137"></a>00137 std::istringstream instring;
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00139"></a>00139 infile.open(ifile.c_str());
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00141"></a>00141 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> 1;
+<a name="l00143"></a>00143 }
+<a name="l00144"></a>00144 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00145"></a>00145 std::string::size_type m = 0;
+<a name="l00146"></a>00146 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00147"></a>00147 m = istring.find(lsep, m);
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00149"></a>00149 <span class="keywordflow">break</span>;
+<a name="l00150"></a>00150 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00151"></a>00151 }
+<a name="l00152"></a>00152 instring.str(istring);
+<a name="l00153"></a>00153 }
+<a name="l00154"></a>00154 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00155"></a>00155 (!istring.empty() ? &instring : &std::cin);
<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keywordflow">if</span> (!(lcc || albers)) {
-<a name="l00158"></a>00158 std::cerr << <span class="stringliteral">"Must specify \"-c lat1 lat2\" or "</span>
-<a name="l00159"></a>00159 << <span class="stringliteral">"\"-a lat1 lat2\"\n"</span>;
-<a name="l00160"></a>00160 <span class="keywordflow">return</span> 1;
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> lproj =
-<a name="l00164"></a>00164 lcc ? <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(a, f, lat1, lat2, k1)
-<a name="l00165"></a>00165 : LambertConformalConic(1, 0, 0, 0, 1);
-<a name="l00166"></a>00166 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> aproj =
-<a name="l00167"></a>00167 albers ? <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(a, f, lat1, lat2, k1)
-<a name="l00168"></a>00168 : AlbersEqualArea(1, 0, 0, 0, 1);
-<a name="l00169"></a>00169
-<a name="l00170"></a>00170 std::string s;
-<a name="l00171"></a>00171 <span class="keywordtype">int</span> retval = 0;
-<a name="l00172"></a>00172 std::cout << std::fixed;
-<a name="l00173"></a>00173 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00174"></a>00174 <span class="keywordflow">try</span> {
-<a name="l00175"></a>00175 std::istringstream str(s);
-<a name="l00176"></a>00176 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, gamma, k;
-<a name="l00177"></a>00177 std::string stra, strb;
-<a name="l00178"></a>00178 <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00179"></a>00179 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00180"></a>00180 <span class="keywordflow">if</span> (reverse) {
-<a name="l00181"></a>00181 x = Utility::num<real>(stra);
-<a name="l00182"></a>00182 y = Utility::num<real>(strb);
-<a name="l00183"></a>00183 } <span class="keywordflow">else</span>
-<a name="l00184"></a>00184 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00185"></a>00185 std::string strc;
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (str >> strc)
-<a name="l00187"></a>00187 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00188"></a>00188 <span class="keywordflow">if</span> (reverse) {
-<a name="l00189"></a>00189 <span class="keywordflow">if</span> (lcc)
-<a name="l00190"></a>00190 lproj.Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00191"></a>00191 <span class="keywordflow">else</span>
-<a name="l00192"></a>00192 aproj.Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00193"></a>00193 *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
-<a name="l00194"></a>00194 << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
-<a name="l00195"></a>00195 << Utility::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
-<a name="l00196"></a>00196 << Utility::str<real>(k, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00197"></a>00197 } <span class="keywordflow">else</span> {
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (lcc)
-<a name="l00199"></a>00199 lproj.Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00200"></a>00200 <span class="keywordflow">else</span>
-<a name="l00201"></a>00201 aproj.Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00202"></a>00202 *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
-<a name="l00203"></a>00203 << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
-<a name="l00204"></a>00204 << Utility::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
-<a name="l00205"></a>00205 << Utility::str<real>(k, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00206"></a>00206 }
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00209"></a>00209 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00210"></a>00210 retval = 1;
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212 }
-<a name="l00213"></a>00213 <span class="keywordflow">return</span> retval;
-<a name="l00214"></a>00214 }
-<a name="l00215"></a>00215 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00216"></a>00216 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00217"></a>00217 <span class="keywordflow">return</span> 1;
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 <span class="keywordflow">catch</span> (...) {
-<a name="l00220"></a>00220 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00221"></a>00221 <span class="keywordflow">return</span> 1;
-<a name="l00222"></a>00222 }
-<a name="l00223"></a>00223 }
+<a name="l00157"></a>00157 std::ofstream outfile;
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00159"></a>00159 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00160"></a>00160 outfile.open(ofile.c_str());
+<a name="l00161"></a>00161 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00162"></a>00162 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00163"></a>00163 <span class="keywordflow">return</span> 1;
+<a name="l00164"></a>00164 }
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="keywordflow">if</span> (!(lcc || albers)) {
+<a name="l00169"></a>00169 std::cerr << <span class="stringliteral">"Must specify \"-c lat1 lat2\" or "</span>
+<a name="l00170"></a>00170 << <span class="stringliteral">"\"-a lat1 lat2\"\n"</span>;
+<a name="l00171"></a>00171 <span class="keywordflow">return</span> 1;
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> lproj =
+<a name="l00175"></a>00175 lcc ? <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(a, f, lat1, lat2, k1)
+<a name="l00176"></a>00176 : LambertConformalConic(1, 0, 0, 0, 1);
+<a name="l00177"></a>00177 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> aproj =
+<a name="l00178"></a>00178 albers ? <a class="code" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>(a, f, lat1, lat2, k1)
+<a name="l00179"></a>00179 : AlbersEqualArea(1, 0, 0, 0, 1);
+<a name="l00180"></a>00180
+<a name="l00181"></a>00181 std::string s;
+<a name="l00182"></a>00182 <span class="keywordtype">int</span> retval = 0;
+<a name="l00183"></a>00183 std::cout << std::fixed;
+<a name="l00184"></a>00184 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00185"></a>00185 <span class="keywordflow">try</span> {
+<a name="l00186"></a>00186 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00188"></a>00188 std::string::size_type m = s.find(cdelim);
+<a name="l00189"></a>00189 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00190"></a>00190 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00191"></a>00191 s = s.substr(0, m);
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 std::istringstream str(s);
+<a name="l00195"></a>00195 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, gamma, k;
+<a name="l00196"></a>00196 std::string stra, strb;
+<a name="l00197"></a>00197 <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00198"></a>00198 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00199"></a>00199 <span class="keywordflow">if</span> (reverse) {
+<a name="l00200"></a>00200 x = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(stra);
+<a name="l00201"></a>00201 y = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strb);
+<a name="l00202"></a>00202 } <span class="keywordflow">else</span>
+<a name="l00203"></a>00203 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00204"></a>00204 std::string strc;
+<a name="l00205"></a>00205 <span class="keywordflow">if</span> (str >> strc)
+<a name="l00206"></a>00206 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00207"></a>00207 <span class="keywordflow">if</span> (reverse) {
+<a name="l00208"></a>00208 <span class="keywordflow">if</span> (lcc)
+<a name="l00209"></a>00209 lproj.Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00210"></a>00210 <span class="keywordflow">else</span>
+<a name="l00211"></a>00211 aproj.Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00212"></a>00212 *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
+<a name="l00213"></a>00213 << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
+<a name="l00214"></a>00214 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
+<a name="l00215"></a>00215 << Utility::str<real>(k, 16) << eol;
+<a name="l00216"></a>00216 } <span class="keywordflow">else</span> {
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (lcc)
+<a name="l00218"></a>00218 lproj.Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00219"></a>00219 <span class="keywordflow">else</span>
+<a name="l00220"></a>00220 aproj.Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00221"></a>00221 *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
+<a name="l00222"></a>00222 << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
+<a name="l00223"></a>00223 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
+<a name="l00224"></a>00224 << Utility::str<real>(k, 16) << eol;
+<a name="l00225"></a>00225 }
+<a name="l00226"></a>00226 }
+<a name="l00227"></a>00227 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00228"></a>00228 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00229"></a>00229 retval = 1;
+<a name="l00230"></a>00230 }
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232 <span class="keywordflow">return</span> retval;
+<a name="l00233"></a>00233 }
+<a name="l00234"></a>00234 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00235"></a>00235 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00236"></a>00236 <span class="keywordflow">return</span> 1;
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238 <span class="keywordflow">catch</span> (...) {
+<a name="l00239"></a>00239 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00240"></a>00240 <span class="keywordflow">return</span> 1;
+<a name="l00241"></a>00241 }
+<a name="l00242"></a>00242 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Constants_8hpp.html b/doc/html/Constants_8hpp.html
index e91ec4d..b5b105f 100644
--- a/doc/html/Constants_8hpp.html
+++ b/doc/html/Constants_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Constants.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,20 +85,18 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">GEOGRAPHICLIB_CONSTANTS_HPP</a> "$Id: 58b3796803fd552851e800c63f8ee43f64bacd0c $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">GEOGRAPHICLIB_CONSTANTS_HPP</a> "$Id: 895e4bd91979aae347436bbf6be37964f05f5b6f $"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(cond, reason) { enum{ STATIC_ASSERT_ENUM = 1/int(cond) }; }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(x) namespace { char VAR_ ## x [] = x; }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">GeographicLib::Constants</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -92,7 +105,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_CONSTANTS_HPP "$Id: 58b3796803fd552851e800c63f8ee43f64bacd0c $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_CONSTANTS_HPP "$Id: 895e4bd91979aae347436bbf6be37964f05f5b6f $"</td>
</tr>
</table>
</div>
@@ -126,11 +139,11 @@ Defines</h2></td></tr>
</table>
</div>
<div class="memdoc">
-<p>A compile-time assert. Use C++0X static_assert, if available. </p>
+<p>A compile-time assert. Use C++11 static_assert, if available. </p>
<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00025">25</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
-<p>Referenced by <a class="el" href="Accumulator_8hpp_source.html#l00116">GeographicLib::Accumulator< real >::Accumulator()</a>, <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>, <a class="el" href="TransverseMercator_8cpp_source.html#l00060">GeographicLib::TransverseMercator::TransverseMercator()</a>, and <a class="el" href="SphericalEngine_8cpp_source.html#l00159">GeographicLib::SphericalEngine::Value()</a>.</p>
+<p>Referenced by <a class="el" href="Accumulator_8hpp_source.html#l00116">GeographicLib::Accumulator< real >::Accumulator()</a>, <a class="el" href="Geoid_8cpp_source.html#l00208">GeographicLib::Geoid::Geoid()</a>, <a class="el" href="SphericalEngine_8cpp_source.html#l00159">GeographicLib::SphericalEngine::Value()</a>, <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>, and <a class="el" href="TransverseMercator_8cpp_source.htm [...]
</div>
</div>
@@ -170,8 +183,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Constants_8hpp_source.html b/doc/html/Constants_8hpp_source.html
index 42a0b75..79d7163 100644
--- a/doc/html/Constants_8hpp_source.html
+++ b/doc/html/Constants_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Constants.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,19 +67,19 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Constants.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Constants class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_CONSTANTS_HPP)</span>
<a name="l00011"></a><a class="code" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_CONSTANTS_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 58b3796803fd552851e800c63f8ee43f64bacd0c $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 895e4bd91979aae347436bbf6be37964f05f5b6f $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <GeographicLib/Config.h></span>
<a name="l00015"></a>00015 <span class="comment"></span>
<a name="l00016"></a>00016 <span class="comment">/**</span>
-<a name="l00017"></a>00017 <span class="comment"> * A compile-time assert. Use C++0X static_assert, if available.</span>
+<a name="l00017"></a>00017 <span class="comment"> * A compile-time assert. Use C++11 static_assert, if available.</span>
<a name="l00018"></a>00018 <span class="comment"> **********************************************************************/</span>
<a name="l00019"></a>00019 <span class="preprocessor">#if !defined(STATIC_ASSERT)</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor"># if defined(__GXX_EXPERIMENTAL_CXX0X__)</span>
@@ -119,26 +134,26 @@
<a name="l00069"></a>00069 <span class="comment"> * Example of use:</span>
<a name="l00070"></a>00070 <span class="comment"> * \include example-Constants.cpp</span>
<a name="l00071"></a>00071 <span class="comment"> **********************************************************************/</span>
-<a name="l00072"></a><a class="code" href="classGeographicLib_1_1Constants.html">00072</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a> {
+<a name="l00072"></a>00072 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Constants {
<a name="l00073"></a>00073 <span class="keyword">private</span>:
-<a name="l00074"></a>00074 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00075"></a>00075 <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>(); <span class="comment">// Disable constructor</span>
+<a name="l00074"></a>00074 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00075"></a>00075 Constants(); <span class="comment">// Disable constructor</span>
<a name="l00076"></a>00076
<a name="l00077"></a>00077 <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00078"></a>00078 <span class="comment"> /**</span>
<a name="l00079"></a>00079 <span class="comment"> * A synonym for Math::degree<real>().</span>
<a name="l00080"></a>00080 <span class="comment"> **********************************************************************/</span>
-<a name="l00081"></a><a class="code" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">00081</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">degree</a>() throw() { <span class="keywordflow">return</span> Math::degree<real>(); }< [...]
+<a name="l00081"></a><a class="code" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">00081</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">degree</a>() throw() { <span class="keywordflow">return</span> <a class [...]
<a name="l00082"></a>00082 <span class="comment"> /**</span>
<a name="l00083"></a>00083 <span class="comment"> * @return the number of radians in an arcminute.</span>
<a name="l00084"></a>00084 <span class="comment"> **********************************************************************/</span>
-<a name="l00085"></a><a class="code" href="classGeographicLib_1_1Constants.html#a8f8e6d3bd08abb72b686a0f4398b587b">00085</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> arcminute() throw()
-<a name="l00086"></a>00086 { <span class="keywordflow">return</span> Math::degree<real>() / 60; }<span class="comment"></span>
+<a name="l00085"></a><a class="code" href="classGeographicLib_1_1Constants.html#a8f8e6d3bd08abb72b686a0f4398b587b">00085</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real arcminute() throw()
+<a name="l00086"></a>00086 { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() / 60; }<span class="comment"></span>
<a name="l00087"></a>00087 <span class="comment"> /**</span>
<a name="l00088"></a>00088 <span class="comment"> * @return the number of radians in an arcsecond.</span>
<a name="l00089"></a>00089 <span class="comment"> **********************************************************************/</span>
-<a name="l00090"></a><a class="code" href="classGeographicLib_1_1Constants.html#a04858f922295d2a04bb021eecac07179">00090</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> arcsecond() throw()
-<a name="l00091"></a>00091 { <span class="keywordflow">return</span> Math::degree<real>() / 3600; }
+<a name="l00090"></a><a class="code" href="classGeographicLib_1_1Constants.html#a04858f922295d2a04bb021eecac07179">00090</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real arcsecond() throw()
+<a name="l00091"></a>00091 { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() / 3600; }
<a name="l00092"></a>00092 <span class="comment"></span>
<a name="l00093"></a>00093 <span class="comment"> /** \name Ellipsoid parameters</span>
<a name="l00094"></a>00094 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
@@ -147,237 +162,244 @@
<a name="l00097"></a>00097 <span class="comment"> * @tparam T the type of the returned value.</span>
<a name="l00098"></a>00098 <span class="comment"> * @return the equatorial radius of WGS84 ellipsoid (6378137 m).</span>
<a name="l00099"></a>00099 <span class="comment"> **********************************************************************/</span>
-<a name="l00100"></a><a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">00100</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_a() throw()
+<a name="l00100"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">00100</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_a() throw()
<a name="l00101"></a>00101 { <span class="keywordflow">return</span> T(6378137) * meter<T>(); }<span class="comment"></span>
<a name="l00102"></a>00102 <span class="comment"> /**</span>
<a name="l00103"></a>00103 <span class="comment"> * A synonym for WGS84_a<real>().</span>
<a name="l00104"></a>00104 <span class="comment"> **********************************************************************/</span>
-<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">00105</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">WGS84_a</a>() throw() { <span class="keywordflow">return</span> WGS84_a<real>(); }<span [...]
+<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">00105</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">WGS84_a</a>() throw() { <span class="keywordflow">return</span> WGS84_a [...]
<a name="l00106"></a>00106 <span class="comment"> /**</span>
<a name="l00107"></a>00107 <span class="comment"> * @tparam T the type of the returned value.</span>
<a name="l00108"></a>00108 <span class="comment"> * @return the flattening of WGS84 ellipsoid (1/298.257223563).</span>
<a name="l00109"></a>00109 <span class="comment"> **********************************************************************/</span>
-<a name="l00110"></a><a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">00110</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_f() throw()
+<a name="l00110"></a><a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">00110</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_f() throw()
<a name="l00111"></a>00111 { <span class="keywordflow">return</span> T(1) / ( T(298) + T(257223563) / T(1000000000) ); }<span class="comment"></span>
<a name="l00112"></a>00112 <span class="comment"> /**</span>
<a name="l00113"></a>00113 <span class="comment"> * A synonym for WGS84_f<real>().</span>
<a name="l00114"></a>00114 <span class="comment"> **********************************************************************/</span>
-<a name="l00115"></a><a class="code" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">00115</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">WGS84_f</a>() throw() { <span class="keywordflow">return</span> WGS84_f<real>(); }<span [...]
+<a name="l00115"></a><a class="code" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">00115</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">WGS84_f</a>() throw() { <span class="keywordflow">return</span> WGS84_f [...]
<a name="l00116"></a>00116 <span class="comment"> /**</span>
<a name="l00117"></a>00117 <span class="comment"> * @tparam T the type of the returned value.</span>
<a name="l00118"></a>00118 <span class="comment"> * @return the gravitational constant of the WGS84 ellipsoid, \e GM, in</span>
<a name="l00119"></a>00119 <span class="comment"> * m<sup>3</sup> s<sup>-2</sup>.</span>
<a name="l00120"></a>00120 <span class="comment"> **********************************************************************/</span>
-<a name="l00121"></a><a class="code" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">00121</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_GM() throw()
+<a name="l00121"></a><a class="code" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">00121</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_GM() throw()
<a name="l00122"></a>00122 { <span class="keywordflow">return</span> T(3986004) * T(100000000) + T(41800000); }<span class="comment"></span>
<a name="l00123"></a>00123 <span class="comment"> /**</span>
<a name="l00124"></a>00124 <span class="comment"> * @tparam T the type of the returned value.</span>
<a name="l00125"></a>00125 <span class="comment"> * @return the angular velocity of the the WGS84 ellipsoid, \e omega, in</span>
<a name="l00126"></a>00126 <span class="comment"> * rad s<sup>-1</sup>.</span>
<a name="l00127"></a>00127 <span class="comment"> **********************************************************************/</span>
-<a name="l00128"></a><a class="code" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">00128</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_omega() throw()
+<a name="l00128"></a><a class="code" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">00128</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_omega() throw()
<a name="l00129"></a>00129 { <span class="keywordflow">return</span> T(7292115) / (T(1000000) * T(100000)); }<span class="comment"></span>
-<a name="l00130"></a>00130 <span class="comment"> /**</span>
-<a name="l00131"></a>00131 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00132"></a>00132 <span class="comment"> * @return the reciprocal flattening of WGS84 ellipsoid.</span>
-<a name="l00133"></a>00133 <span class="comment"> **********************************************************************/</span>
-<a name="l00134"></a><a class="code" href="classGeographicLib_1_1Constants.html#aa886c9955848d0fe9204b1a14f7ae43f">00134</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_r() throw()
-<a name="l00135"></a>00135 { <span class="keywordflow">return</span> 1/WGS84_f<T>(); }<span class="comment"></span>
-<a name="l00136"></a>00136 <span class="comment"> /**</span>
-<a name="l00137"></a>00137 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00138"></a>00138 <span class="comment"> * A synonym for WGS84_r<real>().</span>
-<a name="l00139"></a>00139 <span class="comment"> **********************************************************************/</span>
-<a name="l00140"></a><a class="code" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">00140</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">WGS84_r</a>() throw() { <span class="keywordflow">return</span> WGS84_r<real>(); }<span [...]
-<a name="l00141"></a>00141 <span class="comment"> /**</span>
-<a name="l00142"></a>00142 <span class="comment"> * @tparam T the type of the returned value.</span>
-<a name="l00143"></a>00143 <span class="comment"> * @return the equatorial radius of GRS80 ellipsoid, \e a, in m.</span>
-<a name="l00144"></a>00144 <span class="comment"> **********************************************************************/</span>
-<a name="l00145"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">00145</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_a() throw()
-<a name="l00146"></a>00146 { <span class="keywordflow">return</span> T(6378137); }<span class="comment"></span>
-<a name="l00147"></a>00147 <span class="comment"> /**</span>
-<a name="l00148"></a>00148 <span class="comment"> * @tparam T the type of the returned value.</span>
-<a name="l00149"></a>00149 <span class="comment"> * @return the gravitational constant of the GRS80 ellipsoid, \e GM, in</span>
-<a name="l00150"></a>00150 <span class="comment"> * m<sup>3</sup> s<sup>-2</sup>.</span>
-<a name="l00151"></a>00151 <span class="comment"> **********************************************************************/</span>
-<a name="l00152"></a><a class="code" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">00152</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_GM() throw()
-<a name="l00153"></a>00153 { <span class="keywordflow">return</span> T(3986005) * T(100000000); }<span class="comment"></span>
-<a name="l00154"></a>00154 <span class="comment"> /**</span>
-<a name="l00155"></a>00155 <span class="comment"> * @tparam T the type of the returned value.</span>
-<a name="l00156"></a>00156 <span class="comment"> * @return the angular velocity of the the GRS80 ellipsoid, \e omega, in</span>
-<a name="l00157"></a>00157 <span class="comment"> * rad s<sup>-1</sup>.</span>
-<a name="l00158"></a>00158 <span class="comment"> *</span>
-<a name="l00159"></a>00159 <span class="comment"> * This is about 2*pi*366.25 / (365.25*24*3600) rad s<sup>-1</sup>. 365.25</span>
-<a name="l00160"></a>00160 <span class="comment"> * is the number of days in a Julian year and 365.35/366.25 converts from</span>
-<a name="l00161"></a>00161 <span class="comment"> * solar days to sidereal days. Using the number of days in a Gregorian</span>
-<a name="l00162"></a>00162 <span class="comment"> * year (365.2425) results in a worse approximation (because the Gregorian</span>
-<a name="l00163"></a>00163 <span class="comment"> * year includes the precession of the earth's axis).</span>
-<a name="l00164"></a>00164 <span class="comment"> **********************************************************************/</span>
-<a name="l00165"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">00165</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_omega() throw()
-<a name="l00166"></a>00166 { <span class="keywordflow">return</span> T(7292115) / (T(1000000) * T(100000)); }<span class="comment"></span>
-<a name="l00167"></a>00167 <span class="comment"> /**</span>
-<a name="l00168"></a>00168 <span class="comment"> * @tparam T the type of the returned value.</span>
-<a name="l00169"></a>00169 <span class="comment"> * @return the dynamical form factor of the GRS80 ellipsoid,</span>
-<a name="l00170"></a>00170 <span class="comment"> * <i>J</i><sub>2</sub>.</span>
-<a name="l00171"></a>00171 <span class="comment"> **********************************************************************/</span>
-<a name="l00172"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">00172</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_J2() throw()
-<a name="l00173"></a>00173 { <span class="keywordflow">return</span> T(108263) / T(100000000); }<span class="comment"></span>
-<a name="l00174"></a>00174 <span class="comment"> /**</span>
-<a name="l00175"></a>00175 <span class="comment"> * @tparam T the type of the returned value.</span>
-<a name="l00176"></a>00176 <span class="comment"> * @return the central scale factor for UTM (0.9996).</span>
-<a name="l00177"></a>00177 <span class="comment"> **********************************************************************/</span>
-<a name="l00178"></a><a class="code" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">00178</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T UTM_k0() throw()
-<a name="l00179"></a>00179 {<span class="keywordflow">return</span> T(9996) / T(10000); }<span class="comment"></span>
-<a name="l00180"></a>00180 <span class="comment"> /**</span>
-<a name="l00181"></a>00181 <span class="comment"> * A synonym for UTM_k0<real>().</span>
-<a name="l00182"></a>00182 <span class="comment"> **********************************************************************/</span>
-<a name="l00183"></a><a class="code" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">00183</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">UTM_k0</a>() throw() { <span class="keywordflow">return</span> UTM_k0<real>(); }<span c [...]
-<a name="l00184"></a>00184 <span class="comment"> /**</span>
-<a name="l00185"></a>00185 <span class="comment"> * @tparam T the type of the returned value.</span>
-<a name="l00186"></a>00186 <span class="comment"> * @return the central scale factor for UPS (0.994).</span>
-<a name="l00187"></a>00187 <span class="comment"> **********************************************************************/</span>
-<a name="l00188"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">00188</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T UPS_k0() throw()
-<a name="l00189"></a>00189 { <span class="keywordflow">return</span> T(994) / T(1000); }<span class="comment"></span>
-<a name="l00190"></a>00190 <span class="comment"> /**</span>
-<a name="l00191"></a>00191 <span class="comment"> * A synonym for UPS_k0<real>().</span>
-<a name="l00192"></a>00192 <span class="comment"> **********************************************************************/</span>
-<a name="l00193"></a><a class="code" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">00193</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">UPS_k0</a>() throw() { <span class="keywordflow">return</span> UPS_k0<real>(); }<span c [...]
-<a name="l00194"></a>00194 <span class="comment"> ///@}</span>
-<a name="l00195"></a>00195 <span class="comment"></span><span class="comment"></span>
-<a name="l00196"></a>00196 <span class="comment"> /** \name SI units</span>
-<a name="l00197"></a>00197 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00198"></a>00198 <span class="comment"> ///@{</span>
-<a name="l00199"></a>00199 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00200"></a>00200 <span class="comment"> * @tparam T the type of the returned value.</span>
-<a name="l00201"></a>00201 <span class="comment"> * @return the number of meters in a meter.</span>
-<a name="l00202"></a>00202 <span class="comment"> *</span>
-<a name="l00203"></a>00203 <span class="comment"> * This is unity, but this lets the internal system of units be changed if</span>
-<a name="l00204"></a>00204 <span class="comment"> * necessary.</span>
-<a name="l00205"></a>00205 <span class="comment"> **********************************************************************/</span>
-<a name="l00206"></a><a class="code" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">00206</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">meter</a>() throw() { <span class="keywordflow">return</span> T(1); }<span class="comment"></span>
-<a name="l00207"></a>00207 <span class="comment"> /**</span>
-<a name="l00208"></a>00208 <span class="comment"> * A synonym for meter<real>().</span>
-<a name="l00209"></a>00209 <span class="comment"> **********************************************************************/</span>
-<a name="l00210"></a><a class="code" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">00210</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">meter</a>() throw() { <span class="keywordflow">return</span> meter<real>(); }<span cla [...]
-<a name="l00211"></a>00211 <span class="comment"> /**</span>
-<a name="l00212"></a>00212 <span class="comment"> * @return the number of meters in a kilometer.</span>
-<a name="l00213"></a>00213 <span class="comment"> **********************************************************************/</span>
-<a name="l00214"></a><a class="code" href="classGeographicLib_1_1Constants.html#a4ec5a9d91ab0ccbd3bd921cda4bfc836">00214</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> kilometer() throw()
-<a name="l00215"></a>00215 { <span class="keywordflow">return</span> 1000 * meter<real>(); }<span class="comment"></span>
-<a name="l00216"></a>00216 <span class="comment"> /**</span>
-<a name="l00217"></a>00217 <span class="comment"> * @return the number of meters in a nautical mile (approximately 1 arc</span>
-<a name="l00218"></a>00218 <span class="comment"> * minute)</span>
-<a name="l00219"></a>00219 <span class="comment"> **********************************************************************/</span>
-<a name="l00220"></a><a class="code" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">00220</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> nauticalmile() throw()
-<a name="l00221"></a>00221 { <span class="keywordflow">return</span> 1852 * meter<real>(); }
-<a name="l00222"></a>00222 <span class="comment"></span>
-<a name="l00223"></a>00223 <span class="comment"> /**</span>
-<a name="l00224"></a>00224 <span class="comment"> * @tparam T the type of the returned value.</span>
-<a name="l00225"></a>00225 <span class="comment"> * @return the number of square meters in a square meter.</span>
-<a name="l00226"></a>00226 <span class="comment"> *</span>
-<a name="l00227"></a>00227 <span class="comment"> * This is unity, but this lets the internal system of units be changed if</span>
-<a name="l00228"></a>00228 <span class="comment"> * necessary.</span>
-<a name="l00229"></a>00229 <span class="comment"> **********************************************************************/</span>
-<a name="l00230"></a><a class="code" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">00230</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T square_meter() throw()
-<a name="l00231"></a>00231 { <span class="keywordflow">return</span> meter<real>() * meter<real>(); }<span class="comment"></span>
-<a name="l00232"></a>00232 <span class="comment"> /**</span>
-<a name="l00233"></a>00233 <span class="comment"> * A synonym for square_meter<real>().</span>
-<a name="l00234"></a>00234 <span class="comment"> **********************************************************************/</span>
-<a name="l00235"></a><a class="code" href="classGeographicLib_1_1Constants.html#a702b928c9a29dbcc7324b9d835b38d94">00235</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> square_meter() throw()
-<a name="l00236"></a>00236 { <span class="keywordflow">return</span> square_meter<real>(); }<span class="comment"></span>
-<a name="l00237"></a>00237 <span class="comment"> /**</span>
-<a name="l00238"></a>00238 <span class="comment"> * @return the number of square meters in a hectare.</span>
-<a name="l00239"></a>00239 <span class="comment"> **********************************************************************/</span>
-<a name="l00240"></a><a class="code" href="classGeographicLib_1_1Constants.html#a4cc4ae77e3136d7784cd7c69d6927adc">00240</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> hectare() throw()
-<a name="l00241"></a>00241 { <span class="keywordflow">return</span> 10000 * square_meter<real>(); }<span class="comment"></span>
-<a name="l00242"></a>00242 <span class="comment"> /**</span>
-<a name="l00243"></a>00243 <span class="comment"> * @return the number of square meters in a square kilometer.</span>
-<a name="l00244"></a>00244 <span class="comment"> **********************************************************************/</span>
-<a name="l00245"></a><a class="code" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">00245</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> square_kilometer() throw()
-<a name="l00246"></a>00246 { <span class="keywordflow">return</span> kilometer() * kilometer(); }<span class="comment"></span>
-<a name="l00247"></a>00247 <span class="comment"> /**</span>
-<a name="l00248"></a>00248 <span class="comment"> * @return the number of square meters in a square nautical mile.</span>
-<a name="l00249"></a>00249 <span class="comment"> **********************************************************************/</span>
-<a name="l00250"></a><a class="code" href="classGeographicLib_1_1Constants.html#a5acf6b2c23d1c9ddf140a6b4e588e88a">00250</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> square_nauticalmile() throw()
-<a name="l00251"></a>00251 { <span class="keywordflow">return</span> nauticalmile() * nauticalmile(); }<span class="comment"></span>
-<a name="l00252"></a>00252 <span class="comment"> ///@}</span>
-<a name="l00253"></a>00253 <span class="comment"></span><span class="comment"></span>
-<a name="l00254"></a>00254 <span class="comment"> /** \name Anachronistic British units</span>
-<a name="l00255"></a>00255 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00256"></a>00256 <span class="comment"> ///@{</span>
-<a name="l00257"></a>00257 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00258"></a>00258 <span class="comment"> * @return the number of meters in an international foot.</span>
-<a name="l00259"></a>00259 <span class="comment"> **********************************************************************/</span>
-<a name="l00260"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac69f40e7e56c71bc72011c7591f7bef9">00260</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> foot() throw()
-<a name="l00261"></a>00261 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0254L) * 12 * meter<real>(); }<span class="comment"></span>
-<a name="l00262"></a>00262 <span class="comment"> /**</span>
-<a name="l00263"></a>00263 <span class="comment"> * @return the number of meters in a yard.</span>
-<a name="l00264"></a>00264 <span class="comment"> **********************************************************************/</span>
-<a name="l00265"></a><a class="code" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">00265</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">yard</a>() throw() { <span class="keywordflow">return</span> 3 * foot(); }<span class="commen [...]
-<a name="l00266"></a>00266 <span class="comment"> /**</span>
-<a name="l00267"></a>00267 <span class="comment"> * @return the number of meters in a fathom.</span>
-<a name="l00268"></a>00268 <span class="comment"> **********************************************************************/</span>
-<a name="l00269"></a><a class="code" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">00269</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">fathom</a>() throw() { <span class="keywordflow">return</span> 2 * yard(); }<span class="comm [...]
-<a name="l00270"></a>00270 <span class="comment"> /**</span>
-<a name="l00271"></a>00271 <span class="comment"> * @return the number of meters in a chain.</span>
-<a name="l00272"></a>00272 <span class="comment"> **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac4f3792bce075999b0c9b9485e4079d0">00273</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#ac4f3792bce075999b0c9b9485e4079d0">chain</a>() throw() { <span class="keywordflow">return</span> 22 * yard(); }<span class="comm [...]
-<a name="l00274"></a>00274 <span class="comment"> /**</span>
-<a name="l00275"></a>00275 <span class="comment"> * @return the number of meters in a furlong.</span>
-<a name="l00276"></a>00276 <span class="comment"> **********************************************************************/</span>
-<a name="l00277"></a><a class="code" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">00277</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">furlong</a>() throw() { <span class="keywordflow">return</span> 10 * chain(); }<span class="c [...]
-<a name="l00278"></a>00278 <span class="comment"> /**</span>
-<a name="l00279"></a>00279 <span class="comment"> * @return the number of meters in a statute mile.</span>
-<a name="l00280"></a>00280 <span class="comment"> **********************************************************************/</span>
-<a name="l00281"></a><a class="code" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">00281</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">mile</a>() throw() { <span class="keywordflow">return</span> 8 * furlong(); }<span class="com [...]
-<a name="l00282"></a>00282 <span class="comment"> /**</span>
-<a name="l00283"></a>00283 <span class="comment"> * @return the number of square meters in an acre.</span>
-<a name="l00284"></a>00284 <span class="comment"> **********************************************************************/</span>
-<a name="l00285"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">00285</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">acre</a>() throw() { <span class="keywordflow">return</span> chain() * furlong(); }<span clas [...]
-<a name="l00286"></a>00286 <span class="comment"> /**</span>
-<a name="l00287"></a>00287 <span class="comment"> * @return the number of square meters in a square statute mile.</span>
-<a name="l00288"></a>00288 <span class="comment"> **********************************************************************/</span>
-<a name="l00289"></a><a class="code" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">00289</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">square_mile</a>() throw() { <span class="keywordflow">return</span> mile() * mile(); }<span c [...]
-<a name="l00290"></a>00290 <span class="comment"> ///@}</span>
-<a name="l00291"></a>00291 <span class="comment"></span><span class="comment"></span>
-<a name="l00292"></a>00292 <span class="comment"> /** \name Anachronistic US units</span>
-<a name="l00293"></a>00293 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00294"></a>00294 <span class="comment"> ///@{</span>
-<a name="l00295"></a>00295 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00296"></a>00296 <span class="comment"> * @return the number of meters in a US survey foot.</span>
-<a name="l00297"></a>00297 <span class="comment"> **********************************************************************/</span>
-<a name="l00298"></a><a class="code" href="classGeographicLib_1_1Constants.html#a7faf6e7435791c0a8061296a79c0be08">00298</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> surveyfoot() throw()
-<a name="l00299"></a>00299 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1200) / <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3937) * meter<real>(); }<span class="comment"></span>
-<a name="l00300"></a>00300 <span class="comment"> ///@}</span>
-<a name="l00301"></a>00301 <span class="comment"></span> };
-<a name="l00302"></a>00302 <span class="comment"></span>
-<a name="l00303"></a>00303 <span class="comment"> /**</span>
-<a name="l00304"></a>00304 <span class="comment"> * \brief Exception handling for %GeographicLib</span>
-<a name="l00305"></a>00305 <span class="comment"> *</span>
-<a name="l00306"></a>00306 <span class="comment"> * A class to handle exceptions. It's derived from std::runtime_error so it</span>
-<a name="l00307"></a>00307 <span class="comment"> * can be caught by the usual catch clauses.</span>
-<a name="l00308"></a>00308 <span class="comment"> *</span>
-<a name="l00309"></a>00309 <span class="comment"> * Example of use:</span>
-<a name="l00310"></a>00310 <span class="comment"> * \include example-GeographicErr.cpp</span>
-<a name="l00311"></a>00311 <span class="comment"> **********************************************************************/</span>
-<a name="l00312"></a><a class="code" href="classGeographicLib_1_1GeographicErr.html">00312</a> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a> : <span class="keyword">public</span> std::runtime_error {
-<a name="l00313"></a>00313 <span class="keyword">public</span>:
-<a name="l00314"></a>00314 <span class="comment"></span>
-<a name="l00315"></a>00315 <span class="comment"> /**</span>
-<a name="l00316"></a>00316 <span class="comment"> * Constructor</span>
-<a name="l00317"></a>00317 <span class="comment"> *</span>
-<a name="l00318"></a>00318 <span class="comment"> * @param[in] msg a string message, which is accessible in the catch</span>
-<a name="l00319"></a>00319 <span class="comment"> * clause, via what().</span>
-<a name="l00320"></a>00320 <span class="comment"> **********************************************************************/</span>
-<a name="l00321"></a><a class="code" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">00321</a> <a class="code" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">GeographicErr</a>(<span class="keyword">const</span> std::string& msg) : std::runtime_error(msg) {}
-<a name="l00322"></a>00322 };
-<a name="l00323"></a>00323
-<a name="l00324"></a>00324 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00130"></a>00130 <span class="comment"> /// \cond SKIP</span>
+<a name="l00131"></a>00131 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00132"></a>00132 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00133"></a>00133 <span class="comment"> * @return the reciprocal flattening of WGS84 ellipsoid.</span>
+<a name="l00134"></a>00134 <span class="comment"> **********************************************************************/</span>
+<a name="l00135"></a>00135 <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T WGS84_r() throw()
+<a name="l00136"></a>00136 { <span class="keywordflow">return</span> 1/WGS84_f<T>(); }<span class="comment"></span>
+<a name="l00137"></a>00137 <span class="comment"> /**</span>
+<a name="l00138"></a>00138 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00139"></a>00139 <span class="comment"> * A synonym for WGS84_r<real>().</span>
+<a name="l00140"></a>00140 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment"> /// \endcond</span>
+<a name="l00142"></a><a class="code" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">00142</a> <span class="comment"></span> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">WGS84_r</a>() throw() { <span class="keywo [...]
+<a name="l00143"></a>00143 <span class="comment"> /**</span>
+<a name="l00144"></a>00144 <span class="comment"> * @tparam T the type of the returned value.</span>
+<a name="l00145"></a>00145 <span class="comment"> * @return the equatorial radius of GRS80 ellipsoid, \e a, in m.</span>
+<a name="l00146"></a>00146 <span class="comment"> **********************************************************************/</span>
+<a name="l00147"></a><a class="code" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">00147</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_a() throw()
+<a name="l00148"></a>00148 { <span class="keywordflow">return</span> T(6378137); }<span class="comment"></span>
+<a name="l00149"></a>00149 <span class="comment"> /**</span>
+<a name="l00150"></a>00150 <span class="comment"> * @tparam T the type of the returned value.</span>
+<a name="l00151"></a>00151 <span class="comment"> * @return the gravitational constant of the GRS80 ellipsoid, \e GM, in</span>
+<a name="l00152"></a>00152 <span class="comment"> * m<sup>3</sup> s<sup>-2</sup>.</span>
+<a name="l00153"></a>00153 <span class="comment"> **********************************************************************/</span>
+<a name="l00154"></a><a class="code" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">00154</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_GM() throw()
+<a name="l00155"></a>00155 { <span class="keywordflow">return</span> T(3986005) * T(100000000); }<span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment"> /**</span>
+<a name="l00157"></a>00157 <span class="comment"> * @tparam T the type of the returned value.</span>
+<a name="l00158"></a>00158 <span class="comment"> * @return the angular velocity of the the GRS80 ellipsoid, \e omega, in</span>
+<a name="l00159"></a>00159 <span class="comment"> * rad s<sup>-1</sup>.</span>
+<a name="l00160"></a>00160 <span class="comment"> *</span>
+<a name="l00161"></a>00161 <span class="comment"> * This is about 2*pi*366.25 / (365.25*24*3600) rad s<sup>-1</sup>. 365.25</span>
+<a name="l00162"></a>00162 <span class="comment"> * is the number of days in a Julian year and 365.35/366.25 converts from</span>
+<a name="l00163"></a>00163 <span class="comment"> * solar days to sidereal days. Using the number of days in a Gregorian</span>
+<a name="l00164"></a>00164 <span class="comment"> * year (365.2425) results in a worse approximation (because the Gregorian</span>
+<a name="l00165"></a>00165 <span class="comment"> * year includes the precession of the earth's axis).</span>
+<a name="l00166"></a>00166 <span class="comment"> **********************************************************************/</span>
+<a name="l00167"></a><a class="code" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">00167</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_omega() throw()
+<a name="l00168"></a>00168 { <span class="keywordflow">return</span> T(7292115) / (T(1000000) * T(100000)); }<span class="comment"></span>
+<a name="l00169"></a>00169 <span class="comment"> /**</span>
+<a name="l00170"></a>00170 <span class="comment"> * @tparam T the type of the returned value.</span>
+<a name="l00171"></a>00171 <span class="comment"> * @return the dynamical form factor of the GRS80 ellipsoid,</span>
+<a name="l00172"></a>00172 <span class="comment"> * <i>J</i><sub>2</sub>.</span>
+<a name="l00173"></a>00173 <span class="comment"> **********************************************************************/</span>
+<a name="l00174"></a><a class="code" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">00174</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T GRS80_J2() throw()
+<a name="l00175"></a>00175 { <span class="keywordflow">return</span> T(108263) / T(100000000); }<span class="comment"></span>
+<a name="l00176"></a>00176 <span class="comment"> /**</span>
+<a name="l00177"></a>00177 <span class="comment"> * @tparam T the type of the returned value.</span>
+<a name="l00178"></a>00178 <span class="comment"> * @return the central scale factor for UTM (0.9996).</span>
+<a name="l00179"></a>00179 <span class="comment"> **********************************************************************/</span>
+<a name="l00180"></a><a class="code" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">00180</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T UTM_k0() throw()
+<a name="l00181"></a>00181 {<span class="keywordflow">return</span> T(9996) / T(10000); }<span class="comment"></span>
+<a name="l00182"></a>00182 <span class="comment"> /**</span>
+<a name="l00183"></a>00183 <span class="comment"> * A synonym for UTM_k0<real>().</span>
+<a name="l00184"></a>00184 <span class="comment"> **********************************************************************/</span>
+<a name="l00185"></a><a class="code" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">00185</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">UTM_k0</a>() throw() { <span class="keywordflow">return</span> UTM_k0&l [...]
+<a name="l00186"></a>00186 <span class="comment"> /**</span>
+<a name="l00187"></a>00187 <span class="comment"> * @tparam T the type of the returned value.</span>
+<a name="l00188"></a>00188 <span class="comment"> * @return the central scale factor for UPS (0.994).</span>
+<a name="l00189"></a>00189 <span class="comment"> **********************************************************************/</span>
+<a name="l00190"></a><a class="code" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">00190</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T UPS_k0() throw()
+<a name="l00191"></a>00191 { <span class="keywordflow">return</span> T(994) / T(1000); }<span class="comment"></span>
+<a name="l00192"></a>00192 <span class="comment"> /**</span>
+<a name="l00193"></a>00193 <span class="comment"> * A synonym for UPS_k0<real>().</span>
+<a name="l00194"></a>00194 <span class="comment"> **********************************************************************/</span>
+<a name="l00195"></a><a class="code" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">00195</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">UPS_k0</a>() throw() { <span class="keywordflow">return</span> UPS_k0&l [...]
+<a name="l00196"></a>00196 <span class="comment"> ///@}</span>
+<a name="l00197"></a>00197 <span class="comment"></span><span class="comment"></span>
+<a name="l00198"></a>00198 <span class="comment"> /** \name SI units</span>
+<a name="l00199"></a>00199 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00200"></a>00200 <span class="comment"> ///@{</span>
+<a name="l00201"></a>00201 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00202"></a>00202 <span class="comment"> * @tparam T the type of the returned value.</span>
+<a name="l00203"></a>00203 <span class="comment"> * @return the number of meters in a meter.</span>
+<a name="l00204"></a>00204 <span class="comment"> *</span>
+<a name="l00205"></a>00205 <span class="comment"> * This is unity, but this lets the internal system of units be changed if</span>
+<a name="l00206"></a>00206 <span class="comment"> * necessary.</span>
+<a name="l00207"></a>00207 <span class="comment"> **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">00208</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">meter</a>() throw() { <span class="keywordflow">return</span> T(1); }<span class="comment"></span>
+<a name="l00209"></a>00209 <span class="comment"> /**</span>
+<a name="l00210"></a>00210 <span class="comment"> * A synonym for meter<real>().</span>
+<a name="l00211"></a>00211 <span class="comment"> **********************************************************************/</span>
+<a name="l00212"></a><a class="code" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">00212</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">meter</a>() throw() { <span class="keywordflow">return</span> meter< [...]
+<a name="l00213"></a>00213 <span class="comment"> /**</span>
+<a name="l00214"></a>00214 <span class="comment"> * @return the number of meters in a kilometer.</span>
+<a name="l00215"></a>00215 <span class="comment"> **********************************************************************/</span>
+<a name="l00216"></a><a class="code" href="classGeographicLib_1_1Constants.html#a4ec5a9d91ab0ccbd3bd921cda4bfc836">00216</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real kilometer() throw()
+<a name="l00217"></a>00217 { <span class="keywordflow">return</span> 1000 * meter<real>(); }<span class="comment"></span>
+<a name="l00218"></a>00218 <span class="comment"> /**</span>
+<a name="l00219"></a>00219 <span class="comment"> * @return the number of meters in a nautical mile (approximately 1 arc</span>
+<a name="l00220"></a>00220 <span class="comment"> * minute)</span>
+<a name="l00221"></a>00221 <span class="comment"> **********************************************************************/</span>
+<a name="l00222"></a><a class="code" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">00222</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real nauticalmile() throw()
+<a name="l00223"></a>00223 { <span class="keywordflow">return</span> 1852 * meter<real>(); }
+<a name="l00224"></a>00224 <span class="comment"></span>
+<a name="l00225"></a>00225 <span class="comment"> /**</span>
+<a name="l00226"></a>00226 <span class="comment"> * @tparam T the type of the returned value.</span>
+<a name="l00227"></a>00227 <span class="comment"> * @return the number of square meters in a square meter.</span>
+<a name="l00228"></a>00228 <span class="comment"> *</span>
+<a name="l00229"></a>00229 <span class="comment"> * This is unity, but this lets the internal system of units be changed if</span>
+<a name="l00230"></a>00230 <span class="comment"> * necessary.</span>
+<a name="l00231"></a>00231 <span class="comment"> **********************************************************************/</span>
+<a name="l00232"></a><a class="code" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">00232</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T square_meter() throw()
+<a name="l00233"></a>00233 { <span class="keywordflow">return</span> meter<real>() * meter<real>(); }<span class="comment"></span>
+<a name="l00234"></a>00234 <span class="comment"> /**</span>
+<a name="l00235"></a>00235 <span class="comment"> * A synonym for square_meter<real>().</span>
+<a name="l00236"></a>00236 <span class="comment"> **********************************************************************/</span>
+<a name="l00237"></a><a class="code" href="classGeographicLib_1_1Constants.html#a702b928c9a29dbcc7324b9d835b38d94">00237</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real square_meter() throw()
+<a name="l00238"></a>00238 { <span class="keywordflow">return</span> square_meter<real>(); }<span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment"> /**</span>
+<a name="l00240"></a>00240 <span class="comment"> * @return the number of square meters in a hectare.</span>
+<a name="l00241"></a>00241 <span class="comment"> **********************************************************************/</span>
+<a name="l00242"></a><a class="code" href="classGeographicLib_1_1Constants.html#a4cc4ae77e3136d7784cd7c69d6927adc">00242</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real hectare() throw()
+<a name="l00243"></a>00243 { <span class="keywordflow">return</span> 10000 * square_meter<real>(); }<span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment"> /**</span>
+<a name="l00245"></a>00245 <span class="comment"> * @return the number of square meters in a square kilometer.</span>
+<a name="l00246"></a>00246 <span class="comment"> **********************************************************************/</span>
+<a name="l00247"></a><a class="code" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">00247</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real square_kilometer() throw()
+<a name="l00248"></a>00248 { <span class="keywordflow">return</span> kilometer() * kilometer(); }<span class="comment"></span>
+<a name="l00249"></a>00249 <span class="comment"> /**</span>
+<a name="l00250"></a>00250 <span class="comment"> * @return the number of square meters in a square nautical mile.</span>
+<a name="l00251"></a>00251 <span class="comment"> **********************************************************************/</span>
+<a name="l00252"></a><a class="code" href="classGeographicLib_1_1Constants.html#a5acf6b2c23d1c9ddf140a6b4e588e88a">00252</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real square_nauticalmile() throw()
+<a name="l00253"></a>00253 { <span class="keywordflow">return</span> nauticalmile() * nauticalmile(); }<span class="comment"></span>
+<a name="l00254"></a>00254 <span class="comment"> ///@}</span>
+<a name="l00255"></a>00255 <span class="comment"></span><span class="comment"></span>
+<a name="l00256"></a>00256 <span class="comment"> /** \name Anachronistic British units</span>
+<a name="l00257"></a>00257 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment"> ///@{</span>
+<a name="l00259"></a>00259 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00260"></a>00260 <span class="comment"> * @return the number of meters in an international foot.</span>
+<a name="l00261"></a>00261 <span class="comment"> **********************************************************************/</span>
+<a name="l00262"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac69f40e7e56c71bc72011c7591f7bef9">00262</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real foot() throw()
+<a name="l00263"></a>00263 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0254L) * 12 * meter<real>(); }<span class="comment"></span>
+<a name="l00264"></a>00264 <span class="comment"> /**</span>
+<a name="l00265"></a>00265 <span class="comment"> * @return the number of meters in a yard.</span>
+<a name="l00266"></a>00266 <span class="comment"> **********************************************************************/</span>
+<a name="l00267"></a><a class="code" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">00267</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">yard</a>() throw() { <span class="keywordflow">return</span> 3 * foot() [...]
+<a name="l00268"></a>00268 <span class="comment"> /**</span>
+<a name="l00269"></a>00269 <span class="comment"> * @return the number of meters in a fathom.</span>
+<a name="l00270"></a>00270 <span class="comment"> **********************************************************************/</span>
+<a name="l00271"></a><a class="code" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">00271</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">fathom</a>() throw() { <span class="keywordflow">return</span> 2 * yard [...]
+<a name="l00272"></a>00272 <span class="comment"> /**</span>
+<a name="l00273"></a>00273 <span class="comment"> * @return the number of meters in a chain.</span>
+<a name="l00274"></a>00274 <span class="comment"> **********************************************************************/</span>
+<a name="l00275"></a><a class="code" href="classGeographicLib_1_1Constants.html#ac4f3792bce075999b0c9b9485e4079d0">00275</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#ac4f3792bce075999b0c9b9485e4079d0">chain</a>() throw() { <span class="keywordflow">return</span> 22 * yard [...]
+<a name="l00276"></a>00276 <span class="comment"> /**</span>
+<a name="l00277"></a>00277 <span class="comment"> * @return the number of meters in a furlong.</span>
+<a name="l00278"></a>00278 <span class="comment"> **********************************************************************/</span>
+<a name="l00279"></a><a class="code" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">00279</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">furlong</a>() throw() { <span class="keywordflow">return</span> 10 * ch [...]
+<a name="l00280"></a>00280 <span class="comment"> /**</span>
+<a name="l00281"></a>00281 <span class="comment"> * @return the number of meters in a statute mile.</span>
+<a name="l00282"></a>00282 <span class="comment"> **********************************************************************/</span>
+<a name="l00283"></a><a class="code" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">00283</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">mile</a>() throw() { <span class="keywordflow">return</span> 8 * furlon [...]
+<a name="l00284"></a>00284 <span class="comment"> /**</span>
+<a name="l00285"></a>00285 <span class="comment"> * @return the number of square meters in an acre.</span>
+<a name="l00286"></a>00286 <span class="comment"> **********************************************************************/</span>
+<a name="l00287"></a><a class="code" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">00287</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">acre</a>() throw() { <span class="keywordflow">return</span> chain() * [...]
+<a name="l00288"></a>00288 <span class="comment"> /**</span>
+<a name="l00289"></a>00289 <span class="comment"> * @return the number of square meters in a square statute mile.</span>
+<a name="l00290"></a>00290 <span class="comment"> **********************************************************************/</span>
+<a name="l00291"></a><a class="code" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">00291</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">square_mile</a>() throw() { <span class="keywordflow">return</span> mil [...]
+<a name="l00292"></a>00292 <span class="comment"> ///@}</span>
+<a name="l00293"></a>00293 <span class="comment"></span><span class="comment"></span>
+<a name="l00294"></a>00294 <span class="comment"> /** \name Anachronistic US units</span>
+<a name="l00295"></a>00295 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00296"></a>00296 <span class="comment"> ///@{</span>
+<a name="l00297"></a>00297 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00298"></a>00298 <span class="comment"> * @return the number of meters in a US survey foot.</span>
+<a name="l00299"></a>00299 <span class="comment"> **********************************************************************/</span>
+<a name="l00300"></a><a class="code" href="classGeographicLib_1_1Constants.html#a7faf6e7435791c0a8061296a79c0be08">00300</a> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real surveyfoot() throw()
+<a name="l00301"></a>00301 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1200) / <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3937) * meter<real>(); }<span class="comment"></span>
+<a name="l00302"></a>00302 <span class="comment"> ///@}</span>
+<a name="l00303"></a>00303 <span class="comment"></span> };
+<a name="l00304"></a>00304 <span class="comment"></span>
+<a name="l00305"></a>00305 <span class="comment"> /**</span>
+<a name="l00306"></a>00306 <span class="comment"> * \brief Exception handling for %GeographicLib</span>
+<a name="l00307"></a>00307 <span class="comment"> *</span>
+<a name="l00308"></a>00308 <span class="comment"> * A class to handle exceptions. It's derived from std::runtime_error so it</span>
+<a name="l00309"></a>00309 <span class="comment"> * can be caught by the usual catch clauses.</span>
+<a name="l00310"></a>00310 <span class="comment"> *</span>
+<a name="l00311"></a>00311 <span class="comment"> * Example of use:</span>
+<a name="l00312"></a>00312 <span class="comment"> * \include example-GeographicErr.cpp</span>
+<a name="l00313"></a>00313 <span class="comment"> **********************************************************************/</span>
+<a name="l00314"></a>00314 <span class="keyword">class </span>GeographicErr : <span class="keyword">public</span> std::runtime_error {
+<a name="l00315"></a>00315 <span class="keyword">public</span>:
+<a name="l00316"></a>00316 <span class="comment"></span>
+<a name="l00317"></a>00317 <span class="comment"> /**</span>
+<a name="l00318"></a>00318 <span class="comment"> * Constructor</span>
+<a name="l00319"></a>00319 <span class="comment"> *</span>
+<a name="l00320"></a>00320 <span class="comment"> * @param[in] msg a string message, which is accessible in the catch</span>
+<a name="l00321"></a>00321 <span class="comment"> * clause, via what().</span>
+<a name="l00322"></a>00322 <span class="comment"> **********************************************************************/</span>
+<a name="l00323"></a><a class="code" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">00323</a> <a class="code" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">GeographicErr</a>(<span class="keyword">const</span> std::string& msg) : std::runtime_error(msg) {}
+<a name="l00324"></a>00324 };
<a name="l00325"></a>00325
-<a name="l00326"></a>00326 <span class="preprocessor">#endif // GEOGRAPHICLIB_CONSTANTS_HPP</span>
+<a name="l00326"></a>00326 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00327"></a>00327
+<a name="l00328"></a>00328 <span class="preprocessor">#endif // GEOGRAPHICLIB_CONSTANTS_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/DMS_8cpp.html b/doc/html/DMS_8cpp.html
index 21791b3..cccc9e6 100644
--- a/doc/html/DMS_8cpp.html
+++ b/doc/html/DMS_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: DMS.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -62,17 +77,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">GEOGRAPHICLIB_DMS_CPP</a> "$Id: 305c71f5be8c0adce9f70fe7d2f16b38dc14fb7d $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">GEOGRAPHICLIB_DMS_CPP</a> "$Id: db38ddc05f7c27732da3aa820191a51200ce92ac $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="DMS_8cpp_source.html">DMS.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -81,7 +94,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_DMS_CPP "$Id: 305c71f5be8c0adce9f70fe7d2f16b38dc14fb7d $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_DMS_CPP "$Id: db38ddc05f7c27732da3aa820191a51200ce92ac $"</td>
</tr>
</table>
</div>
@@ -92,8 +105,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/DMS_8cpp_source.html b/doc/html/DMS_8cpp_source.html
index 3215ace..e638cfd 100644
--- a/doc/html/DMS_8cpp_source.html
+++ b/doc/html/DMS_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: DMS.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file DMS.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::DMS class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
@@ -60,7 +75,7 @@
<a name="l00011"></a>00011 <span class="preprocessor">#include <algorithm></span>
<a name="l00012"></a>00012 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
<a name="l00013"></a>00013
-<a name="l00014"></a><a class="code" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">00014</a> <span class="preprocessor">#define GEOGRAPHICLIB_DMS_CPP "$Id: 305c71f5be8c0adce9f70fe7d2f16b38dc14fb7d $"</span>
+<a name="l00014"></a><a class="code" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">00014</a> <span class="preprocessor">#define GEOGRAPHICLIB_DMS_CPP "$Id: db38ddc05f7c27732da3aa820191a51200ce92ac $"</span>
<a name="l00015"></a>00015 <span class="preprocessor"></span>
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="DMS_8cpp.html#a6ef96ce6d2929e11dc6ec87433f4d7d1">GEOGRAPHICLIB_DMS_CPP</a>)
<a name="l00017"></a>00017 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">GEOGRAPHICLIB_DMS_HPP</a>)
@@ -77,7 +92,7 @@
<a name="l00028"></a>00028 <span class="keyword">const</span> <span class="keywordtype">string</span> DMS::dmsindicators_ = <span class="stringliteral">"D'\":"</span>;
<a name="l00029"></a>00029 <span class="keyword">const</span> <span class="keywordtype">string</span> DMS::components_[] = {<span class="stringliteral">"degrees"</span>, <span class="stringliteral">"minutes"</span>, <span class="stringliteral">"seconds"</span>};
<a name="l00030"></a>00030
-<a name="l00031"></a><a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">00031</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DMS::Decode(<span class="keyword">const</span> std::string& dms, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a>& ind) {
+<a name="l00031"></a><a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">00031</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real DMS::Decode(<span class="keyword">const</span> std::string& dms, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a>& ind) {
<a name="l00032"></a>00032 <span class="keywordtype">string</span> errormsg;
<a name="l00033"></a>00033 <span class="keywordtype">string</span> dmsa = dms;
<a name="l00034"></a>00034 replace(dmsa, <span class="stringliteral">"\xc2\xb0"</span>, <span class="charliteral">'d'</span>); <span class="comment">// degree symbol (U+00b0 = UTF-8 c2 b0)</span>
@@ -245,7 +260,7 @@
<a name="l00196"></a>00196 <span class="comment">// might be able to offer a better diagnostic).</span>
<a name="l00197"></a>00197 <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(sign) * (fpieces[0] + (fpieces[1] + fpieces[2] / 60) / 60);
<a name="l00198"></a>00198 } <span class="keywordflow">while</span> (<span class="keyword">false</span>);
-<a name="l00199"></a>00199 real val = Utility::nummatch<real>(dmsa);
+<a name="l00199"></a>00199 real val = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::nummatch<real>(dmsa);
<a name="l00200"></a>00200 <span class="keywordflow">if</span> (val == 0)
<a name="l00201"></a>00201 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(errormsg);
<a name="l00202"></a>00202 <span class="keywordflow">else</span>
@@ -286,7 +301,7 @@
<a name="l00237"></a>00237 lon = lon1;
<a name="l00238"></a>00238 }
<a name="l00239"></a>00239
-<a name="l00240"></a><a class="code" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">00240</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DMS::DecodeAngle(<span class="keyword">const</span> std::string& angstr) {
+<a name="l00240"></a><a class="code" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">00240</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real DMS::DecodeAngle(<span class="keyword">const</span> std::string& angstr) {
<a name="l00241"></a>00241 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind;
<a name="l00242"></a>00242 real ang = Decode(angstr, ind);
<a name="l00243"></a>00243 <span class="keywordflow">if</span> (ind != NONE)
@@ -295,7 +310,7 @@
<a name="l00246"></a>00246 <span class="keywordflow">return</span> ang;
<a name="l00247"></a>00247 }
<a name="l00248"></a>00248
-<a name="l00249"></a><a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">00249</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DMS::DecodeAzimuth(<span class="keyword">const</span> std::string& azistr) {
+<a name="l00249"></a><a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">00249</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real DMS::DecodeAzimuth(<span class="keyword">const</span> std::string& azistr) {
<a name="l00250"></a>00250 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind;
<a name="l00251"></a>00251 real azi = Decode(azistr, ind);
<a name="l00252"></a>00252 <span class="keywordflow">if</span> (ind == LATITUDE)
@@ -307,83 +322,96 @@
<a name="l00258"></a>00258 <span class="keywordflow">return</span> azi;
<a name="l00259"></a>00259 }
<a name="l00260"></a>00260
-<a name="l00261"></a><a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">00261</a> <span class="keywordtype">string</span> DMS::Encode(real angle, <a class="code" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind) {
-<a name="l00262"></a>00262 <span class="comment">// Assume check on range of input angle has been made by calling</span>
-<a name="l00263"></a>00263 <span class="comment">// routine (which might be able to offer a better diagnostic).</span>
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (!Math::isfinite(angle))
-<a name="l00265"></a>00265 <span class="keywordflow">return</span> angle < 0 ? string(<span class="stringliteral">"-inf"</span>) :
-<a name="l00266"></a>00266 (angle > 0 ? string(<span class="stringliteral">"inf"</span>) : string(<span class="stringliteral">"nan"</span>));
-<a name="l00267"></a>00267
-<a name="l00268"></a>00268 <span class="comment">// 15 - 2 * trailing = ceiling(log10(2^53/90/60^trailing)).</span>
-<a name="l00269"></a>00269 <span class="comment">// This suffices to give full real precision for numbers in [-90,90]</span>
-<a name="l00270"></a>00270 prec = min(15 - 2 * <span class="keywordtype">unsigned</span>(trailing), prec);
-<a name="l00271"></a>00271 real scale = 1;
-<a name="l00272"></a>00272 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < unsigned(trailing); ++i)
-<a name="l00273"></a>00273 scale *= 60;
-<a name="l00274"></a>00274 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < prec; ++i)
-<a name="l00275"></a>00275 scale *= 10;
-<a name="l00276"></a>00276 <span class="keywordflow">if</span> (ind == AZIMUTH)
-<a name="l00277"></a>00277 angle -= floor(angle/360) * 360;
-<a name="l00278"></a>00278 <span class="keywordtype">int</span> sign = angle < 0 ? -1 : 1;
-<a name="l00279"></a>00279 angle *= sign;
-<a name="l00280"></a>00280
-<a name="l00281"></a>00281 <span class="comment">// Break off integer part to preserve precision in manipulation of</span>
-<a name="l00282"></a>00282 <span class="comment">// fractional part.</span>
-<a name="l00283"></a>00283 real
-<a name="l00284"></a>00284 idegree = floor(angle),
-<a name="l00285"></a>00285 fdegree = floor((angle - idegree) * scale + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) / scale;
-<a name="l00286"></a>00286 <span class="keywordflow">if</span> (fdegree >= 1) {
-<a name="l00287"></a>00287 idegree += 1;
-<a name="l00288"></a>00288 fdegree -= 1;
-<a name="l00289"></a>00289 }
-<a name="l00290"></a>00290 real pieces[3] = {fdegree, 0, 0};
-<a name="l00291"></a>00291 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i <= unsigned(trailing); ++i) {
-<a name="l00292"></a>00292 real
-<a name="l00293"></a>00293 ip = floor(pieces[i - 1]),
-<a name="l00294"></a>00294 fp = pieces[i - 1] - ip;
-<a name="l00295"></a>00295 pieces[i] = fp * 60;
-<a name="l00296"></a>00296 pieces[i - 1] = ip;
-<a name="l00297"></a>00297 }
-<a name="l00298"></a>00298 pieces[0] += idegree;
-<a name="l00299"></a>00299 ostringstream s;
-<a name="l00300"></a>00300 s << fixed << setfill(<span class="charliteral">'0'</span>);
-<a name="l00301"></a>00301 <span class="keywordflow">if</span> (ind == NONE && sign < 0)
-<a name="l00302"></a>00302 s << <span class="charliteral">'-'</span>;
-<a name="l00303"></a>00303 <span class="keywordflow">switch</span> (trailing) {
-<a name="l00304"></a>00304 <span class="keywordflow">case</span> DEGREE:
-<a name="l00305"></a>00305 <span class="keywordflow">if</span> (ind != NONE)
-<a name="l00306"></a>00306 s << setw(1 + min(<span class="keywordtype">int</span>(ind), 2) + prec + (prec ? 1 : 0));
-<a name="l00307"></a>00307 s << setprecision(prec) << pieces[0];
-<a name="l00308"></a>00308 <span class="comment">// Don't include degree designator (d) if it is the trailing component.</span>
-<a name="l00309"></a>00309 <span class="keywordflow">break</span>;
-<a name="l00310"></a>00310 <span class="keywordflow">default</span>:
-<a name="l00311"></a>00311 <span class="keywordflow">if</span> (ind != NONE)
-<a name="l00312"></a>00312 s << setw(1 + min(<span class="keywordtype">int</span>(ind), 2));
-<a name="l00313"></a>00313 s << setprecision(0) << pieces[0] << char(tolower(dmsindicators_[0]));
-<a name="l00314"></a>00314 <span class="keywordflow">switch</span> (trailing) {
-<a name="l00315"></a>00315 <span class="keywordflow">case</span> MINUTE:
-<a name="l00316"></a>00316 s << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec)
-<a name="l00317"></a>00317 << pieces[1] << char(tolower(dmsindicators_[1]));
-<a name="l00318"></a>00318 <span class="keywordflow">break</span>;
-<a name="l00319"></a>00319 <span class="keywordflow">case</span> SECOND:
-<a name="l00320"></a>00320 s << setw(2) << pieces[1] << char(tolower(dmsindicators_[1]))
-<a name="l00321"></a>00321 << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec)
-<a name="l00322"></a>00322 << pieces[2] << char(tolower(dmsindicators_[2]));
-<a name="l00323"></a>00323 <span class="keywordflow">break</span>;
-<a name="l00324"></a>00324 <span class="keywordflow">default</span>:
-<a name="l00325"></a>00325 <span class="keywordflow">break</span>;
-<a name="l00326"></a>00326 }
-<a name="l00327"></a>00327 }
-<a name="l00328"></a>00328 <span class="keywordflow">if</span> (ind != NONE && ind != AZIMUTH)
-<a name="l00329"></a>00329 s << hemispheres_[(ind == LATITUDE ? 0 : 2) + (sign < 0 ? 0 : 1)];
-<a name="l00330"></a>00330 <span class="keywordflow">return</span> s.str();
-<a name="l00331"></a>00331 }
-<a name="l00332"></a>00332
-<a name="l00333"></a>00333 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00261"></a><a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">00261</a> <span class="keywordtype">string</span> DMS::Encode(real angle, <a class="code" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind,
+<a name="l00262"></a>00262 <span class="keywordtype">char</span> dmssep) {
+<a name="l00263"></a>00263 <span class="comment">// Assume check on range of input angle has been made by calling</span>
+<a name="l00264"></a>00264 <span class="comment">// routine (which might be able to offer a better diagnostic).</span>
+<a name="l00265"></a>00265 <span class="keywordflow">if</span> (!Math::isfinite(angle))
+<a name="l00266"></a>00266 <span class="keywordflow">return</span> angle < 0 ? string(<span class="stringliteral">"-inf"</span>) :
+<a name="l00267"></a>00267 (angle > 0 ? string(<span class="stringliteral">"inf"</span>) : string(<span class="stringliteral">"nan"</span>));
+<a name="l00268"></a>00268
+<a name="l00269"></a>00269 <span class="comment">// 15 - 2 * trailing = ceiling(log10(2^53/90/60^trailing)).</span>
+<a name="l00270"></a>00270 <span class="comment">// This suffices to give full real precision for numbers in [-90,90]</span>
+<a name="l00271"></a>00271 prec = min(15 - 2 * <span class="keywordtype">unsigned</span>(trailing), prec);
+<a name="l00272"></a>00272 real scale = 1;
+<a name="l00273"></a>00273 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < unsigned(trailing); ++i)
+<a name="l00274"></a>00274 scale *= 60;
+<a name="l00275"></a>00275 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < prec; ++i)
+<a name="l00276"></a>00276 scale *= 10;
+<a name="l00277"></a>00277 <span class="keywordflow">if</span> (ind == AZIMUTH)
+<a name="l00278"></a>00278 angle -= floor(angle/360) * 360;
+<a name="l00279"></a>00279 <span class="keywordtype">int</span> sign = angle < 0 ? -1 : 1;
+<a name="l00280"></a>00280 angle *= sign;
+<a name="l00281"></a>00281
+<a name="l00282"></a>00282 <span class="comment">// Break off integer part to preserve precision in manipulation of</span>
+<a name="l00283"></a>00283 <span class="comment">// fractional part.</span>
+<a name="l00284"></a>00284 real
+<a name="l00285"></a>00285 idegree = floor(angle),
+<a name="l00286"></a>00286 fdegree = floor((angle - idegree) * scale + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) / scale;
+<a name="l00287"></a>00287 <span class="keywordflow">if</span> (fdegree >= 1) {
+<a name="l00288"></a>00288 idegree += 1;
+<a name="l00289"></a>00289 fdegree -= 1;
+<a name="l00290"></a>00290 }
+<a name="l00291"></a>00291 real pieces[3] = {fdegree, 0, 0};
+<a name="l00292"></a>00292 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i <= unsigned(trailing); ++i) {
+<a name="l00293"></a>00293 real
+<a name="l00294"></a>00294 ip = floor(pieces[i - 1]),
+<a name="l00295"></a>00295 fp = pieces[i - 1] - ip;
+<a name="l00296"></a>00296 pieces[i] = fp * 60;
+<a name="l00297"></a>00297 pieces[i - 1] = ip;
+<a name="l00298"></a>00298 }
+<a name="l00299"></a>00299 pieces[0] += idegree;
+<a name="l00300"></a>00300 ostringstream s;
+<a name="l00301"></a>00301 s << fixed << setfill(<span class="charliteral">'0'</span>);
+<a name="l00302"></a>00302 <span class="keywordflow">if</span> (ind == NONE && sign < 0)
+<a name="l00303"></a>00303 s << <span class="charliteral">'-'</span>;
+<a name="l00304"></a>00304 <span class="keywordflow">switch</span> (trailing) {
+<a name="l00305"></a>00305 <span class="keywordflow">case</span> DEGREE:
+<a name="l00306"></a>00306 <span class="keywordflow">if</span> (ind != NONE)
+<a name="l00307"></a>00307 s << setw(1 + min(<span class="keywordtype">int</span>(ind), 2) + prec + (prec ? 1 : 0));
+<a name="l00308"></a>00308 s << setprecision(prec) << pieces[0];
+<a name="l00309"></a>00309 <span class="comment">// Don't include degree designator (d) if it is the trailing component.</span>
+<a name="l00310"></a>00310 <span class="keywordflow">break</span>;
+<a name="l00311"></a>00311 <span class="keywordflow">default</span>:
+<a name="l00312"></a>00312 <span class="keywordflow">if</span> (ind != NONE)
+<a name="l00313"></a>00313 s << setw(1 + min(<span class="keywordtype">int</span>(ind), 2));
+<a name="l00314"></a>00314 s << setprecision(0) << pieces[0]
+<a name="l00315"></a>00315 << (dmssep ? dmssep : char(tolower(dmsindicators_[0])));
+<a name="l00316"></a>00316 <span class="keywordflow">switch</span> (trailing) {
+<a name="l00317"></a>00317 <span class="keywordflow">case</span> MINUTE:
+<a name="l00318"></a>00318 s << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec) << pieces[1];
+<a name="l00319"></a>00319 <span class="keywordflow">if</span> (!dmssep)
+<a name="l00320"></a>00320 s << char(tolower(dmsindicators_[1]));
+<a name="l00321"></a>00321 <span class="keywordflow">break</span>;
+<a name="l00322"></a>00322 <span class="keywordflow">case</span> SECOND:
+<a name="l00323"></a>00323 s << setw(2)
+<a name="l00324"></a>00324 << pieces[1] << (dmssep ? dmssep : char(tolower(dmsindicators_[1])))
+<a name="l00325"></a>00325 << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec) << pieces[2];
+<a name="l00326"></a>00326 <span class="keywordflow">if</span> (!dmssep)
+<a name="l00327"></a>00327 s << char(tolower(dmsindicators_[2]));
+<a name="l00328"></a>00328 <span class="keywordflow">break</span>;
+<a name="l00329"></a>00329 <span class="keywordflow">default</span>:
+<a name="l00330"></a>00330 <span class="keywordflow">break</span>;
+<a name="l00331"></a>00331 }
+<a name="l00332"></a>00332 }
+<a name="l00333"></a>00333 <span class="keywordflow">if</span> (ind != NONE && ind != AZIMUTH)
+<a name="l00334"></a>00334 s << hemispheres_[(ind == LATITUDE ? 0 : 2) + (sign < 0 ? 0 : 1)];
+<a name="l00335"></a>00335 <span class="keywordflow">return</span> s.str();
+<a name="l00336"></a>00336 }
+<a name="l00337"></a>00337
+<a name="l00338"></a><a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">00338</a> <span class="keywordtype">string</span> DMS::Encode(real angle, <a class="code" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind)
+<a name="l00339"></a>00339 { <span class="keywordflow">return</span> Encode(angle, trailing, prec, ind, <span class="keywordtype">char</span>(0)); }
+<a name="l00340"></a>00340
+<a name="l00341"></a>00341 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/DMS_8hpp.html b/doc/html/DMS_8hpp.html
index aaf4416..02659b2 100644
--- a/doc/html/DMS_8hpp.html
+++ b/doc/html/DMS_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: DMS.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,17 +84,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">GEOGRAPHICLIB_DMS_HPP</a> "$Id: ace0c24b4f8b290b6ec49fb0f5e9aba47b6b996a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">GEOGRAPHICLIB_DMS_HPP</a> "$Id: 67770a78c105495a31a9d3755c811e938729c85a $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -88,7 +101,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_DMS_HPP "$Id: ace0c24b4f8b290b6ec49fb0f5e9aba47b6b996a $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_DMS_HPP "$Id: 67770a78c105495a31a9d3755c811e938729c85a $"</td>
</tr>
</table>
</div>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/DMS_8hpp_source.html b/doc/html/DMS_8hpp_source.html
index d3ab347..0cec90f 100644
--- a/doc/html/DMS_8hpp_source.html
+++ b/doc/html/DMS_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: DMS.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,13 +67,13 @@
<a name="l00002"></a>00002 <span class="comment"> * \file DMS.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::DMS class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_DMS_HPP)</span>
-<a name="l00011"></a><a class="code" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_DMS_HPP "$Id: ace0c24b4f8b290b6ec49fb0f5e9aba47b6b996a $"</span>
+<a name="l00011"></a><a class="code" href="DMS_8hpp.html#a844e4c8afc70c59c842f4553ce40b9c6">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_DMS_HPP "$Id: 67770a78c105495a31a9d3755c811e938729c85a $"</span>
<a name="l00012"></a>00012 <span class="preprocessor"></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include <sstream></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <iomanip></span>
@@ -83,9 +98,9 @@
<a name="l00033"></a>00033 <span class="comment"> * Example of use:</span>
<a name="l00034"></a>00034 <span class="comment"> * \include example-DMS.cpp</span>
<a name="l00035"></a>00035 <span class="comment"> **********************************************************************/</span>
-<a name="l00036"></a><a class="code" href="classGeographicLib_1_1DMS.html">00036</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> {
+<a name="l00036"></a>00036 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> DMS {
<a name="l00037"></a>00037 <span class="keyword">private</span>:
-<a name="l00038"></a>00038 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00038"></a>00038 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00039"></a>00039 <span class="comment">// Replace all occurrences of pat by c</span>
<a name="l00040"></a>00040 <span class="keyword">static</span> <span class="keywordtype">void</span> replace(std::string& s, <span class="keyword">const</span> std::string& pat, <span class="keywordtype">char</span> c) {
<a name="l00041"></a>00041 std::string::size_type p = 0;
@@ -101,8 +116,8 @@
<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">const</span> std::string digits_;
<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">const</span> std::string dmsindicators_;
<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keyword">const</span> std::string components_[3];
-<a name="l00054"></a>00054 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> NumMatch(<span class="keyword">const</span> std::string& s);
-<a name="l00055"></a>00055 <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>(); <span class="comment">// Disable constructor</span>
+<a name="l00054"></a>00054 <span class="keyword">static</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> NumMatch(<span class="keyword">const</span> std::string& s);
+<a name="l00055"></a>00055 DMS(); <span class="comment">// Disable constructor</span>
<a name="l00056"></a>00056
<a name="l00057"></a>00057 <span class="keyword">public</span>:
<a name="l00058"></a>00058 <span class="comment"></span>
@@ -224,7 +239,7 @@
<a name="l00174"></a>00174 <span class="comment"> * The codes with a leading zero byte, e.g., U+00b0, are accepted in their</span>
<a name="l00175"></a>00175 <span class="comment"> * UTF-8 coded form 0xc2 0xb0 and as a single byte 0xb0.</span>
<a name="l00176"></a>00176 <span class="comment"> **********************************************************************/</span>
-<a name="l00177"></a>00177 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Decode(<span class="keyword">const</span> std::string& dms, flag& ind);
+<a name="l00177"></a>00177 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Decode(<span class="keyword">const</span> std::string& dms, flag& ind);
<a name="l00178"></a>00178 <span class="comment"></span>
<a name="l00179"></a>00179 <span class="comment"> /**</span>
<a name="l00180"></a>00180 <span class="comment"> * Convert DMS to an angle.</span>
@@ -238,19 +253,19 @@
<a name="l00188"></a>00188 <span class="comment"> * -3d20' would need to be represented as - DMS::Decode(3.0, 20.0) or</span>
<a name="l00189"></a>00189 <span class="comment"> * DMS::Decode(-3.0, -20.0).</span>
<a name="l00190"></a>00190 <span class="comment"> **********************************************************************/</span>
-<a name="l00191"></a><a class="code" href="classGeographicLib_1_1DMS.html#a4987f8eb6c1ba5402eb25d6225ab58e1">00191</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Decode(real d, real m = 0, real s = 0) throw()
+<a name="l00191"></a><a class="code" href="classGeographicLib_1_1DMS.html#a4987f8eb6c1ba5402eb25d6225ab58e1">00191</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Decode(real d, real m = 0, real s = 0) throw()
<a name="l00192"></a>00192 { <span class="keywordflow">return</span> d + (m + s/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(60))/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(60); }
<a name="l00193"></a>00193 <span class="comment"></span>
-<a name="l00194"></a>00194 <span class="comment"> /**</span>
-<a name="l00195"></a>00195 <span class="comment"> * <b>DEPRECATED</b> (use Utility::num, instead).</span>
-<a name="l00196"></a>00196 <span class="comment"> * Convert a string to a real number.</span>
-<a name="l00197"></a>00197 <span class="comment"> *</span>
-<a name="l00198"></a>00198 <span class="comment"> * @param[in] str string input.</span>
-<a name="l00199"></a>00199 <span class="comment"> * @return decoded number.</span>
-<a name="l00200"></a>00200 <span class="comment"> **********************************************************************/</span>
-<a name="l00201"></a><a class="code" href="classGeographicLib_1_1DMS.html#aab2493a4f9bcf1b8fa8b636361feca47">00201</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1DMS.html#aab2493a4f9bcf1b8fa8b636361feca47">Decode</a>(<span class="keyword">const</span> std::string& str) {
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> Utility::num<real>(str);
-<a name="l00203"></a>00203 }
+<a name="l00194"></a>00194 <span class="comment"> /// \cond SKIP</span>
+<a name="l00195"></a>00195 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00196"></a>00196 <span class="comment"> * <b>DEPRECATED</b> (use Utility::num, instead).</span>
+<a name="l00197"></a>00197 <span class="comment"> * Convert a string to a real number.</span>
+<a name="l00198"></a>00198 <span class="comment"> *</span>
+<a name="l00199"></a>00199 <span class="comment"> * @param[in] str string input.</span>
+<a name="l00200"></a>00200 <span class="comment"> * @return decoded number.</span>
+<a name="l00201"></a>00201 <span class="comment"> **********************************************************************/</span>
+<a name="l00202"></a>00202 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Decode(<span class="keyword">const</span> std::string& str)
+<a name="l00203"></a>00203 { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(str); }
<a name="l00204"></a>00204 <span class="comment"></span>
<a name="l00205"></a>00205 <span class="comment"> /**</span>
<a name="l00206"></a>00206 <span class="comment"> * <b>DEPRECATED</b> (use Utility::fract, instead).</span>
@@ -260,10 +275,10 @@
<a name="l00210"></a>00210 <span class="comment"> * @param[in] str string input.</span>
<a name="l00211"></a>00211 <span class="comment"> * @return decoded number.</span>
<a name="l00212"></a>00212 <span class="comment"> **********************************************************************/</span>
-<a name="l00213"></a><a class="code" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">00213</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">DecodeFraction</a>(<span class="keyword">const</span> std::string& str) {
-<a name="l00214"></a>00214 <span class="keywordflow">return</span> Utility::fract<real>(str);
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216 <span class="comment"></span>
+<a name="l00213"></a>00213 <span class="keyword">static</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> DecodeFraction(<span class="keyword">const</span> std::string& str)
+<a name="l00214"></a>00214 { <span class="keywordflow">return</span> Utility::fract<real>(str); }<span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment"> /// \endcond</span>
+<a name="l00216"></a>00216 <span class="comment"></span><span class="comment"></span>
<a name="l00217"></a>00217 <span class="comment"> /**</span>
<a name="l00218"></a>00218 <span class="comment"> * Convert a pair of strings to latitude and longitude.</span>
<a name="l00219"></a>00219 <span class="comment"> *</span>
@@ -295,7 +310,7 @@
<a name="l00245"></a>00245 <span class="comment"> * No hemisphere designator is allowed and no check is done on the range of</span>
<a name="l00246"></a>00246 <span class="comment"> * the result.</span>
<a name="l00247"></a>00247 <span class="comment"> **********************************************************************/</span>
-<a name="l00248"></a>00248 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DecodeAngle(<span class="keyword">const</span> std::string& angstr);
+<a name="l00248"></a>00248 <span class="keyword">static</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> DecodeAngle(<span class="keyword">const</span> std::string& angstr);
<a name="l00249"></a>00249 <span class="comment"></span>
<a name="l00250"></a>00250 <span class="comment"> /**</span>
<a name="l00251"></a>00251 <span class="comment"> * Convert a string to an azimuth in degrees.</span>
@@ -308,7 +323,7 @@
<a name="l00258"></a>00258 <span class="comment"> * [-180<sup>o</sup>, 360<sup>o</sup>]. Finally the azimuth is reduced to</span>
<a name="l00259"></a>00259 <span class="comment"> * the range [-180<sup>o</sup>, 180<sup>o</sup>).</span>
<a name="l00260"></a>00260 <span class="comment"> **********************************************************************/</span>
-<a name="l00261"></a>00261 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DecodeAzimuth(<span class="keyword">const</span> std::string& azistr);
+<a name="l00261"></a>00261 <span class="keyword">static</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> DecodeAzimuth(<span class="keyword">const</span> std::string& azistr);
<a name="l00262"></a>00262 <span class="comment"></span>
<a name="l00263"></a>00263 <span class="comment"> /**</span>
<a name="l00264"></a>00264 <span class="comment"> * Convert angle (in degrees) into a DMS string (using d, ', and ").</span>
@@ -319,84 +334,117 @@
<a name="l00269"></a>00269 <span class="comment"> * @param[in] prec the number of digits after the decimal point for the</span>
<a name="l00270"></a>00270 <span class="comment"> * trailing component.</span>
<a name="l00271"></a>00271 <span class="comment"> * @param[in] ind DMS::flag value indicated additional formatting.</span>
-<a name="l00272"></a>00272 <span class="comment"> * @return formatted string</span>
-<a name="l00273"></a>00273 <span class="comment"> *</span>
-<a name="l00274"></a>00274 <span class="comment"> * The interpretation of \e ind is as follows:</span>
-<a name="l00275"></a>00275 <span class="comment"> * - ind == DMS::NONE, signed result no leading zeros on degrees except in</span>
-<a name="l00276"></a>00276 <span class="comment"> * the units place, e.g., -8d03'.</span>
-<a name="l00277"></a>00277 <span class="comment"> * - ind == DMS::LATITUDE, trailing N or S hemisphere designator, no sign,</span>
-<a name="l00278"></a>00278 <span class="comment"> * pad degrees to 2 digits, e.g., 08d03'S.</span>
-<a name="l00279"></a>00279 <span class="comment"> * - ind == DMS::LONGITUDE, trailing E or W hemisphere designator, no</span>
-<a name="l00280"></a>00280 <span class="comment"> * sign, pad degrees to 3 digits, e.g., 008d03'W.</span>
-<a name="l00281"></a>00281 <span class="comment"> * - ind == DMS::AZIMUTH, convert to the range [0, 360<sup>o</sup>), no</span>
-<a name="l00282"></a>00282 <span class="comment"> * sign, pad degrees to 3 digits, , e.g., 351d57'.</span>
-<a name="l00283"></a>00283 <span class="comment"> * .</span>
-<a name="l00284"></a>00284 <span class="comment"> * The integer parts of the minutes and seconds components are always given</span>
-<a name="l00285"></a>00285 <span class="comment"> * with 2 digits.</span>
-<a name="l00286"></a>00286 <span class="comment"> **********************************************************************/</span>
-<a name="l00287"></a>00287 <span class="keyword">static</span> std::string Encode(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> angle, component trailing, <span class="keywordtype">unsigned</span> prec,
-<a name="l00288"></a>00288 flag ind = NONE);
-<a name="l00289"></a>00289 <span class="comment"></span>
-<a name="l00290"></a>00290 <span class="comment"> /**</span>
-<a name="l00291"></a>00291 <span class="comment"> * Convert angle into a DMS string (using d, ', and ") selecting the</span>
-<a name="l00292"></a>00292 <span class="comment"> * trailing component based on the precision.</span>
-<a name="l00293"></a>00293 <span class="comment"> *</span>
-<a name="l00294"></a>00294 <span class="comment"> * @param[in] angle input angle (degrees)</span>
-<a name="l00295"></a>00295 <span class="comment"> * @param[in] prec the precision relative to 1 degree.</span>
-<a name="l00296"></a>00296 <span class="comment"> * @param[in] ind DMS::flag value indicated additional formatting.</span>
-<a name="l00297"></a>00297 <span class="comment"> * @return formatted string</span>
-<a name="l00298"></a>00298 <span class="comment"> *</span>
-<a name="l00299"></a>00299 <span class="comment"> * \e prec indicates the precision relative to 1 degree, e.g., \e prec = 3</span>
-<a name="l00300"></a>00300 <span class="comment"> * gives a result accurate to 0.1' and \e prec = 4 gives a result accurate</span>
-<a name="l00301"></a>00301 <span class="comment"> * to 1". \e ind is interpreted as in DMS::Encode with the additional</span>
-<a name="l00302"></a>00302 <span class="comment"> * facility that DMS::NUMBER represents \e angle as a number in fixed</span>
-<a name="l00303"></a>00303 <span class="comment"> * format with precision \e prec.</span>
-<a name="l00304"></a>00304 <span class="comment"> **********************************************************************/</span>
-<a name="l00305"></a><a class="code" href="classGeographicLib_1_1DMS.html#a87dd4a3eea0be6d3a45c8390e725aeb9">00305</a> <span class="keyword">static</span> std::string <a class="code" href="classGeographicLib_1_1DMS.html#a87dd4a3eea0be6d3a45c8390e725aeb9">Encode</a>(real angle, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind = NONE) {
-<a name="l00306"></a>00306 <span class="keywordflow">return</span> ind == NUMBER ? Utility::str<real>(angle, int(prec)) :
-<a name="l00307"></a>00307 Encode(angle,
-<a name="l00308"></a>00308 prec < 2 ? DEGREE : (prec < 4 ? MINUTE : SECOND),
-<a name="l00309"></a>00309 prec < 2 ? prec : (prec < 4 ? prec - 2 : prec - 4),
-<a name="l00310"></a>00310 ind);
-<a name="l00311"></a>00311 }
-<a name="l00312"></a>00312 <span class="comment"></span>
-<a name="l00313"></a>00313 <span class="comment"> /**</span>
-<a name="l00314"></a>00314 <span class="comment"> * Split angle into degrees and minutes</span>
-<a name="l00315"></a>00315 <span class="comment"> *</span>
-<a name="l00316"></a>00316 <span class="comment"> * @param[in] ang angle (degrees)</span>
-<a name="l00317"></a>00317 <span class="comment"> * @param[out] d degrees (an integer returned as a real)</span>
-<a name="l00318"></a>00318 <span class="comment"> * @param[out] m arc minutes.</span>
-<a name="l00319"></a>00319 <span class="comment"> **********************************************************************/</span>
-<a name="l00320"></a><a class="code" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">00320</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">Encode</a>(real ang, real& d, real& m) <span class="keywordflow">throw</span>() {
-<a name="l00321"></a>00321 d = int(ang); m = 60 * (ang - d);
-<a name="l00322"></a>00322 }
-<a name="l00323"></a>00323 <span class="comment"></span>
-<a name="l00324"></a>00324 <span class="comment"> /**</span>
-<a name="l00325"></a>00325 <span class="comment"> * Split angle into degrees and minutes and seconds.</span>
-<a name="l00326"></a>00326 <span class="comment"> *</span>
-<a name="l00327"></a>00327 <span class="comment"> * @param[in] ang angle (degrees)</span>
-<a name="l00328"></a>00328 <span class="comment"> * @param[out] d degrees (an integer returned as a real)</span>
-<a name="l00329"></a>00329 <span class="comment"> * @param[out] m arc minutes (an integer returned as a real)</span>
-<a name="l00330"></a>00330 <span class="comment"> * @param[out] s arc seconds.</span>
+<a name="l00272"></a>00272 <span class="comment"> * @param[in] dmssep if non-null, use as the DMS separator character</span>
+<a name="l00273"></a>00273 <span class="comment"> * (instead of d, ', " delimiters).</span>
+<a name="l00274"></a>00274 <span class="comment"> * @return formatted string</span>
+<a name="l00275"></a>00275 <span class="comment"> *</span>
+<a name="l00276"></a>00276 <span class="comment"> * The interpretation of \e ind is as follows:</span>
+<a name="l00277"></a>00277 <span class="comment"> * - ind == DMS::NONE, signed result no leading zeros on degrees except in</span>
+<a name="l00278"></a>00278 <span class="comment"> * the units place, e.g., -8d03'.</span>
+<a name="l00279"></a>00279 <span class="comment"> * - ind == DMS::LATITUDE, trailing N or S hemisphere designator, no sign,</span>
+<a name="l00280"></a>00280 <span class="comment"> * pad degrees to 2 digits, e.g., 08d03'S.</span>
+<a name="l00281"></a>00281 <span class="comment"> * - ind == DMS::LONGITUDE, trailing E or W hemisphere designator, no</span>
+<a name="l00282"></a>00282 <span class="comment"> * sign, pad degrees to 3 digits, e.g., 008d03'W.</span>
+<a name="l00283"></a>00283 <span class="comment"> * - ind == DMS::AZIMUTH, convert to the range [0, 360<sup>o</sup>), no</span>
+<a name="l00284"></a>00284 <span class="comment"> * sign, pad degrees to 3 digits, , e.g., 351d57'.</span>
+<a name="l00285"></a>00285 <span class="comment"> * .</span>
+<a name="l00286"></a>00286 <span class="comment"> * The integer parts of the minutes and seconds components are always given</span>
+<a name="l00287"></a>00287 <span class="comment"> * with 2 digits.</span>
+<a name="l00288"></a>00288 <span class="comment"> **********************************************************************/</span>
+<a name="l00289"></a>00289 <span class="keyword">static</span> std::string Encode(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> angle, component trailing, <span class="keywordtype">unsigned</span> prec,
+<a name="l00290"></a>00290 flag ind, <span class="keywordtype">char</span> dmssep);
+<a name="l00291"></a>00291 <span class="comment"></span>
+<a name="l00292"></a>00292 <span class="comment"> /**</span>
+<a name="l00293"></a>00293 <span class="comment"> * Convert angle (in degrees) into a DMS string (using d, ', and ").</span>
+<a name="l00294"></a>00294 <span class="comment"> *</span>
+<a name="l00295"></a>00295 <span class="comment"> * @param[in] angle input angle (degrees)</span>
+<a name="l00296"></a>00296 <span class="comment"> * @param[in] trailing DMS::component value indicating the trailing units</span>
+<a name="l00297"></a>00297 <span class="comment"> * on the string and this is given as a decimal number if necessary.</span>
+<a name="l00298"></a>00298 <span class="comment"> * @param[in] prec the number of digits after the decimal point for the</span>
+<a name="l00299"></a>00299 <span class="comment"> * trailing component.</span>
+<a name="l00300"></a>00300 <span class="comment"> * @param[in] ind DMS::flag value indicated additional formatting.</span>
+<a name="l00301"></a>00301 <span class="comment"> * @return formatted string</span>
+<a name="l00302"></a>00302 <span class="comment"> *</span>
+<a name="l00303"></a>00303 <span class="comment"> * <b>COMPATIBILITY NOTE:</b> This function calls</span>
+<a name="l00304"></a>00304 <span class="comment"> * Encode(real, component, unsigned, flag, char) with a 5th</span>
+<a name="l00305"></a>00305 <span class="comment"> * argument of char(0). At some point,</span>
+<a name="l00306"></a>00306 <span class="comment"> * Encode(real, component, unsigned, flag) and will be withdrawn</span>
+<a name="l00307"></a>00307 <span class="comment"> * and the interface to</span>
+<a name="l00308"></a>00308 <span class="comment"> * Encode(real, component, unsigned, flag, char) changed so that</span>
+<a name="l00309"></a>00309 <span class="comment"> * its 4th and 5th arguments have default values. This will</span>
+<a name="l00310"></a>00310 <span class="comment"> * preserve source-level compatibility.</span>
+<a name="l00311"></a>00311 <span class="comment"> **********************************************************************/</span>
+<a name="l00312"></a>00312 <span class="keyword">static</span> std::string Encode(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> angle, component trailing, <span class="keywordtype">unsigned</span> prec,
+<a name="l00313"></a>00313 flag ind = NONE);
+<a name="l00314"></a>00314 <span class="comment"></span>
+<a name="l00315"></a>00315 <span class="comment"> /**</span>
+<a name="l00316"></a>00316 <span class="comment"> * Convert angle into a DMS string (using d, ', and ") selecting the</span>
+<a name="l00317"></a>00317 <span class="comment"> * trailing component based on the precision.</span>
+<a name="l00318"></a>00318 <span class="comment"> *</span>
+<a name="l00319"></a>00319 <span class="comment"> * @param[in] angle input angle (degrees)</span>
+<a name="l00320"></a>00320 <span class="comment"> * @param[in] prec the precision relative to 1 degree.</span>
+<a name="l00321"></a>00321 <span class="comment"> * @param[in] ind DMS::flag value indicated additional formatting.</span>
+<a name="l00322"></a>00322 <span class="comment"> * @param[in] dmssep if non-null, use as the DMS separator character</span>
+<a name="l00323"></a>00323 <span class="comment"> * (instead of d, ', " delimiters).</span>
+<a name="l00324"></a>00324 <span class="comment"> * @return formatted string</span>
+<a name="l00325"></a>00325 <span class="comment"> *</span>
+<a name="l00326"></a>00326 <span class="comment"> * \e prec indicates the precision relative to 1 degree, e.g., \e prec = 3</span>
+<a name="l00327"></a>00327 <span class="comment"> * gives a result accurate to 0.1' and \e prec = 4 gives a result accurate</span>
+<a name="l00328"></a>00328 <span class="comment"> * to 1". \e ind is interpreted as in DMS::Encode with the additional</span>
+<a name="l00329"></a>00329 <span class="comment"> * facility that DMS::NUMBER represents \e angle as a number in fixed</span>
+<a name="l00330"></a>00330 <span class="comment"> * format with precision \e prec.</span>
<a name="l00331"></a>00331 <span class="comment"> **********************************************************************/</span>
-<a name="l00332"></a><a class="code" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">00332</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">Encode</a>(real ang, real& d, real& m, real& s) <span class="keywordflow">throw</span>() {
-<a name="l00333"></a>00333 d = int(ang); ang = 60 * (ang - d);
-<a name="l00334"></a>00334 m = int(ang); s = 60 * (ang - m);
-<a name="l00335"></a>00335 }
-<a name="l00336"></a>00336
-<a name="l00337"></a>00337 };
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00340"></a>00340
-<a name="l00341"></a>00341 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00342"></a>00342 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00343"></a>00343 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00344"></a>00344 <span class="preprocessor"></span>
-<a name="l00345"></a>00345 <span class="preprocessor">#endif // GEOGRAPHICLIB_DMS_HPP</span>
+<a name="l00332"></a><a class="code" href="classGeographicLib_1_1DMS.html#aeb9d338b12e885092a611bda7e52f9f4">00332</a> <span class="keyword">static</span> std::string Encode(real angle, <span class="keywordtype">unsigned</span> prec, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind = NONE,
+<a name="l00333"></a>00333 <span class="keywordtype">char</span> dmssep = <span class="keywordtype">char</span>(0)) {
+<a name="l00334"></a>00334 <span class="keywordflow">return</span> ind == NUMBER ? <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(angle, int(prec)) :
+<a name="l00335"></a>00335 Encode(angle,
+<a name="l00336"></a>00336 prec < 2 ? DEGREE : (prec < 4 ? MINUTE : SECOND),
+<a name="l00337"></a>00337 prec < 2 ? prec : (prec < 4 ? prec - 2 : prec - 4),
+<a name="l00338"></a>00338 ind, dmssep);
+<a name="l00339"></a>00339 }
+<a name="l00340"></a>00340 <span class="comment"></span>
+<a name="l00341"></a>00341 <span class="comment"> /**</span>
+<a name="l00342"></a>00342 <span class="comment"> * Split angle into degrees and minutes</span>
+<a name="l00343"></a>00343 <span class="comment"> *</span>
+<a name="l00344"></a>00344 <span class="comment"> * @param[in] ang angle (degrees)</span>
+<a name="l00345"></a>00345 <span class="comment"> * @param[out] d degrees (an integer returned as a real)</span>
+<a name="l00346"></a>00346 <span class="comment"> * @param[out] m arc minutes.</span>
+<a name="l00347"></a>00347 <span class="comment"> **********************************************************************/</span>
+<a name="l00348"></a><a class="code" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">00348</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">Encode</a>(real ang, real& d, real& m) <span class="keywordflow">throw</span>() {
+<a name="l00349"></a>00349 d = int(ang); m = 60 * (ang - d);
+<a name="l00350"></a>00350 }
+<a name="l00351"></a>00351 <span class="comment"></span>
+<a name="l00352"></a>00352 <span class="comment"> /**</span>
+<a name="l00353"></a>00353 <span class="comment"> * Split angle into degrees and minutes and seconds.</span>
+<a name="l00354"></a>00354 <span class="comment"> *</span>
+<a name="l00355"></a>00355 <span class="comment"> * @param[in] ang angle (degrees)</span>
+<a name="l00356"></a>00356 <span class="comment"> * @param[out] d degrees (an integer returned as a real)</span>
+<a name="l00357"></a>00357 <span class="comment"> * @param[out] m arc minutes (an integer returned as a real)</span>
+<a name="l00358"></a>00358 <span class="comment"> * @param[out] s arc seconds.</span>
+<a name="l00359"></a>00359 <span class="comment"> **********************************************************************/</span>
+<a name="l00360"></a><a class="code" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">00360</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">Encode</a>(real ang, real& d, real& m, real& s) <span class="keywordflow">throw</span>() {
+<a name="l00361"></a>00361 d = int(ang); ang = 60 * (ang - d);
+<a name="l00362"></a>00362 m = int(ang); s = 60 * (ang - m);
+<a name="l00363"></a>00363 }
+<a name="l00364"></a>00364
+<a name="l00365"></a>00365 };
+<a name="l00366"></a>00366
+<a name="l00367"></a>00367 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00368"></a>00368
+<a name="l00369"></a>00369 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00370"></a>00370 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00371"></a>00371 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00372"></a>00372 <span class="preprocessor"></span>
+<a name="l00373"></a>00373 <span class="preprocessor">#endif // GEOGRAPHICLIB_DMS_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/EllipticFunction_8cpp.html b/doc/html/EllipticFunction_8cpp.html
index 92dd295..dc3a8eb 100644
--- a/doc/html/EllipticFunction_8cpp.html
+++ b/doc/html/EllipticFunction_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: EllipticFunction.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8cpp.html#a7843c8be162380a81bdd1c48d00a475b">GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP</a> "$Id: 108304d60cace1c0d4ede6dba7f9c4594435f4f4 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8cpp.html#a7843c8be162380a81bdd1c48d00a475b">GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP</a> "$Id: 00b30b3d051fce1da7eb0c7e74c1c03854de6ea3 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="EllipticFunction_8cpp_source.html">EllipticFunction.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP "$Id: 108304d60cace1c0d4ede6dba7f9c4594435f4f4 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP "$Id: 00b30b3d051fce1da7eb0c7e74c1c03854de6ea3 $"</td>
</tr>
</table>
</div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/EllipticFunction_8cpp_source.html b/doc/html/EllipticFunction_8cpp_source.html
index 67a310e..1df701a 100644
--- a/doc/html/EllipticFunction_8cpp_source.html
+++ b/doc/html/EllipticFunction_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: EllipticFunction.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
<a name="l00002"></a>00002 <span class="comment"> * \file EllipticFunction.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::EllipticFunction class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="EllipticFunction_8hpp.html" title="Header for GeographicLib::EllipticFunction class.">GeographicLib/EllipticFunction.hpp</a>></span>
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="EllipticFunction_8cpp.html#a7843c8be162380a81bdd1c48d00a475b">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 108304d60cace1c0d4ede6dba7f9c4594435f4f4 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 00b30b3d051fce1da7eb0c7e74c1c03854de6ea3 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="EllipticFunction_8cpp.html#a7843c8be162380a81bdd1c48d00a475b">GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP</a>)
@@ -68,14 +83,14 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">using namespace </span>std;
<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tol_ =
+<a name="l00022"></a>00022 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tol_ =
<a name="l00023"></a>00023 numeric_limits<real>::epsilon() * <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01);
-<a name="l00024"></a>00024 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolRF_ = pow(3 * tol_, 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(6));
-<a name="l00025"></a>00025 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolRD_ =
+<a name="l00024"></a>00024 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolRF_ = pow(3 * tol_, 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(6));
+<a name="l00025"></a>00025 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolRD_ =
<a name="l00026"></a>00026 pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.25) * tol_, 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(6));
-<a name="l00027"></a>00027 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolRG0_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2.7) * sqrt(tol_);
-<a name="l00028"></a>00028 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolJAC_ = sqrt(tol_);
-<a name="l00029"></a>00029 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::tolJAC1_ = sqrt(6 * tol_);
+<a name="l00027"></a>00027 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolRG0_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2.7) * sqrt(tol_);
+<a name="l00028"></a>00028 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolJAC_ = sqrt(tol_);
+<a name="l00029"></a>00029 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::tolJAC1_ = sqrt(6 * tol_);
<a name="l00030"></a>00030
<a name="l00031"></a>00031 <span class="comment">/*</span>
<a name="l00032"></a>00032 <span class="comment"> * Implementation of methods given in</span>
@@ -85,7 +100,7 @@
<a name="l00036"></a>00036 <span class="comment"> * Numerical Algorithms 10, 13-26 (1995)</span>
<a name="l00037"></a>00037 <span class="comment"> */</span>
<a name="l00038"></a>00038
-<a name="l00039"></a>00039 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::RF(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>() {
+<a name="l00039"></a>00039 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::RF(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>() {
<a name="l00040"></a>00040 <span class="comment">// Carlson, eqs 2.2 - 2.7</span>
<a name="l00041"></a>00041 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00042"></a>00042 a0 = (x + y + z)/3,
@@ -113,7 +128,7 @@
<a name="l00064"></a>00064 <span class="keywordflow">return</span> (1 - e2 / 10 + e3 / 14 + e2 * e2 / 24 - 3 * e2 * e3 / 44) / sqrt(an);
<a name="l00065"></a>00065 }
<a name="l00066"></a>00066
-<a name="l00067"></a>00067 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::RD(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>() {
+<a name="l00067"></a>00067 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::RD(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>() {
<a name="l00068"></a>00068 <span class="comment">// Carlson, eqs 2.28 - 2.34</span>
<a name="l00069"></a>00069 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00070"></a>00070 a0 = (x + y + 3 * z)/5,
@@ -149,7 +164,7 @@
<a name="l00100"></a>00100 + 3 * s;
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102
-<a name="l00103"></a>00103 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> EllipticFunction::RG0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
+<a name="l00103"></a>00103 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> EllipticFunction::RG0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
<a name="l00104"></a>00104 <span class="comment">// Carlson, eqs 2.36 - 2.39</span>
<a name="l00105"></a>00105 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00106"></a>00106 x0 = sqrt(x),
@@ -168,7 +183,7 @@
<a name="l00119"></a>00119 s += mul * t * t;
<a name="l00120"></a>00120 }
<a name="l00121"></a>00121 x0 = (x0 + y0)/2;
-<a name="l00122"></a>00122 <span class="keywordflow">return</span> (x0 * x0 - s) * Math::pi<real>() / (2 * (xn + yn));
+<a name="l00122"></a>00122 <span class="keywordflow">return</span> (x0 * x0 - s) * Math::pi<real>() / (2 * (xn + yn));
<a name="l00123"></a>00123 }
<a name="l00124"></a>00124
<a name="l00125"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#ada122111b55eb0ab9c7b9fafb0a4b1e6">00125</a> EllipticFunction::EllipticFunction(real m) <span class="keywordflow">throw</span>()
@@ -244,7 +259,7 @@
<a name="l00195"></a>00195 }
<a name="l00196"></a>00196 }
<a name="l00197"></a>00197
-<a name="l00198"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#af1b3b2265bca5d2b52c17ca44dabffa8">00198</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> EllipticFunction::E(real sn, real cn, real dn) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00198"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#af1b3b2265bca5d2b52c17ca44dabffa8">00198</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real EllipticFunction::E(real sn, real cn, real dn) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00199"></a>00199 real
<a name="l00200"></a>00200 cn2 = cn * cn, dn2 = dn * dn, sn2 = sn * sn,
<a name="l00201"></a>00201 <span class="comment">// Carlson, eq. 4.6</span>
@@ -259,7 +274,7 @@
<a name="l00210"></a>00210 <span class="keywordflow">return</span> ei;
<a name="l00211"></a>00211 }
<a name="l00212"></a>00212
-<a name="l00213"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a8be312b5da54b01f2976416aa82e7d08">00213</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> EllipticFunction::E(real phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00213"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a8be312b5da54b01f2976416aa82e7d08">00213</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real EllipticFunction::E(real phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00214"></a>00214 real sn = sin(phi);
<a name="l00215"></a>00215 <span class="keywordflow">return</span> E(sn, cos(phi), sqrt(1 - _m * sn * sn));
<a name="l00216"></a>00216 }
@@ -267,8 +282,13 @@
<a name="l00218"></a>00218 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/EllipticFunction_8hpp.html b/doc/html/EllipticFunction_8hpp.html
index 0c45263..2001ad3 100644
--- a/doc/html/EllipticFunction_8hpp.html
+++ b/doc/html/EllipticFunction_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: EllipticFunction.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -66,17 +81,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP</a> "$Id: 1d42b41095ac447697a256ac7f71a4f969270ddd $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP</a> "$Id: 30ac447643e48afcaf5ab4671fbf2b235008dabe $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="EllipticFunction_8hpp_source.html">EllipticFunction.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -85,7 +98,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP "$Id: 1d42b41095ac447697a256ac7f71a4f969270ddd $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP "$Id: 30ac447643e48afcaf5ab4671fbf2b235008dabe $"</td>
</tr>
</table>
</div>
@@ -96,8 +109,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/EllipticFunction_8hpp_source.html b/doc/html/EllipticFunction_8hpp_source.html
index 4fe4b05..50b7287 100644
--- a/doc/html/EllipticFunction_8hpp_source.html
+++ b/doc/html/EllipticFunction_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: EllipticFunction.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file EllipticFunction.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::EllipticFunction class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP)</span>
<a name="l00011"></a><a class="code" href="EllipticFunction_8hpp.html#a94cb49e5d48fa1a0399e4303f1ad162a">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 1d42b41095ac447697a256ac7f71a4f969270ddd $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 30ac447643e48afcaf5ab4671fbf2b235008dabe $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
<a name="l00015"></a>00015
@@ -93,22 +108,22 @@
<a name="l00043"></a>00043 <span class="comment"> * Example of use:</span>
<a name="l00044"></a>00044 <span class="comment"> * \include example-EllipticFunction.cpp</span>
<a name="l00045"></a>00045 <span class="comment"> **********************************************************************/</span>
-<a name="l00046"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html">00046</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a> {
+<a name="l00046"></a>00046 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> EllipticFunction {
<a name="l00047"></a>00047 <span class="keyword">private</span>:
-<a name="l00048"></a>00048 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00050"></a>00050 <span class="keyword">static</span> <span class="keyword">const</span> real tolRF_;
-<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">const</span> real tolRD_;
-<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">const</span> real tolRG0_;
-<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keyword">const</span> real tolJAC_;
-<a name="l00054"></a>00054 <span class="keyword">static</span> <span class="keyword">const</span> real tolJAC1_;
+<a name="l00048"></a>00048 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00050"></a>00050 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolRF_;
+<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolRD_;
+<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolRG0_;
+<a name="l00053"></a>00053 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolJAC_;
+<a name="l00054"></a>00054 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tolJAC1_;
<a name="l00055"></a>00055 <span class="keyword">enum</span> { num_ = 10 }; <span class="comment">// Max depth required for sncndn. Probably 5 is enough.</span>
-<a name="l00056"></a>00056 <span class="keyword">static</span> real RF(real x, real y, real z) <span class="keywordflow">throw</span>();
-<a name="l00057"></a>00057 <span class="keyword">static</span> real RD(real x, real y, real z) <span class="keywordflow">throw</span>();
-<a name="l00058"></a>00058 <span class="keyword">static</span> real RG0(real x, real y) <span class="keywordflow">throw</span>();
-<a name="l00059"></a>00059 real _m, _m1;
+<a name="l00056"></a>00056 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> RF(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>();
+<a name="l00057"></a>00057 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> RD(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z) <span class="keywordflow">throw</span>();
+<a name="l00058"></a>00058 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> RG0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>();
+<a name="l00059"></a>00059 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _m, _m1;
<a name="l00060"></a>00060 <span class="keyword">mutable</span> <span class="keywordtype">bool</span> _init;
-<a name="l00061"></a>00061 <span class="keyword">mutable</span> real _kc, _ec, _kec;
+<a name="l00061"></a>00061 <span class="keyword">mutable</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _kc, _ec, _kec;
<a name="l00062"></a>00062 <span class="keywordtype">bool</span> Init() <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00063"></a>00063 <span class="keyword">public</span>:
<a name="l00064"></a>00064 <span class="comment"></span>
@@ -118,33 +133,33 @@
<a name="l00068"></a>00068 <span class="comment"> * @param[in] m the parameter which must lie in [0, 1]. (No checking</span>
<a name="l00069"></a>00069 <span class="comment"> * is done.)</span>
<a name="l00070"></a>00070 <span class="comment"> **********************************************************************/</span>
-<a name="l00071"></a>00071 <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a>(real m) <span class="keywordflow">throw</span>();
+<a name="l00071"></a>00071 <span class="keyword">explicit</span> EllipticFunction(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> m) <span class="keywordflow">throw</span>();
<a name="l00072"></a>00072 <span class="comment"></span>
<a name="l00073"></a>00073 <span class="comment"> /**</span>
<a name="l00074"></a>00074 <span class="comment"> * @return the parameter \e m.</span>
<a name="l00075"></a>00075 <span class="comment"> **********************************************************************/</span>
-<a name="l00076"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">00076</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">m</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m; }
+<a name="l00076"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">00076</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#aba29c348874db7880ab7b1065f03ff7c">m</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m; }
<a name="l00077"></a>00077 <span class="comment"></span>
<a name="l00078"></a>00078 <span class="comment"> /**</span>
<a name="l00079"></a>00079 <span class="comment"> * @return the complementary parameter \e m' = (1 - \e m).</span>
<a name="l00080"></a>00080 <span class="comment"> **********************************************************************/</span>
-<a name="l00081"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">00081</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">m1</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m1; }
+<a name="l00081"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">00081</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">m1</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _m1; }
<a name="l00082"></a>00082 <span class="comment"></span>
<a name="l00083"></a>00083 <span class="comment"> /**</span>
<a name="l00084"></a>00084 <span class="comment"> * @return the complete integral of first kind, \e K(\e m).</span>
<a name="l00085"></a>00085 <span class="comment"> **********************************************************************/</span>
-<a name="l00086"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">00086</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">K</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kc; }
+<a name="l00086"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">00086</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a6c6c8029d93946b32184ee964525938c">K</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kc; }
<a name="l00087"></a>00087 <span class="comment"></span>
<a name="l00088"></a>00088 <span class="comment"> /**</span>
<a name="l00089"></a>00089 <span class="comment"> * @return the complete integral of second kind, \e E(\e m).</span>
<a name="l00090"></a>00090 <span class="comment"> **********************************************************************/</span>
-<a name="l00091"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">00091</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">E</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _ec; }
+<a name="l00091"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">00091</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">E</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _ec; }
<a name="l00092"></a>00092 <span class="comment"></span>
<a name="l00093"></a>00093 <span class="comment"> /**</span>
<a name="l00094"></a>00094 <span class="comment"> * @return the difference \e K(\e m) - \e E(\e m) (which can be computed</span>
<a name="l00095"></a>00095 <span class="comment"> * directly).</span>
<a name="l00096"></a>00096 <span class="comment"> **********************************************************************/</span>
-<a name="l00097"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">00097</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">KE</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kec; }
+<a name="l00097"></a><a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">00097</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1EllipticFunction.html#a12bcdf2c3fc7bcb165318822171328f7">KE</a>() <span class="keyword">const</span> throw() { _init || Init(); <span class="keywordflow">return</span> _kec; }
<a name="l00098"></a>00098 <span class="comment"></span>
<a name="l00099"></a>00099 <span class="comment"> /**</span>
<a name="l00100"></a>00100 <span class="comment"> * The Jacobi elliptic functions.</span>
@@ -162,7 +177,7 @@
<a name="l00112"></a>00112 <span class="comment"> * @param[in] phi</span>
<a name="l00113"></a>00113 <span class="comment"> * @return int sqrt(1 - \e m sin<sup>2</sup>(\e phi)) \e dphi.</span>
<a name="l00114"></a>00114 <span class="comment"> **********************************************************************/</span>
-<a name="l00115"></a>00115 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> E(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00115"></a>00115 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> E(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> phi) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00116"></a>00116 <span class="comment"></span>
<a name="l00117"></a>00117 <span class="comment"> /**</span>
<a name="l00118"></a>00118 <span class="comment"> * The incomplete integral of the second kind in terms of Jacobi elliptic</span>
@@ -177,7 +192,7 @@
<a name="l00127"></a>00127 <span class="comment"> * phi), \e cn = cos(\e phi), \e dn = sqrt(1 - \e m sin<sup>2</sup>(\e</span>
<a name="l00128"></a>00128 <span class="comment"> * phi)).</span>
<a name="l00129"></a>00129 <span class="comment"> **********************************************************************/</span>
-<a name="l00130"></a>00130 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> E(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dn) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00130"></a>00130 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> E(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dn) <s [...]
<a name="l00131"></a>00131 };
<a name="l00132"></a>00132
<a name="l00133"></a>00133
@@ -186,8 +201,13 @@
<a name="l00136"></a>00136 <span class="preprocessor">#endif // GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeoConvert.1.html b/doc/html/GeoConvert.1.html
index 518911d..ad7f237 100644
--- a/doc/html/GeoConvert.1.html
+++ b/doc/html/GeoConvert.1.html
@@ -48,10 +48,12 @@
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
-<p><strong>GeoConvert</strong> [ <strong>-g</strong> | <strong>-d</strong> | <strong>-u</strong> | <strong>-m</strong> | <strong>-c</strong> ] [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-z</strong> <em>zone</em> | <strong>-s</strong> | <strong>-t</strong> ] [ <strong>-n</strong> ] [ <strong>-w</strong> ]
+<p><strong>GeoConvert</strong> [ <strong>-g</strong> | <strong>-d</strong> | <strong>-:</strong> | <strong>-u</strong> | <strong>-m</strong> | <strong>-c</strong> ]
+[ <strong>-p</strong> <em>prec</em> ] [ <strong>-z</strong> <em>zone</em> | <strong>-s</strong> | <strong>-t</strong> ] [ <strong>-n</strong> ] [ <strong>-w</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -68,7 +70,7 @@ is used (<em>a</em> = 6378137 m, <em>f</em> = 1/298.257223563).</p>
<dt><strong><a name="geographic" class="item"><strong>geographic</strong></a></strong></dt>
<dd>
-<p>2 tokens (output options <strong>-g</strong> or <strong>-d</strong>) given as <em>latitude</em>
+<p>2 tokens (output options <strong>-g</strong>, <strong>-d</strong>, or <strong>-:</strong>) given as <em>latitude</em>
<em>longitude</em> using decimal degrees or degrees minutes seconds. d, ',
and " are used to denote degrees, minutes, and seconds, with the least
significant designator optional. (See <a href="#quoting">QUOTING</a> for how to
@@ -125,6 +127,12 @@ grid square. For example,</p>
<dd>
<p>output latitude and longitude using degrees, minutes, and seconds (DMS).</p>
</dd>
+<dt><strong><a name="__" class="item"><strong>-:</strong></a></strong></dt>
+
+<dd>
+<p>like <strong>-d</strong>, except use : as a separator instead of the d, ', and "
+delimiters.</p>
+</dd>
<dt><strong><a name="u" class="item"><strong>-u</strong></a></strong></dt>
<dd>
@@ -179,6 +187,15 @@ square instead of the center; see <a href="#mgrs">MGRS</a>.</p>
this can be overridden by a hemisphere designator, <em>N</em>, <em>S</em>,<em>E</em>,
<em>W</em>).</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -204,8 +221,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -315,7 +338,7 @@ file <code>input.txt</code> should just contain the plain coordinates.</p>
<h1><a name="examples">EXAMPLES</a></h1>
<pre>
echo 38SMB4488 | GeoConvert => 33.33424 44.40363
- echo 38SMB4488 | GeoConvert -d -p 1 => 33d20'03.25"N 044d24'13.06"E
+ echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E
echo 38SMB4488 | GeoConvert -u => 38N 444500 3688500
echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488</pre>
<p>
diff --git a/doc/html/GeoConvert_8cpp.html b/doc/html/GeoConvert_8cpp.html
index ebb01b1..e54c2f9 100644
--- a/doc/html/GeoConvert_8cpp.html
+++ b/doc/html/GeoConvert_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeoConvert.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for geographic coordinate conversions. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2008-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o GeoConvert \ <a class="el" href="GeoConvert_8cpp.html" title="Command line utility for geographic coordinate conversions.">GeoConvert.cpp</a> \ ../src/DMS.cpp \ ../src/GeoCoords.cpp \ ../src/MGRS.cpp \ ../src/PolarStereographic.cpp \ ../src/TransverseMercator.cpp \ ../src/UTMUPS.cpp</p>
<p>See the <a href="GeoConvert.1.html">man page</a> for usage information. </p>
@@ -102,13 +117,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="GeoConvert_8cpp_source.html#l00034">34</a> of file <a class="el" href="GeoConvert_8cpp_source.html">GeoConvert.cpp</a>.</p>
-<p>References <a class="el" href="UTMUPS_8cpp_source.html#l00186">GeographicLib::UTMUPS::DecodeZone()</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00104">GeographicLib::UTMUPS::MATCH</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00144">GeographicLib::UTMUPS::MAXZONE</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00128">GeographicLib::UTMUPS::MINZONE</a>, <a class="el" href="GeoCoords_8cpp_source.html#l00027">GeographicLib::GeoCoords::Reset()</a>, <a class="el" href="UTMUPS_8h [...]
+<p>References <a class="el" href="UTMUPS_8cpp_source.html#l00186">GeographicLib::UTMUPS::DecodeZone()</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00128">GeographicLib::UTMUPS::MINZONE</a>, and <a class="el" href="UTMUPS_8hpp_source.html#l00144">GeographicLib::UTMUPS::MAXZONE</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeoConvert_8cpp_source.html b/doc/html/GeoConvert_8cpp_source.html
index b408944..0d3aaab 100644
--- a/doc/html/GeoConvert_8cpp_source.html
+++ b/doc/html/GeoConvert_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeoConvert.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file GeoConvert.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for geographic coordinate conversions</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -83,175 +98,203 @@
<a name="l00034"></a><a class="code" href="GeoConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00034</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00035"></a>00035 <span class="keywordflow">try</span> {
<a name="l00036"></a>00036 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00037"></a>00037 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00037"></a>00037 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00038"></a>00038 <span class="keyword">enum</span> { GEOGRAPHIC, <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>, <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>, <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>, CONVERGENCE };
<a name="l00039"></a>00039 <span class="keywordtype">int</span> outputmode = GEOGRAPHIC;
<a name="l00040"></a>00040 <span class="keywordtype">int</span> prec = 0;
-<a name="l00041"></a>00041 <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3b4721e27869e99ed1ae3d320">UTMUPS::MATCH</a>;
+<a name="l00041"></a>00041 <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::MATCH;
<a name="l00042"></a>00042 <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, swaplatlong = <span class="keyword">false</span>;
-<a name="l00043"></a>00043 std::string istring, ifile, ofile;
-<a name="l00044"></a>00044
-<a name="l00045"></a>00045 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00046"></a>00046 std::string arg(argv[m]);
-<a name="l00047"></a>00047 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-g"</span>)
-<a name="l00048"></a>00048 outputmode = GEOGRAPHIC;
-<a name="l00049"></a>00049 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>)
-<a name="l00050"></a>00050 outputmode = <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>;
-<a name="l00051"></a>00051 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-u"</span>)
-<a name="l00052"></a>00052 outputmode = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>;
-<a name="l00053"></a>00053 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-m"</span>)
-<a name="l00054"></a>00054 outputmode = <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>;
-<a name="l00055"></a>00055 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>)
-<a name="l00056"></a>00056 outputmode = CONVERGENCE;
-<a name="l00057"></a>00057 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>)
-<a name="l00058"></a>00058 centerp = <span class="keyword">false</span>;
-<a name="l00059"></a>00059 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-w"</span>)
-<a name="l00060"></a>00060 swaplatlong = <span class="keyword">true</span>;
-<a name="l00061"></a>00061 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
-<a name="l00062"></a>00062 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00063"></a>00063 <span class="keywordflow">try</span> {
-<a name="l00064"></a>00064 prec = Utility::num<int>(std::string(argv[m]));
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00067"></a>00067 std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
-<a name="l00068"></a>00068 <span class="keywordflow">return</span> 1;
-<a name="l00069"></a>00069 }
-<a name="l00070"></a>00070 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-z"</span>) {
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00072"></a>00072 std::string zonestr(argv[m]);
-<a name="l00073"></a>00073 <span class="keywordflow">try</span> {
-<a name="l00074"></a>00074 <span class="keywordtype">bool</span> northp;
-<a name="l00075"></a>00075 <a class="code" href="classGeographicLib_1_1UTMUPS.html#ad74d52d7ebeff195019745f791f30562">UTMUPS::DecodeZone</a>(zonestr, zone, northp);
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00078"></a>00078 std::istringstream str(zonestr);
-<a name="l00079"></a>00079 <span class="keywordtype">char</span> c;
-<a name="l00080"></a>00080 <span class="keywordflow">if</span> (!(str >> zone) || (str >> c)) {
-<a name="l00081"></a>00081 std::cerr << <span class="stringliteral">"Zone "</span> << zonestr
-<a name="l00082"></a>00082 << <span class="stringliteral">" is not a number or zone+hemisphere\n"</span>;
-<a name="l00083"></a>00083 <span class="keywordflow">return</span> 1;
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (!(zone >= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7af91adc987ae7295bfb6d3786b23c58e1">UTMUPS::MINZONE</a> && zone <= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a12dabceb6da15aa0fc94b9406aca921a">UTMUPS::MAXZONE</a>)) {
-<a name="l00086"></a>00086 std::cerr << <span class="stringliteral">"Zone "</span> << zone << <span class="stringliteral">" not in [0, 60]\n"</span>;
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> 1;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>)
-<a name="l00091"></a>00091 zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>;
-<a name="l00092"></a>00092 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>)
-<a name="l00093"></a>00093 zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aacc8f89ac6144b1e445ca21cbe9a2533">UTMUPS::UTM</a>;
-<a name="l00094"></a>00094 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00095"></a>00095 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00096"></a>00096 istring = argv[m];
-<a name="l00097"></a>00097 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00098"></a>00098 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00099"></a>00099 ifile = argv[m];
-<a name="l00100"></a>00100 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00102"></a>00102 ofile = argv[m];
-<a name="l00103"></a>00103 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00104"></a>00104 std::cout
-<a name="l00105"></a>00105 << argv[0]
-<a name="l00106"></a>00106 << <span class="stringliteral">": $Id: e4d712327e515af5fc1f322b2bd55ddc3f91546a $\n"</span>
-<a name="l00107"></a>00107 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00108"></a>00108 <span class="keywordflow">return</span> 0;
-<a name="l00109"></a>00109 } <span class="keywordflow">else</span>
-<a name="l00110"></a>00110 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00114"></a>00114 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00115"></a>00115 <span class="keywordflow">return</span> 1;
-<a name="l00116"></a>00116 }
-<a name="l00117"></a>00117 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00118"></a>00118 std::ifstream infile;
-<a name="l00119"></a>00119 std::istringstream instring;
-<a name="l00120"></a>00120 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00121"></a>00121 infile.open(ifile.c_str());
-<a name="l00122"></a>00122 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00123"></a>00123 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00124"></a>00124 <span class="keywordflow">return</span> 1;
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00127"></a>00127 std::string::size_type m = 0;
-<a name="l00128"></a>00128 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00129"></a>00129 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00130"></a>00130 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00131"></a>00131 <span class="keywordflow">break</span>;
-<a name="l00132"></a>00132 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 instring.str(istring);
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00137"></a>00137 (!istring.empty() ? &instring : &std::cin);
-<a name="l00138"></a>00138
-<a name="l00139"></a>00139 std::ofstream outfile;
-<a name="l00140"></a>00140 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00142"></a>00142 outfile.open(ofile.c_str());
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00144"></a>00144 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00145"></a>00145 <span class="keywordflow">return</span> 1;
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
-<a name="l00149"></a>00149
-<a name="l00150"></a>00150 <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
-<a name="l00151"></a>00151 std::string s;
-<a name="l00152"></a>00152 std::string os;
-<a name="l00153"></a>00153 <span class="keywordtype">int</span> retval = 0;
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00156"></a>00156 <span class="keywordflow">try</span> {
-<a name="l00157"></a>00157 p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(s, centerp, swaplatlong);
-<a name="l00158"></a>00158 p.SetAltZone(zone);
-<a name="l00159"></a>00159 <span class="keywordflow">switch</span> (outputmode) {
-<a name="l00160"></a>00160 <span class="keywordflow">case</span> GEOGRAPHIC:
-<a name="l00161"></a>00161 os = p.GeoRepresentation(prec, swaplatlong);
-<a name="l00162"></a>00162 <span class="keywordflow">break</span>;
-<a name="l00163"></a>00163 <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>:
-<a name="l00164"></a>00164 os = p.DMSRepresentation(prec, swaplatlong);
-<a name="l00165"></a>00165 <span class="keywordflow">break</span>;
-<a name="l00166"></a>00166 <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>:
-<a name="l00167"></a>00167 os = p.AltUTMUPSRepresentation(prec);
-<a name="l00168"></a>00168 <span class="keywordflow">break</span>;
-<a name="l00169"></a>00169 <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>:
-<a name="l00170"></a>00170 os = p.AltMGRSRepresentation(prec);
-<a name="l00171"></a>00171 <span class="keywordflow">break</span>;
-<a name="l00172"></a>00172 <span class="keywordflow">case</span> CONVERGENCE:
-<a name="l00173"></a>00173 {
-<a name="l00174"></a>00174 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00175"></a>00175 gamma = p.AltConvergence(),
-<a name="l00176"></a>00176 k = p.AltScale();
-<a name="l00177"></a>00177 os =
-<a name="l00178"></a>00178 Utility::str<real>(gamma, std::max(-5,std::min(8,prec))+5)
-<a name="l00179"></a>00179 + <span class="stringliteral">" "</span> +
-<a name="l00180"></a>00180 Utility::str<real>(k, std::max(-5,std::min(8,prec))+7);
-<a name="l00181"></a>00181 }
-<a name="l00182"></a>00182 }
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00185"></a>00185 <span class="comment">// Write error message to cout so output lines match input lines</span>
-<a name="l00186"></a>00186 os = std::string(<span class="stringliteral">"ERROR: "</span>) + e.what();
-<a name="l00187"></a>00187 retval = 1;
-<a name="l00188"></a>00188 }
-<a name="l00189"></a>00189 *output << os << <span class="stringliteral">"\n"</span>;
-<a name="l00190"></a>00190 }
-<a name="l00191"></a>00191 <span class="keywordflow">return</span> retval;
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00194"></a>00194 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00195"></a>00195 <span class="keywordflow">return</span> 1;
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197 <span class="keywordflow">catch</span> (...) {
-<a name="l00198"></a>00198 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00199"></a>00199 <span class="keywordflow">return</span> 1;
-<a name="l00200"></a>00200 }
-<a name="l00201"></a>00201 }
+<a name="l00043"></a>00043 std::string istring, ifile, ofile, cdelim;
+<a name="l00044"></a>00044 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>, dmssep = char(0);
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00047"></a>00047 std::string arg(argv[m]);
+<a name="l00048"></a>00048 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-g"</span>)
+<a name="l00049"></a>00049 outputmode = GEOGRAPHIC;
+<a name="l00050"></a>00050 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00051"></a>00051 outputmode = <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>;
+<a name="l00052"></a>00052 dmssep = <span class="charliteral">'\0'</span>;
+<a name="l00053"></a>00053 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-:"</span>) {
+<a name="l00054"></a>00054 outputmode = <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>;
+<a name="l00055"></a>00055 dmssep = <span class="charliteral">':'</span>;
+<a name="l00056"></a>00056 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-u"</span>)
+<a name="l00057"></a>00057 outputmode = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>;
+<a name="l00058"></a>00058 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-m"</span>)
+<a name="l00059"></a>00059 outputmode = <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>;
+<a name="l00060"></a>00060 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>)
+<a name="l00061"></a>00061 outputmode = CONVERGENCE;
+<a name="l00062"></a>00062 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>)
+<a name="l00063"></a>00063 centerp = <span class="keyword">false</span>;
+<a name="l00064"></a>00064 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-w"</span>)
+<a name="l00065"></a>00065 swaplatlong = <span class="keyword">true</span>;
+<a name="l00066"></a>00066 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
+<a name="l00067"></a>00067 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00068"></a>00068 <span class="keywordflow">try</span> {
+<a name="l00069"></a>00069 prec = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(std::string(argv[m]));
+<a name="l00070"></a>00070 }
+<a name="l00071"></a>00071 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00072"></a>00072 std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> 1;
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-z"</span>) {
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00077"></a>00077 std::string zonestr(argv[m]);
+<a name="l00078"></a>00078 <span class="keywordflow">try</span> {
+<a name="l00079"></a>00079 <span class="keywordtype">bool</span> northp;
+<a name="l00080"></a>00080 <a class="code" href="classGeographicLib_1_1UTMUPS.html#ad74d52d7ebeff195019745f791f30562">UTMUPS::DecodeZone</a>(zonestr, zone, northp);
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00083"></a>00083 std::istringstream str(zonestr);
+<a name="l00084"></a>00084 <span class="keywordtype">char</span> c;
+<a name="l00085"></a>00085 <span class="keywordflow">if</span> (!(str >> zone) || (str >> c)) {
+<a name="l00086"></a>00086 std::cerr << <span class="stringliteral">"Zone "</span> << zonestr
+<a name="l00087"></a>00087 << <span class="stringliteral">" is not a number or zone+hemisphere\n"</span>;
+<a name="l00088"></a>00088 <span class="keywordflow">return</span> 1;
+<a name="l00089"></a>00089 }
+<a name="l00090"></a>00090 <span class="keywordflow">if</span> (!(zone >= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7af91adc987ae7295bfb6d3786b23c58e1">UTMUPS::MINZONE</a> && zone <= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a12dabceb6da15aa0fc94b9406aca921a">UTMUPS::MAXZONE</a>)) {
+<a name="l00091"></a>00091 std::cerr << <span class="stringliteral">"Zone "</span> << zone << <span class="stringliteral">" not in [0, 60]\n"</span>;
+<a name="l00092"></a>00092 <span class="keywordflow">return</span> 1;
+<a name="l00093"></a>00093 }
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>)
+<a name="l00096"></a>00096 zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::STANDARD;
+<a name="l00097"></a>00097 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>)
+<a name="l00098"></a>00098 zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::UTM;
+<a name="l00099"></a>00099 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00101"></a>00101 istring = argv[m];
+<a name="l00102"></a>00102 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104 ifile = argv[m];
+<a name="l00105"></a>00105 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00107"></a>00107 ofile = argv[m];
+<a name="l00108"></a>00108 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00109"></a>00109 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00111"></a>00111 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> 1;
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 lsep = argv[m][0];
+<a name="l00115"></a>00115 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00117"></a>00117 cdelim = argv[m];
+<a name="l00118"></a>00118 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00119"></a>00119 std::cout
+<a name="l00120"></a>00120 << argv[0]
+<a name="l00121"></a>00121 << <span class="stringliteral">": $Id: e39b9974b58d123fd979b1c3c086ae3ccccba72d $\n"</span>
+<a name="l00122"></a>00122 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> 0;
+<a name="l00124"></a>00124 } <span class="keywordflow">else</span>
+<a name="l00125"></a>00125 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00126"></a>00126 }
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00129"></a>00129 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00130"></a>00130 <span class="keywordflow">return</span> 1;
+<a name="l00131"></a>00131 }
+<a name="l00132"></a>00132 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00133"></a>00133 std::ifstream infile;
+<a name="l00134"></a>00134 std::istringstream instring;
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00136"></a>00136 infile.open(ifile.c_str());
+<a name="l00137"></a>00137 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00138"></a>00138 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> 1;
+<a name="l00140"></a>00140 }
+<a name="l00141"></a>00141 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00142"></a>00142 std::string::size_type m = 0;
+<a name="l00143"></a>00143 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00144"></a>00144 m = istring.find(lsep, m);
+<a name="l00145"></a>00145 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00146"></a>00146 <span class="keywordflow">break</span>;
+<a name="l00147"></a>00147 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 instring.str(istring);
+<a name="l00150"></a>00150 }
+<a name="l00151"></a>00151 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00152"></a>00152 (!istring.empty() ? &instring : &std::cin);
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 std::ofstream outfile;
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00156"></a>00156 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00157"></a>00157 outfile.open(ofile.c_str());
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00159"></a>00159 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00160"></a>00160 <span class="keywordflow">return</span> 1;
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 }
+<a name="l00163"></a>00163 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
+<a name="l00166"></a>00166 std::string s;
+<a name="l00167"></a>00167 std::string os;
+<a name="l00168"></a>00168 <span class="keywordtype">int</span> retval = 0;
+<a name="l00169"></a>00169
+<a name="l00170"></a>00170 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00171"></a>00171 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00172"></a>00172 <span class="keywordflow">try</span> {
+<a name="l00173"></a>00173 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00174"></a>00174 std::string::size_type m = s.find(cdelim);
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00176"></a>00176 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00177"></a>00177 s = s.substr(0, m);
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179 }
+<a name="l00180"></a>00180 p.Reset(s, centerp, swaplatlong);
+<a name="l00181"></a>00181 p.SetAltZone(zone);
+<a name="l00182"></a>00182 <span class="keywordflow">switch</span> (outputmode) {
+<a name="l00183"></a>00183 <span class="keywordflow">case</span> GEOGRAPHIC:
+<a name="l00184"></a>00184 os = p.GeoRepresentation(prec, swaplatlong);
+<a name="l00185"></a>00185 <span class="keywordflow">break</span>;
+<a name="l00186"></a>00186 <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>:
+<a name="l00187"></a>00187 os = p.DMSRepresentation(prec, swaplatlong, dmssep);
+<a name="l00188"></a>00188 <span class="keywordflow">break</span>;
+<a name="l00189"></a>00189 <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>:
+<a name="l00190"></a>00190 os = p.AltUTMUPSRepresentation(prec);
+<a name="l00191"></a>00191 <span class="keywordflow">break</span>;
+<a name="l00192"></a>00192 <span class="keywordflow">case</span> <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>:
+<a name="l00193"></a>00193 os = p.AltMGRSRepresentation(prec);
+<a name="l00194"></a>00194 <span class="keywordflow">break</span>;
+<a name="l00195"></a>00195 <span class="keywordflow">case</span> CONVERGENCE:
+<a name="l00196"></a>00196 {
+<a name="l00197"></a>00197 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00198"></a>00198 gamma = p.AltConvergence(),
+<a name="l00199"></a>00199 k = p.AltScale();
+<a name="l00200"></a>00200 os =
+<a name="l00201"></a>00201 <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, std::max(-5,std::min(8,prec))+5)
+<a name="l00202"></a>00202 + <span class="stringliteral">" "</span> +
+<a name="l00203"></a>00203 Utility::str<real>(k, std::max(-5,std::min(8,prec))+7);
+<a name="l00204"></a>00204 }
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00208"></a>00208 <span class="comment">// Write error message to cout so output lines match input lines</span>
+<a name="l00209"></a>00209 os = std::string(<span class="stringliteral">"ERROR: "</span>) + e.what();
+<a name="l00210"></a>00210 retval = 1;
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212 *output << os << eol;
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 <span class="keywordflow">return</span> retval;
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00217"></a>00217 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00218"></a>00218 <span class="keywordflow">return</span> 1;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 <span class="keywordflow">catch</span> (...) {
+<a name="l00221"></a>00221 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00222"></a>00222 <span class="keywordflow">return</span> 1;
+<a name="l00223"></a>00223 }
+<a name="l00224"></a>00224 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeoCoords_8cpp.html b/doc/html/GeoCoords_8cpp.html
index 40d5ed9..2288d78 100644
--- a/doc/html/GeoCoords_8cpp.html
+++ b/doc/html/GeoCoords_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeoCoords.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -65,17 +80,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8cpp.html#a8ca6643c26cc3909b0935409c1dbc403">GEOGRAPHICLIB_GEOCOORDS_CPP</a> "$Id: c54c9573960066921839ad1a80350d4df86020d5 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8cpp.html#a8ca6643c26cc3909b0935409c1dbc403">GEOGRAPHICLIB_GEOCOORDS_CPP</a> "$Id: 084d4ec9163dc9d8989b54b12a04bf0f44a8c23f $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -84,7 +97,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEOCOORDS_CPP "$Id: c54c9573960066921839ad1a80350d4df86020d5 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEOCOORDS_CPP "$Id: 084d4ec9163dc9d8989b54b12a04bf0f44a8c23f $"</td>
</tr>
</table>
</div>
@@ -95,8 +108,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeoCoords_8cpp_source.html b/doc/html/GeoCoords_8cpp_source.html
index 7f6bcee..3aa7831 100644
--- a/doc/html/GeoCoords_8cpp_source.html
+++ b/doc/html/GeoCoords_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeoCoords.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file GeoCoords.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::GeoCoords class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
@@ -64,7 +79,7 @@
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="DMS_8hpp.html" title="Header for GeographicLib::DMS class.">GeographicLib/DMS.hpp</a>></span>
<a name="l00016"></a>00016
<a name="l00017"></a><a class="code" href="GeoCoords_8cpp.html#a8ca6643c26cc3909b0935409c1dbc403">00017</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEOCOORDS_CPP \</span>
-<a name="l00018"></a>00018 <span class="preprocessor"> "$Id: c54c9573960066921839ad1a80350d4df86020d5 $"</span>
+<a name="l00018"></a>00018 <span class="preprocessor"> "$Id: 084d4ec9163dc9d8989b54b12a04bf0f44a8c23f $"</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GeoCoords_8cpp.html#a8ca6643c26cc3909b0935409c1dbc403">GEOGRAPHICLIB_GEOCOORDS_CPP</a>)
<a name="l00021"></a>00021 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GeoCoords_8hpp.html#a20841ff1ac217be34150ce32c5ad4bb8">GEOGRAPHICLIB_GEOCOORDS_HPP</a>)
@@ -76,7 +91,7 @@
<a name="l00027"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">00027</a> <span class="keywordtype">void</span> GeoCoords::Reset(<span class="keyword">const</span> std::string& s, <span class="keywordtype">bool</span> centerp, <span class="keywordtype">bool</span> swaplatlong) {
<a name="l00028"></a>00028 vector<string> sa;
<a name="l00029"></a>00029 <span class="keyword">const</span> <span class="keywordtype">char</span>* spaces = <span class="stringliteral">" \t\n\v\f\r,"</span>; <span class="comment">// Include comma as a space</span>
-<a name="l00030"></a>00030 <span class="keywordflow">for</span> (string::size_type pos0 = 0, pos1; pos0 != string::npos;) {
+<a name="l00030"></a>00030 <span class="keywordflow">for</span> (string::size_type pos0 = 0, pos1; pos0 != <span class="keywordtype">string</span>::npos;) {
<a name="l00031"></a>00031 pos1 = s.find_first_not_of(spaces, pos0);
<a name="l00032"></a>00032 <span class="keywordflow">if</span> (pos1 == string::npos)
<a name="l00033"></a>00033 <span class="keywordflow">break</span>;
@@ -134,81 +149,90 @@
<a name="l00085"></a>00085 <span class="keywordflow">return</span> os.str();
<a name="l00086"></a>00086 }
<a name="l00087"></a>00087
-<a name="l00088"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">00088</a> <span class="keywordtype">string</span> GeoCoords::DMSRepresentation(<span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> swaplatlong)<span class="keyword"> const </span>{
-<a name="l00089"></a>00089 prec = max(0, min(10, prec) + 5);
-<a name="l00090"></a>00090 <span class="keywordflow">return</span> DMS::Encode(swaplatlong ? _long : _lat, <span class="keywordtype">unsigned</span>(prec),
-<a name="l00091"></a>00091 swaplatlong ? DMS::LONGITUDE : DMS::LATITUDE) +
-<a name="l00092"></a>00092 <span class="stringliteral">" "</span> + DMS::Encode(swaplatlong ? _lat : _long, <span class="keywordtype">unsigned</span>(prec),
-<a name="l00093"></a>00093 swaplatlong ? DMS::LATITUDE : DMS::LONGITUDE);
-<a name="l00094"></a>00094 }
-<a name="l00095"></a>00095
-<a name="l00096"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a36594aaa4f293b0ddf00b1c78bb04595">00096</a> <span class="keywordtype">string</span> GeoCoords::MGRSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
-<a name="l00097"></a>00097 <span class="comment">// Max precision is um</span>
-<a name="l00098"></a>00098 prec = max(0, min(6, prec) + 5);
-<a name="l00099"></a>00099 <span class="keywordtype">string</span> mgrs;
-<a name="l00100"></a>00100 MGRS::Forward(_zone, _northp, _easting, _northing, _lat, prec, mgrs);
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> mgrs;
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ad602893cd4a81ccc511daff76b411413">00104</a> <span class="keywordtype">string</span> GeoCoords::AltMGRSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
-<a name="l00105"></a>00105 <span class="comment">// Max precision is um</span>
-<a name="l00106"></a>00106 prec = max(0, min(6, prec) + 5);
-<a name="l00107"></a>00107 <span class="keywordtype">string</span> mgrs;
-<a name="l00108"></a>00108 MGRS::Forward(_alt_zone, _northp, _alt_easting, _alt_northing, _lat, prec,
-<a name="l00109"></a>00109 mgrs);
-<a name="l00110"></a>00110 <span class="keywordflow">return</span> mgrs;
-<a name="l00111"></a>00111 }
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keywordtype">void</span> GeoCoords::UTMUPSString(<span class="keywordtype">int</span> zone, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> northing, <span class="keywordtype">int</span> prec,
-<a name="l00114"></a>00114 std::string& utm)<span class="keyword"> const </span>{
-<a name="l00115"></a>00115 ostringstream os;
-<a name="l00116"></a>00116 prec = max(-5, min(9, prec));
-<a name="l00117"></a>00117 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> scale = prec < 0 ? pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10), -prec) : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1);
-<a name="l00118"></a>00118 os << UTMUPS::EncodeZone(zone, _northp) << fixed << setfill(<span class="charliteral">'0'</span>);
-<a name="l00119"></a>00119 <span class="keywordflow">if</span> (Math::isfinite(easting)) {
-<a name="l00120"></a>00120 os << <span class="stringliteral">" "</span> << setprecision(max(0, prec)) << easting / scale;
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (prec < 0 && abs(easting / scale) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))
-<a name="l00122"></a>00122 os << setw(-prec) << 0;
-<a name="l00123"></a>00123 } <span class="keywordflow">else</span>
-<a name="l00124"></a>00124 os << <span class="stringliteral">" nan"</span>;
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (Math::isfinite(northing)) {
-<a name="l00126"></a>00126 os << <span class="stringliteral">" "</span> << setprecision(max(0, prec)) << northing / scale;
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (prec < 0 && abs(northing / scale) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))
-<a name="l00128"></a>00128 os << setw(-prec) << 0;
-<a name="l00129"></a>00129 } <span class="keywordflow">else</span>
-<a name="l00130"></a>00130 os << <span class="stringliteral">" nan"</span>;
-<a name="l00131"></a>00131 utm = os.str();
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133
-<a name="l00134"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">00134</a> <span class="keywordtype">string</span> GeoCoords::UTMUPSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
-<a name="l00135"></a>00135 <span class="keywordtype">string</span> utm;
-<a name="l00136"></a>00136 UTMUPSString(_zone, _easting, _northing, prec, utm);
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> utm;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139
-<a name="l00140"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a020732ccba257d7f5248692afd318b93">00140</a> <span class="keywordtype">string</span> GeoCoords::AltUTMUPSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
-<a name="l00141"></a>00141 <span class="keywordtype">string</span> utm;
-<a name="l00142"></a>00142 UTMUPSString(_alt_zone, _alt_easting, _alt_northing, prec, utm);
-<a name="l00143"></a>00143 <span class="keywordflow">return</span> utm;
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146 <span class="keywordtype">void</span> GeoCoords::FixHemisphere() {
-<a name="l00147"></a>00147 <span class="keywordflow">if</span> (_lat == 0 || (_northp && _lat >= 0) || (!_northp && _lat < 0) ||
-<a name="l00148"></a>00148 Math::isnan(_lat))
-<a name="l00149"></a>00149 <span class="comment">// Allow either hemisphere for equator</span>
-<a name="l00150"></a>00150 <span class="keywordflow">return</span>;
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (_zone != UTMUPS::UPS) {
-<a name="l00152"></a>00152 _northing += (_northp ? 1 : -1) * UTMUPS::UTMShift();
-<a name="l00153"></a>00153 _northp = !_northp;
-<a name="l00154"></a>00154 } <span class="keywordflow">else</span>
-<a name="l00155"></a>00155 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Hemisphere mixup"</span>);
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00088"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">00088</a> <span class="keywordtype">string</span> GeoCoords::DMSRepresentation(<span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> swaplatlong,
+<a name="l00089"></a>00089 <span class="keywordtype">char</span> dmssep)<span class="keyword"> const </span>{
+<a name="l00090"></a>00090 prec = max(0, min(10, prec) + 5);
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> DMS::Encode(swaplatlong ? _long : _lat, <span class="keywordtype">unsigned</span>(prec),
+<a name="l00092"></a>00092 swaplatlong ? DMS::LONGITUDE : DMS::LATITUDE, dmssep) +
+<a name="l00093"></a>00093 <span class="stringliteral">" "</span> + DMS::Encode(swaplatlong ? _lat : _long, <span class="keywordtype">unsigned</span>(prec),
+<a name="l00094"></a>00094 swaplatlong ? DMS::LATITUDE : DMS::LONGITUDE, dmssep);
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096
+<a name="l00097"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">00097</a> <span class="keywordtype">string</span> GeoCoords::DMSRepresentation(<span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> swaplatlong)<span class="keyword"> const</span>
+<a name="l00098"></a>00098 <span class="keyword"> </span>{ <span class="keywordflow">return</span> DMSRepresentation(prec, swaplatlong, <span class="keywordtype">char</span>(0)); }
+<a name="l00099"></a>00099
+<a name="l00100"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a36594aaa4f293b0ddf00b1c78bb04595">00100</a> <span class="keywordtype">string</span> GeoCoords::MGRSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
+<a name="l00101"></a>00101 <span class="comment">// Max precision is um</span>
+<a name="l00102"></a>00102 prec = max(0, min(6, prec) + 5);
+<a name="l00103"></a>00103 <span class="keywordtype">string</span> mgrs;
+<a name="l00104"></a>00104 MGRS::Forward(_zone, _northp, _easting, _northing, _lat, prec, mgrs);
+<a name="l00105"></a>00105 <span class="keywordflow">return</span> mgrs;
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00108"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ad602893cd4a81ccc511daff76b411413">00108</a> <span class="keywordtype">string</span> GeoCoords::AltMGRSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
+<a name="l00109"></a>00109 <span class="comment">// Max precision is um</span>
+<a name="l00110"></a>00110 prec = max(0, min(6, prec) + 5);
+<a name="l00111"></a>00111 <span class="keywordtype">string</span> mgrs;
+<a name="l00112"></a>00112 MGRS::Forward(_alt_zone, _northp, _alt_easting, _alt_northing, _lat, prec,
+<a name="l00113"></a>00113 mgrs);
+<a name="l00114"></a>00114 <span class="keywordflow">return</span> mgrs;
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116
+<a name="l00117"></a>00117 <span class="keywordtype">void</span> GeoCoords::UTMUPSString(<span class="keywordtype">int</span> zone, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> northing, <span class="keywordtype">int</span> prec,
+<a name="l00118"></a>00118 std::string& utm)<span class="keyword"> const </span>{
+<a name="l00119"></a>00119 ostringstream os;
+<a name="l00120"></a>00120 prec = max(-5, min(9, prec));
+<a name="l00121"></a>00121 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> scale = prec < 0 ? pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10), -prec) : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1);
+<a name="l00122"></a>00122 os << UTMUPS::EncodeZone(zone, _northp) << fixed << setfill(<span class="charliteral">'0'</span>);
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (Math::isfinite(easting)) {
+<a name="l00124"></a>00124 os << <span class="stringliteral">" "</span> << setprecision(max(0, prec)) << easting / scale;
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (prec < 0 && abs(easting / scale) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))
+<a name="l00126"></a>00126 os << setw(-prec) << 0;
+<a name="l00127"></a>00127 } <span class="keywordflow">else</span>
+<a name="l00128"></a>00128 os << <span class="stringliteral">" nan"</span>;
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> (Math::isfinite(northing)) {
+<a name="l00130"></a>00130 os << <span class="stringliteral">" "</span> << setprecision(max(0, prec)) << northing / scale;
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (prec < 0 && abs(northing / scale) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5))
+<a name="l00132"></a>00132 os << setw(-prec) << 0;
+<a name="l00133"></a>00133 } <span class="keywordflow">else</span>
+<a name="l00134"></a>00134 os << <span class="stringliteral">" nan"</span>;
+<a name="l00135"></a>00135 utm = os.str();
+<a name="l00136"></a>00136 }
+<a name="l00137"></a>00137
+<a name="l00138"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">00138</a> <span class="keywordtype">string</span> GeoCoords::UTMUPSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
+<a name="l00139"></a>00139 <span class="keywordtype">string</span> utm;
+<a name="l00140"></a>00140 UTMUPSString(_zone, _easting, _northing, prec, utm);
+<a name="l00141"></a>00141 <span class="keywordflow">return</span> utm;
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143
+<a name="l00144"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a020732ccba257d7f5248692afd318b93">00144</a> <span class="keywordtype">string</span> GeoCoords::AltUTMUPSRepresentation(<span class="keywordtype">int</span> prec)<span class="keyword"> const </span>{
+<a name="l00145"></a>00145 <span class="keywordtype">string</span> utm;
+<a name="l00146"></a>00146 UTMUPSString(_alt_zone, _alt_easting, _alt_northing, prec, utm);
+<a name="l00147"></a>00147 <span class="keywordflow">return</span> utm;
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149
+<a name="l00150"></a>00150 <span class="keywordtype">void</span> GeoCoords::FixHemisphere() {
+<a name="l00151"></a>00151 <span class="keywordflow">if</span> (_lat == 0 || (_northp && _lat >= 0) || (!_northp && _lat < 0) ||
+<a name="l00152"></a>00152 Math::isnan(_lat))
+<a name="l00153"></a>00153 <span class="comment">// Allow either hemisphere for equator</span>
+<a name="l00154"></a>00154 <span class="keywordflow">return</span>;
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (_zone != UTMUPS::UPS) {
+<a name="l00156"></a>00156 _northing += (_northp ? 1 : -1) * UTMUPS::UTMShift();
+<a name="l00157"></a>00157 _northp = !_northp;
+<a name="l00158"></a>00158 } <span class="keywordflow">else</span>
+<a name="l00159"></a>00159 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Hemisphere mixup"</span>);
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeoCoords_8hpp.html b/doc/html/GeoCoords_8hpp.html
index a41f81b..bc49a28 100644
--- a/doc/html/GeoCoords_8hpp.html
+++ b/doc/html/GeoCoords_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeoCoords.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8hpp.html#a20841ff1ac217be34150ce32c5ad4bb8">GEOGRAPHICLIB_GEOCOORDS_HPP</a> "$Id: fc52421e0cbb368e60f7ac14a3eac25e5e9c0ca6 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8hpp.html#a20841ff1ac217be34150ce32c5ad4bb8">GEOGRAPHICLIB_GEOCOORDS_HPP</a> "$Id: e706d3a35c3be0e2beaf39041cac29beb468a5aa $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEOCOORDS_HPP "$Id: fc52421e0cbb368e60f7ac14a3eac25e5e9c0ca6 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEOCOORDS_HPP "$Id: e706d3a35c3be0e2beaf39041cac29beb468a5aa $"</td>
</tr>
</table>
</div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeoCoords_8hpp_source.html b/doc/html/GeoCoords_8hpp_source.html
index 7a356b6..f347473 100644
--- a/doc/html/GeoCoords_8hpp_source.html
+++ b/doc/html/GeoCoords_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeoCoords.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file GeoCoords.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::GeoCoords class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#ifndef GEOGRAPHICLIB_GEOCOORDS_HPP</span>
<a name="l00011"></a><a class="code" href="GeoCoords_8hpp.html#a20841ff1ac217be34150ce32c5ad4bb8">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEOCOORDS_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: fc52421e0cbb368e60f7ac14a3eac25e5e9c0ca6 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: e706d3a35c3be0e2beaf39041cac29beb468a5aa $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="UTMUPS_8hpp.html" title="Header for GeographicLib::UTMUPS class.">GeographicLib/UTMUPS.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -93,416 +108,452 @@
<a name="l00043"></a>00043 <span class="comment"> *</span>
<a name="l00044"></a>00044 <span class="comment"> * Example of use:</span>
<a name="l00045"></a>00045 <span class="comment"> * \include example-GeoCoords.cpp</span>
-<a name="l00046"></a>00046 <span class="comment"> **********************************************************************/</span>
-<a name="l00047"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html">00047</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> {
-<a name="l00048"></a>00048 <span class="keyword">private</span>:
-<a name="l00049"></a>00049 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00050"></a>00050 real _lat, _long, _easting, _northing, _gamma, _k;
-<a name="l00051"></a>00051 <span class="keywordtype">bool</span> _northp;
-<a name="l00052"></a>00052 <span class="keywordtype">int</span> _zone; <span class="comment">// See UTMUPS::zonespec</span>
-<a name="l00053"></a>00053 <span class="keyword">mutable</span> real _alt_easting, _alt_northing, _alt_gamma, _alt_k;
-<a name="l00054"></a>00054 <span class="keyword">mutable</span> <span class="keywordtype">int</span> _alt_zone;
-<a name="l00055"></a>00055
-<a name="l00056"></a>00056 <span class="keywordtype">void</span> CopyToAlt() <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00057"></a>00057 _alt_easting = _easting;
-<a name="l00058"></a>00058 _alt_northing = _northing;
-<a name="l00059"></a>00059 _alt_gamma = _gamma;
-<a name="l00060"></a>00060 _alt_k = _k;
-<a name="l00061"></a>00061 _alt_zone = _zone;
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063 <span class="keywordtype">void</span> UTMUPSString(<span class="keywordtype">int</span> zone, real easting, real northing,
-<a name="l00064"></a>00064 <span class="keywordtype">int</span> prec, std::string& utm) <span class="keyword">const</span>;
-<a name="l00065"></a>00065 <span class="keywordtype">void</span> FixHemisphere();
-<a name="l00066"></a>00066 <span class="keyword">public</span>:
-<a name="l00067"></a>00067 <span class="comment"></span>
-<a name="l00068"></a>00068 <span class="comment"> /** \name Initializing the GeoCoords object</span>
-<a name="l00069"></a>00069 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00070"></a>00070 <span class="comment"> ///@{</span>
-<a name="l00071"></a>00071 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00072"></a>00072 <span class="comment"> * The default constructor is equivalent to \e latitude = 90<sup>o</sup>,</span>
-<a name="l00073"></a>00073 <span class="comment"> * \e longitude = 0<sup>o</sup>.</span>
-<a name="l00074"></a>00074 <span class="comment"> **********************************************************************/</span>
-<a name="l00075"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a8b3f4a919ba4478c4fec0e7b01e84c57">00075</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a>() throw()
-<a name="l00076"></a>00076 <span class="comment">// This is the N pole</span>
-<a name="l00077"></a>00077 : _lat(90)
-<a name="l00078"></a>00078 , _long(0)
-<a name="l00079"></a>00079 , _easting(2000000)
-<a name="l00080"></a>00080 , _northing(2000000)
-<a name="l00081"></a>00081 , _northp(true)
-<a name="l00082"></a>00082 , _zone(0)
-<a name="l00083"></a>00083 { CopyToAlt(); }
-<a name="l00084"></a>00084 <span class="comment"></span>
-<a name="l00085"></a>00085 <span class="comment"> /**</span>
-<a name="l00086"></a>00086 <span class="comment"> * Construct from a string.</span>
-<a name="l00087"></a>00087 <span class="comment"> *</span>
-<a name="l00088"></a>00088 <span class="comment"> * @param[in] s 1-element, 2-element, or 3-element string representation of</span>
-<a name="l00089"></a>00089 <span class="comment"> * the position.</span>
-<a name="l00090"></a>00090 <span class="comment"> * @param[in] centerp governs the interpretation of MGRS coordinates (see</span>
-<a name="l00091"></a>00091 <span class="comment"> * below).</span>
-<a name="l00092"></a>00092 <span class="comment"> * @param[in] swaplatlong governs the interpretation of geographic</span>
-<a name="l00093"></a>00093 <span class="comment"> * coordinates (see below).</span>
-<a name="l00094"></a>00094 <span class="comment"> *</span>
-<a name="l00095"></a>00095 <span class="comment"> * Parse as a string and interpret it as a geographic position. The input</span>
-<a name="l00096"></a>00096 <span class="comment"> * string is broken into space (or comma) separated pieces and Basic</span>
-<a name="l00097"></a>00097 <span class="comment"> * decision on which format is based on number of components</span>
-<a name="l00098"></a>00098 <span class="comment"> * -# MGRS</span>
-<a name="l00099"></a>00099 <span class="comment"> * -# "Lat Long" or "Long Lat"</span>
-<a name="l00100"></a>00100 <span class="comment"> * -# "Zone Easting Northing" or "Easting Northing Zone"</span>
-<a name="l00101"></a>00101 <span class="comment"> *</span>
-<a name="l00102"></a>00102 <span class="comment"> * The following inputs are approximately the same (Ar Ramadi Bridge, Iraq)</span>
-<a name="l00103"></a>00103 <span class="comment"> * - Latitude and Longitude</span>
-<a name="l00104"></a>00104 <span class="comment"> * - 33.44 43.27</span>
-<a name="l00105"></a>00105 <span class="comment"> * - N33d26.4' E43d16.2'</span>
-<a name="l00106"></a>00106 <span class="comment"> * - 43d16'12"E 33d26'24"N</span>
-<a name="l00107"></a>00107 <span class="comment"> * - MGRS</span>
-<a name="l00108"></a>00108 <span class="comment"> * - 38SLC301</span>
-<a name="l00109"></a>00109 <span class="comment"> * - 38SLC391014</span>
-<a name="l00110"></a>00110 <span class="comment"> * - 38SLC3918701405</span>
-<a name="l00111"></a>00111 <span class="comment"> * - 37SHT9708</span>
-<a name="l00112"></a>00112 <span class="comment"> * - UTM</span>
-<a name="l00113"></a>00113 <span class="comment"> * - 38N 339188 3701405</span>
-<a name="l00114"></a>00114 <span class="comment"> * - 897039 3708229 37N</span>
-<a name="l00115"></a>00115 <span class="comment"> *</span>
-<a name="l00116"></a>00116 <span class="comment"> * Latitude and Longitude parsing. Latitude precedes longitude, unless a</span>
-<a name="l00117"></a>00117 <span class="comment"> * N, S, E, W hemisphere designator is used on one or both coordinates. If</span>
-<a name="l00118"></a>00118 <span class="comment"> * \e swaplatlong = true (default is false), then longitude precedes</span>
-<a name="l00119"></a>00119 <span class="comment"> * latitude in the absence of a hemisphere designator. Thus (with \e</span>
-<a name="l00120"></a>00120 <span class="comment"> * swaplatlong = false)</span>
-<a name="l00121"></a>00121 <span class="comment"> * - 40 -75</span>
-<a name="l00122"></a>00122 <span class="comment"> * - N40 W75</span>
-<a name="l00123"></a>00123 <span class="comment"> * - -75 N40</span>
-<a name="l00124"></a>00124 <span class="comment"> * - 75W 40N</span>
-<a name="l00125"></a>00125 <span class="comment"> * - E-75 -40S</span>
-<a name="l00126"></a>00126 <span class="comment"> * .</span>
-<a name="l00127"></a>00127 <span class="comment"> * are all the same position. The coordinates may be given in decimal</span>
-<a name="l00128"></a>00128 <span class="comment"> * degrees, degrees and decimal minutes, degrees, minutes, seconds, etc.</span>
-<a name="l00129"></a>00129 <span class="comment"> * Use d, ', and " to make off the degrees, minutes and seconds. Thus</span>
-<a name="l00130"></a>00130 <span class="comment"> * - 40d30'30"</span>
-<a name="l00131"></a>00131 <span class="comment"> * - 40d30'30</span>
-<a name="l00132"></a>00132 <span class="comment"> * - 40d30.5'</span>
-<a name="l00133"></a>00133 <span class="comment"> * - 40d30.5</span>
-<a name="l00134"></a>00134 <span class="comment"> * - 40.508333333</span>
-<a name="l00135"></a>00135 <span class="comment"> * .</span>
-<a name="l00136"></a>00136 <span class="comment"> * all specify the same angle. The leading sign applies to all components</span>
-<a name="l00137"></a>00137 <span class="comment"> * so -1d30 is -(1+30/60) = -1.5. Latitudes must be in the range [-90, 90]</span>
-<a name="l00138"></a>00138 <span class="comment"> * and longitudes in the range [-180, 360]. Internally longitudes are</span>
-<a name="l00139"></a>00139 <span class="comment"> * reduced to the range [-180, 180).</span>
-<a name="l00140"></a>00140 <span class="comment"> *</span>
-<a name="l00141"></a>00141 <span class="comment"> * UTM/UPS parsing. For UTM zones (-80 <= Lat <= 84), the zone designator</span>
-<a name="l00142"></a>00142 <span class="comment"> * is made up of a zone number (for 1 to 60) and a hemisphere letter (N or</span>
-<a name="l00143"></a>00143 <span class="comment"> * S), e.g., 38N. The latitude zone designer ([C–M] in the southern</span>
-<a name="l00144"></a>00144 <span class="comment"> * hemisphere and [N–X] in the northern) should NOT be used. (This</span>
-<a name="l00145"></a>00145 <span class="comment"> * is part of the MGRS coordinate.) The zone designator for the poles</span>
-<a name="l00146"></a>00146 <span class="comment"> * (where UPS is employed) is a hemisphere letter by itself, i.e., N or S.</span>
-<a name="l00147"></a>00147 <span class="comment"> *</span>
-<a name="l00148"></a>00148 <span class="comment"> * MGRS parsing interprets the grid references as square area at the</span>
-<a name="l00149"></a>00149 <span class="comment"> * specified precision (1m, 10m, 100m, etc.). If \e centerp = true (the</span>
-<a name="l00150"></a>00150 <span class="comment"> * default), the center of this square is then taken to be the precise</span>
-<a name="l00151"></a>00151 <span class="comment"> * position; thus:</span>
-<a name="l00152"></a>00152 <span class="comment"> * - 38SMB = 38N 450000 3650000</span>
-<a name="l00153"></a>00153 <span class="comment"> * - 38SMB4484 = 38N 444500 3684500</span>
-<a name="l00154"></a>00154 <span class="comment"> * - 38SMB44148470 = 38N 444145 3684705</span>
-<a name="l00155"></a>00155 <span class="comment"> * .</span>
-<a name="l00156"></a>00156 <span class="comment"> * Otherwise, the "south-west" corner of the square is used, i.e.,</span>
-<a name="l00157"></a>00157 <span class="comment"> * - 38SMB = 38N 400000 3600000</span>
-<a name="l00158"></a>00158 <span class="comment"> * - 38SMB4484 = 38N 444000 3684000</span>
-<a name="l00159"></a>00159 <span class="comment"> * - 38SMB44148470 = 38N 444140 3684700</span>
-<a name="l00160"></a>00160 <span class="comment"> **********************************************************************/</span>
-<a name="l00161"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#acdfe641aaea6b68aee25cfee822f782a">00161</a> <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a>(<span class="keyword">const</span> std::string& s,
-<a name="l00162"></a>00162 <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>)
-<a name="l00163"></a>00163 { Reset(s, centerp, swaplatlong); }
-<a name="l00164"></a>00164 <span class="comment"></span>
-<a name="l00165"></a>00165 <span class="comment"> /**</span>
-<a name="l00166"></a>00166 <span class="comment"> * Construct from geographic coordinates.</span>
-<a name="l00167"></a>00167 <span class="comment"> *</span>
-<a name="l00168"></a>00168 <span class="comment"> * @param[in] latitude (degrees).</span>
-<a name="l00169"></a>00169 <span class="comment"> * @param[in] longitude (degrees).</span>
-<a name="l00170"></a>00170 <span class="comment"> * @param[in] zone if specified, force the UTM/UPS representation to use a</span>
-<a name="l00171"></a>00171 <span class="comment"> * specified zone using the rules given in UTMUPS::zonespec.</span>
-<a name="l00172"></a>00172 <span class="comment"> **********************************************************************/</span>
-<a name="l00173"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">00173</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">GeoCoords</a>(real latitude, real longitude, <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>) {
-<a name="l00174"></a>00174 Reset(latitude, longitude, zone);
-<a name="l00175"></a>00175 }
-<a name="l00176"></a>00176 <span class="comment"></span>
-<a name="l00177"></a>00177 <span class="comment"> /**</span>
-<a name="l00178"></a>00178 <span class="comment"> * Construct from UTM/UPS coordinates.</span>
-<a name="l00179"></a>00179 <span class="comment"> *</span>
-<a name="l00180"></a>00180 <span class="comment"> * @param[in] zone UTM zone (zero means UPS).</span>
-<a name="l00181"></a>00181 <span class="comment"> * @param[in] northp hemisphere (true means north, false means south).</span>
-<a name="l00182"></a>00182 <span class="comment"> * @param[in] easting (meters).</span>
-<a name="l00183"></a>00183 <span class="comment"> * @param[in] northing (meters).</span>
-<a name="l00184"></a>00184 <span class="comment"> **********************************************************************/</span>
-<a name="l00185"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">00185</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">GeoCoords</a>(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp, real easting, real northing) {
-<a name="l00186"></a>00186 Reset(zone, northp, easting, northing);
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 <span class="comment"></span>
-<a name="l00189"></a>00189 <span class="comment"> /**</span>
-<a name="l00190"></a>00190 <span class="comment"> * Reset the location from a string. See</span>
-<a name="l00191"></a>00191 <span class="comment"> * GeoCoords(const std::string& s, bool centerp, bool swaplatlong).</span>
+<a name="l00046"></a>00046 <span class="comment"> *</span>
+<a name="l00047"></a>00047 <span class="comment"> * <a href="GeoConvert.1.html">GeoConvert</a> is a command-line utility</span>
+<a name="l00048"></a>00048 <span class="comment"> * providing access to the functionality of GeoCoords.</span>
+<a name="l00049"></a>00049 <span class="comment"> **********************************************************************/</span>
+<a name="l00050"></a>00050 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> GeoCoords {
+<a name="l00051"></a>00051 <span class="keyword">private</span>:
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00053"></a>00053 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _lat, _long, _easting, _northing, _gamma, _k;
+<a name="l00054"></a>00054 <span class="keywordtype">bool</span> _northp;
+<a name="l00055"></a>00055 <span class="keywordtype">int</span> _zone; <span class="comment">// See UTMUPS::zonespec</span>
+<a name="l00056"></a>00056 <span class="keyword">mutable</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _alt_easting, _alt_northing, _alt_gamma, _alt_k;
+<a name="l00057"></a>00057 <span class="keyword">mutable</span> <span class="keywordtype">int</span> _alt_zone;
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keywordtype">void</span> CopyToAlt() <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00060"></a>00060 _alt_easting = _easting;
+<a name="l00061"></a>00061 _alt_northing = _northing;
+<a name="l00062"></a>00062 _alt_gamma = _gamma;
+<a name="l00063"></a>00063 _alt_k = _k;
+<a name="l00064"></a>00064 _alt_zone = _zone;
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 <span class="keywordtype">void</span> UTMUPSString(<span class="keywordtype">int</span> zone, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> northing,
+<a name="l00067"></a>00067 <span class="keywordtype">int</span> prec, std::string& utm) <span class="keyword">const</span>;
+<a name="l00068"></a>00068 <span class="keywordtype">void</span> FixHemisphere();
+<a name="l00069"></a>00069 <span class="keyword">public</span>:
+<a name="l00070"></a>00070 <span class="comment"></span>
+<a name="l00071"></a>00071 <span class="comment"> /** \name Initializing the GeoCoords object</span>
+<a name="l00072"></a>00072 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00073"></a>00073 <span class="comment"> ///@{</span>
+<a name="l00074"></a>00074 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00075"></a>00075 <span class="comment"> * The default constructor is equivalent to \e latitude = 90<sup>o</sup>,</span>
+<a name="l00076"></a>00076 <span class="comment"> * \e longitude = 0<sup>o</sup>.</span>
+<a name="l00077"></a>00077 <span class="comment"> **********************************************************************/</span>
+<a name="l00078"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a8b3f4a919ba4478c4fec0e7b01e84c57">00078</a> GeoCoords() throw()
+<a name="l00079"></a>00079 <span class="comment">// This is the N pole</span>
+<a name="l00080"></a>00080 : _lat(90)
+<a name="l00081"></a>00081 , _long(0)
+<a name="l00082"></a>00082 , _easting(2000000)
+<a name="l00083"></a>00083 , _northing(2000000)
+<a name="l00084"></a>00084 , _northp(true)
+<a name="l00085"></a>00085 , _zone(0)
+<a name="l00086"></a>00086 { CopyToAlt(); }
+<a name="l00087"></a>00087 <span class="comment"></span>
+<a name="l00088"></a>00088 <span class="comment"> /**</span>
+<a name="l00089"></a>00089 <span class="comment"> * Construct from a string.</span>
+<a name="l00090"></a>00090 <span class="comment"> *</span>
+<a name="l00091"></a>00091 <span class="comment"> * @param[in] s 1-element, 2-element, or 3-element string representation of</span>
+<a name="l00092"></a>00092 <span class="comment"> * the position.</span>
+<a name="l00093"></a>00093 <span class="comment"> * @param[in] centerp governs the interpretation of MGRS coordinates (see</span>
+<a name="l00094"></a>00094 <span class="comment"> * below).</span>
+<a name="l00095"></a>00095 <span class="comment"> * @param[in] swaplatlong governs the interpretation of geographic</span>
+<a name="l00096"></a>00096 <span class="comment"> * coordinates (see below).</span>
+<a name="l00097"></a>00097 <span class="comment"> *</span>
+<a name="l00098"></a>00098 <span class="comment"> * Parse as a string and interpret it as a geographic position. The input</span>
+<a name="l00099"></a>00099 <span class="comment"> * string is broken into space (or comma) separated pieces and Basic</span>
+<a name="l00100"></a>00100 <span class="comment"> * decision on which format is based on number of components</span>
+<a name="l00101"></a>00101 <span class="comment"> * -# MGRS</span>
+<a name="l00102"></a>00102 <span class="comment"> * -# "Lat Long" or "Long Lat"</span>
+<a name="l00103"></a>00103 <span class="comment"> * -# "Zone Easting Northing" or "Easting Northing Zone"</span>
+<a name="l00104"></a>00104 <span class="comment"> *</span>
+<a name="l00105"></a>00105 <span class="comment"> * The following inputs are approximately the same (Ar Ramadi Bridge, Iraq)</span>
+<a name="l00106"></a>00106 <span class="comment"> * - Latitude and Longitude</span>
+<a name="l00107"></a>00107 <span class="comment"> * - 33.44 43.27</span>
+<a name="l00108"></a>00108 <span class="comment"> * - N33d26.4' E43d16.2'</span>
+<a name="l00109"></a>00109 <span class="comment"> * - 43d16'12"E 33d26'24"N</span>
+<a name="l00110"></a>00110 <span class="comment"> * - 43:16:12E 33:26:24</span>
+<a name="l00111"></a>00111 <span class="comment"> * - MGRS</span>
+<a name="l00112"></a>00112 <span class="comment"> * - 38SLC301</span>
+<a name="l00113"></a>00113 <span class="comment"> * - 38SLC391014</span>
+<a name="l00114"></a>00114 <span class="comment"> * - 38SLC3918701405</span>
+<a name="l00115"></a>00115 <span class="comment"> * - 37SHT9708</span>
+<a name="l00116"></a>00116 <span class="comment"> * - UTM</span>
+<a name="l00117"></a>00117 <span class="comment"> * - 38N 339188 3701405</span>
+<a name="l00118"></a>00118 <span class="comment"> * - 897039 3708229 37N</span>
+<a name="l00119"></a>00119 <span class="comment"> *</span>
+<a name="l00120"></a>00120 <span class="comment"> * Latitude and Longitude parsing. Latitude precedes longitude, unless a</span>
+<a name="l00121"></a>00121 <span class="comment"> * N, S, E, W hemisphere designator is used on one or both coordinates. If</span>
+<a name="l00122"></a>00122 <span class="comment"> * \e swaplatlong = true (default is false), then longitude precedes</span>
+<a name="l00123"></a>00123 <span class="comment"> * latitude in the absence of a hemisphere designator. Thus (with \e</span>
+<a name="l00124"></a>00124 <span class="comment"> * swaplatlong = false)</span>
+<a name="l00125"></a>00125 <span class="comment"> * - 40 -75</span>
+<a name="l00126"></a>00126 <span class="comment"> * - N40 W75</span>
+<a name="l00127"></a>00127 <span class="comment"> * - -75 N40</span>
+<a name="l00128"></a>00128 <span class="comment"> * - 75W 40N</span>
+<a name="l00129"></a>00129 <span class="comment"> * - E-75 -40S</span>
+<a name="l00130"></a>00130 <span class="comment"> * .</span>
+<a name="l00131"></a>00131 <span class="comment"> * are all the same position. The coordinates may be given in</span>
+<a name="l00132"></a>00132 <span class="comment"> * decimal degrees, degrees and decimal minutes, degrees, minutes,</span>
+<a name="l00133"></a>00133 <span class="comment"> * seconds, etc. Use d, ', and " to mark off the degrees,</span>
+<a name="l00134"></a>00134 <span class="comment"> * minutes and seconds. Alternatively, use : to separate these</span>
+<a name="l00135"></a>00135 <span class="comment"> * components. Thus</span>
+<a name="l00136"></a>00136 <span class="comment"> * - 40d30'30"</span>
+<a name="l00137"></a>00137 <span class="comment"> * - 40d30'30</span>
+<a name="l00138"></a>00138 <span class="comment"> * - 40d30.5'</span>
+<a name="l00139"></a>00139 <span class="comment"> * - 40d30.5</span>
+<a name="l00140"></a>00140 <span class="comment"> * - 40:30:30</span>
+<a name="l00141"></a>00141 <span class="comment"> * - 40:30.5</span>
+<a name="l00142"></a>00142 <span class="comment"> * - 40.508333333</span>
+<a name="l00143"></a>00143 <span class="comment"> * .</span>
+<a name="l00144"></a>00144 <span class="comment"> * all specify the same angle. The leading sign applies to all components</span>
+<a name="l00145"></a>00145 <span class="comment"> * so -1d30 is -(1+30/60) = -1.5. Latitudes must be in the range [-90, 90]</span>
+<a name="l00146"></a>00146 <span class="comment"> * and longitudes in the range [-180, 360]. Internally longitudes are</span>
+<a name="l00147"></a>00147 <span class="comment"> * reduced to the range [-180, 180).</span>
+<a name="l00148"></a>00148 <span class="comment"> *</span>
+<a name="l00149"></a>00149 <span class="comment"> * UTM/UPS parsing. For UTM zones (-80 <= Lat <= 84), the zone designator</span>
+<a name="l00150"></a>00150 <span class="comment"> * is made up of a zone number (for 1 to 60) and a hemisphere letter (N or</span>
+<a name="l00151"></a>00151 <span class="comment"> * S), e.g., 38N. The latitude zone designer ([C–M] in the southern</span>
+<a name="l00152"></a>00152 <span class="comment"> * hemisphere and [N–X] in the northern) should NOT be used. (This</span>
+<a name="l00153"></a>00153 <span class="comment"> * is part of the MGRS coordinate.) The zone designator for the poles</span>
+<a name="l00154"></a>00154 <span class="comment"> * (where UPS is employed) is a hemisphere letter by itself, i.e., N or S.</span>
+<a name="l00155"></a>00155 <span class="comment"> *</span>
+<a name="l00156"></a>00156 <span class="comment"> * MGRS parsing interprets the grid references as square area at the</span>
+<a name="l00157"></a>00157 <span class="comment"> * specified precision (1m, 10m, 100m, etc.). If \e centerp = true (the</span>
+<a name="l00158"></a>00158 <span class="comment"> * default), the center of this square is then taken to be the precise</span>
+<a name="l00159"></a>00159 <span class="comment"> * position; thus:</span>
+<a name="l00160"></a>00160 <span class="comment"> * - 38SMB = 38N 450000 3650000</span>
+<a name="l00161"></a>00161 <span class="comment"> * - 38SMB4484 = 38N 444500 3684500</span>
+<a name="l00162"></a>00162 <span class="comment"> * - 38SMB44148470 = 38N 444145 3684705</span>
+<a name="l00163"></a>00163 <span class="comment"> * .</span>
+<a name="l00164"></a>00164 <span class="comment"> * Otherwise, the "south-west" corner of the square is used, i.e.,</span>
+<a name="l00165"></a>00165 <span class="comment"> * - 38SMB = 38N 400000 3600000</span>
+<a name="l00166"></a>00166 <span class="comment"> * - 38SMB4484 = 38N 444000 3684000</span>
+<a name="l00167"></a>00167 <span class="comment"> * - 38SMB44148470 = 38N 444140 3684700</span>
+<a name="l00168"></a>00168 <span class="comment"> **********************************************************************/</span>
+<a name="l00169"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#acdfe641aaea6b68aee25cfee822f782a">00169</a> <span class="keyword">explicit</span> GeoCoords(<span class="keyword">const</span> std::string& s,
+<a name="l00170"></a>00170 <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>)
+<a name="l00171"></a>00171 { Reset(s, centerp, swaplatlong); }
+<a name="l00172"></a>00172 <span class="comment"></span>
+<a name="l00173"></a>00173 <span class="comment"> /**</span>
+<a name="l00174"></a>00174 <span class="comment"> * Construct from geographic coordinates.</span>
+<a name="l00175"></a>00175 <span class="comment"> *</span>
+<a name="l00176"></a>00176 <span class="comment"> * @param[in] latitude (degrees).</span>
+<a name="l00177"></a>00177 <span class="comment"> * @param[in] longitude (degrees).</span>
+<a name="l00178"></a>00178 <span class="comment"> * @param[in] zone if specified, force the UTM/UPS representation to use a</span>
+<a name="l00179"></a>00179 <span class="comment"> * specified zone using the rules given in UTMUPS::zonespec.</span>
+<a name="l00180"></a>00180 <span class="comment"> **********************************************************************/</span>
+<a name="l00181"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">00181</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">GeoCoords</a>(real latitude, real longitude, <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>) {
+<a name="l00182"></a>00182 Reset(latitude, longitude, zone);
+<a name="l00183"></a>00183 }
+<a name="l00184"></a>00184 <span class="comment"></span>
+<a name="l00185"></a>00185 <span class="comment"> /**</span>
+<a name="l00186"></a>00186 <span class="comment"> * Construct from UTM/UPS coordinates.</span>
+<a name="l00187"></a>00187 <span class="comment"> *</span>
+<a name="l00188"></a>00188 <span class="comment"> * @param[in] zone UTM zone (zero means UPS).</span>
+<a name="l00189"></a>00189 <span class="comment"> * @param[in] northp hemisphere (true means north, false means south).</span>
+<a name="l00190"></a>00190 <span class="comment"> * @param[in] easting (meters).</span>
+<a name="l00191"></a>00191 <span class="comment"> * @param[in] northing (meters).</span>
<a name="l00192"></a>00192 <span class="comment"> **********************************************************************/</span>
-<a name="l00193"></a>00193 <span class="keywordtype">void</span> Reset(<span class="keyword">const</span> std::string& s,
-<a name="l00194"></a>00194 <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>);
-<a name="l00195"></a>00195 <span class="comment"></span>
-<a name="l00196"></a>00196 <span class="comment"> /**</span>
-<a name="l00197"></a>00197 <span class="comment"> * Reset the location in terms of geographic coordinates. See</span>
-<a name="l00198"></a>00198 <span class="comment"> * GeoCoords(real latitude, real longitude, int zone).</span>
-<a name="l00199"></a>00199 <span class="comment"> **********************************************************************/</span>
-<a name="l00200"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a0cbbebaa7bb77f91f3f8dbbadfd6532a">00200</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a0cbbebaa7bb77f91f3f8dbbadfd6532a">Reset</a>(real latitude, real longitude, <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>) {
-<a name="l00201"></a>00201 <a class="code" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">UTMUPS::Forward</a>(latitude, longitude,
-<a name="l00202"></a>00202 _zone, _northp, _easting, _northing, _gamma, _k,
-<a name="l00203"></a>00203 zone);
-<a name="l00204"></a>00204 _lat = latitude;
-<a name="l00205"></a>00205 _long = longitude;
-<a name="l00206"></a>00206 <span class="keywordflow">if</span> (_long >= 180)
-<a name="l00207"></a>00207 _long -= 360;
-<a name="l00208"></a>00208 CopyToAlt();
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210 <span class="comment"></span>
-<a name="l00211"></a>00211 <span class="comment"> /**</span>
-<a name="l00212"></a>00212 <span class="comment"> * Reset the location in terms of UPS/UPS coordinates. See</span>
-<a name="l00213"></a>00213 <span class="comment"> * GeoCoords(int zone, bool northp, real easting, real northing).</span>
-<a name="l00214"></a>00214 <span class="comment"> **********************************************************************/</span>
-<a name="l00215"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ab072761684d992f508b5a3b9440653fb">00215</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#ab072761684d992f508b5a3b9440653fb">Reset</a>(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp, real easting, real northing) {
-<a name="l00216"></a>00216 <a class="code" href="classGeographicLib_1_1UTMUPS.html#aaf417ae6bed6da324aa03fc96ee0dda4">UTMUPS::Reverse</a>(zone, northp, easting, northing,
-<a name="l00217"></a>00217 _lat, _long, _gamma, _k);
-<a name="l00218"></a>00218 _zone = zone;
-<a name="l00219"></a>00219 _northp = northp;
-<a name="l00220"></a>00220 _easting = easting;
-<a name="l00221"></a>00221 _northing = northing;
-<a name="l00222"></a>00222 FixHemisphere();
-<a name="l00223"></a>00223 CopyToAlt();
-<a name="l00224"></a>00224 }<span class="comment"></span>
-<a name="l00225"></a>00225 <span class="comment"> ///@}</span>
-<a name="l00226"></a>00226 <span class="comment"></span><span class="comment"></span>
-<a name="l00227"></a>00227 <span class="comment"> /** \name Querying the GeoCoords object</span>
-<a name="l00228"></a>00228 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00229"></a>00229 <span class="comment"> ///@{</span>
-<a name="l00230"></a>00230 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00231"></a>00231 <span class="comment"> * @return latitude (degrees)</span>
-<a name="l00232"></a>00232 <span class="comment"> **********************************************************************/</span>
-<a name="l00233"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">00233</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat; }
-<a name="l00234"></a>00234 <span class="comment"></span>
-<a name="l00235"></a>00235 <span class="comment"> /**</span>
-<a name="l00236"></a>00236 <span class="comment"> * @return longitude (degrees)</span>
-<a name="l00237"></a>00237 <span class="comment"> **********************************************************************/</span>
-<a name="l00238"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">00238</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _long; }
-<a name="l00239"></a>00239 <span class="comment"></span>
-<a name="l00240"></a>00240 <span class="comment"> /**</span>
-<a name="l00241"></a>00241 <span class="comment"> * @return easting (meters)</span>
-<a name="l00242"></a>00242 <span class="comment"> **********************************************************************/</span>
-<a name="l00243"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">00243</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">Easting</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _easting; }
-<a name="l00244"></a>00244 <span class="comment"></span>
-<a name="l00245"></a>00245 <span class="comment"> /**</span>
-<a name="l00246"></a>00246 <span class="comment"> * @return northing (meters)</span>
-<a name="l00247"></a>00247 <span class="comment"> **********************************************************************/</span>
-<a name="l00248"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ac0202def9c16ce856f62485b5c249083">00248</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#ac0202def9c16ce856f62485b5c249083">Northing</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northing; }
-<a name="l00249"></a>00249 <span class="comment"></span>
-<a name="l00250"></a>00250 <span class="comment"> /**</span>
-<a name="l00251"></a>00251 <span class="comment"> * @return meridian convergence (degrees) for the UTM/UPS projection.</span>
-<a name="l00252"></a>00252 <span class="comment"> **********************************************************************/</span>
-<a name="l00253"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">00253</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">Convergence</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _gamma; }
-<a name="l00254"></a>00254 <span class="comment"></span>
-<a name="l00255"></a>00255 <span class="comment"> /**</span>
-<a name="l00256"></a>00256 <span class="comment"> * @return scale for the UTM/UPS projection.</span>
-<a name="l00257"></a>00257 <span class="comment"> **********************************************************************/</span>
-<a name="l00258"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#aafd68e75d223b821abcbf20179c7a9e0">00258</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#aafd68e75d223b821abcbf20179c7a9e0">Scale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k; }
-<a name="l00259"></a>00259 <span class="comment"></span>
-<a name="l00260"></a>00260 <span class="comment"> /**</span>
-<a name="l00261"></a>00261 <span class="comment"> * @return hemisphere (false means south, true means north).</span>
-<a name="l00262"></a>00262 <span class="comment"> **********************************************************************/</span>
-<a name="l00263"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">00263</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">Northp</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northp; }
-<a name="l00264"></a>00264 <span class="comment"></span>
-<a name="l00265"></a>00265 <span class="comment"> /**</span>
-<a name="l00266"></a>00266 <span class="comment"> * @return hemisphere letter N or S.</span>
-<a name="l00267"></a>00267 <span class="comment"> **********************************************************************/</span>
-<a name="l00268"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">00268</a> <span class="keywordtype">char</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">Hemisphere</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northp ? <span class="charliteral">'N'</span> : <span class="charliteral">'S'</span>; }
-<a name="l00269"></a>00269 <span class="comment"></span>
-<a name="l00270"></a>00270 <span class="comment"> /**</span>
-<a name="l00271"></a>00271 <span class="comment"> * @return the zone corresponding to the input (return 0 for UPS).</span>
-<a name="l00272"></a>00272 <span class="comment"> **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">00273</a> <span class="keywordtype">int</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">Zone</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _zone; }
-<a name="l00274"></a>00274 <span class="comment"></span>
-<a name="l00275"></a>00275 <span class="comment"> ///@}</span>
-<a name="l00276"></a>00276 <span class="comment"></span><span class="comment"></span>
-<a name="l00277"></a>00277 <span class="comment"> /** \name Setting and querying the alternate zone</span>
-<a name="l00278"></a>00278 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00279"></a>00279 <span class="comment"> ///@{</span>
-<a name="l00280"></a>00280 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00281"></a>00281 <span class="comment"> * Specify alternate zone number.</span>
-<a name="l00282"></a>00282 <span class="comment"> *</span>
-<a name="l00283"></a>00283 <span class="comment"> * @param[in] zone zone number for the alternate representation.</span>
-<a name="l00284"></a>00284 <span class="comment"> *</span>
-<a name="l00285"></a>00285 <span class="comment"> * See UTMUPS::zonespec for more information on the interpretation of \e</span>
-<a name="l00286"></a>00286 <span class="comment"> * zone. Note that \e zone == UTMUPS::STANDARD (the default) use the</span>
-<a name="l00287"></a>00287 <span class="comment"> * standard UPS or UTM zone, UTMUPS::MATCH does nothing retaining the</span>
-<a name="l00288"></a>00288 <span class="comment"> * existing alternate representation. Before this is called the alternate</span>
-<a name="l00289"></a>00289 <span class="comment"> * zone is the input zone.</span>
-<a name="l00290"></a>00290 <span class="comment"> **********************************************************************/</span>
-<a name="l00291"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7782c2d78462bde2ba6277b2b60af8f6">00291</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7782c2d78462bde2ba6277b2b60af8f6">SetAltZone</a>(<span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>)<span class="keyword"> cons [...]
-<a name="l00292"></a>00292 <span class="keywordflow">if</span> (zone == <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3b4721e27869e99ed1ae3d320">UTMUPS::MATCH</a>)
-<a name="l00293"></a>00293 <span class="keywordflow">return</span>;
-<a name="l00294"></a>00294 zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">UTMUPS::StandardZone</a>(_lat, _long, zone);
-<a name="l00295"></a>00295 <span class="keywordflow">if</span> (zone == _zone)
-<a name="l00296"></a>00296 CopyToAlt();
-<a name="l00297"></a>00297 <span class="keywordflow">else</span> {
-<a name="l00298"></a>00298 <span class="keywordtype">bool</span> northp;
-<a name="l00299"></a>00299 <a class="code" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">UTMUPS::Forward</a>(_lat, _long,
-<a name="l00300"></a>00300 _alt_zone, northp,
-<a name="l00301"></a>00301 _alt_easting, _alt_northing, _alt_gamma, _alt_k,
-<a name="l00302"></a>00302 zone);
-<a name="l00303"></a>00303 }
-<a name="l00304"></a>00304 }
-<a name="l00305"></a>00305 <span class="comment"></span>
-<a name="l00306"></a>00306 <span class="comment"> /**</span>
-<a name="l00307"></a>00307 <span class="comment"> * @return current alternate zone (return 0 for UPS).</span>
-<a name="l00308"></a>00308 <span class="comment"> **********************************************************************/</span>
-<a name="l00309"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">00309</a> <span class="keywordtype">int</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">AltZone</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_zone; }
-<a name="l00310"></a>00310 <span class="comment"></span>
-<a name="l00311"></a>00311 <span class="comment"> /**</span>
-<a name="l00312"></a>00312 <span class="comment"> * @return easting (meters) for alternate zone.</span>
-<a name="l00313"></a>00313 <span class="comment"> **********************************************************************/</span>
-<a name="l00314"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#af4a5b63a1931973338f71ef2ec4e27fa">00314</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#af4a5b63a1931973338f71ef2ec4e27fa">AltEasting</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_easting; }
-<a name="l00315"></a>00315 <span class="comment"></span>
-<a name="l00316"></a>00316 <span class="comment"> /**</span>
-<a name="l00317"></a>00317 <span class="comment"> * @return northing (meters) for alternate zone.</span>
-<a name="l00318"></a>00318 <span class="comment"> **********************************************************************/</span>
-<a name="l00319"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a2f5a9665712214ad34b061d35ce89659">00319</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a2f5a9665712214ad34b061d35ce89659">AltNorthing</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_northing; }
-<a name="l00320"></a>00320 <span class="comment"></span>
-<a name="l00321"></a>00321 <span class="comment"> /**</span>
-<a name="l00322"></a>00322 <span class="comment"> * @return meridian convergence (degrees) for alternate zone.</span>
-<a name="l00323"></a>00323 <span class="comment"> **********************************************************************/</span>
-<a name="l00324"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a2b62e667ce462d8102fdfa6ece6ff50e">00324</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a2b62e667ce462d8102fdfa6ece6ff50e">AltConvergence</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_gamma; }
-<a name="l00325"></a>00325 <span class="comment"></span>
-<a name="l00326"></a>00326 <span class="comment"> /**</span>
-<a name="l00327"></a>00327 <span class="comment"> * @return scale for alternate zone.</span>
-<a name="l00328"></a>00328 <span class="comment"> **********************************************************************/</span>
-<a name="l00329"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">00329</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">AltScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_k; }<span class="comment"></span>
-<a name="l00330"></a>00330 <span class="comment"> ///@}</span>
-<a name="l00331"></a>00331 <span class="comment"></span><span class="comment"></span>
-<a name="l00332"></a>00332 <span class="comment"> /** \name String representations of the GeoCoords object</span>
-<a name="l00333"></a>00333 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00334"></a>00334 <span class="comment"> ///@{</span>
-<a name="l00335"></a>00335 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00336"></a>00336 <span class="comment"> * String representation with latitude and longitude as signed decimal</span>
-<a name="l00337"></a>00337 <span class="comment"> * degrees.</span>
-<a name="l00338"></a>00338 <span class="comment"> *</span>
-<a name="l00339"></a>00339 <span class="comment"> * @param[in] prec precision (relative to about 1m).</span>
-<a name="l00340"></a>00340 <span class="comment"> * @param[in] swaplatlong if true give longitude first (default = false)</span>
-<a name="l00341"></a>00341 <span class="comment"> * @return decimal latitude/longitude string representation.</span>
-<a name="l00342"></a>00342 <span class="comment"> *</span>
-<a name="l00343"></a>00343 <span class="comment"> * Precision specifies accuracy of representation as follows:</span>
-<a name="l00344"></a>00344 <span class="comment"> * - prec = -5 (min), 1d</span>
-<a name="l00345"></a>00345 <span class="comment"> * - prec = 0, 10<sup>-5</sup>d (about 1m)</span>
-<a name="l00346"></a>00346 <span class="comment"> * - prec = 3, 10<sup>-8</sup>d</span>
-<a name="l00347"></a>00347 <span class="comment"> * - prec = 9 (max), 10<sup>-14</sup>d</span>
-<a name="l00348"></a>00348 <span class="comment"> **********************************************************************/</span>
-<a name="l00349"></a>00349 std::string GeoRepresentation(<span class="keywordtype">int</span> prec = 0, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>) <span class="keyword">const</span>;
-<a name="l00350"></a>00350 <span class="comment"></span>
-<a name="l00351"></a>00351 <span class="comment"> /**</span>
-<a name="l00352"></a>00352 <span class="comment"> * String representation with latitude and longitude as degrees, minutes,</span>
-<a name="l00353"></a>00353 <span class="comment"> * seconds, and hemisphere.</span>
-<a name="l00354"></a>00354 <span class="comment"> *</span>
-<a name="l00355"></a>00355 <span class="comment"> * @param[in] prec precision (relative to about 1m)</span>
-<a name="l00356"></a>00356 <span class="comment"> * @param[in] swaplatlong if true give longitude first (default = false)</span>
-<a name="l00357"></a>00357 <span class="comment"> * @return DMS latitude/longitude string representation.</span>
-<a name="l00358"></a>00358 <span class="comment"> *</span>
-<a name="l00359"></a>00359 <span class="comment"> * Precision specifies accuracy of representation as follows:</span>
-<a name="l00360"></a>00360 <span class="comment"> * - prec = -5 (min), 1d</span>
-<a name="l00361"></a>00361 <span class="comment"> * - prec = -4, 0.1d</span>
-<a name="l00362"></a>00362 <span class="comment"> * - prec = -3, 1'</span>
-<a name="l00363"></a>00363 <span class="comment"> * - prec = -2, 0.1'</span>
-<a name="l00364"></a>00364 <span class="comment"> * - prec = -1, 1"</span>
-<a name="l00365"></a>00365 <span class="comment"> * - prec = 0, 0.1" (about 3m)</span>
-<a name="l00366"></a>00366 <span class="comment"> * - prec = 1, 0.01"</span>
-<a name="l00367"></a>00367 <span class="comment"> * - prec = 10 (max), 10<sup>-11</sup>"</span>
-<a name="l00368"></a>00368 <span class="comment"> **********************************************************************/</span>
-<a name="l00369"></a>00369 std::string DMSRepresentation(<span class="keywordtype">int</span> prec = 0, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>) <span class="keyword">const</span>;
-<a name="l00370"></a>00370 <span class="comment"></span>
-<a name="l00371"></a>00371 <span class="comment"> /**</span>
-<a name="l00372"></a>00372 <span class="comment"> * MGRS string.</span>
-<a name="l00373"></a>00373 <span class="comment"> *</span>
-<a name="l00374"></a>00374 <span class="comment"> * @param[in] prec precision (relative to about 1m).</span>
-<a name="l00375"></a>00375 <span class="comment"> * @return MGRS string.</span>
-<a name="l00376"></a>00376 <span class="comment"> *</span>
-<a name="l00377"></a>00377 <span class="comment"> * This gives the coordinates of the enclosing grid square with size given</span>
-<a name="l00378"></a>00378 <span class="comment"> * by the precision. Thus 38N 444180 3684790 converted to a MGRS</span>
-<a name="l00379"></a>00379 <span class="comment"> * coordinate at precision -2 (100m) is 38SMB441847 and not 38SMB442848.</span>
-<a name="l00380"></a>00380 <span class="comment"> * \e prec specifies the precision of the MGRS string as follows:</span>
-<a name="l00381"></a>00381 <span class="comment"> * - prec = -5 (min), 100km</span>
-<a name="l00382"></a>00382 <span class="comment"> * - prec = -4, 10km</span>
-<a name="l00383"></a>00383 <span class="comment"> * - prec = -3, 1km</span>
-<a name="l00384"></a>00384 <span class="comment"> * - prec = -2, 100m</span>
-<a name="l00385"></a>00385 <span class="comment"> * - prec = -1, 10m</span>
-<a name="l00386"></a>00386 <span class="comment"> * - prec = 0, 1m</span>
-<a name="l00387"></a>00387 <span class="comment"> * - prec = 1, 0.1m</span>
-<a name="l00388"></a>00388 <span class="comment"> * - prec = 6 (max), 1um</span>
-<a name="l00389"></a>00389 <span class="comment"> **********************************************************************/</span>
-<a name="l00390"></a>00390 std::string MGRSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
-<a name="l00391"></a>00391 <span class="comment"></span>
-<a name="l00392"></a>00392 <span class="comment"> /**</span>
-<a name="l00393"></a>00393 <span class="comment"> * UTM/UPS string.</span>
-<a name="l00394"></a>00394 <span class="comment"> *</span>
-<a name="l00395"></a>00395 <span class="comment"> * @param[in] prec precision (relative to about 1m)</span>
-<a name="l00396"></a>00396 <span class="comment"> * @return UTM/UPS string representation: zone designator, easting, and</span>
-<a name="l00397"></a>00397 <span class="comment"> * northing.</span>
-<a name="l00398"></a>00398 <span class="comment"> *</span>
-<a name="l00399"></a>00399 <span class="comment"> * Precision specifies accuracy of representation as follows:</span>
-<a name="l00400"></a>00400 <span class="comment"> * - prec = -5 (min), 100km</span>
-<a name="l00401"></a>00401 <span class="comment"> * - prec = -3, 1km</span>
-<a name="l00402"></a>00402 <span class="comment"> * - prec = 0, 1m</span>
-<a name="l00403"></a>00403 <span class="comment"> * - prec = 3, 1mm</span>
-<a name="l00404"></a>00404 <span class="comment"> * - prec = 6, 1um</span>
-<a name="l00405"></a>00405 <span class="comment"> * - prec = 9 (max), 1nm</span>
-<a name="l00406"></a>00406 <span class="comment"> **********************************************************************/</span>
-<a name="l00407"></a>00407 std::string UTMUPSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
-<a name="l00408"></a>00408 <span class="comment"></span>
-<a name="l00409"></a>00409 <span class="comment"> /**</span>
-<a name="l00410"></a>00410 <span class="comment"> * MGRS string for the alternate zone. See GeoCoords::MGRSRepresentation.</span>
-<a name="l00411"></a>00411 <span class="comment"> **********************************************************************/</span>
-<a name="l00412"></a>00412 std::string AltMGRSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
-<a name="l00413"></a>00413 <span class="comment"></span>
-<a name="l00414"></a>00414 <span class="comment"> /**</span>
-<a name="l00415"></a>00415 <span class="comment"> * UTM/UPS string for the alternate zone. See</span>
-<a name="l00416"></a>00416 <span class="comment"> * GeoCoords::UTMUPSRepresentation.</span>
-<a name="l00417"></a>00417 <span class="comment"> **********************************************************************/</span>
-<a name="l00418"></a>00418 std::string AltUTMUPSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;<span class="comment"></span>
-<a name="l00419"></a>00419 <span class="comment"> ///@}</span>
-<a name="l00420"></a>00420 <span class="comment"></span><span class="comment"></span>
-<a name="l00421"></a>00421 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00422"></a>00422 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00423"></a>00423 <span class="comment"> ///@{</span>
-<a name="l00424"></a>00424 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00425"></a>00425 <span class="comment"> * @return \e a the equatorial radius of the WGS84 ellipsoid (meters).</span>
-<a name="l00426"></a>00426 <span class="comment"> *</span>
-<a name="l00427"></a>00427 <span class="comment"> * (The WGS84 value is returned because the UTM and UPS projections are</span>
-<a name="l00428"></a>00428 <span class="comment"> * based on this ellipsoid.)</span>
-<a name="l00429"></a>00429 <span class="comment"> **********************************************************************/</span>
-<a name="l00430"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">00430</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a293aa [...]
-<a name="l00431"></a>00431 <span class="comment"></span>
-<a name="l00432"></a>00432 <span class="comment"> /**</span>
-<a name="l00433"></a>00433 <span class="comment"> * @return \e f the flattening of the WGS84 ellipsoid.</span>
-<a name="l00434"></a>00434 <span class="comment"> *</span>
-<a name="l00435"></a>00435 <span class="comment"> * (The WGS84 value is returned because the UTM and UPS projections are</span>
-<a name="l00436"></a>00436 <span class="comment"> * based on this ellipsoid.)</span>
-<a name="l00437"></a>00437 <span class="comment"> **********************************************************************/</span>
-<a name="l00438"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">00438</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a182de2 [...]
-<a name="l00439"></a>00439 <span class="comment"></span>
-<a name="l00440"></a>00440 <span class="comment"> /**</span>
-<a name="l00441"></a>00441 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00442"></a>00442 <span class="comment"> * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
-<a name="l00443"></a>00443 <span class="comment"> **********************************************************************/</span>
-<a name="l00444"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">00444</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00445"></a>00445 { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">UTMUPS::InverseFlattening</a>(); }<span class="comment"></span>
-<a name="l00446"></a>00446 <span class="comment"> ///@}</span>
-<a name="l00447"></a>00447 <span class="comment"></span> };
-<a name="l00448"></a>00448
-<a name="l00449"></a>00449 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00450"></a>00450
-<a name="l00451"></a>00451 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEOCOORDS_HPP</span>
+<a name="l00193"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">00193</a> <a class="code" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">GeoCoords</a>(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp, real easting, real northing) {
+<a name="l00194"></a>00194 Reset(zone, northp, easting, northing);
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196 <span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment"> /**</span>
+<a name="l00198"></a>00198 <span class="comment"> * Reset the location from a string. See</span>
+<a name="l00199"></a>00199 <span class="comment"> * GeoCoords(const std::string& s, bool centerp, bool swaplatlong).</span>
+<a name="l00200"></a>00200 <span class="comment"> **********************************************************************/</span>
+<a name="l00201"></a>00201 <span class="keywordtype">void</span> Reset(<span class="keyword">const</span> std::string& s,
+<a name="l00202"></a>00202 <span class="keywordtype">bool</span> centerp = <span class="keyword">true</span>, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>);
+<a name="l00203"></a>00203 <span class="comment"></span>
+<a name="l00204"></a>00204 <span class="comment"> /**</span>
+<a name="l00205"></a>00205 <span class="comment"> * Reset the location in terms of geographic coordinates. See</span>
+<a name="l00206"></a>00206 <span class="comment"> * GeoCoords(real latitude, real longitude, int zone).</span>
+<a name="l00207"></a>00207 <span class="comment"> **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a0cbbebaa7bb77f91f3f8dbbadfd6532a">00208</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a0cbbebaa7bb77f91f3f8dbbadfd6532a">Reset</a>(real latitude, real longitude, <span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>) {
+<a name="l00209"></a>00209 <a class="code" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">UTMUPS::Forward</a>(latitude, longitude,
+<a name="l00210"></a>00210 _zone, _northp, _easting, _northing, _gamma, _k,
+<a name="l00211"></a>00211 zone);
+<a name="l00212"></a>00212 _lat = latitude;
+<a name="l00213"></a>00213 _long = longitude;
+<a name="l00214"></a>00214 <span class="keywordflow">if</span> (_long >= 180)
+<a name="l00215"></a>00215 _long -= 360;
+<a name="l00216"></a>00216 CopyToAlt();
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218 <span class="comment"></span>
+<a name="l00219"></a>00219 <span class="comment"> /**</span>
+<a name="l00220"></a>00220 <span class="comment"> * Reset the location in terms of UPS/UPS coordinates. See</span>
+<a name="l00221"></a>00221 <span class="comment"> * GeoCoords(int zone, bool northp, real easting, real northing).</span>
+<a name="l00222"></a>00222 <span class="comment"> **********************************************************************/</span>
+<a name="l00223"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ab072761684d992f508b5a3b9440653fb">00223</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#ab072761684d992f508b5a3b9440653fb">Reset</a>(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp, real easting, real northing) {
+<a name="l00224"></a>00224 <a class="code" href="classGeographicLib_1_1UTMUPS.html#aaf417ae6bed6da324aa03fc96ee0dda4">UTMUPS::Reverse</a>(zone, northp, easting, northing,
+<a name="l00225"></a>00225 _lat, _long, _gamma, _k);
+<a name="l00226"></a>00226 _zone = zone;
+<a name="l00227"></a>00227 _northp = northp;
+<a name="l00228"></a>00228 _easting = easting;
+<a name="l00229"></a>00229 _northing = northing;
+<a name="l00230"></a>00230 FixHemisphere();
+<a name="l00231"></a>00231 CopyToAlt();
+<a name="l00232"></a>00232 }<span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment"> ///@}</span>
+<a name="l00234"></a>00234 <span class="comment"></span><span class="comment"></span>
+<a name="l00235"></a>00235 <span class="comment"> /** \name Querying the GeoCoords object</span>
+<a name="l00236"></a>00236 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment"> ///@{</span>
+<a name="l00238"></a>00238 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00239"></a>00239 <span class="comment"> * @return latitude (degrees)</span>
+<a name="l00240"></a>00240 <span class="comment"> **********************************************************************/</span>
+<a name="l00241"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">00241</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat; }
+<a name="l00242"></a>00242 <span class="comment"></span>
+<a name="l00243"></a>00243 <span class="comment"> /**</span>
+<a name="l00244"></a>00244 <span class="comment"> * @return longitude (degrees)</span>
+<a name="l00245"></a>00245 <span class="comment"> **********************************************************************/</span>
+<a name="l00246"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">00246</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _long; }
+<a name="l00247"></a>00247 <span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment"> /**</span>
+<a name="l00249"></a>00249 <span class="comment"> * @return easting (meters)</span>
+<a name="l00250"></a>00250 <span class="comment"> **********************************************************************/</span>
+<a name="l00251"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">00251</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">Easting</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _easting; }
+<a name="l00252"></a>00252 <span class="comment"></span>
+<a name="l00253"></a>00253 <span class="comment"> /**</span>
+<a name="l00254"></a>00254 <span class="comment"> * @return northing (meters)</span>
+<a name="l00255"></a>00255 <span class="comment"> **********************************************************************/</span>
+<a name="l00256"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ac0202def9c16ce856f62485b5c249083">00256</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#ac0202def9c16ce856f62485b5c249083">Northing</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northing; }
+<a name="l00257"></a>00257 <span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment"> /**</span>
+<a name="l00259"></a>00259 <span class="comment"> * @return meridian convergence (degrees) for the UTM/UPS projection.</span>
+<a name="l00260"></a>00260 <span class="comment"> **********************************************************************/</span>
+<a name="l00261"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">00261</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">Convergence</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _gamma; }
+<a name="l00262"></a>00262 <span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment"> /**</span>
+<a name="l00264"></a>00264 <span class="comment"> * @return scale for the UTM/UPS projection.</span>
+<a name="l00265"></a>00265 <span class="comment"> **********************************************************************/</span>
+<a name="l00266"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#aafd68e75d223b821abcbf20179c7a9e0">00266</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#aafd68e75d223b821abcbf20179c7a9e0">Scale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k; }
+<a name="l00267"></a>00267 <span class="comment"></span>
+<a name="l00268"></a>00268 <span class="comment"> /**</span>
+<a name="l00269"></a>00269 <span class="comment"> * @return hemisphere (false means south, true means north).</span>
+<a name="l00270"></a>00270 <span class="comment"> **********************************************************************/</span>
+<a name="l00271"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">00271</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">Northp</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northp; }
+<a name="l00272"></a>00272 <span class="comment"></span>
+<a name="l00273"></a>00273 <span class="comment"> /**</span>
+<a name="l00274"></a>00274 <span class="comment"> * @return hemisphere letter N or S.</span>
+<a name="l00275"></a>00275 <span class="comment"> **********************************************************************/</span>
+<a name="l00276"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">00276</a> <span class="keywordtype">char</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">Hemisphere</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _northp ? <span class="charliteral">'N'</span> : <span class="charliteral">'S'</span>; }
+<a name="l00277"></a>00277 <span class="comment"></span>
+<a name="l00278"></a>00278 <span class="comment"> /**</span>
+<a name="l00279"></a>00279 <span class="comment"> * @return the zone corresponding to the input (return 0 for UPS).</span>
+<a name="l00280"></a>00280 <span class="comment"> **********************************************************************/</span>
+<a name="l00281"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">00281</a> <span class="keywordtype">int</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">Zone</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _zone; }
+<a name="l00282"></a>00282 <span class="comment"></span>
+<a name="l00283"></a>00283 <span class="comment"> ///@}</span>
+<a name="l00284"></a>00284 <span class="comment"></span><span class="comment"></span>
+<a name="l00285"></a>00285 <span class="comment"> /** \name Setting and querying the alternate zone</span>
+<a name="l00286"></a>00286 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00287"></a>00287 <span class="comment"> ///@{</span>
+<a name="l00288"></a>00288 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00289"></a>00289 <span class="comment"> * Specify alternate zone number.</span>
+<a name="l00290"></a>00290 <span class="comment"> *</span>
+<a name="l00291"></a>00291 <span class="comment"> * @param[in] zone zone number for the alternate representation.</span>
+<a name="l00292"></a>00292 <span class="comment"> *</span>
+<a name="l00293"></a>00293 <span class="comment"> * See UTMUPS::zonespec for more information on the interpretation of \e</span>
+<a name="l00294"></a>00294 <span class="comment"> * zone. Note that \e zone == UTMUPS::STANDARD (the default) use the</span>
+<a name="l00295"></a>00295 <span class="comment"> * standard UPS or UTM zone, UTMUPS::MATCH does nothing retaining the</span>
+<a name="l00296"></a>00296 <span class="comment"> * existing alternate representation. Before this is called the alternate</span>
+<a name="l00297"></a>00297 <span class="comment"> * zone is the input zone.</span>
+<a name="l00298"></a>00298 <span class="comment"> **********************************************************************/</span>
+<a name="l00299"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a7782c2d78462bde2ba6277b2b60af8f6">00299</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a7782c2d78462bde2ba6277b2b60af8f6">SetAltZone</a>(<span class="keywordtype">int</span> zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a>)<span class="keyword"> cons [...]
+<a name="l00300"></a>00300 <span class="keywordflow">if</span> (zone == <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3b4721e27869e99ed1ae3d320">UTMUPS::MATCH</a>)
+<a name="l00301"></a>00301 <span class="keywordflow">return</span>;
+<a name="l00302"></a>00302 zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">UTMUPS::StandardZone</a>(_lat, _long, zone);
+<a name="l00303"></a>00303 <span class="keywordflow">if</span> (zone == _zone)
+<a name="l00304"></a>00304 CopyToAlt();
+<a name="l00305"></a>00305 <span class="keywordflow">else</span> {
+<a name="l00306"></a>00306 <span class="keywordtype">bool</span> northp;
+<a name="l00307"></a>00307 <a class="code" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">UTMUPS::Forward</a>(_lat, _long,
+<a name="l00308"></a>00308 _alt_zone, northp,
+<a name="l00309"></a>00309 _alt_easting, _alt_northing, _alt_gamma, _alt_k,
+<a name="l00310"></a>00310 zone);
+<a name="l00311"></a>00311 }
+<a name="l00312"></a>00312 }
+<a name="l00313"></a>00313 <span class="comment"></span>
+<a name="l00314"></a>00314 <span class="comment"> /**</span>
+<a name="l00315"></a>00315 <span class="comment"> * @return current alternate zone (return 0 for UPS).</span>
+<a name="l00316"></a>00316 <span class="comment"> **********************************************************************/</span>
+<a name="l00317"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">00317</a> <span class="keywordtype">int</span> <a class="code" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">AltZone</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_zone; }
+<a name="l00318"></a>00318 <span class="comment"></span>
+<a name="l00319"></a>00319 <span class="comment"> /**</span>
+<a name="l00320"></a>00320 <span class="comment"> * @return easting (meters) for alternate zone.</span>
+<a name="l00321"></a>00321 <span class="comment"> **********************************************************************/</span>
+<a name="l00322"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#af4a5b63a1931973338f71ef2ec4e27fa">00322</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#af4a5b63a1931973338f71ef2ec4e27fa">AltEasting</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_easting; }
+<a name="l00323"></a>00323 <span class="comment"></span>
+<a name="l00324"></a>00324 <span class="comment"> /**</span>
+<a name="l00325"></a>00325 <span class="comment"> * @return northing (meters) for alternate zone.</span>
+<a name="l00326"></a>00326 <span class="comment"> **********************************************************************/</span>
+<a name="l00327"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a2f5a9665712214ad34b061d35ce89659">00327</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a2f5a9665712214ad34b061d35ce89659">AltNorthing</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_northing; }
+<a name="l00328"></a>00328 <span class="comment"></span>
+<a name="l00329"></a>00329 <span class="comment"> /**</span>
+<a name="l00330"></a>00330 <span class="comment"> * @return meridian convergence (degrees) for alternate zone.</span>
+<a name="l00331"></a>00331 <span class="comment"> **********************************************************************/</span>
+<a name="l00332"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a2b62e667ce462d8102fdfa6ece6ff50e">00332</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a2b62e667ce462d8102fdfa6ece6ff50e">AltConvergence</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_gamma; }
+<a name="l00333"></a>00333 <span class="comment"></span>
+<a name="l00334"></a>00334 <span class="comment"> /**</span>
+<a name="l00335"></a>00335 <span class="comment"> * @return scale for alternate zone.</span>
+<a name="l00336"></a>00336 <span class="comment"> **********************************************************************/</span>
+<a name="l00337"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">00337</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">AltScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _alt_k; }<span class="comment"></span>
+<a name="l00338"></a>00338 <span class="comment"> ///@}</span>
+<a name="l00339"></a>00339 <span class="comment"></span><span class="comment"></span>
+<a name="l00340"></a>00340 <span class="comment"> /** \name String representations of the GeoCoords object</span>
+<a name="l00341"></a>00341 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00342"></a>00342 <span class="comment"> ///@{</span>
+<a name="l00343"></a>00343 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00344"></a>00344 <span class="comment"> * String representation with latitude and longitude as signed decimal</span>
+<a name="l00345"></a>00345 <span class="comment"> * degrees.</span>
+<a name="l00346"></a>00346 <span class="comment"> *</span>
+<a name="l00347"></a>00347 <span class="comment"> * @param[in] prec precision (relative to about 1m).</span>
+<a name="l00348"></a>00348 <span class="comment"> * @param[in] swaplatlong if true give longitude first (default = false)</span>
+<a name="l00349"></a>00349 <span class="comment"> * @return decimal latitude/longitude string representation.</span>
+<a name="l00350"></a>00350 <span class="comment"> *</span>
+<a name="l00351"></a>00351 <span class="comment"> * Precision specifies accuracy of representation as follows:</span>
+<a name="l00352"></a>00352 <span class="comment"> * - prec = -5 (min), 1d</span>
+<a name="l00353"></a>00353 <span class="comment"> * - prec = 0, 10<sup>-5</sup>d (about 1m)</span>
+<a name="l00354"></a>00354 <span class="comment"> * - prec = 3, 10<sup>-8</sup>d</span>
+<a name="l00355"></a>00355 <span class="comment"> * - prec = 9 (max), 10<sup>-14</sup>d</span>
+<a name="l00356"></a>00356 <span class="comment"> **********************************************************************/</span>
+<a name="l00357"></a>00357 std::string GeoRepresentation(<span class="keywordtype">int</span> prec = 0, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>) <span class="keyword">const</span>;
+<a name="l00358"></a>00358 <span class="comment"></span>
+<a name="l00359"></a>00359 <span class="comment"> /**</span>
+<a name="l00360"></a>00360 <span class="comment"> * String representation with latitude and longitude as degrees, minutes,</span>
+<a name="l00361"></a>00361 <span class="comment"> * seconds, and hemisphere.</span>
+<a name="l00362"></a>00362 <span class="comment"> *</span>
+<a name="l00363"></a>00363 <span class="comment"> * @param[in] prec precision (relative to about 1m)</span>
+<a name="l00364"></a>00364 <span class="comment"> * @param[in] swaplatlong if true give longitude first (default = false)</span>
+<a name="l00365"></a>00365 <span class="comment"> * @param[in] dmssep if non-null, use as the DMS separator character</span>
+<a name="l00366"></a>00366 <span class="comment"> * (instead of d, ', " delimiters).</span>
+<a name="l00367"></a>00367 <span class="comment"> * @return DMS latitude/longitude string representation.</span>
+<a name="l00368"></a>00368 <span class="comment"> *</span>
+<a name="l00369"></a>00369 <span class="comment"> * Precision specifies accuracy of representation as follows:</span>
+<a name="l00370"></a>00370 <span class="comment"> * - prec = -5 (min), 1d</span>
+<a name="l00371"></a>00371 <span class="comment"> * - prec = -4, 0.1d</span>
+<a name="l00372"></a>00372 <span class="comment"> * - prec = -3, 1'</span>
+<a name="l00373"></a>00373 <span class="comment"> * - prec = -2, 0.1'</span>
+<a name="l00374"></a>00374 <span class="comment"> * - prec = -1, 1"</span>
+<a name="l00375"></a>00375 <span class="comment"> * - prec = 0, 0.1" (about 3m)</span>
+<a name="l00376"></a>00376 <span class="comment"> * - prec = 1, 0.01"</span>
+<a name="l00377"></a>00377 <span class="comment"> * - prec = 10 (max), 10<sup>-11</sup>"</span>
+<a name="l00378"></a>00378 <span class="comment"> **********************************************************************/</span>
+<a name="l00379"></a>00379 std::string DMSRepresentation(<span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> swaplatlong, <span class="keywordtype">char</span> dmssep)
+<a name="l00380"></a>00380 <span class="keyword">const</span>;
+<a name="l00381"></a>00381 <span class="comment"></span>
+<a name="l00382"></a>00382 <span class="comment"> /**</span>
+<a name="l00383"></a>00383 <span class="comment"> * String representation with latitude and longitude as degrees, minutes,</span>
+<a name="l00384"></a>00384 <span class="comment"> * seconds, and hemisphere.</span>
+<a name="l00385"></a>00385 <span class="comment"> *</span>
+<a name="l00386"></a>00386 <span class="comment"> * @param[in] prec precision (relative to about 1m)</span>
+<a name="l00387"></a>00387 <span class="comment"> * @param[in] swaplatlong if true give longitude first (default = false)</span>
+<a name="l00388"></a>00388 <span class="comment"> * @return DMS latitude/longitude string representation.</span>
+<a name="l00389"></a>00389 <span class="comment"> *</span>
+<a name="l00390"></a>00390 <span class="comment"> * <b>COMPATIBILITY NOTE:</b> This function calls</span>
+<a name="l00391"></a>00391 <span class="comment"> * DMSRepresentation(int, bool, char) const with a 3rd argument of</span>
+<a name="l00392"></a>00392 <span class="comment"> * char(0). At some point, DMSRepresentation(int, bool) const and</span>
+<a name="l00393"></a>00393 <span class="comment"> * will be withdrawn and the interface to</span>
+<a name="l00394"></a>00394 <span class="comment"> * DMSRepresentation(int, bool, char) const changed so that its</span>
+<a name="l00395"></a>00395 <span class="comment"> * arguments have default values. This will preserve source-level</span>
+<a name="l00396"></a>00396 <span class="comment"> * compatibility.</span>
+<a name="l00397"></a>00397 <span class="comment"> **********************************************************************/</span>
+<a name="l00398"></a>00398 std::string DMSRepresentation(<span class="keywordtype">int</span> prec = 0, <span class="keywordtype">bool</span> swaplatlong = <span class="keyword">false</span>) <span class="keyword">const</span>;
+<a name="l00399"></a>00399 <span class="comment"></span>
+<a name="l00400"></a>00400 <span class="comment"> /**</span>
+<a name="l00401"></a>00401 <span class="comment"> * MGRS string.</span>
+<a name="l00402"></a>00402 <span class="comment"> *</span>
+<a name="l00403"></a>00403 <span class="comment"> * @param[in] prec precision (relative to about 1m).</span>
+<a name="l00404"></a>00404 <span class="comment"> * @return MGRS string.</span>
+<a name="l00405"></a>00405 <span class="comment"> *</span>
+<a name="l00406"></a>00406 <span class="comment"> * This gives the coordinates of the enclosing grid square with size given</span>
+<a name="l00407"></a>00407 <span class="comment"> * by the precision. Thus 38N 444180 3684790 converted to a MGRS</span>
+<a name="l00408"></a>00408 <span class="comment"> * coordinate at precision -2 (100m) is 38SMB441847 and not 38SMB442848.</span>
+<a name="l00409"></a>00409 <span class="comment"> * \e prec specifies the precision of the MGRS string as follows:</span>
+<a name="l00410"></a>00410 <span class="comment"> * - prec = -5 (min), 100km</span>
+<a name="l00411"></a>00411 <span class="comment"> * - prec = -4, 10km</span>
+<a name="l00412"></a>00412 <span class="comment"> * - prec = -3, 1km</span>
+<a name="l00413"></a>00413 <span class="comment"> * - prec = -2, 100m</span>
+<a name="l00414"></a>00414 <span class="comment"> * - prec = -1, 10m</span>
+<a name="l00415"></a>00415 <span class="comment"> * - prec = 0, 1m</span>
+<a name="l00416"></a>00416 <span class="comment"> * - prec = 1, 0.1m</span>
+<a name="l00417"></a>00417 <span class="comment"> * - prec = 6 (max), 1um</span>
+<a name="l00418"></a>00418 <span class="comment"> **********************************************************************/</span>
+<a name="l00419"></a>00419 std::string MGRSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
+<a name="l00420"></a>00420 <span class="comment"></span>
+<a name="l00421"></a>00421 <span class="comment"> /**</span>
+<a name="l00422"></a>00422 <span class="comment"> * UTM/UPS string.</span>
+<a name="l00423"></a>00423 <span class="comment"> *</span>
+<a name="l00424"></a>00424 <span class="comment"> * @param[in] prec precision (relative to about 1m)</span>
+<a name="l00425"></a>00425 <span class="comment"> * @return UTM/UPS string representation: zone designator, easting, and</span>
+<a name="l00426"></a>00426 <span class="comment"> * northing.</span>
+<a name="l00427"></a>00427 <span class="comment"> *</span>
+<a name="l00428"></a>00428 <span class="comment"> * Precision specifies accuracy of representation as follows:</span>
+<a name="l00429"></a>00429 <span class="comment"> * - prec = -5 (min), 100km</span>
+<a name="l00430"></a>00430 <span class="comment"> * - prec = -3, 1km</span>
+<a name="l00431"></a>00431 <span class="comment"> * - prec = 0, 1m</span>
+<a name="l00432"></a>00432 <span class="comment"> * - prec = 3, 1mm</span>
+<a name="l00433"></a>00433 <span class="comment"> * - prec = 6, 1um</span>
+<a name="l00434"></a>00434 <span class="comment"> * - prec = 9 (max), 1nm</span>
+<a name="l00435"></a>00435 <span class="comment"> **********************************************************************/</span>
+<a name="l00436"></a>00436 std::string UTMUPSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
+<a name="l00437"></a>00437 <span class="comment"></span>
+<a name="l00438"></a>00438 <span class="comment"> /**</span>
+<a name="l00439"></a>00439 <span class="comment"> * MGRS string for the alternate zone. See GeoCoords::MGRSRepresentation.</span>
+<a name="l00440"></a>00440 <span class="comment"> **********************************************************************/</span>
+<a name="l00441"></a>00441 std::string AltMGRSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;
+<a name="l00442"></a>00442 <span class="comment"></span>
+<a name="l00443"></a>00443 <span class="comment"> /**</span>
+<a name="l00444"></a>00444 <span class="comment"> * UTM/UPS string for the alternate zone. See</span>
+<a name="l00445"></a>00445 <span class="comment"> * GeoCoords::UTMUPSRepresentation.</span>
+<a name="l00446"></a>00446 <span class="comment"> **********************************************************************/</span>
+<a name="l00447"></a>00447 std::string AltUTMUPSRepresentation(<span class="keywordtype">int</span> prec = 0) <span class="keyword">const</span>;<span class="comment"></span>
+<a name="l00448"></a>00448 <span class="comment"> ///@}</span>
+<a name="l00449"></a>00449 <span class="comment"></span><span class="comment"></span>
+<a name="l00450"></a>00450 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00451"></a>00451 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00452"></a>00452 <span class="comment"> ///@{</span>
+<a name="l00453"></a>00453 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00454"></a>00454 <span class="comment"> * @return \e a the equatorial radius of the WGS84 ellipsoid (meters).</span>
+<a name="l00455"></a>00455 <span class="comment"> *</span>
+<a name="l00456"></a>00456 <span class="comment"> * (The WGS84 value is returned because the UTM and UPS projections are</span>
+<a name="l00457"></a>00457 <span class="comment"> * based on this ellipsoid.)</span>
+<a name="l00458"></a>00458 <span class="comment"> **********************************************************************/</span>
+<a name="l00459"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">00459</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib [...]
+<a name="l00460"></a>00460 <span class="comment"></span>
+<a name="l00461"></a>00461 <span class="comment"> /**</span>
+<a name="l00462"></a>00462 <span class="comment"> * @return \e f the flattening of the WGS84 ellipsoid.</span>
+<a name="l00463"></a>00463 <span class="comment"> *</span>
+<a name="l00464"></a>00464 <span class="comment"> * (The WGS84 value is returned because the UTM and UPS projections are</span>
+<a name="l00465"></a>00465 <span class="comment"> * based on this ellipsoid.)</span>
+<a name="l00466"></a>00466 <span class="comment"> **********************************************************************/</span>
+<a name="l00467"></a><a class="code" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">00467</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_ [...]
+<a name="l00468"></a>00468 <span class="comment"> ///@}</span>
+<a name="l00469"></a>00469 <span class="comment"></span><span class="comment"></span>
+<a name="l00470"></a>00470 <span class="comment"> /// \cond SKIP</span>
+<a name="l00471"></a>00471 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00472"></a>00472 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00473"></a>00473 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00474"></a>00474 <span class="comment"> **********************************************************************/</span>
+<a name="l00475"></a>00475 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00476"></a>00476 { <span class="keywordflow">return</span> UTMUPS::InverseFlattening(); }<span class="comment"></span>
+<a name="l00477"></a>00477 <span class="comment"> /// \endcond</span>
+<a name="l00478"></a>00478 <span class="comment"></span> };
+<a name="l00479"></a>00479
+<a name="l00480"></a>00480 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00481"></a>00481
+<a name="l00482"></a>00482 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEOCOORDS_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geocentric_8cpp.html b/doc/html/Geocentric_8cpp.html
index c251bf8..bc00bfa 100644
--- a/doc/html/Geocentric_8cpp.html
+++ b/doc/html/Geocentric_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geocentric.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8cpp.html#a290e33302d7c35b9465d73f33dcb0774">GEOGRAPHICLIB_GEOCENTRIC_CPP</a> "$Id: d237d2d9a4fe5fad3d4f13147cd4cba15130543f $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8cpp.html#a290e33302d7c35b9465d73f33dcb0774">GEOGRAPHICLIB_GEOCENTRIC_CPP</a> "$Id: b5135e8042dbbbcddfd5894c66b729bf5c43cab9 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="Geocentric_8cpp_source.html">Geocentric.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEOCENTRIC_CPP "$Id: d237d2d9a4fe5fad3d4f13147cd4cba15130543f $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEOCENTRIC_CPP "$Id: b5135e8042dbbbcddfd5894c66b729bf5c43cab9 $"</td>
</tr>
</table>
</div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geocentric_8cpp_source.html b/doc/html/Geocentric_8cpp_source.html
index dcab89a..f82d8bf 100644
--- a/doc/html/Geocentric_8cpp_source.html
+++ b/doc/html/Geocentric_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geocentric.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Geocentric.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::Geocentric class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="Geocentric_8hpp.html" title="Header for GeographicLib::Geocentric class.">GeographicLib/Geocentric.hpp</a>></span>
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="Geocentric_8cpp.html#a290e33302d7c35b9465d73f33dcb0774">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEOCENTRIC_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: d237d2d9a4fe5fad3d4f13147cd4cba15130543f $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: b5135e8042dbbbcddfd5894c66b729bf5c43cab9 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geocentric_8cpp.html#a290e33302d7c35b9465d73f33dcb0774">GEOGRAPHICLIB_GEOCENTRIC_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geocentric_8hpp.html#a29517663058dd79a39541248f58db55f">GEOGRAPHICLIB_GEOCENTRIC_HPP</a>)
@@ -77,9 +92,9 @@
<a name="l00028"></a>00028 , _e4a(<a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::sq(_e2))
<a name="l00029"></a>00029 , _maxrad(2 * _a / numeric_limits<real>::epsilon())
<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00031"></a>00031 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00032"></a>00032 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00034"></a>00034 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
<a name="l00035"></a>00035 }
<a name="l00036"></a>00036
@@ -91,11 +106,11 @@
<a name="l00042"></a>00042 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00043"></a>00043 lon = lon >= 180 ? lon - 360 : (lon < -180 ? lon + 360 : lon);
<a name="l00044"></a>00044 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00045"></a>00045 phi = lat * Math::degree<real>(),
+<a name="l00045"></a>00045 phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00046"></a>00046 lam = lon * Math::degree<real>(),
<a name="l00047"></a>00047 sphi = sin(phi),
<a name="l00048"></a>00048 cphi = abs(lat) == 90 ? 0 : cos(phi),
-<a name="l00049"></a>00049 n = _a/sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sphi)),
+<a name="l00049"></a>00049 n = _a/sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sphi)),
<a name="l00050"></a>00050 slam = lon == -180 ? 0 : sin(lam),
<a name="l00051"></a>00051 clam = abs(lon) == 90 ? 0 : cos(lam);
<a name="l00052"></a>00052 Z = ( _e2m * n + h) * sphi;
@@ -110,10 +125,10 @@
<a name="l00061"></a>00061 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& h,
<a name="l00062"></a>00062 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00063"></a>00063 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00064"></a>00064 R = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y),
+<a name="l00064"></a>00064 R = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y),
<a name="l00065"></a>00065 slam = R ? Y / R : 0,
<a name="l00066"></a>00066 clam = R ? X / R : 1;
-<a name="l00067"></a>00067 h = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(R, Z); <span class="comment">// Distance to center of earth</span>
+<a name="l00067"></a>00067 h = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(R, Z); <span class="comment">// Distance to center of earth</span>
<a name="l00068"></a>00068 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi, cphi;
<a name="l00069"></a>00069 <span class="keywordflow">if</span> (h > _maxrad) {
<a name="l00070"></a>00070 <span class="comment">// We really far away (> 12 million light years); treat the earth as a</span>
@@ -122,17 +137,17 @@
<a name="l00073"></a>00073 <span class="comment">// possible that h has overflowed to inf; but that's OK.</span>
<a name="l00074"></a>00074 <span class="comment">//</span>
<a name="l00075"></a>00075 <span class="comment">// Treat the case X, Y finite, but R overflows to +inf by scaling by 2.</span>
-<a name="l00076"></a>00076 R = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X/2, Y/2);
+<a name="l00076"></a>00076 R = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X/2, Y/2);
<a name="l00077"></a>00077 slam = R ? (Y/2) / R : 0;
<a name="l00078"></a>00078 clam = R ? (X/2) / R : 1;
-<a name="l00079"></a>00079 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Z/2, R);
+<a name="l00079"></a>00079 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Z/2, R);
<a name="l00080"></a>00080 sphi = (Z/2) / H;
<a name="l00081"></a>00081 cphi = R / H;
<a name="l00082"></a>00082 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_e4a == 0) {
<a name="l00083"></a>00083 <span class="comment">// Treat the spherical case. Dealing with underflow in the general case</span>
<a name="l00084"></a>00084 <span class="comment">// with _e2 = 0 is difficult. Origin maps to N pole same as with</span>
<a name="l00085"></a>00085 <span class="comment">// ellipsoid.</span>
-<a name="l00086"></a>00086 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(h == 0 ? 1 : Z, R);
+<a name="l00086"></a>00086 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(h == 0 ? 1 : Z, R);
<a name="l00087"></a>00087 sphi = (h == 0 ? 1 : Z) / H;
<a name="l00088"></a>00088 cphi = R / H;
<a name="l00089"></a>00089 h -= _a;
@@ -140,8 +155,8 @@
<a name="l00091"></a>00091 <span class="comment">// Treat prolate spheroids by swapping R and Z here and by switching</span>
<a name="l00092"></a>00092 <span class="comment">// the arguments to phi = atan2(...) at the end.</span>
<a name="l00093"></a>00093 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00094"></a>00094 p = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(R / _a),
-<a name="l00095"></a>00095 q = _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(Z / _a),
+<a name="l00094"></a>00094 p = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(R / _a),
+<a name="l00095"></a>00095 q = _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(Z / _a),
<a name="l00096"></a>00096 r = (p + q - _e4a) / 6;
<a name="l00097"></a>00097 <span class="keywordflow">if</span> (_f < 0) swap(p, q);
<a name="l00098"></a>00098 <span class="keywordflow">if</span> ( !(_e4a * q == 0 && r <= 0) ) {
@@ -149,9 +164,9 @@
<a name="l00100"></a>00100 <span class="comment">// Avoid possible division by zero when r = 0 by multiplying</span>
<a name="l00101"></a>00101 <span class="comment">// equations for s and t by r^3 and r, resp.</span>
<a name="l00102"></a>00102 S = _e4a * p * q / 4, <span class="comment">// S = r^3 * s</span>
-<a name="l00103"></a>00103 r2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(r),
+<a name="l00103"></a>00103 r2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(r),
<a name="l00104"></a>00104 r3 = r * r2,
-<a name="l00105"></a>00105 disc = S * (2 * r3 + S);
+<a name="l00105"></a>00105 disc = S * (2 * r3 + S);
<a name="l00106"></a>00106 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u = r;
<a name="l00107"></a>00107 <span class="keywordflow">if</span> (disc >= 0) {
<a name="l00108"></a>00108 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T3 = S + r3;
@@ -160,7 +175,7 @@
<a name="l00111"></a>00111 <span class="comment">// because of the way the T is used in definition of u.</span>
<a name="l00112"></a>00112 T3 += T3 < 0 ? -sqrt(disc) : sqrt(disc); <span class="comment">// T3 = (r * t)^3</span>
<a name="l00113"></a>00113 <span class="comment">// N.B. cbrt always returns the real root. cbrt(-8) = -2.</span>
-<a name="l00114"></a>00114 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T = <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">Math::cbrt</a>(T3); <span class="comment">// T = r * t</span>
+<a name="l00114"></a>00114 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T = <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">Math::cbrt</a>(T3); <span class="comment">// T = r * t</span>
<a name="l00115"></a>00115 <span class="comment">// T can be zero; but then r2 / T -> 0.</span>
<a name="l00116"></a>00116 u += T + (T != 0 ? r2 / T : 0);
<a name="l00117"></a>00117 } <span class="keywordflow">else</span> {
@@ -171,7 +186,7 @@
<a name="l00122"></a>00122 u += 2 * r * cos(ang / 3);
<a name="l00123"></a>00123 }
<a name="l00124"></a>00124 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00125"></a>00125 v = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(u) + _e4a * q), <span class="comment">// guaranteed positive</span>
+<a name="l00125"></a>00125 v = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(u) + _e4a * q), <span class="comment">// guaranteed positive</span>
<a name="l00126"></a>00126 <span class="comment">// Avoid loss of accuracy when u < 0. Underflow doesn't occur in</span>
<a name="l00127"></a>00127 <span class="comment">// e4 * q / (v - u) because u ~ e^4 when q is small and u < 0.</span>
<a name="l00128"></a>00128 uv = u < 0 ? _e4a * q / (v - u) : u + v, <span class="comment">// u+v, guaranteed positive</span>
@@ -179,14 +194,14 @@
<a name="l00130"></a>00130 w = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), _e2a * (uv - q) / (2 * v)),
<a name="l00131"></a>00131 <span class="comment">// Rearrange expression for k to avoid loss of accuracy due to</span>
<a name="l00132"></a>00132 <span class="comment">// subtraction. Division by 0 not possible because uv > 0, w >= 0.</span>
-<a name="l00133"></a>00133 k = uv / (sqrt(uv + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(w)) + w),
+<a name="l00133"></a>00133 k = uv / (sqrt(uv + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(w)) + w),
<a name="l00134"></a>00134 k1 = _f >= 0 ? k : k - _e2,
<a name="l00135"></a>00135 k2 = _f >= 0 ? k + _e2 : k,
<a name="l00136"></a>00136 d = k1 * R / k2,
-<a name="l00137"></a>00137 H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Z/k1, R/k2);
+<a name="l00137"></a>00137 H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Z/k1, R/k2);
<a name="l00138"></a>00138 sphi = (Z/k1) / H;
<a name="l00139"></a>00139 cphi = (R/k2) / H;
-<a name="l00140"></a>00140 h = (1 - _e2m/k1) * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(d, Z);
+<a name="l00140"></a>00140 h = (1 - _e2m/k1) * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(d, Z);
<a name="l00141"></a>00141 } <span class="keywordflow">else</span> { <span class="comment">// e4 * q == 0 && r <= 0</span>
<a name="l00142"></a>00142 <span class="comment">// This leads to k = 0 (oblate, equatorial plane) and k + e^2 = 0</span>
<a name="l00143"></a>00143 <span class="comment">// (prolate, rotation axis) and the generation of 0/0 in the general</span>
@@ -197,7 +212,7 @@
<a name="l00148"></a>00148 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00149"></a>00149 zz = sqrt((_f >= 0 ? _e4a - p : p) / _e2m),
<a name="l00150"></a>00150 xx = sqrt( _f < 0 ? _e4a - p : p ),
-<a name="l00151"></a>00151 H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(zz, xx);
+<a name="l00151"></a>00151 H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(zz, xx);
<a name="l00152"></a>00152 sphi = zz / H;
<a name="l00153"></a>00153 cphi = xx / H;
<a name="l00154"></a>00154 <span class="keywordflow">if</span> (Z < 0) sphi = -sphi; <span class="comment">// for tiny negative Z (not for prolate)</span>
@@ -231,8 +246,13 @@
<a name="l00182"></a>00182 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geocentric_8hpp.html b/doc/html/Geocentric_8hpp.html
index f790572..58daa9f 100644
--- a/doc/html/Geocentric_8hpp.html
+++ b/doc/html/Geocentric_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geocentric.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,17 +83,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8hpp.html#a29517663058dd79a39541248f58db55f">GEOGRAPHICLIB_GEOCENTRIC_HPP</a> "$Id: 3d26a1dd3b0e584cd935de138af65d0e577adfcd $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8hpp.html#a29517663058dd79a39541248f58db55f">GEOGRAPHICLIB_GEOCENTRIC_HPP</a> "$Id: e9f709c85e61f60509c492429061cba04350eea8 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEOCENTRIC_HPP "$Id: 3d26a1dd3b0e584cd935de138af65d0e577adfcd $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEOCENTRIC_HPP "$Id: e9f709c85e61f60509c492429061cba04350eea8 $"</td>
</tr>
</table>
</div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geocentric_8hpp_source.html b/doc/html/Geocentric_8hpp_source.html
index c39844f..d9f2bc0 100644
--- a/doc/html/Geocentric_8hpp_source.html
+++ b/doc/html/Geocentric_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geocentric.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Geocentric.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Geocentric class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GEOCENTRIC_HPP)</span>
<a name="l00011"></a><a class="code" href="Geocentric_8hpp.html#a29517663058dd79a39541248f58db55f">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEOCENTRIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 3d26a1dd3b0e584cd935de138af65d0e577adfcd $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: e9f709c85e61f60509c492429061cba04350eea8 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <vector></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <algorithm></span>
@@ -105,225 +120,235 @@
<a name="l00055"></a>00055 <span class="comment"> *</span>
<a name="l00056"></a>00056 <span class="comment"> * Example of use:</span>
<a name="l00057"></a>00057 <span class="comment"> * \include example-Geocentric.cpp</span>
-<a name="l00058"></a>00058 <span class="comment"> **********************************************************************/</span>
-<a name="l00059"></a>00059
-<a name="l00060"></a><a class="code" href="classGeographicLib_1_1Geocentric.html">00060</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> {
-<a name="l00061"></a>00061 <span class="keyword">private</span>:
-<a name="l00062"></a>00062 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00063"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a8904c4eadcf94e3803743e8cd9ffbc1c">00063</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>;
-<a name="l00064"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a7294f6a1cc932f8fd1562a15602e9e86">00064</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>; <span class="comment">// MagneticCircle uses Rotation</span>
-<a name="l00065"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#af6619ebe4c078705fc49a0d9f950b431">00065</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>; <span class="comment">// MagneticModel uses IntForward</span>
-<a name="l00066"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a243c90a7f9bf3f7aa96877a4b0667a89">00066</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>; <span class="comment">// GravityCircle uses Rotation</span>
-<a name="l00067"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ada1db1d9f480d8044753ed869c995519">00067</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>; <span class="comment">// GravityModel uses IntForward</span>
-<a name="l00068"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae7298549755c5982fe1be124d6631561">00068</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>; <span class="comment">// NormalGravity uses IntForward</span>
-<a name="l00069"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae0383f6b1ce413d48e258750c3177f21">00069</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>;
-<a name="l00070"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#accac7c5b7843a1e4fb2baf0c83cc24f0">00070</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a>;
-<a name="l00071"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a3eabc426b6edd718324c791ef3536360">00071</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a>;
-<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim_ = 3;
-<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim2_ = dim_ * dim_;
-<a name="l00074"></a>00074 real _a, _f, _e2, _e2m, _e2a, _e4a, _maxrad;
-<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keywordtype">void</span> Rotation(real sphi, real cphi, real slam, real clam,
-<a name="l00076"></a>00076 real M[dim2_]) <span class="keywordflow">throw</span>();
-<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keywordtype">void</span> Rotate(real M[dim2_], real x, real y, real z,
-<a name="l00078"></a>00078 real& X, real& Y, real& Z) <span class="keywordflow">throw</span>() {
-<a name="l00079"></a>00079 <span class="comment">// Perform [X,Y,Z]^t = M.[x,y,z]^t</span>
-<a name="l00080"></a>00080 <span class="comment">// (typically local cartesian to geocentric)</span>
-<a name="l00081"></a>00081 X = M[0] * x + M[1] * y + M[2] * z;
-<a name="l00082"></a>00082 Y = M[3] * x + M[4] * y + M[5] * z;
-<a name="l00083"></a>00083 Z = M[6] * x + M[7] * y + M[8] * z;
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 <span class="keyword">static</span> <span class="keywordtype">void</span> Unrotate(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
-<a name="l00086"></a>00086 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& z) <span class="keywordflow">throw</span>() {
-<a name="l00087"></a>00087 <span class="comment">// Perform [x,y,z]^t = M^t.[X,Y,Z]^t</span>
-<a name="l00088"></a>00088 <span class="comment">// (typically geocentric to local cartesian)</span>
-<a name="l00089"></a>00089 x = M[0] * X + M[3] * Y + M[6] * Z;
-<a name="l00090"></a>00090 y = M[1] * X + M[4] * Y + M[7] * Z;
-<a name="l00091"></a>00091 z = M[2] * X + M[5] * Y + M[8] * Z;
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093 <span class="keywordtype">void</span> IntForward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
-<a name="l00094"></a>00094 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00095"></a>00095 <span class="keywordtype">void</span> IntReverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c [...]
-<a name="l00096"></a>00096 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <span class="keyword">public</span>:
-<a name="l00099"></a>00099 <span class="comment"></span>
-<a name="l00100"></a>00100 <span class="comment"> /**</span>
-<a name="l00101"></a>00101 <span class="comment"> * Constructor for a ellipsoid with</span>
-<a name="l00102"></a>00102 <span class="comment"> *</span>
-<a name="l00103"></a>00103 <span class="comment"> * @param[in] a equatorial radius (meters).</span>
-<a name="l00104"></a>00104 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00105"></a>00105 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00106"></a>00106 <span class="comment"> * to 1/\e f.</span>
-<a name="l00107"></a>00107 <span class="comment"> *</span>
-<a name="l00108"></a>00108 <span class="comment"> * An exception is thrown if either of the axes of the ellipsoid is</span>
-<a name="l00109"></a>00109 <span class="comment"> * non-positive.</span>
-<a name="l00110"></a>00110 <span class="comment"> **********************************************************************/</span>
-<a name="l00111"></a>00111 Geocentric(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f);
-<a name="l00112"></a>00112 <span class="comment"></span>
-<a name="l00113"></a>00113 <span class="comment"> /**</span>
-<a name="l00114"></a>00114 <span class="comment"> * A default constructor (for use by NormalGravity).</span>
-<a name="l00115"></a>00115 <span class="comment"> **********************************************************************/</span>
-<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#adc92d7214526b4cfcd0b9a0171fc8448">00116</a> <a class="code" href="classGeographicLib_1_1Geocentric.html#adc92d7214526b4cfcd0b9a0171fc8448">Geocentric</a>() : _a(-1) {}
-<a name="l00117"></a>00117 <span class="comment"></span>
-<a name="l00118"></a>00118 <span class="comment"> /**</span>
-<a name="l00119"></a>00119 <span class="comment"> * Convert from geodetic to geocentric coordinates.</span>
-<a name="l00120"></a>00120 <span class="comment"> *</span>
-<a name="l00121"></a>00121 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00122"></a>00122 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00123"></a>00123 <span class="comment"> * @param[in] h height of point above the ellipsoid (meters).</span>
-<a name="l00124"></a>00124 <span class="comment"> * @param[out] X geocentric coordinate (meters).</span>
-<a name="l00125"></a>00125 <span class="comment"> * @param[out] Y geocentric coordinate (meters).</span>
-<a name="l00126"></a>00126 <span class="comment"> * @param[out] Z geocentric coordinate (meters).</span>
-<a name="l00127"></a>00127 <span class="comment"> *</span>
-<a name="l00128"></a>00128 <span class="comment"> * \e lat should be in the range [-90, 90]; \e lon and \e lon0 should be in</span>
-<a name="l00129"></a>00129 <span class="comment"> * the range [-180, 360].</span>
-<a name="l00130"></a>00130 <span class="comment"> **********************************************************************/</span>
-<a name="l00131"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a65320594cad8c03d28beaa409f3d6fae">00131</a> <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& X, real& Y, real& Z)
-<a name="l00132"></a>00132 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (Init())
-<a name="l00134"></a>00134 IntForward(lat, lon, h, X, Y, Z, NULL);
-<a name="l00135"></a>00135 }
-<a name="l00136"></a>00136 <span class="comment"></span>
-<a name="l00137"></a>00137 <span class="comment"> /**</span>
-<a name="l00138"></a>00138 <span class="comment"> * Convert from geodetic to geocentric coordinates and return rotation</span>
-<a name="l00139"></a>00139 <span class="comment"> * matrix.</span>
-<a name="l00140"></a>00140 <span class="comment"> *</span>
-<a name="l00141"></a>00141 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00142"></a>00142 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00143"></a>00143 <span class="comment"> * @param[in] h height of point above the ellipsoid (meters).</span>
-<a name="l00144"></a>00144 <span class="comment"> * @param[out] X geocentric coordinate (meters).</span>
-<a name="l00145"></a>00145 <span class="comment"> * @param[out] Y geocentric coordinate (meters).</span>
-<a name="l00146"></a>00146 <span class="comment"> * @param[out] Z geocentric coordinate (meters).</span>
-<a name="l00147"></a>00147 <span class="comment"> * @param[out] M if the length of the vector is 9, fill with the rotation</span>
-<a name="l00148"></a>00148 <span class="comment"> * matrix in row-major order.</span>
-<a name="l00149"></a>00149 <span class="comment"> *</span>
-<a name="l00150"></a>00150 <span class="comment"> * Let \e v be a unit vector located at (\e lat, \e lon, \e h). We can</span>
-<a name="l00151"></a>00151 <span class="comment"> * express \e v as \e column vectors in one of two ways</span>
-<a name="l00152"></a>00152 <span class="comment"> * - in east, north, up coordinates (where the components are relative to a</span>
-<a name="l00153"></a>00153 <span class="comment"> * local coordinate system at (\e lat, \e lon, \e h)); call this</span>
-<a name="l00154"></a>00154 <span class="comment"> * representation \e v1.</span>
-<a name="l00155"></a>00155 <span class="comment"> * - in geocentric \e X, \e Y, \e Z coordinates; call this representation</span>
-<a name="l00156"></a>00156 <span class="comment"> * \e v0.</span>
-<a name="l00157"></a>00157 <span class="comment"> * .</span>
-<a name="l00158"></a>00158 <span class="comment"> * Then we have \e v0 = \e M . \e v1.</span>
-<a name="l00159"></a>00159 <span class="comment"> **********************************************************************/</span>
-<a name="l00160"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a54e09e4673ddbf99feeba81036c81345">00160</a> <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& X, real& Y, real& Z,
-<a name="l00161"></a>00161 std::vector<real>& M)
-<a name="l00162"></a>00162 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00163"></a>00163 <span class="keywordflow">if</span> (!Init())
-<a name="l00164"></a>00164 <span class="keywordflow">return</span>;
-<a name="l00165"></a>00165 <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
-<a name="l00166"></a>00166 real t[dim2_];
-<a name="l00167"></a>00167 IntForward(lat, lon, h, X, Y, Z, t);
-<a name="l00168"></a>00168 copy(t, t + dim2_, M.begin());
-<a name="l00169"></a>00169 } <span class="keywordflow">else</span>
-<a name="l00170"></a>00170 IntForward(lat, lon, h, X, Y, Z, NULL);
-<a name="l00171"></a>00171 }
-<a name="l00172"></a>00172 <span class="comment"></span>
-<a name="l00173"></a>00173 <span class="comment"> /**</span>
-<a name="l00174"></a>00174 <span class="comment"> * Convert from geocentric to geodetic to coordinates.</span>
-<a name="l00175"></a>00175 <span class="comment"> *</span>
-<a name="l00176"></a>00176 <span class="comment"> * @param[in] X geocentric coordinate (meters).</span>
-<a name="l00177"></a>00177 <span class="comment"> * @param[in] Y geocentric coordinate (meters).</span>
-<a name="l00178"></a>00178 <span class="comment"> * @param[in] Z geocentric coordinate (meters).</span>
-<a name="l00179"></a>00179 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00180"></a>00180 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00181"></a>00181 <span class="comment"> * @param[out] h height of point above the ellipsoid (meters).</span>
-<a name="l00182"></a>00182 <span class="comment"> *</span>
-<a name="l00183"></a>00183 <span class="comment"> * In general there are multiple solutions and the result which maximizes</span>
-<a name="l00184"></a>00184 <span class="comment"> * \e h is returned. If there are still multiple solutions with different</span>
-<a name="l00185"></a>00185 <span class="comment"> * latitudes (applies only if \e Z = 0), then the solution with \e lat > 0</span>
-<a name="l00186"></a>00186 <span class="comment"> * is returned. If there are still multiple solutions with different</span>
-<a name="l00187"></a>00187 <span class="comment"> * longitudes (applies only if \e X = \e Y = 0) then \e lon = 0 is</span>
-<a name="l00188"></a>00188 <span class="comment"> * returned. The value of \e h returned satisfies \e h >= - \e a (1 -</span>
-<a name="l00189"></a>00189 <span class="comment"> * <i>e</i><sup>2</sup>) / sqrt(1 - <i>e</i><sup>2</sup> sin<sup>2</sup>\e</span>
-<a name="l00190"></a>00190 <span class="comment"> * lat). The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00191"></a>00191 <span class="comment"> **********************************************************************/</span>
-<a name="l00192"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">00192</a> <span class="keywordtype">void</span> Reverse(real X, real Y, real Z, real& lat, real& lon, real& h)
-<a name="l00193"></a>00193 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00194"></a>00194 <span class="keywordflow">if</span> (Init())
-<a name="l00195"></a>00195 IntReverse(X, Y, Z, lat, lon, h, NULL);
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197 <span class="comment"></span>
-<a name="l00198"></a>00198 <span class="comment"> /**</span>
-<a name="l00199"></a>00199 <span class="comment"> * Convert from geocentric to geodetic to coordinates.</span>
-<a name="l00200"></a>00200 <span class="comment"> *</span>
-<a name="l00201"></a>00201 <span class="comment"> * @param[in] X geocentric coordinate (meters).</span>
-<a name="l00202"></a>00202 <span class="comment"> * @param[in] Y geocentric coordinate (meters).</span>
-<a name="l00203"></a>00203 <span class="comment"> * @param[in] Z geocentric coordinate (meters).</span>
-<a name="l00204"></a>00204 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00205"></a>00205 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00206"></a>00206 <span class="comment"> * @param[out] h height of point above the ellipsoid (meters).</span>
-<a name="l00207"></a>00207 <span class="comment"> * @param[out] M if the length of the vector is 9, fill with the rotation</span>
-<a name="l00208"></a>00208 <span class="comment"> * matrix in row-major order.</span>
-<a name="l00209"></a>00209 <span class="comment"> *</span>
-<a name="l00210"></a>00210 <span class="comment"> * Let \e v be a unit vector located at (\e lat, \e lon, \e h). We can</span>
-<a name="l00211"></a>00211 <span class="comment"> * express \e v as \e column vectors in one of two ways</span>
-<a name="l00212"></a>00212 <span class="comment"> * - in east, north, up coordinates (where the components are relative to a</span>
-<a name="l00213"></a>00213 <span class="comment"> * local coordinate system at (\e lat, \e lon, \e h)); call this</span>
-<a name="l00214"></a>00214 <span class="comment"> * representation \e v1.</span>
-<a name="l00215"></a>00215 <span class="comment"> * - in geocentric \e X, \e Y, \e Z coordinates; call this representation</span>
-<a name="l00216"></a>00216 <span class="comment"> * \e v0.</span>
-<a name="l00217"></a>00217 <span class="comment"> * .</span>
-<a name="l00218"></a>00218 <span class="comment"> * Then we have \e v1 = \e M^T . \e v0, where \e M^T is the transpose of \e</span>
-<a name="l00219"></a>00219 <span class="comment"> * M.</span>
-<a name="l00220"></a>00220 <span class="comment"> **********************************************************************/</span>
-<a name="l00221"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#aeddd854d52064bcb1f068052057edf2c">00221</a> <span class="keywordtype">void</span> Reverse(real X, real Y, real Z, real& lat, real& lon, real& h,
-<a name="l00222"></a>00222 std::vector<real>& M)
-<a name="l00223"></a>00223 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00224"></a>00224 <span class="keywordflow">if</span> (!Init())
-<a name="l00225"></a>00225 <span class="keywordflow">return</span>;
-<a name="l00226"></a>00226 <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
-<a name="l00227"></a>00227 real t[dim2_];
-<a name="l00228"></a>00228 IntReverse(X, Y, Z, lat, lon, h, t);
-<a name="l00229"></a>00229 copy(t, t + dim2_, M.begin());
-<a name="l00230"></a>00230 } <span class="keywordflow">else</span>
-<a name="l00231"></a>00231 IntReverse(X, Y, Z, lat, lon, h, NULL);
-<a name="l00232"></a>00232 }
-<a name="l00233"></a>00233 <span class="comment"></span>
-<a name="l00234"></a>00234 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00235"></a>00235 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00236"></a>00236 <span class="comment"> ///@{</span>
-<a name="l00237"></a>00237 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00238"></a>00238 <span class="comment"> * @return true if the object has been initialized.</span>
-<a name="l00239"></a>00239 <span class="comment"> **********************************************************************/</span>
-<a name="l00240"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">00240</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }<span class="comment"></span>
-<a name="l00241"></a>00241 <span class="comment"> /**</span>
-<a name="l00242"></a>00242 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00243"></a>00243 <span class="comment"> * the value used in the constructor.</span>
-<a name="l00244"></a>00244 <span class="comment"> **********************************************************************/</span>
-<a name="l00245"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae20c62c298f1724412fec581285cf269">00245</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00246"></a>00246 { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }
-<a name="l00247"></a>00247 <span class="comment"></span>
-<a name="l00248"></a>00248 <span class="comment"> /**</span>
-<a name="l00249"></a>00249 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the</span>
-<a name="l00250"></a>00250 <span class="comment"> * value used in the constructor.</span>
-<a name="l00251"></a>00251 <span class="comment"> **********************************************************************/</span>
-<a name="l00252"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a30ba434524b5836c9852d454e61d795f">00252</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00253"></a>00253 { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }
-<a name="l00254"></a>00254 <span class="comment"></span>
-<a name="l00255"></a>00255 <span class="comment"> /**</span>
-<a name="l00256"></a>00256 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00257"></a>00257 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00258"></a>00258 <span class="comment"> **********************************************************************/</span>
-<a name="l00259"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">00259</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00260"></a>00260 { <span class="keywordflow">return</span> Init() ? 1/_f : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00261"></a>00261 <span class="comment"> ///@}</span>
-<a name="l00262"></a>00262 <span class="comment"></span><span class="comment"></span>
-<a name="l00263"></a>00263 <span class="comment"> /**</span>
-<a name="l00264"></a>00264 <span class="comment"> * A global instantiation of Geocentric with the parameters for the WGS84</span>
-<a name="l00265"></a>00265 <span class="comment"> * ellipsoid.</span>
-<a name="l00266"></a>00266 <span class="comment"> **********************************************************************/</span>
-<a name="l00267"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">00267</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">WGS84</a>;
-<a name="l00268"></a>00268 };
-<a name="l00269"></a>00269
-<a name="l00270"></a>00270 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00271"></a>00271
-<a name="l00272"></a>00272 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEOCENTRIC_HPP</span>
+<a name="l00058"></a>00058 <span class="comment"> *</span>
+<a name="l00059"></a>00059 <span class="comment"> * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility</span>
+<a name="l00060"></a>00060 <span class="comment"> * providing access to the functionality of Geocentric and LocalCartesian.</span>
+<a name="l00061"></a>00061 <span class="comment"> **********************************************************************/</span>
+<a name="l00062"></a>00062
+<a name="l00063"></a>00063 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Geocentric {
+<a name="l00064"></a>00064 <span class="keyword">private</span>:
+<a name="l00065"></a>00065 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00066"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a8904c4eadcf94e3803743e8cd9ffbc1c">00066</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>;
+<a name="l00067"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a7294f6a1cc932f8fd1562a15602e9e86">00067</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>; <span class="comment">// MagneticCircle uses Rotation</span>
+<a name="l00068"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#af6619ebe4c078705fc49a0d9f950b431">00068</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>; <span class="comment">// MagneticModel uses IntForward</span>
+<a name="l00069"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a243c90a7f9bf3f7aa96877a4b0667a89">00069</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>; <span class="comment">// GravityCircle uses Rotation</span>
+<a name="l00070"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ada1db1d9f480d8044753ed869c995519">00070</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>; <span class="comment">// GravityModel uses IntForward</span>
+<a name="l00071"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae7298549755c5982fe1be124d6631561">00071</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>; <span class="comment">// NormalGravity uses IntForward</span>
+<a name="l00072"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae0383f6b1ce413d48e258750c3177f21">00072</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>;
+<a name="l00073"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#accac7c5b7843a1e4fb2baf0c83cc24f0">00073</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a>;
+<a name="l00074"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a3eabc426b6edd718324c791ef3536360">00074</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a>;
+<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim_ = 3;
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim2_ = dim_ * dim_;
+<a name="l00077"></a>00077 real _a, _f, _e2, _e2m, _e2a, _e4a, _maxrad;
+<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keywordtype">void</span> Rotation(real sphi, real cphi, real slam, real clam,
+<a name="l00079"></a>00079 real M[dim2_]) <span class="keywordflow">throw</span>();
+<a name="l00080"></a>00080 <span class="keyword">static</span> <span class="keywordtype">void</span> Rotate(real M[dim2_], real x, real y, real z,
+<a name="l00081"></a>00081 real& X, real& Y, real& Z) <span class="keywordflow">throw</span>() {
+<a name="l00082"></a>00082 <span class="comment">// Perform [X,Y,Z]^t = M.[x,y,z]^t</span>
+<a name="l00083"></a>00083 <span class="comment">// (typically local cartesian to geocentric)</span>
+<a name="l00084"></a>00084 X = M[0] * x + M[1] * y + M[2] * z;
+<a name="l00085"></a>00085 Y = M[3] * x + M[4] * y + M[5] * z;
+<a name="l00086"></a>00086 Z = M[6] * x + M[7] * y + M[8] * z;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keywordtype">void</span> Unrotate(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00089"></a>00089 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& z) <span class="keywordflow">throw</span>() {
+<a name="l00090"></a>00090 <span class="comment">// Perform [x,y,z]^t = M^t.[X,Y,Z]^t</span>
+<a name="l00091"></a>00091 <span class="comment">// (typically geocentric to local cartesian)</span>
+<a name="l00092"></a>00092 x = M[0] * X + M[3] * Y + M[6] * Z;
+<a name="l00093"></a>00093 y = M[1] * X + M[4] * Y + M[7] * Z;
+<a name="l00094"></a>00094 z = M[2] * X + M[5] * Y + M[8] * Z;
+<a name="l00095"></a>00095 }
+<a name="l00096"></a>00096 <span class="keywordtype">void</span> IntForward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
+<a name="l00097"></a>00097 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00098"></a>00098 <span class="keywordtype">void</span> IntReverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c [...]
+<a name="l00099"></a>00099 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="keyword">public</span>:
+<a name="l00102"></a>00102 <span class="comment"></span>
+<a name="l00103"></a>00103 <span class="comment"> /**</span>
+<a name="l00104"></a>00104 <span class="comment"> * Constructor for a ellipsoid with</span>
+<a name="l00105"></a>00105 <span class="comment"> *</span>
+<a name="l00106"></a>00106 <span class="comment"> * @param[in] a equatorial radius (meters).</span>
+<a name="l00107"></a>00107 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00108"></a>00108 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00109"></a>00109 <span class="comment"> * to 1/\e f.</span>
+<a name="l00110"></a>00110 <span class="comment"> *</span>
+<a name="l00111"></a>00111 <span class="comment"> * An exception is thrown if either of the axes of the ellipsoid is</span>
+<a name="l00112"></a>00112 <span class="comment"> * non-positive.</span>
+<a name="l00113"></a>00113 <span class="comment"> **********************************************************************/</span>
+<a name="l00114"></a>00114 Geocentric(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f);
+<a name="l00115"></a>00115 <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment"> /**</span>
+<a name="l00117"></a>00117 <span class="comment"> * A default constructor (for use by NormalGravity).</span>
+<a name="l00118"></a>00118 <span class="comment"> **********************************************************************/</span>
+<a name="l00119"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#adc92d7214526b4cfcd0b9a0171fc8448">00119</a> <a class="code" href="classGeographicLib_1_1Geocentric.html#adc92d7214526b4cfcd0b9a0171fc8448">Geocentric</a>() : _a(-1) {}
+<a name="l00120"></a>00120 <span class="comment"></span>
+<a name="l00121"></a>00121 <span class="comment"> /**</span>
+<a name="l00122"></a>00122 <span class="comment"> * Convert from geodetic to geocentric coordinates.</span>
+<a name="l00123"></a>00123 <span class="comment"> *</span>
+<a name="l00124"></a>00124 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00125"></a>00125 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00126"></a>00126 <span class="comment"> * @param[in] h height of point above the ellipsoid (meters).</span>
+<a name="l00127"></a>00127 <span class="comment"> * @param[out] X geocentric coordinate (meters).</span>
+<a name="l00128"></a>00128 <span class="comment"> * @param[out] Y geocentric coordinate (meters).</span>
+<a name="l00129"></a>00129 <span class="comment"> * @param[out] Z geocentric coordinate (meters).</span>
+<a name="l00130"></a>00130 <span class="comment"> *</span>
+<a name="l00131"></a>00131 <span class="comment"> * \e lat should be in the range [-90, 90]; \e lon and \e lon0 should be in</span>
+<a name="l00132"></a>00132 <span class="comment"> * the range [-180, 360].</span>
+<a name="l00133"></a>00133 <span class="comment"> **********************************************************************/</span>
+<a name="l00134"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a65320594cad8c03d28beaa409f3d6fae">00134</a> <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& X, real& Y, real& Z)
+<a name="l00135"></a>00135 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (Init())
+<a name="l00137"></a>00137 IntForward(lat, lon, h, X, Y, Z, NULL);
+<a name="l00138"></a>00138 }
+<a name="l00139"></a>00139 <span class="comment"></span>
+<a name="l00140"></a>00140 <span class="comment"> /**</span>
+<a name="l00141"></a>00141 <span class="comment"> * Convert from geodetic to geocentric coordinates and return rotation</span>
+<a name="l00142"></a>00142 <span class="comment"> * matrix.</span>
+<a name="l00143"></a>00143 <span class="comment"> *</span>
+<a name="l00144"></a>00144 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00145"></a>00145 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00146"></a>00146 <span class="comment"> * @param[in] h height of point above the ellipsoid (meters).</span>
+<a name="l00147"></a>00147 <span class="comment"> * @param[out] X geocentric coordinate (meters).</span>
+<a name="l00148"></a>00148 <span class="comment"> * @param[out] Y geocentric coordinate (meters).</span>
+<a name="l00149"></a>00149 <span class="comment"> * @param[out] Z geocentric coordinate (meters).</span>
+<a name="l00150"></a>00150 <span class="comment"> * @param[out] M if the length of the vector is 9, fill with the rotation</span>
+<a name="l00151"></a>00151 <span class="comment"> * matrix in row-major order.</span>
+<a name="l00152"></a>00152 <span class="comment"> *</span>
+<a name="l00153"></a>00153 <span class="comment"> * Let \e v be a unit vector located at (\e lat, \e lon, \e h). We can</span>
+<a name="l00154"></a>00154 <span class="comment"> * express \e v as \e column vectors in one of two ways</span>
+<a name="l00155"></a>00155 <span class="comment"> * - in east, north, up coordinates (where the components are relative to a</span>
+<a name="l00156"></a>00156 <span class="comment"> * local coordinate system at (\e lat, \e lon, \e h)); call this</span>
+<a name="l00157"></a>00157 <span class="comment"> * representation \e v1.</span>
+<a name="l00158"></a>00158 <span class="comment"> * - in geocentric \e X, \e Y, \e Z coordinates; call this representation</span>
+<a name="l00159"></a>00159 <span class="comment"> * \e v0.</span>
+<a name="l00160"></a>00160 <span class="comment"> * .</span>
+<a name="l00161"></a>00161 <span class="comment"> * Then we have \e v0 = \e M . \e v1.</span>
+<a name="l00162"></a>00162 <span class="comment"> **********************************************************************/</span>
+<a name="l00163"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a54e09e4673ddbf99feeba81036c81345">00163</a> <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& X, real& Y, real& Z,
+<a name="l00164"></a>00164 std::vector<real>& M)
+<a name="l00165"></a>00165 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00166"></a>00166 <span class="keywordflow">if</span> (!Init())
+<a name="l00167"></a>00167 <span class="keywordflow">return</span>;
+<a name="l00168"></a>00168 <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
+<a name="l00169"></a>00169 real t[dim2_];
+<a name="l00170"></a>00170 IntForward(lat, lon, h, X, Y, Z, t);
+<a name="l00171"></a>00171 copy(t, t + dim2_, M.begin());
+<a name="l00172"></a>00172 } <span class="keywordflow">else</span>
+<a name="l00173"></a>00173 IntForward(lat, lon, h, X, Y, Z, NULL);
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 <span class="comment"></span>
+<a name="l00176"></a>00176 <span class="comment"> /**</span>
+<a name="l00177"></a>00177 <span class="comment"> * Convert from geocentric to geodetic to coordinates.</span>
+<a name="l00178"></a>00178 <span class="comment"> *</span>
+<a name="l00179"></a>00179 <span class="comment"> * @param[in] X geocentric coordinate (meters).</span>
+<a name="l00180"></a>00180 <span class="comment"> * @param[in] Y geocentric coordinate (meters).</span>
+<a name="l00181"></a>00181 <span class="comment"> * @param[in] Z geocentric coordinate (meters).</span>
+<a name="l00182"></a>00182 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00183"></a>00183 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00184"></a>00184 <span class="comment"> * @param[out] h height of point above the ellipsoid (meters).</span>
+<a name="l00185"></a>00185 <span class="comment"> *</span>
+<a name="l00186"></a>00186 <span class="comment"> * In general there are multiple solutions and the result which maximizes</span>
+<a name="l00187"></a>00187 <span class="comment"> * \e h is returned. If there are still multiple solutions with different</span>
+<a name="l00188"></a>00188 <span class="comment"> * latitudes (applies only if \e Z = 0), then the solution with \e lat > 0</span>
+<a name="l00189"></a>00189 <span class="comment"> * is returned. If there are still multiple solutions with different</span>
+<a name="l00190"></a>00190 <span class="comment"> * longitudes (applies only if \e X = \e Y = 0) then \e lon = 0 is</span>
+<a name="l00191"></a>00191 <span class="comment"> * returned. The value of \e h returned satisfies \e h >= - \e a (1 -</span>
+<a name="l00192"></a>00192 <span class="comment"> * <i>e</i><sup>2</sup>) / sqrt(1 - <i>e</i><sup>2</sup> sin<sup>2</sup>\e</span>
+<a name="l00193"></a>00193 <span class="comment"> * lat). The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00194"></a>00194 <span class="comment"> **********************************************************************/</span>
+<a name="l00195"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">00195</a> <span class="keywordtype">void</span> Reverse(real X, real Y, real Z, real& lat, real& lon, real& h)
+<a name="l00196"></a>00196 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00197"></a>00197 <span class="keywordflow">if</span> (Init())
+<a name="l00198"></a>00198 IntReverse(X, Y, Z, lat, lon, h, NULL);
+<a name="l00199"></a>00199 }
+<a name="l00200"></a>00200 <span class="comment"></span>
+<a name="l00201"></a>00201 <span class="comment"> /**</span>
+<a name="l00202"></a>00202 <span class="comment"> * Convert from geocentric to geodetic to coordinates.</span>
+<a name="l00203"></a>00203 <span class="comment"> *</span>
+<a name="l00204"></a>00204 <span class="comment"> * @param[in] X geocentric coordinate (meters).</span>
+<a name="l00205"></a>00205 <span class="comment"> * @param[in] Y geocentric coordinate (meters).</span>
+<a name="l00206"></a>00206 <span class="comment"> * @param[in] Z geocentric coordinate (meters).</span>
+<a name="l00207"></a>00207 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00208"></a>00208 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00209"></a>00209 <span class="comment"> * @param[out] h height of point above the ellipsoid (meters).</span>
+<a name="l00210"></a>00210 <span class="comment"> * @param[out] M if the length of the vector is 9, fill with the rotation</span>
+<a name="l00211"></a>00211 <span class="comment"> * matrix in row-major order.</span>
+<a name="l00212"></a>00212 <span class="comment"> *</span>
+<a name="l00213"></a>00213 <span class="comment"> * Let \e v be a unit vector located at (\e lat, \e lon, \e h). We can</span>
+<a name="l00214"></a>00214 <span class="comment"> * express \e v as \e column vectors in one of two ways</span>
+<a name="l00215"></a>00215 <span class="comment"> * - in east, north, up coordinates (where the components are relative to a</span>
+<a name="l00216"></a>00216 <span class="comment"> * local coordinate system at (\e lat, \e lon, \e h)); call this</span>
+<a name="l00217"></a>00217 <span class="comment"> * representation \e v1.</span>
+<a name="l00218"></a>00218 <span class="comment"> * - in geocentric \e X, \e Y, \e Z coordinates; call this representation</span>
+<a name="l00219"></a>00219 <span class="comment"> * \e v0.</span>
+<a name="l00220"></a>00220 <span class="comment"> * .</span>
+<a name="l00221"></a>00221 <span class="comment"> * Then we have \e v1 = \e M^T . \e v0, where \e M^T is the transpose of \e</span>
+<a name="l00222"></a>00222 <span class="comment"> * M.</span>
+<a name="l00223"></a>00223 <span class="comment"> **********************************************************************/</span>
+<a name="l00224"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#aeddd854d52064bcb1f068052057edf2c">00224</a> <span class="keywordtype">void</span> Reverse(real X, real Y, real Z, real& lat, real& lon, real& h,
+<a name="l00225"></a>00225 std::vector<real>& M)
+<a name="l00226"></a>00226 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00227"></a>00227 <span class="keywordflow">if</span> (!Init())
+<a name="l00228"></a>00228 <span class="keywordflow">return</span>;
+<a name="l00229"></a>00229 <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
+<a name="l00230"></a>00230 real t[dim2_];
+<a name="l00231"></a>00231 IntReverse(X, Y, Z, lat, lon, h, t);
+<a name="l00232"></a>00232 copy(t, t + dim2_, M.begin());
+<a name="l00233"></a>00233 } <span class="keywordflow">else</span>
+<a name="l00234"></a>00234 IntReverse(X, Y, Z, lat, lon, h, NULL);
+<a name="l00235"></a>00235 }
+<a name="l00236"></a>00236 <span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00238"></a>00238 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment"> ///@{</span>
+<a name="l00240"></a>00240 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00241"></a>00241 <span class="comment"> * @return true if the object has been initialized.</span>
+<a name="l00242"></a>00242 <span class="comment"> **********************************************************************/</span>
+<a name="l00243"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">00243</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }<span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment"> /**</span>
+<a name="l00245"></a>00245 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00246"></a>00246 <span class="comment"> * the value used in the constructor.</span>
+<a name="l00247"></a>00247 <span class="comment"> **********************************************************************/</span>
+<a name="l00248"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#ae20c62c298f1724412fec581285cf269">00248</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00249"></a>00249 { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00250"></a>00250 <span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment"> /**</span>
+<a name="l00252"></a>00252 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the</span>
+<a name="l00253"></a>00253 <span class="comment"> * value used in the constructor.</span>
+<a name="l00254"></a>00254 <span class="comment"> **********************************************************************/</span>
+<a name="l00255"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a30ba434524b5836c9852d454e61d795f">00255</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00256"></a>00256 { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00257"></a>00257 <span class="comment"> ///@}</span>
+<a name="l00258"></a>00258 <span class="comment"></span><span class="comment"></span>
+<a name="l00259"></a>00259 <span class="comment"> /// \cond SKIP</span>
+<a name="l00260"></a>00260 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00261"></a>00261 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00262"></a>00262 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00263"></a>00263 <span class="comment"> **********************************************************************/</span>
+<a name="l00264"></a>00264 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00265"></a>00265 { <span class="keywordflow">return</span> Init() ? 1/_f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00266"></a>00266 <span class="comment"> /// \endcond</span>
+<a name="l00267"></a>00267 <span class="comment"></span><span class="comment"></span>
+<a name="l00268"></a>00268 <span class="comment"> /**</span>
+<a name="l00269"></a>00269 <span class="comment"> * A global instantiation of Geocentric with the parameters for the WGS84</span>
+<a name="l00270"></a>00270 <span class="comment"> * ellipsoid.</span>
+<a name="l00271"></a>00271 <span class="comment"> **********************************************************************/</span>
+<a name="l00272"></a><a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">00272</a> <span class="keyword">static</span> <span class="keyword">const</span> Geocentric <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">WGS84</a>;
+<a name="l00273"></a>00273 };
+<a name="l00274"></a>00274
+<a name="l00275"></a>00275 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEOCENTRIC_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geod.1.html b/doc/html/Geod.1.html
index bbb82e1..e19892e 100644
--- a/doc/html/Geod.1.html
+++ b/doc/html/Geod.1.html
@@ -48,9 +48,11 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>Geod</strong> [ <strong>-i</strong> | <strong>-l</strong> <em>lat1</em> <em>lon1</em> <em>azi1</em> ] [ <strong>-a</strong> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
-[ <strong>-d</strong> ] [ <strong>-b</strong> ] [ <strong>-f</strong> ] [ <strong>-p</strong> <em>prec</em> ]
+[ <strong>-d</strong> | <strong>-:</strong> ] [ <strong>-b</strong> ] [ <strong>-f</strong> ] [ <strong>-p</strong> <em>prec</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -116,6 +118,12 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
<dd>
<p>output angles as degrees, minutes, seconds instead of decimal degrees.</p>
</dd>
+<dt><strong><a name="__" class="item"><strong>-:</strong></a></strong></dt>
+
+<dd>
+<p>like <strong>-d</strong>, except use : as a separator instead of the d, ', and "
+delimiters.</p>
+</dd>
<dt><strong><a name="b" class="item"><strong>-b</strong></a></strong></dt>
<dd>
@@ -136,6 +144,15 @@ quantities <em>m12</em>, <em>M12</em>, <em>M21</em>, and <em>S12</em> are descri
<p>set the output precision to <em>prec</em> (default 3); <em>prec</em> is the
precision relative to 1 m. See <a href="#precision">PRECISION</a>.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -161,8 +178,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -249,24 +272,24 @@ will be converted.</p>
<h1><a name="examples">EXAMPLES</a></h1>
<p>Route from JFK Airport to Singapore Changi Airport:</p>
<pre>
- echo "40d38'23N" "073d46'44W" "01d21'33N" "103d59'22E" |
- Geod -i -d -p 0</pre>
+ echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
+ Geod -i -: -p 0</pre>
<pre>
- 003d18'29.9" 177d29'09.2" 15347628 4302458</pre>
+ 003:18:29.9 177:29:09.2 15347628</pre>
<p>Waypoints on the route at intervals of 2000km:</p>
<pre>
for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |
- Geod -l "40d38'23N" "073d46'44W" "003d18'29.9" -d -p 0</pre>
+ Geod -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0</pre>
<pre>
- 40d38'23.0"N 073d46'44.0"W 003d18'29.9" 0
- 58d34'45.1"N 071d49'36.7"W 004d48'48.8" 1967419
- 76d22'28.4"N 065d32'17.8"W 010d41'38.4" 3743642
- 84d50'28.0"N 075d04'39.2"E 150d55'00.9" 5156905
- 67d26'20.3"N 098d00'51.2"E 173d27'20.3" 6070415
- 49d33'03.2"N 101d06'52.6"E 176d07'54.3" 6394568
- 31d34'16.5"N 102d30'46.3"E 177d03'08.4" 6095725
- 13d31'56.0"N 103d26'50.7"E 177d24'55.0" 5200700
- 04d32'05.7"S 104d14'48.7"E 177d28'43.6" 3795596</pre>
+ 40:38:23.0N 073:46:44.0W 003:18:29.9
+ 58:34:45.1N 071:49:36.7W 004:48:48.8
+ 76:22:28.4N 065:32:17.8W 010:41:38.4
+ 84:50:28.0N 075:04:39.2E 150:55:00.9
+ 67:26:20.3N 098:00:51.2E 173:27:20.3
+ 49:33:03.2N 101:06:52.6E 176:07:54.3
+ 31:34:16.5N 102:30:46.3E 177:03:08.4
+ 13:31:56.0N 103:26:50.7E 177:24:55.0
+ 04:32:05.7S 104:14:48.7E 177:28:43.6</pre>
<p>
</p>
<hr />
diff --git a/doc/html/Geod_8cpp.html b/doc/html/Geod_8cpp.html
index b102f6a..f9266e7 100644
--- a/doc/html/Geod_8cpp.html
+++ b/doc/html/Geod_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geod.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,15 +85,15 @@ Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">GeographicLib::Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, int prec, bool dms)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi, int prec, bool dms)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, int prec, bool dms, char dmssep)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi, int prec, bool dms, char dmssep)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a> (<a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12, <a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a12, bool full, bool arcmode, int prec, bool dms)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a> (const std::string &s, bool arcmode)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for geodesic calculations. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o Geod \ <a class="el" href="Geod_8cpp.html" title="Command line utility for geodesic calculations.">Geod.cpp</a> \ ../src/DMS.cpp \ ../src/Geodesic.cpp \ ../src/GeodesicLine.cpp</p>
<p>See the <a href="Geod.1.html">man page</a> for usage information. </p>
@@ -100,7 +115,7 @@ Functions</h2></td></tr>
</div>
</div>
<hr/><h2>Function Documentation</h2>
-<a class="anchor" id="a816c824309c06ba9fce8978d534c8a59"></a><!-- doxytag: member="Geod.cpp::LatLonString" ref="a816c824309c06ba9fce8978d534c8a59" args="(real lat, real lon, int prec, bool dms)" -->
+<a class="anchor" id="a8c3a2a4c039b4d0118416afd97a45fcf"></a><!-- doxytag: member="Geod.cpp::LatLonString" ref="a8c3a2a4c039b4d0118416afd97a45fcf" args="(real lat, real lon, int prec, bool dms, char dmssep)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -126,7 +141,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool </td>
- <td class="paramname"><em>dms</em> </td>
+ <td class="paramname"><em>dms</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char </td>
+ <td class="paramname"><em>dmssep</em> </td>
</tr>
<tr>
<td></td>
@@ -145,7 +166,7 @@ Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ade33c0d3b83c6fcbf2fc612d5c6a7172"></a><!-- doxytag: member="Geod.cpp::AzimuthString" ref="ade33c0d3b83c6fcbf2fc612d5c6a7172" args="(real azi, int prec, bool dms)" -->
+<a class="anchor" id="adeb84b4732b410c9fdccf799037ef245"></a><!-- doxytag: member="Geod.cpp::AzimuthString" ref="adeb84b4732b410c9fdccf799037ef245" args="(real azi, int prec, bool dms, char dmssep)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -165,7 +186,13 @@ Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool </td>
- <td class="paramname"><em>dms</em> </td>
+ <td class="paramname"><em>dms</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char </td>
+ <td class="paramname"><em>dmssep</em> </td>
</tr>
<tr>
<td></td>
@@ -178,7 +205,7 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="Geod_8cpp_source.html#l00043">43</a> of file <a class="el" href="Geod_8cpp_source.html">Geod.cpp</a>.</p>
-<p>References <a class="el" href="DMS_8hpp_source.html#l00084">GeographicLib::DMS::AZIMUTH</a>, <a class="el" href="DMS_8cpp_source.html#l00261">GeographicLib::DMS::Encode()</a>, and <a class="el" href="DMS_8hpp_source.html#l00089">GeographicLib::DMS::NUMBER</a>.</p>
+<p>References <a class="el" href="DMS_8cpp_source.html#l00261">GeographicLib::DMS::Encode()</a>, <a class="el" href="DMS_8hpp_source.html#l00084">GeographicLib::DMS::AZIMUTH</a>, and <a class="el" href="DMS_8hpp_source.html#l00089">GeographicLib::DMS::NUMBER</a>.</p>
<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
@@ -301,13 +328,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="Geod_8cpp_source.html#l00067">67</a> of file <a class="el" href="Geod_8cpp_source.html">Geod.cpp</a>.</p>
-<p>References <a class="el" href="Geodesic_8hpp_source.html#l00457">GeographicLib::Geodesic::ArcDirect()</a>, <a class="el" href="Geod_8cpp_source.html#l00043">AzimuthString()</a>, <a class="el" href="DMS_8cpp_source.html#l00249">GeographicLib::DMS::DecodeAzimuth()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="Geodesic_8hpp_source.html#l00345">GeographicLib::Geodesic::Direct()</a>, <a class="el" href="Geod_8cpp_source.ht [...]
+<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="DMS_8cpp_source.html#l00249">GeographicLib::DMS::DecodeAzimuth()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00105">GeographicLib::Geodesic::Line()</a>, <a class="el" href="Geodesic_8hpp_source.html#l00635">GeographicLib::Geodesic::Inverse()</a>, <a class="el" href="Geod_8cpp_source.html#l00034">LatLonString()</a>, <a class="el" href="Geod_8cpp_source.html#l0 [...]
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geod_8cpp_source.html b/doc/html/Geod_8cpp_source.html
index b47c6a3..824c9fb 100644
--- a/doc/html/Geod_8cpp_source.html
+++ b/doc/html/Geod_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geod.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Geod.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for geodesic calculations</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -78,21 +93,21 @@
<a name="l00029"></a>00029
<a name="l00030"></a>00030 <span class="preprocessor">#include "Geod.usage"</span>
<a name="l00031"></a>00031
-<a name="l00032"></a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">00032</a> <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">GeographicLib::Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00032"></a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">00032</a> <span class="keyword">typedef</span> GeographicLib<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00033"></a>00033
-<a name="l00034"></a><a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">00034</a> std::string <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> dms) {
+<a name="l00034"></a><a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">00034</a> std::string <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> dms, <span class="keywordtype">char [...]
<a name="l00035"></a>00035 <span class="keyword">using namespace </span>GeographicLib;
<a name="l00036"></a>00036 <span class="keywordflow">return</span> dms ?
-<a name="l00037"></a>00037 <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lat, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>) + <span class="stringliteral">" "</span> +
-<a name="l00038"></a>00038 <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lon, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>) :
-<a name="l00039"></a>00039 <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lat, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) + <span class="stringliteral">" "</span> +
-<a name="l00040"></a>00040 <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(lon, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
+<a name="l00037"></a>00037 <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(lat, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>, dmssep) + <span class="stringliteral">" "</span> +
+<a name="l00038"></a>00038 <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(lon, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>, dmssep) :
+<a name="l00039"></a>00039 <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(lat, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) + <span class="stringliteral">" "</span> +
+<a name="l00040"></a>00040 <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(lon, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
<a name="l00041"></a>00041 }
<a name="l00042"></a>00042
-<a name="l00043"></a><a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">00043</a> std::string <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi, <span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> dms) {
+<a name="l00043"></a><a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">00043</a> std::string <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi, <span class="keywordtype">int</span> prec, <span class="keywordtype">bool</span> dms, <span class="keywordtype">char</span> dmssep) {
<a name="l00044"></a>00044 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00045"></a>00045 <span class="keywordflow">return</span> dms ? <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(azi, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a92264580521b3a1c1df2a7421b435e24">DMS::AZIMUTH</a>) :
-<a name="l00046"></a>00046 <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(azi >= 180 ? azi - 360 : azi, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
+<a name="l00045"></a>00045 <span class="keywordflow">return</span> dms ? <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(azi, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a92264580521b3a1c1df2a7421b435e24">DMS::AZIMUTH</a>, dmssep) :
+<a name="l00046"></a>00046 <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(azi >= 180 ? azi - 360 : azi, prec + 5, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
<a name="l00047"></a>00047 }
<a name="l00048"></a>00048
<a name="l00049"></a><a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">00049</a> std::string <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a12,
@@ -100,17 +115,17 @@
<a name="l00051"></a>00051 <span class="keyword">using namespace </span>GeographicLib;
<a name="l00052"></a>00052 std::string s;
<a name="l00053"></a>00053 <span class="keywordflow">if</span> (full || !arcmode)
-<a name="l00054"></a>00054 s += Utility::str<real>(s12, prec);
+<a name="l00054"></a>00054 s += <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(s12, prec);
<a name="l00055"></a>00055 <span class="keywordflow">if</span> (full)
<a name="l00056"></a>00056 s += <span class="stringliteral">" "</span>;
<a name="l00057"></a>00057 <span class="keywordflow">if</span> (full || arcmode)
-<a name="l00058"></a>00058 s += <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(a12, prec + 5, dms ? <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869adc80eee37727cca42f9805cfefb83fc1">DMS::NONE</a> : <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
+<a name="l00058"></a>00058 s += <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(a12, prec + 5, dms ? <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869adc80eee37727cca42f9805cfefb83fc1">DMS::NONE</a> : <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>);
<a name="l00059"></a>00059 <span class="keywordflow">return</span> s;
<a name="l00060"></a>00060 }
<a name="l00061"></a>00061
<a name="l00062"></a><a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">00062</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(<span class="keyword">const</span> std::string& s, <span class="keywordtype">bool</span> arcmode) {
<a name="l00063"></a>00063 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> arcmode ? <a class="code" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">DMS::DecodeAngle</a>(s) : Utility::num<real>(s);
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> arcmode ? <a class="code" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">DMS::DecodeAngle</a>(s) : <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(s);
<a name="l00065"></a>00065 }
<a name="l00066"></a>00066
<a name="l00067"></a><a class="code" href="Geod_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00067</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
@@ -119,222 +134,250 @@
<a name="l00070"></a>00070 <span class="keywordtype">bool</span> linecalc = <span class="keyword">false</span>, inverse = <span class="keyword">false</span>, arcmode = <span class="keyword">false</span>,
<a name="l00071"></a>00071 dms = <span class="keyword">false</span>, full = <span class="keyword">false</span>;
<a name="l00072"></a>00072 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00073"></a>00073 a = Constants::WGS84_a<real>(),
+<a name="l00073"></a>00073 a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
<a name="l00074"></a>00074 f = Constants::WGS84_f<real>();
<a name="l00075"></a>00075 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, lon1, azi1, lat2, lon2, azi2, s12, m12, a12, M12, M21, S12;
<a name="l00076"></a>00076 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi2sense = 0;
<a name="l00077"></a>00077 <span class="keywordtype">int</span> prec = 3;
-<a name="l00078"></a>00078 std::string istring, ifile, ofile;
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00081"></a>00081 std::string arg(argv[m]);
-<a name="l00082"></a>00082 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-i"</span>) {
-<a name="l00083"></a>00083 inverse = <span class="keyword">true</span>;
-<a name="l00084"></a>00084 linecalc = <span class="keyword">false</span>;
-<a name="l00085"></a>00085 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-a"</span>)
-<a name="l00086"></a>00086 arcmode = <span class="keyword">true</span>;
-<a name="l00087"></a>00087 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00088"></a>00088 inverse = <span class="keyword">false</span>;
-<a name="l00089"></a>00089 linecalc = <span class="keyword">true</span>;
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00091"></a>00091 <span class="keywordflow">try</span> {
-<a name="l00092"></a>00092 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
-<a name="l00093"></a>00093 lat1, lon1);
-<a name="l00094"></a>00094 azi1 = <a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DMS::DecodeAzimuth</a>(std::string(argv[m + 3]));
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00097"></a>00097 std::cerr << <span class="stringliteral">"Error decoding arguments of -l: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00098"></a>00098 <span class="keywordflow">return</span> 1;
-<a name="l00099"></a>00099 }
-<a name="l00100"></a>00100 m += 3;
-<a name="l00101"></a>00101 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00103"></a>00103 <span class="keywordflow">try</span> {
-<a name="l00104"></a>00104 a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00105"></a>00105 f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00106"></a>00106 }
-<a name="l00107"></a>00107 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00108"></a>00108 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00109"></a>00109 <span class="keywordflow">return</span> 1;
-<a name="l00110"></a>00110 }
-<a name="l00111"></a>00111 m += 2;
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>)
-<a name="l00114"></a>00114 dms = <span class="keyword">true</span>;
-<a name="l00115"></a>00115 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-b"</span>)
-<a name="l00116"></a>00116 azi2sense = 180;
-<a name="l00117"></a>00117 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-f"</span>)
-<a name="l00118"></a>00118 full = <span class="keyword">true</span>;
-<a name="l00119"></a>00119 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
-<a name="l00120"></a>00120 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00121"></a>00121 <span class="keywordflow">try</span> {
-<a name="l00122"></a>00122 prec = Utility::num<int>(std::string(argv[m]));
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00125"></a>00125 std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
-<a name="l00126"></a>00126 <span class="keywordflow">return</span> 1;
-<a name="l00127"></a>00127 }
-<a name="l00128"></a>00128 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00130"></a>00130 istring = argv[m];
-<a name="l00131"></a>00131 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00132"></a>00132 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00133"></a>00133 ifile = argv[m];
-<a name="l00134"></a>00134 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00135"></a>00135 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00136"></a>00136 ofile = argv[m];
-<a name="l00137"></a>00137 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00138"></a>00138 std::cout
-<a name="l00139"></a>00139 << argv[0]
-<a name="l00140"></a>00140 << <span class="stringliteral">": $Id: 6fb53e2b731f1709ea62061e7dbd94e2b9a6aaf2 $\n"</span>
-<a name="l00141"></a>00141 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00142"></a>00142 <span class="keywordflow">return</span> 0;
-<a name="l00143"></a>00143 } <span class="keywordflow">else</span>
-<a name="l00144"></a>00144 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00148"></a>00148 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00149"></a>00149 <span class="keywordflow">return</span> 1;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00152"></a>00152 std::ifstream infile;
-<a name="l00153"></a>00153 std::istringstream instring;
-<a name="l00154"></a>00154 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00155"></a>00155 infile.open(ifile.c_str());
-<a name="l00156"></a>00156 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00157"></a>00157 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> 1;
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00161"></a>00161 std::string::size_type m = 0;
-<a name="l00162"></a>00162 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00163"></a>00163 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00164"></a>00164 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00165"></a>00165 <span class="keywordflow">break</span>;
-<a name="l00166"></a>00166 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168 instring.str(istring);
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00171"></a>00171 (!istring.empty() ? &instring : &std::cin);
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 std::ofstream outfile;
-<a name="l00174"></a>00174 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00176"></a>00176 outfile.open(ofile.c_str());
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00178"></a>00178 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> 1;
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181 }
-<a name="l00182"></a>00182 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
-<a name="l00183"></a>00183
-<a name="l00184"></a>00184 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
-<a name="l00185"></a>00185 <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> l;
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (linecalc)
-<a name="l00187"></a>00187 l = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Line</a>(lat1, lon1, azi1);
-<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="comment">// Max precision = 10: 0.1 nm in distance, 10^-15 deg (= 0.11 nm),</span>
-<a name="l00190"></a>00190 <span class="comment">// 10^-11 sec (= 0.3 nm).</span>
-<a name="l00191"></a>00191 prec = std::min(10, std::max(0, prec));
-<a name="l00192"></a>00192 std::string s;
-<a name="l00193"></a>00193 <span class="keywordtype">int</span> retval = 0;
-<a name="l00194"></a>00194 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00195"></a>00195 <span class="keywordflow">try</span> {
-<a name="l00196"></a>00196 std::istringstream str(s);
-<a name="l00197"></a>00197 <span class="keywordflow">if</span> (inverse) {
-<a name="l00198"></a>00198 std::string slat1, slon1, slat2, slon2;
-<a name="l00199"></a>00199 <span class="keywordflow">if</span> (!(str >> slat1 >> slon1 >> slat2 >> slon2))
-<a name="l00200"></a>00200 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00201"></a>00201 std::string strc;
-<a name="l00202"></a>00202 <span class="keywordflow">if</span> (str >> strc)
-<a name="l00203"></a>00203 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00204"></a>00204 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat1, slon1, lat1, lon1);
-<a name="l00205"></a>00205 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat2, slon2, lat2, lon2);
-<a name="l00206"></a>00206 a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Inverse</a>(lat1, lon1, lat2, lon2, s12, azi1, azi2,
-<a name="l00207"></a>00207 m12, M12, M21, S12);
-<a name="l00208"></a>00208 <span class="keywordflow">if</span> (full)
-<a name="l00209"></a>00209 *output << <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(lat1, lon1, prec, dms) << <span class="stringliteral">" "</span>;
-<a name="l00210"></a>00210 *output << <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(azi1, prec, dms) << <span class="stringliteral">" "</span>;
-<a name="l00211"></a>00211 <span class="keywordflow">if</span> (full)
-<a name="l00212"></a>00212 *output << <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(lat2, lon2, prec, dms) << <span class="stringliteral">" "</span>;
-<a name="l00213"></a>00213 *output << <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(azi2 + azi2sense, prec, dms) << <span class="stringliteral">" "</span>
-<a name="l00214"></a>00214 << <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(s12, a12, full, arcmode, prec, dms);
-<a name="l00215"></a>00215 <span class="keywordflow">if</span> (full)
-<a name="l00216"></a>00216 *output << <span class="stringliteral">" "</span> << Utility::str<real>(m12, prec)
-<a name="l00217"></a>00217 << <span class="stringliteral">" "</span> << Utility::str<real>(M12, prec+7)
-<a name="l00218"></a>00218 << <span class="stringliteral">" "</span> << Utility::str<real>(M21, prec+7)
-<a name="l00219"></a>00219 << <span class="stringliteral">" "</span> << Utility::str<real>(S12, std::max(prec-7, 0));
-<a name="l00220"></a>00220 *output << <span class="stringliteral">"\n"</span>;
-<a name="l00221"></a>00221 } <span class="keywordflow">else</span> {
-<a name="l00222"></a>00222 <span class="keywordflow">if</span> (linecalc) {
-<a name="l00223"></a>00223 std::string ss12;
-<a name="l00224"></a>00224 <span class="keywordflow">if</span> (!(str >> ss12))
-<a name="l00225"></a>00225 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00226"></a>00226 std::string strc;
-<a name="l00227"></a>00227 <span class="keywordflow">if</span> (str >> strc)
-<a name="l00228"></a>00228 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00229"></a>00229 s12 = <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(ss12, arcmode);
-<a name="l00230"></a>00230 <span class="keywordflow">if</span> (arcmode)
-<a name="l00231"></a>00231 l.ArcPosition(s12, lat2, lon2, azi2, a12, m12, M12, M21, S12);
-<a name="l00232"></a>00232 <span class="keywordflow">else</span>
-<a name="l00233"></a>00233 a12 = l.Position(s12, lat2, lon2, azi2, m12, M12, M21, S12);
-<a name="l00234"></a>00234 } <span class="keywordflow">else</span> {
-<a name="l00235"></a>00235 std::string slat1, slon1, sazi1, ss12;
-<a name="l00236"></a>00236 <span class="keywordflow">if</span> (!(str >> slat1 >> slon1 >> sazi1 >> ss12))
-<a name="l00237"></a>00237 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00238"></a>00238 std::string strc;
-<a name="l00239"></a>00239 <span class="keywordflow">if</span> (str >> strc)
-<a name="l00240"></a>00240 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00241"></a>00241 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat1, slon1, lat1, lon1);
-<a name="l00242"></a>00242 azi1 = <a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DMS::DecodeAzimuth</a>(sazi1);
-<a name="l00243"></a>00243 s12 = <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(ss12, arcmode);
-<a name="l00244"></a>00244 <span class="keywordflow">if</span> (arcmode)
-<a name="l00245"></a>00245 geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">ArcDirect</a>(lat1, lon1, azi1, s12, lat2, lon2, azi2, a12,
-<a name="l00246"></a>00246 m12, M12, M21, S12);
-<a name="l00247"></a>00247 <span class="keywordflow">else</span>
-<a name="l00248"></a>00248 a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Direct</a>(lat1, lon1, azi1, s12, lat2, lon2, azi2,
-<a name="l00249"></a>00249 m12, M12, M21, S12);
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251 <span class="keywordflow">if</span> (arcmode)
-<a name="l00252"></a>00252 std::swap(s12, a12);
-<a name="l00253"></a>00253 <span class="keywordflow">if</span> (full)
-<a name="l00254"></a>00254 *output << <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(lat1, lon1, prec, dms) << <span class="stringliteral">" "</span>
-<a name="l00255"></a>00255 << <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(azi1, prec, dms) << <span class="stringliteral">" "</span>;
-<a name="l00256"></a>00256 *output << <a class="code" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">LatLonString</a>(lat2, lon2, prec, dms) << <span class="stringliteral">" "</span>
-<a name="l00257"></a>00257 << <a class="code" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">AzimuthString</a>(azi2 + azi2sense, prec, dms);
-<a name="l00258"></a>00258 <span class="keywordflow">if</span> (full)
-<a name="l00259"></a>00259 *output << <span class="stringliteral">" "</span>
-<a name="l00260"></a>00260 << <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(s12, a12, full, arcmode, prec, dms)
-<a name="l00261"></a>00261 << <span class="stringliteral">" "</span> << Utility::str<real>(m12, prec)
-<a name="l00262"></a>00262 << <span class="stringliteral">" "</span> << Utility::str<real>(M12, prec+7)
-<a name="l00263"></a>00263 << <span class="stringliteral">" "</span> << Utility::str<real>(M21, prec+7)
-<a name="l00264"></a>00264 << <span class="stringliteral">" "</span> << Utility::str<real>(S12, std::max(prec-7, 0));
-<a name="l00265"></a>00265 *output << <span class="stringliteral">"\n"</span>;
-<a name="l00266"></a>00266 }
-<a name="l00267"></a>00267 }
-<a name="l00268"></a>00268 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00269"></a>00269 <span class="comment">// Write error message cout so output lines match input lines</span>
-<a name="l00270"></a>00270 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00271"></a>00271 retval = 1;
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273 }
-<a name="l00274"></a>00274 <span class="keywordflow">return</span> retval;
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00277"></a>00277 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00278"></a>00278 <span class="keywordflow">return</span> 1;
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 <span class="keywordflow">catch</span> (...) {
-<a name="l00281"></a>00281 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00282"></a>00282 <span class="keywordflow">return</span> 1;
-<a name="l00283"></a>00283 }
-<a name="l00284"></a>00284 }
+<a name="l00078"></a>00078 std::string istring, ifile, ofile, cdelim;
+<a name="l00079"></a>00079 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>, dmssep = char(0);
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00082"></a>00082 std::string arg(argv[m]);
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-i"</span>) {
+<a name="l00084"></a>00084 inverse = <span class="keyword">true</span>;
+<a name="l00085"></a>00085 linecalc = <span class="keyword">false</span>;
+<a name="l00086"></a>00086 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-a"</span>)
+<a name="l00087"></a>00087 arcmode = <span class="keyword">true</span>;
+<a name="l00088"></a>00088 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
+<a name="l00089"></a>00089 inverse = <span class="keyword">false</span>;
+<a name="l00090"></a>00090 linecalc = <span class="keyword">true</span>;
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00092"></a>00092 <span class="keywordflow">try</span> {
+<a name="l00093"></a>00093 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
+<a name="l00094"></a>00094 lat1, lon1);
+<a name="l00095"></a>00095 azi1 = <a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DMS::DecodeAzimuth</a>(std::string(argv[m + 3]));
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00098"></a>00098 std::cerr << <span class="stringliteral">"Error decoding arguments of -l: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00099"></a>00099 <span class="keywordflow">return</span> 1;
+<a name="l00100"></a>00100 }
+<a name="l00101"></a>00101 m += 3;
+<a name="l00102"></a>00102 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104 <span class="keywordflow">try</span> {
+<a name="l00105"></a>00105 a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00106"></a>00106 f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00109"></a>00109 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> 1;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 m += 2;
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00115"></a>00115 dms = <span class="keyword">true</span>;
+<a name="l00116"></a>00116 dmssep = <span class="charliteral">'\0'</span>;
+<a name="l00117"></a>00117 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-:"</span>) {
+<a name="l00118"></a>00118 dms = <span class="keyword">true</span>;
+<a name="l00119"></a>00119 dmssep = <span class="charliteral">':'</span>;
+<a name="l00120"></a>00120 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-b"</span>)
+<a name="l00121"></a>00121 azi2sense = 180;
+<a name="l00122"></a>00122 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-f"</span>)
+<a name="l00123"></a>00123 full = <span class="keyword">true</span>;
+<a name="l00124"></a>00124 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00126"></a>00126 <span class="keywordflow">try</span> {
+<a name="l00127"></a>00127 prec = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(std::string(argv[m]));
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00130"></a>00130 std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
+<a name="l00131"></a>00131 <span class="keywordflow">return</span> 1;
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00134"></a>00134 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00135"></a>00135 istring = argv[m];
+<a name="l00136"></a>00136 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00137"></a>00137 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00138"></a>00138 ifile = argv[m];
+<a name="l00139"></a>00139 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00141"></a>00141 ofile = argv[m];
+<a name="l00142"></a>00142 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00143"></a>00143 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00144"></a>00144 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00145"></a>00145 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00146"></a>00146 <span class="keywordflow">return</span> 1;
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 lsep = argv[m][0];
+<a name="l00149"></a>00149 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00150"></a>00150 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00151"></a>00151 cdelim = argv[m];
+<a name="l00152"></a>00152 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00153"></a>00153 std::cout
+<a name="l00154"></a>00154 << argv[0]
+<a name="l00155"></a>00155 << <span class="stringliteral">": $Id: 68e3a8ec4a5717094498179912279a756f6e3f8b $\n"</span>
+<a name="l00156"></a>00156 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00157"></a>00157 <span class="keywordflow">return</span> 0;
+<a name="l00158"></a>00158 } <span class="keywordflow">else</span>
+<a name="l00159"></a>00159 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00160"></a>00160 }
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00163"></a>00163 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00164"></a>00164 <span class="keywordflow">return</span> 1;
+<a name="l00165"></a>00165 }
+<a name="l00166"></a>00166 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00167"></a>00167 std::ifstream infile;
+<a name="l00168"></a>00168 std::istringstream instring;
+<a name="l00169"></a>00169 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00170"></a>00170 infile.open(ifile.c_str());
+<a name="l00171"></a>00171 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00172"></a>00172 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00173"></a>00173 <span class="keywordflow">return</span> 1;
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00176"></a>00176 std::string::size_type m = 0;
+<a name="l00177"></a>00177 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00178"></a>00178 m = istring.find(lsep, m);
+<a name="l00179"></a>00179 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00180"></a>00180 <span class="keywordflow">break</span>;
+<a name="l00181"></a>00181 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00182"></a>00182 }
+<a name="l00183"></a>00183 instring.str(istring);
+<a name="l00184"></a>00184 }
+<a name="l00185"></a>00185 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00186"></a>00186 (!istring.empty() ? &instring : &std::cin);
+<a name="l00187"></a>00187
+<a name="l00188"></a>00188 std::ofstream outfile;
+<a name="l00189"></a>00189 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00190"></a>00190 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00191"></a>00191 outfile.open(ofile.c_str());
+<a name="l00192"></a>00192 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00193"></a>00193 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00194"></a>00194 <span class="keywordflow">return</span> 1;
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196 }
+<a name="l00197"></a>00197 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
+<a name="l00200"></a>00200 <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> l;
+<a name="l00201"></a>00201 <span class="keywordflow">if</span> (linecalc)
+<a name="l00202"></a>00202 l = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Line</a>(lat1, lon1, azi1);
+<a name="l00203"></a>00203
+<a name="l00204"></a>00204 <span class="comment">// Max precision = 10: 0.1 nm in distance, 10^-15 deg (= 0.11 nm),</span>
+<a name="l00205"></a>00205 <span class="comment">// 10^-11 sec (= 0.3 nm).</span>
+<a name="l00206"></a>00206 prec = std::min(10, std::max(0, prec));
+<a name="l00207"></a>00207 std::string s;
+<a name="l00208"></a>00208 <span class="keywordtype">int</span> retval = 0;
+<a name="l00209"></a>00209 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00210"></a>00210 <span class="keywordflow">try</span> {
+<a name="l00211"></a>00211 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00212"></a>00212 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00213"></a>00213 std::string::size_type m = s.find(cdelim);
+<a name="l00214"></a>00214 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00215"></a>00215 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00216"></a>00216 s = s.substr(0, m);
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218 }
+<a name="l00219"></a>00219 std::istringstream str(s);
+<a name="l00220"></a>00220 <span class="keywordflow">if</span> (inverse) {
+<a name="l00221"></a>00221 std::string slat1, slon1, slat2, slon2;
+<a name="l00222"></a>00222 <span class="keywordflow">if</span> (!(str >> slat1 >> slon1 >> slat2 >> slon2))
+<a name="l00223"></a>00223 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00224"></a>00224 std::string strc;
+<a name="l00225"></a>00225 <span class="keywordflow">if</span> (str >> strc)
+<a name="l00226"></a>00226 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00227"></a>00227 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat1, slon1, lat1, lon1);
+<a name="l00228"></a>00228 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat2, slon2, lat2, lon2);
+<a name="l00229"></a>00229 a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Inverse</a>(lat1, lon1, lat2, lon2, s12, azi1, azi2,
+<a name="l00230"></a>00230 m12, M12, M21, S12);
+<a name="l00231"></a>00231 <span class="keywordflow">if</span> (full)
+<a name="l00232"></a>00232 *output << <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(lat1, lon1, prec, dms, dmssep) << <span class="stringliteral">" "</span>;
+<a name="l00233"></a>00233 *output << <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(azi1, prec, dms, dmssep) << <span class="stringliteral">" "</span>;
+<a name="l00234"></a>00234 <span class="keywordflow">if</span> (full)
+<a name="l00235"></a>00235 *output << <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(lat2, lon2, prec, dms, dmssep) << <span class="stringliteral">" "</span>;
+<a name="l00236"></a>00236 *output << <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(azi2 + azi2sense, prec, dms, dmssep) << <span class="stringliteral">" "</span>
+<a name="l00237"></a>00237 << <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(s12, a12, full, arcmode, prec, dms);
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (full)
+<a name="l00239"></a>00239 *output << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(m12, prec)
+<a name="l00240"></a>00240 << <span class="stringliteral">" "</span> << Utility::str<real>(M12, prec+7)
+<a name="l00241"></a>00241 << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(M21, prec+7)
+<a name="l00242"></a>00242 << <span class="stringliteral">" "</span> << Utility::str<real>(S12, std::max(prec-7, 0));
+<a name="l00243"></a>00243 *output << eol;
+<a name="l00244"></a>00244 } <span class="keywordflow">else</span> {
+<a name="l00245"></a>00245 <span class="keywordflow">if</span> (linecalc) {
+<a name="l00246"></a>00246 std::string ss12;
+<a name="l00247"></a>00247 <span class="keywordflow">if</span> (!(str >> ss12))
+<a name="l00248"></a>00248 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00249"></a>00249 std::string strc;
+<a name="l00250"></a>00250 <span class="keywordflow">if</span> (str >> strc)
+<a name="l00251"></a>00251 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00252"></a>00252 s12 = <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(ss12, arcmode);
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (arcmode)
+<a name="l00254"></a>00254 l.ArcPosition(s12, lat2, lon2, azi2, a12, m12, M12, M21, S12);
+<a name="l00255"></a>00255 <span class="keywordflow">else</span>
+<a name="l00256"></a>00256 a12 = l.Position(s12, lat2, lon2, azi2, m12, M12, M21, S12);
+<a name="l00257"></a>00257 } <span class="keywordflow">else</span> {
+<a name="l00258"></a>00258 std::string slat1, slon1, sazi1, ss12;
+<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!(str >> slat1 >> slon1 >> sazi1 >> ss12))
+<a name="l00260"></a>00260 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00261"></a>00261 std::string strc;
+<a name="l00262"></a>00262 <span class="keywordflow">if</span> (str >> strc)
+<a name="l00263"></a>00263 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00264"></a>00264 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(slat1, slon1, lat1, lon1);
+<a name="l00265"></a>00265 azi1 = <a class="code" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DMS::DecodeAzimuth</a>(sazi1);
+<a name="l00266"></a>00266 s12 = <a class="code" href="Geod_8cpp.html#a01ac56deedd203bd66c8c7328654b7e9">ReadDistance</a>(ss12, arcmode);
+<a name="l00267"></a>00267 <span class="keywordflow">if</span> (arcmode)
+<a name="l00268"></a>00268 geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">ArcDirect</a>(lat1, lon1, azi1, s12, lat2, lon2, azi2, a12,
+<a name="l00269"></a>00269 m12, M12, M21, S12);
+<a name="l00270"></a>00270 <span class="keywordflow">else</span>
+<a name="l00271"></a>00271 a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Direct</a>(lat1, lon1, azi1, s12, lat2, lon2, azi2,
+<a name="l00272"></a>00272 m12, M12, M21, S12);
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 <span class="keywordflow">if</span> (arcmode)
+<a name="l00275"></a>00275 std::swap(s12, a12);
+<a name="l00276"></a>00276 <span class="keywordflow">if</span> (full)
+<a name="l00277"></a>00277 *output << <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(lat1, lon1, prec, dms, dmssep) << <span class="stringliteral">" "</span>
+<a name="l00278"></a>00278 << <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(azi1, prec, dms, dmssep) << <span class="stringliteral">" "</span>;
+<a name="l00279"></a>00279 *output << <a class="code" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">LatLonString</a>(lat2, lon2, prec, dms, dmssep) << <span class="stringliteral">" "</span>
+<a name="l00280"></a>00280 << <a class="code" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">AzimuthString</a>(azi2 + azi2sense, prec, dms, dmssep);
+<a name="l00281"></a>00281 <span class="keywordflow">if</span> (full)
+<a name="l00282"></a>00282 *output << <span class="stringliteral">" "</span>
+<a name="l00283"></a>00283 << <a class="code" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">DistanceStrings</a>(s12, a12, full, arcmode, prec, dms)
+<a name="l00284"></a>00284 << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(m12, prec)
+<a name="l00285"></a>00285 << <span class="stringliteral">" "</span> << Utility::str<real>(M12, prec+7)
+<a name="l00286"></a>00286 << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(M21, prec+7)
+<a name="l00287"></a>00287 << <span class="stringliteral">" "</span> << Utility::str<real>(S12, std::max(prec-7, 0));
+<a name="l00288"></a>00288 *output << eol;
+<a name="l00289"></a>00289 }
+<a name="l00290"></a>00290 }
+<a name="l00291"></a>00291 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00292"></a>00292 <span class="comment">// Write error message cout so output lines match input lines</span>
+<a name="l00293"></a>00293 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00294"></a>00294 retval = 1;
+<a name="l00295"></a>00295 }
+<a name="l00296"></a>00296 }
+<a name="l00297"></a>00297 <span class="keywordflow">return</span> retval;
+<a name="l00298"></a>00298 }
+<a name="l00299"></a>00299 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00300"></a>00300 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00301"></a>00301 <span class="keywordflow">return</span> 1;
+<a name="l00302"></a>00302 }
+<a name="l00303"></a>00303 <span class="keywordflow">catch</span> (...) {
+<a name="l00304"></a>00304 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00305"></a>00305 <span class="keywordflow">return</span> 1;
+<a name="l00306"></a>00306 }
+<a name="l00307"></a>00307 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeodesicLine_8cpp.html b/doc/html/GeodesicLine_8cpp.html
index 5e0ff97..fca5f9e 100644
--- a/doc/html/GeodesicLine_8cpp.html
+++ b/doc/html/GeodesicLine_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeodesicLine.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8cpp.html#a8c325bf3ebfa8126888b62b16495d64e">GEOGRAPHICLIB_GEODESICLINE_CPP</a> "$Id: da385beb21c040e161c0d8acb4acb974d94000b3 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8cpp.html#a8c325bf3ebfa8126888b62b16495d64e">GEOGRAPHICLIB_GEODESICLINE_CPP</a> "$Id: d95fea8e73fd86fdc558e5b0397a97241cfe40c2 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>This is a reformulation of the geodesic problem. The notation is as follows:</p>
<ul>
<li>at a general point (no suffix or 1 or 2 as suffix)<ul>
@@ -102,7 +115,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEODESICLINE_CPP "$Id: da385beb21c040e161c0d8acb4acb974d94000b3 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEODESICLINE_CPP "$Id: d95fea8e73fd86fdc558e5b0397a97241cfe40c2 $"</td>
</tr>
</table>
</div>
@@ -113,8 +126,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeodesicLine_8cpp_source.html b/doc/html/GeodesicLine_8cpp_source.html
index 722e420..9323564 100644
--- a/doc/html/GeodesicLine_8cpp_source.html
+++ b/doc/html/GeodesicLine_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeodesicLine.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file GeodesicLine.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::GeodesicLine class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * This is a reformulation of the geodesic problem. The notation is as</span>
@@ -78,7 +93,7 @@
<a name="l00029"></a>00029 <span class="preprocessor">#include <<a class="code" href="GeodesicLine_8hpp.html" title="Header for GeographicLib::GeodesicLine class.">GeographicLib/GeodesicLine.hpp</a>></span>
<a name="l00030"></a>00030
<a name="l00031"></a><a class="code" href="GeodesicLine_8cpp.html#a8c325bf3ebfa8126888b62b16495d64e">00031</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEODESICLINE_CPP \</span>
-<a name="l00032"></a>00032 <span class="preprocessor"> "$Id: da385beb21c040e161c0d8acb4acb974d94000b3 $"</span>
+<a name="l00032"></a>00032 <span class="preprocessor"> "$Id: d95fea8e73fd86fdc558e5b0397a97241cfe40c2 $"</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span>
<a name="l00034"></a>00034 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GeodesicLine_8cpp.html#a8c325bf3ebfa8126888b62b16495d64e">GEOGRAPHICLIB_GEODESICLINE_CPP</a>)
<a name="l00035"></a>00035 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GeodesicLine_8hpp.html#a45305d595b59bfb061a5a0c6e1044485">GEOGRAPHICLIB_GEODESICLINE_HPP</a>)
@@ -106,16 +121,16 @@
<a name="l00057"></a>00057 _lon1 = lon1;
<a name="l00058"></a>00058 _azi1 = azi1;
<a name="l00059"></a>00059 <span class="comment">// alp1 is in [0, pi]</span>
-<a name="l00060"></a>00060 real alp1 = azi1 * Math::degree<real>();
+<a name="l00060"></a>00060 real alp1 = azi1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00061"></a>00061 <span class="comment">// Enforce sin(pi) == 0 and cos(pi/2) == 0. Better to face the ensuing</span>
<a name="l00062"></a>00062 <span class="comment">// problems directly than to skirt them.</span>
<a name="l00063"></a>00063 _salp1 = azi1 == -180 ? 0 : sin(alp1);
<a name="l00064"></a>00064 _calp1 = abs(azi1) == 90 ? 0 : cos(alp1);
<a name="l00065"></a>00065 real cbet1, sbet1, phi;
-<a name="l00066"></a>00066 phi = lat1 * Math::degree<real>();
+<a name="l00066"></a>00066 phi = lat1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00067"></a>00067 <span class="comment">// Ensure cbet1 = +epsilon at poles</span>
<a name="l00068"></a>00068 sbet1 = _f1 * sin(phi);
-<a name="l00069"></a>00069 cbet1 = abs(lat1) == 90 ? Geodesic::tiny_ : cos(phi);
+<a name="l00069"></a>00069 cbet1 = abs(lat1) == 90 ? <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::tiny_ : cos(phi);
<a name="l00070"></a>00070 Geodesic::SinCosNorm(sbet1, cbet1);
<a name="l00071"></a>00071
<a name="l00072"></a>00072 <span class="comment">// Evaluate alp0 from sin(alp1) * cos(bet1) = sin(alp0),</span>
@@ -175,7 +190,7 @@
<a name="l00126"></a>00126 }
<a name="l00127"></a>00127 }
<a name="l00128"></a>00128
-<a name="l00129"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad9522110fe6a5a0c7f912a6b1a23094d">00129</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeodesicLine::GenPosition(<span class="keywordtype">bool</span> arcmode, real s12_a12,
+<a name="l00129"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad9522110fe6a5a0c7f912a6b1a23094d">00129</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real GeodesicLine::GenPosition(<span class="keywordtype">bool</span> arcmode, real s12_a12,
<a name="l00130"></a>00130 <span class="keywordtype">unsigned</span> outmask,
<a name="l00131"></a>00131 real& lat2, real& lon2, real& azi2,
<a name="l00132"></a>00132 real& s12, real& m12,
@@ -185,13 +200,13 @@
<a name="l00136"></a>00136 outmask &= _caps & OUT_ALL;
<a name="l00137"></a>00137 <span class="keywordflow">if</span> (!( Init() && (arcmode || (_caps & DISTANCE_IN & OUT_ALL)) ))
<a name="l00138"></a>00138 <span class="comment">// Uninitialized or impossible distance calculation requested</span>
-<a name="l00139"></a>00139 <span class="keywordflow">return</span> Math::NaN<real>();
+<a name="l00139"></a>00139 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00140"></a>00140
<a name="l00141"></a>00141 <span class="comment">// Avoid warning about uninitialized B12.</span>
<a name="l00142"></a>00142 real sig12, ssig12, csig12, B12 = 0, AB1 = 0;
<a name="l00143"></a>00143 <span class="keywordflow">if</span> (arcmode) {
<a name="l00144"></a>00144 <span class="comment">// Interpret s12_a12 as spherical arc length</span>
-<a name="l00145"></a>00145 sig12 = s12_a12 * Math::degree<real>();
+<a name="l00145"></a>00145 sig12 = s12_a12 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00146"></a>00146 real s12a = abs(s12_a12);
<a name="l00147"></a>00147 s12a -= 180 * floor(s12a / 180);
<a name="l00148"></a>00148 ssig12 = s12a == 0 ? 0 : sin(sig12);
@@ -227,7 +242,7 @@
<a name="l00178"></a>00178 cbet2 = Math::hypot(_salp0, _calp0 * csig2);
<a name="l00179"></a>00179 <span class="keywordflow">if</span> (cbet2 == 0)
<a name="l00180"></a>00180 <span class="comment">// I.e., salp0 = 0, csig2 = 0. Break the degeneracy in this case</span>
-<a name="l00181"></a>00181 cbet2 = csig2 = Geodesic::tiny_;
+<a name="l00181"></a>00181 cbet2 = csig2 = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::tiny_;
<a name="l00182"></a>00182 <span class="comment">// tan(omg2) = sin(alp0) * tan(sig2)</span>
<a name="l00183"></a>00183 somg2 = _salp0 * ssig2; comg2 = csig2; <span class="comment">// No need to normalize</span>
<a name="l00184"></a>00184 <span class="comment">// tan(alp0) = cos(sig2)*tan(alp2)</span>
@@ -243,7 +258,7 @@
<a name="l00194"></a>00194 lam12 = omg12 + _A3c *
<a name="l00195"></a>00195 ( sig12 + (Geodesic::SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, _C3a, nC3_-1)
<a name="l00196"></a>00196 - _B31));
-<a name="l00197"></a>00197 lon12 = lam12 / Math::degree<real>();
+<a name="l00197"></a>00197 lon12 = lam12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00198"></a>00198 <span class="comment">// Can't use AngNormalize because longitude might have wrapped multiple</span>
<a name="l00199"></a>00199 <span class="comment">// times.</span>
<a name="l00200"></a>00200 lon12 = lon12 - 360 * floor(lon12/360 + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5));
@@ -251,11 +266,11 @@
<a name="l00202"></a>00202 }
<a name="l00203"></a>00203
<a name="l00204"></a>00204 <span class="keywordflow">if</span> (outmask & LATITUDE)
-<a name="l00205"></a>00205 lat2 = atan2(sbet2, _f1 * cbet2) / Math::degree<real>();
+<a name="l00205"></a>00205 lat2 = atan2(sbet2, _f1 * cbet2) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00206"></a>00206
<a name="l00207"></a>00207 <span class="keywordflow">if</span> (outmask & AZIMUTH)
<a name="l00208"></a>00208 <span class="comment">// minus signs give range [-180, 180). 0- converts -0 to +0.</span>
-<a name="l00209"></a>00209 azi2 = 0 - atan2(-salp2, calp2) / Math::degree<real>();
+<a name="l00209"></a>00209 azi2 = 0 - atan2(-salp2, calp2) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00210"></a>00210
<a name="l00211"></a>00211 <span class="keywordflow">if</span> (outmask & (REDUCEDLENGTH | GEODESICSCALE)) {
<a name="l00212"></a>00212 real
@@ -291,7 +306,7 @@
<a name="l00242"></a>00242 <span class="comment">// salp12 = -0 and alp12 = -180. However this depends on the sign being</span>
<a name="l00243"></a>00243 <span class="comment">// attached to 0 correctly. The following ensures the correct behavior.</span>
<a name="l00244"></a>00244 <span class="keywordflow">if</span> (salp12 == 0 && calp12 < 0) {
-<a name="l00245"></a>00245 salp12 = Geodesic::tiny_ * _calp1;
+<a name="l00245"></a>00245 salp12 = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::tiny_ * _calp1;
<a name="l00246"></a>00246 calp12 = -1;
<a name="l00247"></a>00247 }
<a name="l00248"></a>00248 } <span class="keywordflow">else</span> {
@@ -311,14 +326,19 @@
<a name="l00262"></a>00262 S12 = _c2 * atan2(salp12, calp12) + _A4 * (B42 - _B41);
<a name="l00263"></a>00263 }
<a name="l00264"></a>00264
-<a name="l00265"></a>00265 <span class="keywordflow">return</span> arcmode ? s12_a12 : sig12 / Math::degree<real>();
+<a name="l00265"></a>00265 <span class="keywordflow">return</span> arcmode ? s12_a12 : sig12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00266"></a>00266 }
<a name="l00267"></a>00267
<a name="l00268"></a>00268 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeodesicLine_8hpp.html b/doc/html/GeodesicLine_8hpp.html
index 600068e..9d2e606 100644
--- a/doc/html/GeodesicLine_8hpp.html
+++ b/doc/html/GeodesicLine_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeodesicLine.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8hpp.html#a45305d595b59bfb061a5a0c6e1044485">GEOGRAPHICLIB_GEODESICLINE_HPP</a> "$Id: 40b72a48fbb1bb9f62f50561529d5809071ffe52 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8hpp.html#a45305d595b59bfb061a5a0c6e1044485">GEOGRAPHICLIB_GEODESICLINE_HPP</a> "$Id: 4bbc611bc3837d78456bc227e17bea39cb443745 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEODESICLINE_HPP "$Id: 40b72a48fbb1bb9f62f50561529d5809071ffe52 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEODESICLINE_HPP "$Id: 4bbc611bc3837d78456bc227e17bea39cb443745 $"</td>
</tr>
</table>
</div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeodesicLine_8hpp_source.html b/doc/html/GeodesicLine_8hpp_source.html
index d42a504..e73b7bd 100644
--- a/doc/html/GeodesicLine_8hpp_source.html
+++ b/doc/html/GeodesicLine_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeodesicLine.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file GeodesicLine.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::GeodesicLine class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GEODESICLINE_HPP)</span>
<a name="l00011"></a><a class="code" href="GeodesicLine_8hpp.html#a45305d595b59bfb061a5a0c6e1044485">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEODESICLINE_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 40b72a48fbb1bb9f62f50561529d5809071ffe52 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 4bbc611bc3837d78456bc227e17bea39cb443745 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
@@ -101,548 +116,558 @@
<a name="l00051"></a>00051 <span class="comment"> *</span>
<a name="l00052"></a>00052 <span class="comment"> * Example of use:</span>
<a name="l00053"></a>00053 <span class="comment"> * \include example-GeodesicLine.cpp</span>
-<a name="l00054"></a>00054 <span class="comment"> **********************************************************************/</span>
-<a name="l00055"></a>00055
-<a name="l00056"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html">00056</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> {
-<a name="l00057"></a>00057 <span class="keyword">private</span>:
-<a name="l00058"></a>00058 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00059"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a088c26ef9558197029bbeb317f3104c0">00059</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>;
-<a name="l00060"></a>00060 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1_ = Geodesic::nC1_;
-<a name="l00061"></a>00061 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1p_ = Geodesic::nC1p_;
-<a name="l00062"></a>00062 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC2_ = Geodesic::nC2_;
-<a name="l00063"></a>00063 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3_ = Geodesic::nC3_;
-<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4_ = Geodesic::nC4_;
-<a name="l00065"></a>00065
-<a name="l00066"></a>00066 real _lat1, _lon1, _azi1;
-<a name="l00067"></a>00067 real _a, _f, _b, _c2, _f1, _salp0, _calp0, _k2,
-<a name="l00068"></a>00068 _salp1, _calp1, _ssig1, _csig1, _stau1, _ctau1, _somg1, _comg1,
-<a name="l00069"></a>00069 _A1m1, _A2m1, _A3c, _B11, _B21, _B31, _A4, _B41;
-<a name="l00070"></a>00070 <span class="comment">// index zero elements of _C1a, _C1pa, _C2a, _C3a are unused</span>
-<a name="l00071"></a>00071 real _C1a[nC1_ + 1], _C1pa[nC1p_ + 1], _C2a[nC2_ + 1], _C3a[nC3_],
-<a name="l00072"></a>00072 _C4a[nC4_]; <span class="comment">// all the elements of _C4a are used</span>
-<a name="l00073"></a>00073 <span class="keywordtype">unsigned</span> _caps;
-<a name="l00074"></a>00074
-<a name="l00075"></a>00075 <span class="keyword">enum</span> captype {
-<a name="l00076"></a>00076 CAP_NONE = Geodesic::CAP_NONE,
-<a name="l00077"></a>00077 CAP_C1 = Geodesic::CAP_C1,
-<a name="l00078"></a>00078 CAP_C1p = Geodesic::CAP_C1p,
-<a name="l00079"></a>00079 CAP_C2 = Geodesic::CAP_C2,
-<a name="l00080"></a>00080 CAP_C3 = Geodesic::CAP_C3,
-<a name="l00081"></a>00081 CAP_C4 = Geodesic::CAP_C4,
-<a name="l00082"></a>00082 CAP_ALL = Geodesic::CAP_ALL,
-<a name="l00083"></a>00083 OUT_ALL = Geodesic::OUT_ALL,
-<a name="l00084"></a>00084 };
-<a name="l00085"></a>00085 <span class="keyword">public</span>:
-<a name="l00086"></a>00086 <span class="comment"></span>
-<a name="l00087"></a>00087 <span class="comment"> /**</span>
-<a name="l00088"></a>00088 <span class="comment"> * Bit masks for what calculations to do. They signify to the</span>
-<a name="l00089"></a>00089 <span class="comment"> * GeodesicLine::GeodesicLine constructor and to Geodesic::Line what</span>
-<a name="l00090"></a>00090 <span class="comment"> * capabilities should be included in the GeodesicLine object. This is</span>
-<a name="l00091"></a>00091 <span class="comment"> * merely a duplication of Geodesic::mask.</span>
-<a name="l00092"></a>00092 <span class="comment"> **********************************************************************/</span>
-<a name="l00093"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcc">00093</a> <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcc">mask</a> {<span class="comment"></span>
-<a name="l00094"></a>00094 <span class="comment"> /**</span>
-<a name="l00095"></a>00095 <span class="comment"> * No capabilities, no output.</span>
-<a name="l00096"></a>00096 <span class="comment"> * @hideinitializer</span>
-<a name="l00097"></a>00097 <span class="comment"> **********************************************************************/</span>
-<a name="l00098"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca0f2ec05e56540d908a326a872b9aa68f">00098</a> NONE = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ab10adfebcb73de5356c4787246f056af">Geodesic::NONE</a>,<span class="comment"></span>
-<a name="l00099"></a>00099 <span class="comment"> /**</span>
-<a name="l00100"></a>00100 <span class="comment"> * Calculate latitude \e lat2. (It's not necessary to include this as a</span>
-<a name="l00101"></a>00101 <span class="comment"> * capability to GeodesicLine because this is included by default.)</span>
-<a name="l00102"></a>00102 <span class="comment"> * @hideinitializer</span>
-<a name="l00103"></a>00103 <span class="comment"> **********************************************************************/</span>
-<a name="l00104"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca34e259b158b7fa5441e91d32eae20c23">00104</a> LATITUDE = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7c1f4742e41ae5e75c8133ee7fb8fd90">Geodesic::LATITUDE</a>,<span class="comment"></span>
-<a name="l00105"></a>00105 <span class="comment"> /**</span>
-<a name="l00106"></a>00106 <span class="comment"> * Calculate longitude \e lon2.</span>
-<a name="l00107"></a>00107 <span class="comment"> * @hideinitializer</span>
-<a name="l00108"></a>00108 <span class="comment"> **********************************************************************/</span>
-<a name="l00109"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccac41b1e2e1d73c8d323f92b94e57a0cc9">00109</a> LONGITUDE = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">Geodesic::LONGITUDE</a>,<span class="comment"></span>
-<a name="l00110"></a>00110 <span class="comment"> /**</span>
-<a name="l00111"></a>00111 <span class="comment"> * Calculate azimuths \e azi1 and \e azi2. (It's not necessary to</span>
-<a name="l00112"></a>00112 <span class="comment"> * include this as a capability to GeodesicLine because this is included</span>
-<a name="l00113"></a>00113 <span class="comment"> * by default.)</span>
-<a name="l00114"></a>00114 <span class="comment"> * @hideinitializer</span>
-<a name="l00115"></a>00115 <span class="comment"> **********************************************************************/</span>
-<a name="l00116"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca654b16d956cdd16a70605a6b54a1228e">00116</a> AZIMUTH = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa413d0b81ccb4b5302285b1a01f16c08">Geodesic::AZIMUTH</a>,<span class="comment"></span>
-<a name="l00117"></a>00117 <span class="comment"> /**</span>
-<a name="l00118"></a>00118 <span class="comment"> * Calculate distance \e s12.</span>
-<a name="l00119"></a>00119 <span class="comment"> * @hideinitializer</span>
-<a name="l00120"></a>00120 <span class="comment"> **********************************************************************/</span>
-<a name="l00121"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca6d8b294c13e0495120b9bfd6a9281184">00121</a> DISTANCE = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">Geodesic::DISTANCE</a>,<span class="comment"></span>
-<a name="l00122"></a>00122 <span class="comment"> /**</span>
-<a name="l00123"></a>00123 <span class="comment"> * Allow distance \e s12 to be used as input in the direct geodesic</span>
-<a name="l00124"></a>00124 <span class="comment"> * problem.</span>
-<a name="l00125"></a>00125 <span class="comment"> * @hideinitializer</span>
-<a name="l00126"></a>00126 <span class="comment"> **********************************************************************/</span>
-<a name="l00127"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca7929baa71a65e8399073f67382e4d0bc">00127</a> DISTANCE_IN = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ae20140cdf788fa0497df59630d3211ef">Geodesic::DISTANCE_IN</a>,<span class="comment"></span>
-<a name="l00128"></a>00128 <span class="comment"> /**</span>
-<a name="l00129"></a>00129 <span class="comment"> * Calculate reduced length \e m12.</span>
-<a name="l00130"></a>00130 <span class="comment"> * @hideinitializer</span>
-<a name="l00131"></a>00131 <span class="comment"> **********************************************************************/</span>
-<a name="l00132"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccab6649103de9393f5f18a5d2e44624411">00132</a> REDUCEDLENGTH = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7a27709e1377a8c34704cf1cec64db6c">Geodesic::REDUCEDLENGTH</a>,<span class="comment"></span>
-<a name="l00133"></a>00133 <span class="comment"> /**</span>
-<a name="l00134"></a>00134 <span class="comment"> * Calculate geodesic scales \e M12 and \e M21.</span>
-<a name="l00135"></a>00135 <span class="comment"> * @hideinitializer</span>
-<a name="l00136"></a>00136 <span class="comment"> **********************************************************************/</span>
-<a name="l00137"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca74f896572150d24be4667cf66ed696a6">00137</a> GEODESICSCALE = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828afb114302395314a68dfef3c14693ea2e">Geodesic::GEODESICSCALE</a>,<span class="comment"></span>
-<a name="l00138"></a>00138 <span class="comment"> /**</span>
-<a name="l00139"></a>00139 <span class="comment"> * Calculate area \e S12.</span>
-<a name="l00140"></a>00140 <span class="comment"> * @hideinitializer</span>
-<a name="l00141"></a>00141 <span class="comment"> **********************************************************************/</span>
-<a name="l00142"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca71c623894b3e6bb0864f3da89d1a1915">00142</a> AREA = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a9aea7d24f8e437d6ea38defbe4ec9b14">Geodesic::AREA</a>,<span class="comment"></span>
-<a name="l00143"></a>00143 <span class="comment"> /**</span>
-<a name="l00144"></a>00144 <span class="comment"> * All capabilities. Calculate everything.</span>
-<a name="l00145"></a>00145 <span class="comment"> * @hideinitializer</span>
-<a name="l00146"></a>00146 <span class="comment"> **********************************************************************/</span>
-<a name="l00147"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccabf2df1a904dc1c546a122ac0ebe1acd6">00147</a> ALL = <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a30e0c9456c5df9e6ff23880014bd11e0">Geodesic::ALL</a>,
-<a name="l00148"></a>00148 };
-<a name="l00149"></a>00149 <span class="comment"></span>
-<a name="l00150"></a>00150 <span class="comment"> /** \name Constructors</span>
-<a name="l00151"></a>00151 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00152"></a>00152 <span class="comment"> ///@{</span>
-<a name="l00153"></a>00153 <span class="comment"></span><span class="comment"></span>
-<a name="l00154"></a>00154 <span class="comment"> /**</span>
-<a name="l00155"></a>00155 <span class="comment"> * Constructor for a geodesic line staring at latitude \e lat1, longitude</span>
-<a name="l00156"></a>00156 <span class="comment"> * \e lon1, and azimuth \e azi1 (all in degrees).</span>
-<a name="l00157"></a>00157 <span class="comment"> *</span>
-<a name="l00158"></a>00158 <span class="comment"> * @param[in] g A Geodesic object used to compute the necessary information</span>
-<a name="l00159"></a>00159 <span class="comment"> * about the GeodesicLine.</span>
+<a name="l00054"></a>00054 <span class="comment"> *</span>
+<a name="l00055"></a>00055 <span class="comment"> * <a href="Geod.1.html">Geod</a> is a command-line utility providing access</span>
+<a name="l00056"></a>00056 <span class="comment"> * to the functionality of Geodesic and GeodesicLine.</span>
+<a name="l00057"></a>00057 <span class="comment"> **********************************************************************/</span>
+<a name="l00058"></a>00058
+<a name="l00059"></a>00059 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> GeodesicLine {
+<a name="l00060"></a>00060 <span class="keyword">private</span>:
+<a name="l00061"></a>00061 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00062"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a088c26ef9558197029bbeb317f3104c0">00062</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>;
+<a name="l00063"></a>00063 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC1_;
+<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1p_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC1p_;
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC2_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC2_;
+<a name="l00066"></a>00066 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC3_;
+<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4_ = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::nC4_;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 real _lat1, _lon1, _azi1;
+<a name="l00070"></a>00070 real _a, _f, _b, _c2, _f1, _salp0, _calp0, _k2,
+<a name="l00071"></a>00071 _salp1, _calp1, _ssig1, _csig1, _stau1, _ctau1, _somg1, _comg1,
+<a name="l00072"></a>00072 _A1m1, _A2m1, _A3c, _B11, _B21, _B31, _A4, _B41;
+<a name="l00073"></a>00073 <span class="comment">// index zero elements of _C1a, _C1pa, _C2a, _C3a are unused</span>
+<a name="l00074"></a>00074 real _C1a[nC1_ + 1], _C1pa[nC1p_ + 1], _C2a[nC2_ + 1], _C3a[nC3_],
+<a name="l00075"></a>00075 _C4a[nC4_]; <span class="comment">// all the elements of _C4a are used</span>
+<a name="l00076"></a>00076 <span class="keywordtype">unsigned</span> _caps;
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keyword">enum</span> captype {
+<a name="l00079"></a>00079 CAP_NONE = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_NONE,
+<a name="l00080"></a>00080 CAP_C1 = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C1,
+<a name="l00081"></a>00081 CAP_C1p = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C1p,
+<a name="l00082"></a>00082 CAP_C2 = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C2,
+<a name="l00083"></a>00083 CAP_C3 = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C3,
+<a name="l00084"></a>00084 CAP_C4 = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_C4,
+<a name="l00085"></a>00085 CAP_ALL = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::CAP_ALL,
+<a name="l00086"></a>00086 OUT_ALL = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::OUT_ALL,
+<a name="l00087"></a>00087 };
+<a name="l00088"></a>00088 <span class="keyword">public</span>:
+<a name="l00089"></a>00089 <span class="comment"></span>
+<a name="l00090"></a>00090 <span class="comment"> /**</span>
+<a name="l00091"></a>00091 <span class="comment"> * Bit masks for what calculations to do. They signify to the</span>
+<a name="l00092"></a>00092 <span class="comment"> * GeodesicLine::GeodesicLine constructor and to Geodesic::Line what</span>
+<a name="l00093"></a>00093 <span class="comment"> * capabilities should be included in the GeodesicLine object. This is</span>
+<a name="l00094"></a>00094 <span class="comment"> * merely a duplication of Geodesic::mask.</span>
+<a name="l00095"></a>00095 <span class="comment"> **********************************************************************/</span>
+<a name="l00096"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcc">00096</a> <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcc">mask</a> {<span class="comment"></span>
+<a name="l00097"></a>00097 <span class="comment"> /**</span>
+<a name="l00098"></a>00098 <span class="comment"> * No capabilities, no output.</span>
+<a name="l00099"></a>00099 <span class="comment"> * @hideinitializer</span>
+<a name="l00100"></a>00100 <span class="comment"> **********************************************************************/</span>
+<a name="l00101"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca0f2ec05e56540d908a326a872b9aa68f">00101</a> NONE = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::NONE,<span class="comment"></span>
+<a name="l00102"></a>00102 <span class="comment"> /**</span>
+<a name="l00103"></a>00103 <span class="comment"> * Calculate latitude \e lat2. (It's not necessary to include this as a</span>
+<a name="l00104"></a>00104 <span class="comment"> * capability to GeodesicLine because this is included by default.)</span>
+<a name="l00105"></a>00105 <span class="comment"> * @hideinitializer</span>
+<a name="l00106"></a>00106 <span class="comment"> **********************************************************************/</span>
+<a name="l00107"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca34e259b158b7fa5441e91d32eae20c23">00107</a> LATITUDE = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::LATITUDE,<span class="comment"></span>
+<a name="l00108"></a>00108 <span class="comment"> /**</span>
+<a name="l00109"></a>00109 <span class="comment"> * Calculate longitude \e lon2.</span>
+<a name="l00110"></a>00110 <span class="comment"> * @hideinitializer</span>
+<a name="l00111"></a>00111 <span class="comment"> **********************************************************************/</span>
+<a name="l00112"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccac41b1e2e1d73c8d323f92b94e57a0cc9">00112</a> LONGITUDE = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::LONGITUDE,<span class="comment"></span>
+<a name="l00113"></a>00113 <span class="comment"> /**</span>
+<a name="l00114"></a>00114 <span class="comment"> * Calculate azimuths \e azi1 and \e azi2. (It's not necessary to</span>
+<a name="l00115"></a>00115 <span class="comment"> * include this as a capability to GeodesicLine because this is included</span>
+<a name="l00116"></a>00116 <span class="comment"> * by default.)</span>
+<a name="l00117"></a>00117 <span class="comment"> * @hideinitializer</span>
+<a name="l00118"></a>00118 <span class="comment"> **********************************************************************/</span>
+<a name="l00119"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca654b16d956cdd16a70605a6b54a1228e">00119</a> AZIMUTH = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::AZIMUTH,<span class="comment"></span>
+<a name="l00120"></a>00120 <span class="comment"> /**</span>
+<a name="l00121"></a>00121 <span class="comment"> * Calculate distance \e s12.</span>
+<a name="l00122"></a>00122 <span class="comment"> * @hideinitializer</span>
+<a name="l00123"></a>00123 <span class="comment"> **********************************************************************/</span>
+<a name="l00124"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca6d8b294c13e0495120b9bfd6a9281184">00124</a> DISTANCE = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::DISTANCE,<span class="comment"></span>
+<a name="l00125"></a>00125 <span class="comment"> /**</span>
+<a name="l00126"></a>00126 <span class="comment"> * Allow distance \e s12 to be used as input in the direct geodesic</span>
+<a name="l00127"></a>00127 <span class="comment"> * problem.</span>
+<a name="l00128"></a>00128 <span class="comment"> * @hideinitializer</span>
+<a name="l00129"></a>00129 <span class="comment"> **********************************************************************/</span>
+<a name="l00130"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca7929baa71a65e8399073f67382e4d0bc">00130</a> DISTANCE_IN = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::DISTANCE_IN,<span class="comment"></span>
+<a name="l00131"></a>00131 <span class="comment"> /**</span>
+<a name="l00132"></a>00132 <span class="comment"> * Calculate reduced length \e m12.</span>
+<a name="l00133"></a>00133 <span class="comment"> * @hideinitializer</span>
+<a name="l00134"></a>00134 <span class="comment"> **********************************************************************/</span>
+<a name="l00135"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccab6649103de9393f5f18a5d2e44624411">00135</a> REDUCEDLENGTH = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::REDUCEDLENGTH,<span class="comment"></span>
+<a name="l00136"></a>00136 <span class="comment"> /**</span>
+<a name="l00137"></a>00137 <span class="comment"> * Calculate geodesic scales \e M12 and \e M21.</span>
+<a name="l00138"></a>00138 <span class="comment"> * @hideinitializer</span>
+<a name="l00139"></a>00139 <span class="comment"> **********************************************************************/</span>
+<a name="l00140"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca74f896572150d24be4667cf66ed696a6">00140</a> GEODESICSCALE = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::GEODESICSCALE,<span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment"> /**</span>
+<a name="l00142"></a>00142 <span class="comment"> * Calculate area \e S12.</span>
+<a name="l00143"></a>00143 <span class="comment"> * @hideinitializer</span>
+<a name="l00144"></a>00144 <span class="comment"> **********************************************************************/</span>
+<a name="l00145"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca71c623894b3e6bb0864f3da89d1a1915">00145</a> AREA = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::AREA,<span class="comment"></span>
+<a name="l00146"></a>00146 <span class="comment"> /**</span>
+<a name="l00147"></a>00147 <span class="comment"> * All capabilities. Calculate everything.</span>
+<a name="l00148"></a>00148 <span class="comment"> * @hideinitializer</span>
+<a name="l00149"></a>00149 <span class="comment"> **********************************************************************/</span>
+<a name="l00150"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccabf2df1a904dc1c546a122ac0ebe1acd6">00150</a> ALL = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::ALL,
+<a name="l00151"></a>00151 };
+<a name="l00152"></a>00152 <span class="comment"></span>
+<a name="l00153"></a>00153 <span class="comment"> /** \name Constructors</span>
+<a name="l00154"></a>00154 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00155"></a>00155 <span class="comment"> ///@{</span>
+<a name="l00156"></a>00156 <span class="comment"></span><span class="comment"></span>
+<a name="l00157"></a>00157 <span class="comment"> /**</span>
+<a name="l00158"></a>00158 <span class="comment"> * Constructor for a geodesic line staring at latitude \e lat1, longitude</span>
+<a name="l00159"></a>00159 <span class="comment"> * \e lon1, and azimuth \e azi1 (all in degrees).</span>
<a name="l00160"></a>00160 <span class="comment"> *</span>
-<a name="l00161"></a>00161 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00162"></a>00162 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00163"></a>00163 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00164"></a>00164 <span class="comment"> * @param[in] caps bitor'ed combination of GeodesicLine::mask values</span>
-<a name="l00165"></a>00165 <span class="comment"> * specifying the capabilities the GeodesicLine object should possess,</span>
-<a name="l00166"></a>00166 <span class="comment"> * i.e., which quantities can be returned in calls to</span>
-<a name="l00167"></a>00167 <span class="comment"> * GeodesicLib::Position.</span>
-<a name="l00168"></a>00168 <span class="comment"> *</span>
-<a name="l00169"></a>00169 <span class="comment"> * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
-<a name="l00170"></a>00170 <span class="comment"> * in the range [-180, 360].</span>
+<a name="l00161"></a>00161 <span class="comment"> * @param[in] g A Geodesic object used to compute the necessary information</span>
+<a name="l00162"></a>00162 <span class="comment"> * about the GeodesicLine.</span>
+<a name="l00163"></a>00163 <span class="comment"> *</span>
+<a name="l00164"></a>00164 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00165"></a>00165 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00166"></a>00166 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00167"></a>00167 <span class="comment"> * @param[in] caps bitor'ed combination of GeodesicLine::mask values</span>
+<a name="l00168"></a>00168 <span class="comment"> * specifying the capabilities the GeodesicLine object should possess,</span>
+<a name="l00169"></a>00169 <span class="comment"> * i.e., which quantities can be returned in calls to</span>
+<a name="l00170"></a>00170 <span class="comment"> * GeodesicLib::Position.</span>
<a name="l00171"></a>00171 <span class="comment"> *</span>
-<a name="l00172"></a>00172 <span class="comment"> * The GeodesicLine::mask values are</span>
-<a name="l00173"></a>00173 <span class="comment"> * - \e caps |= GeodesicLine::LATITUDE for the latitude \e lat2; this is</span>
-<a name="l00174"></a>00174 <span class="comment"> * added automatically</span>
-<a name="l00175"></a>00175 <span class="comment"> * - \e caps |= GeodesicLine::LONGITUDE for the latitude \e lon2</span>
-<a name="l00176"></a>00176 <span class="comment"> * - \e caps |= GeodesicLine::AZIMUTH for the latitude \e azi2; this is</span>
+<a name="l00172"></a>00172 <span class="comment"> * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
+<a name="l00173"></a>00173 <span class="comment"> * in the range [-180, 360].</span>
+<a name="l00174"></a>00174 <span class="comment"> *</span>
+<a name="l00175"></a>00175 <span class="comment"> * The GeodesicLine::mask values are</span>
+<a name="l00176"></a>00176 <span class="comment"> * - \e caps |= GeodesicLine::LATITUDE for the latitude \e lat2; this is</span>
<a name="l00177"></a>00177 <span class="comment"> * added automatically</span>
-<a name="l00178"></a>00178 <span class="comment"> * - \e caps |= GeodesicLine::DISTANCE for the distance \e s12</span>
-<a name="l00179"></a>00179 <span class="comment"> * - \e caps |= GeodesicLine::REDUCEDLENGTH for the reduced length \e m12</span>
-<a name="l00180"></a>00180 <span class="comment"> * - \e caps |= GeodesicLine::GEODESICSCALE for the geodesic scales \e M12</span>
-<a name="l00181"></a>00181 <span class="comment"> * and \e M21</span>
-<a name="l00182"></a>00182 <span class="comment"> * - \e caps |= GeodesicLine::AREA for the area \e S12</span>
-<a name="l00183"></a>00183 <span class="comment"> * - \e caps |= GeodesicLine::DISTANCE_IN permits the length of the</span>
-<a name="l00184"></a>00184 <span class="comment"> * geodesic to be given in terms of \e s12; without this capability the</span>
-<a name="l00185"></a>00185 <span class="comment"> * length can only be specified in terms of arc length.</span>
-<a name="l00186"></a>00186 <span class="comment"> * .</span>
-<a name="l00187"></a>00187 <span class="comment"> * The default value of \e caps is GeodesicLine::ALL which turns on all the</span>
-<a name="l00188"></a>00188 <span class="comment"> * capabilities.</span>
-<a name="l00189"></a>00189 <span class="comment"> *</span>
-<a name="l00190"></a>00190 <span class="comment"> * If the point is at a pole, the azimuth is defined by keeping the \e lon1</span>
-<a name="l00191"></a>00191 <span class="comment"> * fixed and writing \e lat1 = 90 - \e eps or -90 + \e eps and taking the</span>
-<a name="l00192"></a>00192 <span class="comment"> * limit \e eps -> 0 from above.</span>
-<a name="l00193"></a>00193 <span class="comment"> **********************************************************************/</span>
-<a name="l00194"></a>00194 <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& g, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html# [...]
-<a name="l00195"></a>00195 <span class="keywordtype">unsigned</span> caps = ALL)
-<a name="l00196"></a>00196 throw();
-<a name="l00197"></a>00197 <span class="comment"></span>
-<a name="l00198"></a>00198 <span class="comment"> /**</span>
-<a name="l00199"></a>00199 <span class="comment"> * A default constructor. If GeodesicLine::Position is called on the</span>
-<a name="l00200"></a>00200 <span class="comment"> * resulting object, it returns immediately (without doing any</span>
-<a name="l00201"></a>00201 <span class="comment"> * calculations). The object can be set with a call to Geodesic::Line.</span>
-<a name="l00202"></a>00202 <span class="comment"> * Use Init() to test whether object is still in this uninitialized state.</span>
-<a name="l00203"></a>00203 <span class="comment"> **********************************************************************/</span>
-<a name="l00204"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ae5ad84103d70f252c66bf61afbda3fa0">00204</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>() throw() : _caps(0U) {}<span class="comment"></span>
-<a name="l00205"></a>00205 <span class="comment"> ///@}</span>
-<a name="l00206"></a>00206 <span class="comment"></span><span class="comment"></span>
-<a name="l00207"></a>00207 <span class="comment"> /** \name Position in terms of distance</span>
-<a name="l00208"></a>00208 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00209"></a>00209 <span class="comment"> ///@{</span>
-<a name="l00210"></a>00210 <span class="comment"></span><span class="comment"></span>
-<a name="l00211"></a>00211 <span class="comment"> /**</span>
-<a name="l00212"></a>00212 <span class="comment"> * Compute the position of point 2 which is a distance \e s12 (meters)</span>
-<a name="l00213"></a>00213 <span class="comment"> * from point 1.</span>
-<a name="l00214"></a>00214 <span class="comment"> *</span>
-<a name="l00215"></a>00215 <span class="comment"> * @param[in] s12 distance between point 1 and point 2 (meters); it can be</span>
-<a name="l00216"></a>00216 <span class="comment"> * signed.</span>
-<a name="l00217"></a>00217 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00218"></a>00218 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
-<a name="l00219"></a>00219 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00220"></a>00220 <span class="comment"> * GeodesicLine::LONGITUDE.</span>
-<a name="l00221"></a>00221 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00222"></a>00222 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
-<a name="l00223"></a>00223 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00224"></a>00224 <span class="comment"> * GeodesicLine::REDUCEDLENGTH.</span>
-<a name="l00225"></a>00225 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00226"></a>00226 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
-<a name="l00227"></a>00227 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00228"></a>00228 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00178"></a>00178 <span class="comment"> * - \e caps |= GeodesicLine::LONGITUDE for the latitude \e lon2</span>
+<a name="l00179"></a>00179 <span class="comment"> * - \e caps |= GeodesicLine::AZIMUTH for the latitude \e azi2; this is</span>
+<a name="l00180"></a>00180 <span class="comment"> * added automatically</span>
+<a name="l00181"></a>00181 <span class="comment"> * - \e caps |= GeodesicLine::DISTANCE for the distance \e s12</span>
+<a name="l00182"></a>00182 <span class="comment"> * - \e caps |= GeodesicLine::REDUCEDLENGTH for the reduced length \e m12</span>
+<a name="l00183"></a>00183 <span class="comment"> * - \e caps |= GeodesicLine::GEODESICSCALE for the geodesic scales \e M12</span>
+<a name="l00184"></a>00184 <span class="comment"> * and \e M21</span>
+<a name="l00185"></a>00185 <span class="comment"> * - \e caps |= GeodesicLine::AREA for the area \e S12</span>
+<a name="l00186"></a>00186 <span class="comment"> * - \e caps |= GeodesicLine::DISTANCE_IN permits the length of the</span>
+<a name="l00187"></a>00187 <span class="comment"> * geodesic to be given in terms of \e s12; without this capability the</span>
+<a name="l00188"></a>00188 <span class="comment"> * length can only be specified in terms of arc length.</span>
+<a name="l00189"></a>00189 <span class="comment"> * .</span>
+<a name="l00190"></a>00190 <span class="comment"> * The default value of \e caps is GeodesicLine::ALL which turns on all the</span>
+<a name="l00191"></a>00191 <span class="comment"> * capabilities.</span>
+<a name="l00192"></a>00192 <span class="comment"> *</span>
+<a name="l00193"></a>00193 <span class="comment"> * If the point is at a pole, the azimuth is defined by keeping the \e lon1</span>
+<a name="l00194"></a>00194 <span class="comment"> * fixed and writing \e lat1 = 90 - \e eps or -90 + \e eps and taking the</span>
+<a name="l00195"></a>00195 <span class="comment"> * limit \e eps -> 0 from above.</span>
+<a name="l00196"></a>00196 <span class="comment"> **********************************************************************/</span>
+<a name="l00197"></a>00197 GeodesicLine(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& g, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi1,
+<a name="l00198"></a>00198 <span class="keywordtype">unsigned</span> caps = ALL)
+<a name="l00199"></a>00199 throw();
+<a name="l00200"></a>00200 <span class="comment"></span>
+<a name="l00201"></a>00201 <span class="comment"> /**</span>
+<a name="l00202"></a>00202 <span class="comment"> * A default constructor. If GeodesicLine::Position is called on the</span>
+<a name="l00203"></a>00203 <span class="comment"> * resulting object, it returns immediately (without doing any</span>
+<a name="l00204"></a>00204 <span class="comment"> * calculations). The object can be set with a call to Geodesic::Line.</span>
+<a name="l00205"></a>00205 <span class="comment"> * Use Init() to test whether object is still in this uninitialized state.</span>
+<a name="l00206"></a>00206 <span class="comment"> **********************************************************************/</span>
+<a name="l00207"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ae5ad84103d70f252c66bf61afbda3fa0">00207</a> GeodesicLine() throw() : _caps(0U) {}<span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment"> ///@}</span>
+<a name="l00209"></a>00209 <span class="comment"></span><span class="comment"></span>
+<a name="l00210"></a>00210 <span class="comment"> /** \name Position in terms of distance</span>
+<a name="l00211"></a>00211 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00212"></a>00212 <span class="comment"> ///@{</span>
+<a name="l00213"></a>00213 <span class="comment"></span><span class="comment"></span>
+<a name="l00214"></a>00214 <span class="comment"> /**</span>
+<a name="l00215"></a>00215 <span class="comment"> * Compute the position of point 2 which is a distance \e s12 (meters)</span>
+<a name="l00216"></a>00216 <span class="comment"> * from point 1.</span>
+<a name="l00217"></a>00217 <span class="comment"> *</span>
+<a name="l00218"></a>00218 <span class="comment"> * @param[in] s12 distance between point 1 and point 2 (meters); it can be</span>
+<a name="l00219"></a>00219 <span class="comment"> * signed.</span>
+<a name="l00220"></a>00220 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00221"></a>00221 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
+<a name="l00222"></a>00222 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00223"></a>00223 <span class="comment"> * GeodesicLine::LONGITUDE.</span>
+<a name="l00224"></a>00224 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00225"></a>00225 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
+<a name="l00226"></a>00226 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00227"></a>00227 <span class="comment"> * GeodesicLine::REDUCEDLENGTH.</span>
+<a name="l00228"></a>00228 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
<a name="l00229"></a>00229 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
<a name="l00230"></a>00230 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00231"></a>00231 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
-<a name="l00232"></a>00232 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00233"></a>00233 <span class="comment"> * GeodesicLine::AREA.</span>
-<a name="l00234"></a>00234 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00235"></a>00235 <span class="comment"> *</span>
-<a name="l00236"></a>00236 <span class="comment"> * The values of \e lon2 and \e azi2 returned are in the range [-180, 180).</span>
-<a name="l00237"></a>00237 <span class="comment"> *</span>
-<a name="l00238"></a>00238 <span class="comment"> * The GeodesicLine object \e must have been constructed with \e caps |=</span>
-<a name="l00239"></a>00239 <span class="comment"> * GeodesicLine::DISTANCE_IN; otherwise Math::NaN() is returned and no</span>
-<a name="l00240"></a>00240 <span class="comment"> * parameters are set. Requesting a value which the GeodesicLine object is</span>
-<a name="l00241"></a>00241 <span class="comment"> * not capable of computing is not an error; the corresponding argument</span>
-<a name="l00242"></a>00242 <span class="comment"> * will not be altered.</span>
-<a name="l00243"></a>00243 <span class="comment"> *</span>
-<a name="l00244"></a>00244 <span class="comment"> * The following functions are overloaded versions of</span>
-<a name="l00245"></a>00245 <span class="comment"> * GeodesicLine::Position which omit some of the output parameters. Note,</span>
-<a name="l00246"></a>00246 <span class="comment"> * however, that the arc length is always computed and returned as the</span>
-<a name="l00247"></a>00247 <span class="comment"> * function value.</span>
-<a name="l00248"></a>00248 <span class="comment"> **********************************************************************/</span>
-<a name="l00249"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">00249</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12,
-<a name="l00250"></a>00250 real& lat2, real& lon2, real& azi2,
-<a name="l00251"></a>00251 real& m12, real& M12, real& M21,
-<a name="l00252"></a>00252 real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00253"></a>00253 real t;
-<a name="l00254"></a>00254 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00255"></a>00255 LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00256"></a>00256 REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00257"></a>00257 lat2, lon2, azi2, t, m12, M12, M21, S12);
-<a name="l00258"></a>00258 }
-<a name="l00259"></a>00259 <span class="comment"></span>
-<a name="l00260"></a>00260 <span class="comment"> /**</span>
-<a name="l00261"></a>00261 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
-<a name="l00262"></a>00262 <span class="comment"> **********************************************************************/</span>
-<a name="l00263"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a50feb9c64d66b6518c640584d25e9507">00263</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a50feb9c64d66b6518c640584d25e9507">Position</a>(real s12, real& lat2, real& lon2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00264"></a>00264 real t;
-<a name="l00265"></a>00265 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00266"></a>00266 LATITUDE | LONGITUDE,
-<a name="l00267"></a>00267 lat2, lon2, t, t, t, t, t, t);
-<a name="l00268"></a>00268 }
-<a name="l00269"></a>00269 <span class="comment"></span>
-<a name="l00270"></a>00270 <span class="comment"> /**</span>
-<a name="l00271"></a>00271 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
-<a name="l00272"></a>00272 <span class="comment"> **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac736a0cc3300e443d42bbd2dc901962c">00273</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12, real& lat2, real& lon2,
-<a name="l00274"></a>00274 real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00275"></a>00275 real t;
-<a name="l00276"></a>00276 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00277"></a>00277 LATITUDE | LONGITUDE | AZIMUTH,
-<a name="l00278"></a>00278 lat2, lon2, azi2, t, t, t, t, t);
-<a name="l00279"></a>00279 }
-<a name="l00280"></a>00280 <span class="comment"></span>
-<a name="l00281"></a>00281 <span class="comment"> /**</span>
-<a name="l00282"></a>00282 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
-<a name="l00283"></a>00283 <span class="comment"> **********************************************************************/</span>
-<a name="l00284"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a10b743a14701f620c0f41f1c6e1cee76">00284</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12, real& lat2, real& lon2,
-<a name="l00285"></a>00285 real& azi2, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00286"></a>00286 real t;
-<a name="l00287"></a>00287 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00288"></a>00288 LATITUDE | LONGITUDE |
-<a name="l00289"></a>00289 AZIMUTH | REDUCEDLENGTH,
-<a name="l00290"></a>00290 lat2, lon2, azi2, t, m12, t, t, t);
-<a name="l00291"></a>00291 }
-<a name="l00292"></a>00292 <span class="comment"></span>
-<a name="l00293"></a>00293 <span class="comment"> /**</span>
-<a name="l00294"></a>00294 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
-<a name="l00295"></a>00295 <span class="comment"> **********************************************************************/</span>
-<a name="l00296"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ada48245beb736fe9ff3d8c491e9a691f">00296</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12, real& lat2, real& lon2,
-<a name="l00297"></a>00297 real& azi2, real& M12, real& M21)
-<a name="l00298"></a>00298 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00299"></a>00299 real t;
-<a name="l00300"></a>00300 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00301"></a>00301 LATITUDE | LONGITUDE |
-<a name="l00302"></a>00302 AZIMUTH | GEODESICSCALE,
-<a name="l00303"></a>00303 lat2, lon2, azi2, t, t, M12, M21, t);
-<a name="l00304"></a>00304 }
-<a name="l00305"></a>00305 <span class="comment"></span>
-<a name="l00306"></a>00306 <span class="comment"> /**</span>
-<a name="l00307"></a>00307 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
-<a name="l00308"></a>00308 <span class="comment"> **********************************************************************/</span>
-<a name="l00309"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#aa42e5028aa78ef3ce8fbcb01b25eb458">00309</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Position(real s12,
-<a name="l00310"></a>00310 real& lat2, real& lon2, real& azi2,
-<a name="l00311"></a>00311 real& m12, real& M12, real& M21)
-<a name="l00312"></a>00312 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00313"></a>00313 real t;
-<a name="l00314"></a>00314 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
-<a name="l00315"></a>00315 LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00316"></a>00316 REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00317"></a>00317 lat2, lon2, azi2, t, m12, M12, M21, t);
-<a name="l00318"></a>00318 }
-<a name="l00319"></a>00319 <span class="comment"></span>
-<a name="l00320"></a>00320 <span class="comment"> ///@}</span>
-<a name="l00321"></a>00321 <span class="comment"></span><span class="comment"></span>
-<a name="l00322"></a>00322 <span class="comment"> /** \name Position in terms of arc length</span>
-<a name="l00323"></a>00323 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00324"></a>00324 <span class="comment"> ///@{</span>
-<a name="l00325"></a>00325 <span class="comment"></span><span class="comment"></span>
-<a name="l00326"></a>00326 <span class="comment"> /**</span>
-<a name="l00327"></a>00327 <span class="comment"> * Compute the position of point 2 which is an arc length \e a12 (degrees)</span>
-<a name="l00328"></a>00328 <span class="comment"> * from point 1.</span>
-<a name="l00329"></a>00329 <span class="comment"> *</span>
-<a name="l00330"></a>00330 <span class="comment"> * @param[in] a12 arc length between point 1 and point 2 (degrees); it can</span>
-<a name="l00331"></a>00331 <span class="comment"> * be signed.</span>
-<a name="l00332"></a>00332 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00333"></a>00333 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
-<a name="l00334"></a>00334 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00335"></a>00335 <span class="comment"> * GeodesicLine::LONGITUDE.</span>
-<a name="l00336"></a>00336 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00337"></a>00337 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters); requires</span>
-<a name="l00338"></a>00338 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00339"></a>00339 <span class="comment"> * GeodesicLine::DISTANCE.</span>
-<a name="l00340"></a>00340 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
-<a name="l00341"></a>00341 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00342"></a>00342 <span class="comment"> * GeodesicLine::REDUCEDLENGTH.</span>
-<a name="l00343"></a>00343 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00344"></a>00344 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
-<a name="l00345"></a>00345 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00346"></a>00346 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00231"></a>00231 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00232"></a>00232 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
+<a name="l00233"></a>00233 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
+<a name="l00234"></a>00234 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
+<a name="l00235"></a>00235 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00236"></a>00236 <span class="comment"> * GeodesicLine::AREA.</span>
+<a name="l00237"></a>00237 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00238"></a>00238 <span class="comment"> *</span>
+<a name="l00239"></a>00239 <span class="comment"> * The values of \e lon2 and \e azi2 returned are in the range [-180, 180).</span>
+<a name="l00240"></a>00240 <span class="comment"> *</span>
+<a name="l00241"></a>00241 <span class="comment"> * The GeodesicLine object \e must have been constructed with \e caps |=</span>
+<a name="l00242"></a>00242 <span class="comment"> * GeodesicLine::DISTANCE_IN; otherwise Math::NaN() is returned and no</span>
+<a name="l00243"></a>00243 <span class="comment"> * parameters are set. Requesting a value which the GeodesicLine object is</span>
+<a name="l00244"></a>00244 <span class="comment"> * not capable of computing is not an error; the corresponding argument</span>
+<a name="l00245"></a>00245 <span class="comment"> * will not be altered.</span>
+<a name="l00246"></a>00246 <span class="comment"> *</span>
+<a name="l00247"></a>00247 <span class="comment"> * The following functions are overloaded versions of</span>
+<a name="l00248"></a>00248 <span class="comment"> * GeodesicLine::Position which omit some of the output parameters. Note,</span>
+<a name="l00249"></a>00249 <span class="comment"> * however, that the arc length is always computed and returned as the</span>
+<a name="l00250"></a>00250 <span class="comment"> * function value.</span>
+<a name="l00251"></a>00251 <span class="comment"> **********************************************************************/</span>
+<a name="l00252"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">00252</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12,
+<a name="l00253"></a>00253 real& lat2, real& lon2, real& azi2,
+<a name="l00254"></a>00254 real& m12, real& M12, real& M21,
+<a name="l00255"></a>00255 real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00256"></a>00256 real t;
+<a name="l00257"></a>00257 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00258"></a>00258 LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00259"></a>00259 REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00260"></a>00260 lat2, lon2, azi2, t, m12, M12, M21, S12);
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262 <span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment"> /**</span>
+<a name="l00264"></a>00264 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
+<a name="l00265"></a>00265 <span class="comment"> **********************************************************************/</span>
+<a name="l00266"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a50feb9c64d66b6518c640584d25e9507">00266</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a50feb9c64d66b6518c640584d25e9507">Position</a>(real s12, real& lat2, real& lon2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00267"></a>00267 real t;
+<a name="l00268"></a>00268 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00269"></a>00269 LATITUDE | LONGITUDE,
+<a name="l00270"></a>00270 lat2, lon2, t, t, t, t, t, t);
+<a name="l00271"></a>00271 }
+<a name="l00272"></a>00272 <span class="comment"></span>
+<a name="l00273"></a>00273 <span class="comment"> /**</span>
+<a name="l00274"></a>00274 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
+<a name="l00275"></a>00275 <span class="comment"> **********************************************************************/</span>
+<a name="l00276"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac736a0cc3300e443d42bbd2dc901962c">00276</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12, real& lat2, real& lon2,
+<a name="l00277"></a>00277 real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00278"></a>00278 real t;
+<a name="l00279"></a>00279 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00280"></a>00280 LATITUDE | LONGITUDE | AZIMUTH,
+<a name="l00281"></a>00281 lat2, lon2, azi2, t, t, t, t, t);
+<a name="l00282"></a>00282 }
+<a name="l00283"></a>00283 <span class="comment"></span>
+<a name="l00284"></a>00284 <span class="comment"> /**</span>
+<a name="l00285"></a>00285 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
+<a name="l00286"></a>00286 <span class="comment"> **********************************************************************/</span>
+<a name="l00287"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a10b743a14701f620c0f41f1c6e1cee76">00287</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12, real& lat2, real& lon2,
+<a name="l00288"></a>00288 real& azi2, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00289"></a>00289 real t;
+<a name="l00290"></a>00290 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00291"></a>00291 LATITUDE | LONGITUDE |
+<a name="l00292"></a>00292 AZIMUTH | REDUCEDLENGTH,
+<a name="l00293"></a>00293 lat2, lon2, azi2, t, m12, t, t, t);
+<a name="l00294"></a>00294 }
+<a name="l00295"></a>00295 <span class="comment"></span>
+<a name="l00296"></a>00296 <span class="comment"> /**</span>
+<a name="l00297"></a>00297 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
+<a name="l00298"></a>00298 <span class="comment"> **********************************************************************/</span>
+<a name="l00299"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ada48245beb736fe9ff3d8c491e9a691f">00299</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12, real& lat2, real& lon2,
+<a name="l00300"></a>00300 real& azi2, real& M12, real& M21)
+<a name="l00301"></a>00301 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00302"></a>00302 real t;
+<a name="l00303"></a>00303 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00304"></a>00304 LATITUDE | LONGITUDE |
+<a name="l00305"></a>00305 AZIMUTH | GEODESICSCALE,
+<a name="l00306"></a>00306 lat2, lon2, azi2, t, t, M12, M21, t);
+<a name="l00307"></a>00307 }
+<a name="l00308"></a>00308 <span class="comment"></span>
+<a name="l00309"></a>00309 <span class="comment"> /**</span>
+<a name="l00310"></a>00310 <span class="comment"> * See the documentation for GeodesicLine::Position.</span>
+<a name="l00311"></a>00311 <span class="comment"> **********************************************************************/</span>
+<a name="l00312"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#aa42e5028aa78ef3ce8fbcb01b25eb458">00312</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Position(real s12,
+<a name="l00313"></a>00313 real& lat2, real& lon2, real& azi2,
+<a name="l00314"></a>00314 real& m12, real& M12, real& M21)
+<a name="l00315"></a>00315 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00316"></a>00316 real t;
+<a name="l00317"></a>00317 <span class="keywordflow">return</span> GenPosition(<span class="keyword">false</span>, s12,
+<a name="l00318"></a>00318 LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00319"></a>00319 REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00320"></a>00320 lat2, lon2, azi2, t, m12, M12, M21, t);
+<a name="l00321"></a>00321 }
+<a name="l00322"></a>00322 <span class="comment"></span>
+<a name="l00323"></a>00323 <span class="comment"> ///@}</span>
+<a name="l00324"></a>00324 <span class="comment"></span><span class="comment"></span>
+<a name="l00325"></a>00325 <span class="comment"> /** \name Position in terms of arc length</span>
+<a name="l00326"></a>00326 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00327"></a>00327 <span class="comment"> ///@{</span>
+<a name="l00328"></a>00328 <span class="comment"></span><span class="comment"></span>
+<a name="l00329"></a>00329 <span class="comment"> /**</span>
+<a name="l00330"></a>00330 <span class="comment"> * Compute the position of point 2 which is an arc length \e a12 (degrees)</span>
+<a name="l00331"></a>00331 <span class="comment"> * from point 1.</span>
+<a name="l00332"></a>00332 <span class="comment"> *</span>
+<a name="l00333"></a>00333 <span class="comment"> * @param[in] a12 arc length between point 1 and point 2 (degrees); it can</span>
+<a name="l00334"></a>00334 <span class="comment"> * be signed.</span>
+<a name="l00335"></a>00335 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00336"></a>00336 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
+<a name="l00337"></a>00337 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00338"></a>00338 <span class="comment"> * GeodesicLine::LONGITUDE.</span>
+<a name="l00339"></a>00339 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00340"></a>00340 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters); requires</span>
+<a name="l00341"></a>00341 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00342"></a>00342 <span class="comment"> * GeodesicLine::DISTANCE.</span>
+<a name="l00343"></a>00343 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
+<a name="l00344"></a>00344 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00345"></a>00345 <span class="comment"> * GeodesicLine::REDUCEDLENGTH.</span>
+<a name="l00346"></a>00346 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
<a name="l00347"></a>00347 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
<a name="l00348"></a>00348 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00349"></a>00349 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
-<a name="l00350"></a>00350 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00351"></a>00351 <span class="comment"> * GeodesicLine::AREA.</span>
-<a name="l00352"></a>00352 <span class="comment"> *</span>
-<a name="l00353"></a>00353 <span class="comment"> * The values of \e lon2 and \e azi2 returned are in the range [-180, 180).</span>
-<a name="l00354"></a>00354 <span class="comment"> *</span>
-<a name="l00355"></a>00355 <span class="comment"> * Requesting a value which the GeodesicLine object is not capable of</span>
-<a name="l00356"></a>00356 <span class="comment"> * computing is not an error; the corresponding argument will not be</span>
-<a name="l00357"></a>00357 <span class="comment"> * altered.</span>
-<a name="l00358"></a>00358 <span class="comment"> *</span>
-<a name="l00359"></a>00359 <span class="comment"> * The following functions are overloaded versions of</span>
-<a name="l00360"></a>00360 <span class="comment"> * GeodesicLine::ArcPosition which omit some of the output parameters.</span>
-<a name="l00361"></a>00361 <span class="comment"> **********************************************************************/</span>
-<a name="l00362"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">00362</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00363"></a>00363 real& s12, real& m12, real& M12, real& M21,
-<a name="l00364"></a>00364 real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00365"></a>00365 GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00366"></a>00366 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00367"></a>00367 REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00368"></a>00368 lat2, lon2, azi2, s12, m12, M12, M21, S12);
-<a name="l00369"></a>00369 }
-<a name="l00370"></a>00370 <span class="comment"></span>
-<a name="l00371"></a>00371 <span class="comment"> /**</span>
-<a name="l00372"></a>00372 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00373"></a>00373 <span class="comment"> **********************************************************************/</span>
-<a name="l00374"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#afa377ee7344df5759cb7ea1022ff8288">00374</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2)
-<a name="l00375"></a>00375 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00376"></a>00376 real t;
-<a name="l00377"></a>00377 GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00378"></a>00378 LATITUDE | LONGITUDE,
-<a name="l00379"></a>00379 lat2, lon2, t, t, t, t, t, t);
-<a name="l00380"></a>00380 }
-<a name="l00381"></a>00381 <span class="comment"></span>
-<a name="l00382"></a>00382 <span class="comment"> /**</span>
-<a name="l00383"></a>00383 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00384"></a>00384 <span class="comment"> **********************************************************************/</span>
-<a name="l00385"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a2d147b25bcef6a7258fabc581a2d64a1">00385</a> <span class="keywordtype">void</span> ArcPosition(real a12,
-<a name="l00386"></a>00386 real& lat2, real& lon2, real& azi2)
-<a name="l00387"></a>00387 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00388"></a>00388 real t;
-<a name="l00389"></a>00389 GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00390"></a>00390 LATITUDE | LONGITUDE | AZIMUTH,
-<a name="l00391"></a>00391 lat2, lon2, azi2, t, t, t, t, t);
-<a name="l00392"></a>00392 }
-<a name="l00393"></a>00393 <span class="comment"></span>
-<a name="l00394"></a>00394 <span class="comment"> /**</span>
-<a name="l00395"></a>00395 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00396"></a>00396 <span class="comment"> **********************************************************************/</span>
-<a name="l00397"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#afdedfa0bc105dbe5de4c292115c7b7ae">00397</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00398"></a>00398 real& s12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00399"></a>00399 real t;
-<a name="l00400"></a>00400 GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00401"></a>00401 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
-<a name="l00402"></a>00402 lat2, lon2, azi2, s12, t, t, t, t);
-<a name="l00403"></a>00403 }
-<a name="l00404"></a>00404 <span class="comment"></span>
-<a name="l00405"></a>00405 <span class="comment"> /**</span>
-<a name="l00406"></a>00406 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00407"></a>00407 <span class="comment"> **********************************************************************/</span>
-<a name="l00408"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad6b2013f9dcde3f4bf867632f6a2d1ff">00408</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00409"></a>00409 real& s12, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00410"></a>00410 real t;
-<a name="l00411"></a>00411 GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00412"></a>00412 LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00413"></a>00413 DISTANCE | REDUCEDLENGTH,
-<a name="l00414"></a>00414 lat2, lon2, azi2, s12, m12, t, t, t);
-<a name="l00415"></a>00415 }
-<a name="l00416"></a>00416 <span class="comment"></span>
-<a name="l00417"></a>00417 <span class="comment"> /**</span>
-<a name="l00418"></a>00418 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00419"></a>00419 <span class="comment"> **********************************************************************/</span>
-<a name="l00420"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a2e0249a548d2dd9c882cb4a8de17d8eb">00420</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00421"></a>00421 real& s12, real& M12, real& M21)
-<a name="l00422"></a>00422 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00423"></a>00423 real t;
-<a name="l00424"></a>00424 GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00425"></a>00425 LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00426"></a>00426 DISTANCE | GEODESICSCALE,
-<a name="l00427"></a>00427 lat2, lon2, azi2, s12, t, M12, M21, t);
-<a name="l00428"></a>00428 }
-<a name="l00429"></a>00429 <span class="comment"></span>
-<a name="l00430"></a>00430 <span class="comment"> /**</span>
-<a name="l00431"></a>00431 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
-<a name="l00432"></a>00432 <span class="comment"> **********************************************************************/</span>
-<a name="l00433"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af286d2071bdc59e68046dd2557115f21">00433</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
-<a name="l00434"></a>00434 real& s12, real& m12, real& M12, real& M21)
-<a name="l00435"></a>00435 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00436"></a>00436 real t;
-<a name="l00437"></a>00437 GenPosition(<span class="keyword">true</span>, a12,
-<a name="l00438"></a>00438 LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00439"></a>00439 DISTANCE | REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00440"></a>00440 lat2, lon2, azi2, s12, m12, M12, M21, t);
-<a name="l00441"></a>00441 }<span class="comment"></span>
-<a name="l00442"></a>00442 <span class="comment"> ///@}</span>
-<a name="l00443"></a>00443 <span class="comment"></span><span class="comment"></span>
-<a name="l00444"></a>00444 <span class="comment"> /** \name The general position function.</span>
-<a name="l00445"></a>00445 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00446"></a>00446 <span class="comment"> ///@{</span>
-<a name="l00447"></a>00447 <span class="comment"></span><span class="comment"></span>
-<a name="l00448"></a>00448 <span class="comment"> /**</span>
-<a name="l00449"></a>00449 <span class="comment"> * The general position function. GeodesicLine::Position and</span>
-<a name="l00450"></a>00450 <span class="comment"> * GeodesicLine::ArcPosition are defined in terms of this function.</span>
-<a name="l00451"></a>00451 <span class="comment"> *</span>
-<a name="l00452"></a>00452 <span class="comment"> * @param[in] arcmode boolean flag determining the meaning of the second</span>
-<a name="l00453"></a>00453 <span class="comment"> * parameter; if arcmode is false, then the GeodesicLine object must have</span>
-<a name="l00454"></a>00454 <span class="comment"> * been constructed with \e caps |= GeodesicLine::DISTANCE_IN.</span>
-<a name="l00455"></a>00455 <span class="comment"> * @param[in] s12_a12 if \e arcmode is false, this is the distance between</span>
-<a name="l00456"></a>00456 <span class="comment"> * point 1 and point 2 (meters); otherwise it is the arc length between</span>
-<a name="l00457"></a>00457 <span class="comment"> * point 1 and point 2 (degrees); it can be signed.</span>
-<a name="l00458"></a>00458 <span class="comment"> * @param[in] outmask a bitor'ed combination of GeodesicLine::mask values</span>
-<a name="l00459"></a>00459 <span class="comment"> * specifying which of the following parameters should be set.</span>
-<a name="l00460"></a>00460 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00461"></a>00461 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
-<a name="l00462"></a>00462 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00463"></a>00463 <span class="comment"> * GeodesicLine::LONGITUDE.</span>
-<a name="l00464"></a>00464 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00465"></a>00465 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters); requires</span>
-<a name="l00466"></a>00466 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00467"></a>00467 <span class="comment"> * GeodesicLine::DISTANCE.</span>
-<a name="l00468"></a>00468 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
-<a name="l00469"></a>00469 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00470"></a>00470 <span class="comment"> * GeodesicLine::REDUCEDLENGTH.</span>
-<a name="l00471"></a>00471 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00472"></a>00472 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
-<a name="l00473"></a>00473 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00474"></a>00474 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00349"></a>00349 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00350"></a>00350 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
+<a name="l00351"></a>00351 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
+<a name="l00352"></a>00352 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
+<a name="l00353"></a>00353 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00354"></a>00354 <span class="comment"> * GeodesicLine::AREA.</span>
+<a name="l00355"></a>00355 <span class="comment"> *</span>
+<a name="l00356"></a>00356 <span class="comment"> * The values of \e lon2 and \e azi2 returned are in the range [-180, 180).</span>
+<a name="l00357"></a>00357 <span class="comment"> *</span>
+<a name="l00358"></a>00358 <span class="comment"> * Requesting a value which the GeodesicLine object is not capable of</span>
+<a name="l00359"></a>00359 <span class="comment"> * computing is not an error; the corresponding argument will not be</span>
+<a name="l00360"></a>00360 <span class="comment"> * altered.</span>
+<a name="l00361"></a>00361 <span class="comment"> *</span>
+<a name="l00362"></a>00362 <span class="comment"> * The following functions are overloaded versions of</span>
+<a name="l00363"></a>00363 <span class="comment"> * GeodesicLine::ArcPosition which omit some of the output parameters.</span>
+<a name="l00364"></a>00364 <span class="comment"> **********************************************************************/</span>
+<a name="l00365"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">00365</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00366"></a>00366 real& s12, real& m12, real& M12, real& M21,
+<a name="l00367"></a>00367 real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00368"></a>00368 GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00369"></a>00369 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00370"></a>00370 REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00371"></a>00371 lat2, lon2, azi2, s12, m12, M12, M21, S12);
+<a name="l00372"></a>00372 }
+<a name="l00373"></a>00373 <span class="comment"></span>
+<a name="l00374"></a>00374 <span class="comment"> /**</span>
+<a name="l00375"></a>00375 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00376"></a>00376 <span class="comment"> **********************************************************************/</span>
+<a name="l00377"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#afa377ee7344df5759cb7ea1022ff8288">00377</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2)
+<a name="l00378"></a>00378 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00379"></a>00379 real t;
+<a name="l00380"></a>00380 GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00381"></a>00381 LATITUDE | LONGITUDE,
+<a name="l00382"></a>00382 lat2, lon2, t, t, t, t, t, t);
+<a name="l00383"></a>00383 }
+<a name="l00384"></a>00384 <span class="comment"></span>
+<a name="l00385"></a>00385 <span class="comment"> /**</span>
+<a name="l00386"></a>00386 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00387"></a>00387 <span class="comment"> **********************************************************************/</span>
+<a name="l00388"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a2d147b25bcef6a7258fabc581a2d64a1">00388</a> <span class="keywordtype">void</span> ArcPosition(real a12,
+<a name="l00389"></a>00389 real& lat2, real& lon2, real& azi2)
+<a name="l00390"></a>00390 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00391"></a>00391 real t;
+<a name="l00392"></a>00392 GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00393"></a>00393 LATITUDE | LONGITUDE | AZIMUTH,
+<a name="l00394"></a>00394 lat2, lon2, azi2, t, t, t, t, t);
+<a name="l00395"></a>00395 }
+<a name="l00396"></a>00396 <span class="comment"></span>
+<a name="l00397"></a>00397 <span class="comment"> /**</span>
+<a name="l00398"></a>00398 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00399"></a>00399 <span class="comment"> **********************************************************************/</span>
+<a name="l00400"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#afdedfa0bc105dbe5de4c292115c7b7ae">00400</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00401"></a>00401 real& s12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00402"></a>00402 real t;
+<a name="l00403"></a>00403 GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00404"></a>00404 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
+<a name="l00405"></a>00405 lat2, lon2, azi2, s12, t, t, t, t);
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 <span class="comment"></span>
+<a name="l00408"></a>00408 <span class="comment"> /**</span>
+<a name="l00409"></a>00409 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00410"></a>00410 <span class="comment"> **********************************************************************/</span>
+<a name="l00411"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad6b2013f9dcde3f4bf867632f6a2d1ff">00411</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00412"></a>00412 real& s12, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00413"></a>00413 real t;
+<a name="l00414"></a>00414 GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00415"></a>00415 LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00416"></a>00416 DISTANCE | REDUCEDLENGTH,
+<a name="l00417"></a>00417 lat2, lon2, azi2, s12, m12, t, t, t);
+<a name="l00418"></a>00418 }
+<a name="l00419"></a>00419 <span class="comment"></span>
+<a name="l00420"></a>00420 <span class="comment"> /**</span>
+<a name="l00421"></a>00421 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00422"></a>00422 <span class="comment"> **********************************************************************/</span>
+<a name="l00423"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a2e0249a548d2dd9c882cb4a8de17d8eb">00423</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00424"></a>00424 real& s12, real& M12, real& M21)
+<a name="l00425"></a>00425 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00426"></a>00426 real t;
+<a name="l00427"></a>00427 GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00428"></a>00428 LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00429"></a>00429 DISTANCE | GEODESICSCALE,
+<a name="l00430"></a>00430 lat2, lon2, azi2, s12, t, M12, M21, t);
+<a name="l00431"></a>00431 }
+<a name="l00432"></a>00432 <span class="comment"></span>
+<a name="l00433"></a>00433 <span class="comment"> /**</span>
+<a name="l00434"></a>00434 <span class="comment"> * See the documentation for GeodesicLine::ArcPosition.</span>
+<a name="l00435"></a>00435 <span class="comment"> **********************************************************************/</span>
+<a name="l00436"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af286d2071bdc59e68046dd2557115f21">00436</a> <span class="keywordtype">void</span> ArcPosition(real a12, real& lat2, real& lon2, real& azi2,
+<a name="l00437"></a>00437 real& s12, real& m12, real& M12, real& M21)
+<a name="l00438"></a>00438 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00439"></a>00439 real t;
+<a name="l00440"></a>00440 GenPosition(<span class="keyword">true</span>, a12,
+<a name="l00441"></a>00441 LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00442"></a>00442 DISTANCE | REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00443"></a>00443 lat2, lon2, azi2, s12, m12, M12, M21, t);
+<a name="l00444"></a>00444 }<span class="comment"></span>
+<a name="l00445"></a>00445 <span class="comment"> ///@}</span>
+<a name="l00446"></a>00446 <span class="comment"></span><span class="comment"></span>
+<a name="l00447"></a>00447 <span class="comment"> /** \name The general position function.</span>
+<a name="l00448"></a>00448 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00449"></a>00449 <span class="comment"> ///@{</span>
+<a name="l00450"></a>00450 <span class="comment"></span><span class="comment"></span>
+<a name="l00451"></a>00451 <span class="comment"> /**</span>
+<a name="l00452"></a>00452 <span class="comment"> * The general position function. GeodesicLine::Position and</span>
+<a name="l00453"></a>00453 <span class="comment"> * GeodesicLine::ArcPosition are defined in terms of this function.</span>
+<a name="l00454"></a>00454 <span class="comment"> *</span>
+<a name="l00455"></a>00455 <span class="comment"> * @param[in] arcmode boolean flag determining the meaning of the second</span>
+<a name="l00456"></a>00456 <span class="comment"> * parameter; if arcmode is false, then the GeodesicLine object must have</span>
+<a name="l00457"></a>00457 <span class="comment"> * been constructed with \e caps |= GeodesicLine::DISTANCE_IN.</span>
+<a name="l00458"></a>00458 <span class="comment"> * @param[in] s12_a12 if \e arcmode is false, this is the distance between</span>
+<a name="l00459"></a>00459 <span class="comment"> * point 1 and point 2 (meters); otherwise it is the arc length between</span>
+<a name="l00460"></a>00460 <span class="comment"> * point 1 and point 2 (degrees); it can be signed.</span>
+<a name="l00461"></a>00461 <span class="comment"> * @param[in] outmask a bitor'ed combination of GeodesicLine::mask values</span>
+<a name="l00462"></a>00462 <span class="comment"> * specifying which of the following parameters should be set.</span>
+<a name="l00463"></a>00463 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00464"></a>00464 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees); requires that the</span>
+<a name="l00465"></a>00465 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00466"></a>00466 <span class="comment"> * GeodesicLine::LONGITUDE.</span>
+<a name="l00467"></a>00467 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00468"></a>00468 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters); requires</span>
+<a name="l00469"></a>00469 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00470"></a>00470 <span class="comment"> * GeodesicLine::DISTANCE.</span>
+<a name="l00471"></a>00471 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters); requires that the</span>
+<a name="l00472"></a>00472 <span class="comment"> * GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00473"></a>00473 <span class="comment"> * GeodesicLine::REDUCEDLENGTH.</span>
+<a name="l00474"></a>00474 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
<a name="l00475"></a>00475 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
<a name="l00476"></a>00476 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
-<a name="l00477"></a>00477 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
-<a name="l00478"></a>00478 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
-<a name="l00479"></a>00479 <span class="comment"> * GeodesicLine::AREA.</span>
-<a name="l00480"></a>00480 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00481"></a>00481 <span class="comment"> *</span>
-<a name="l00482"></a>00482 <span class="comment"> * The GeodesicLine::mask values possible for \e outmask are</span>
-<a name="l00483"></a>00483 <span class="comment"> * - \e outmask |= GeodesicLine::LATITUDE for the latitude \e lat2.</span>
-<a name="l00484"></a>00484 <span class="comment"> * - \e outmask |= GeodesicLine::LONGITUDE for the latitude \e lon2.</span>
-<a name="l00485"></a>00485 <span class="comment"> * - \e outmask |= GeodesicLine::AZIMUTH for the latitude \e azi2.</span>
-<a name="l00486"></a>00486 <span class="comment"> * - \e outmask |= GeodesicLine::DISTANCE for the distance \e s12.</span>
-<a name="l00487"></a>00487 <span class="comment"> * - \e outmask |= GeodesicLine::REDUCEDLENGTH for the reduced length \e</span>
-<a name="l00488"></a>00488 <span class="comment"> * m12.</span>
-<a name="l00489"></a>00489 <span class="comment"> * - \e outmask |= GeodesicLine::GEODESICSCALE for the geodesic scales \e</span>
-<a name="l00490"></a>00490 <span class="comment"> * M12 and \e M21.</span>
-<a name="l00491"></a>00491 <span class="comment"> * - \e outmask |= GeodesicLine::AREA for the area \e S12.</span>
-<a name="l00492"></a>00492 <span class="comment"> * .</span>
-<a name="l00493"></a>00493 <span class="comment"> * Requesting a value which the GeodesicLine object is not capable of</span>
-<a name="l00494"></a>00494 <span class="comment"> * computing is not an error; the corresponding argument will not be</span>
-<a name="l00495"></a>00495 <span class="comment"> * altered. Note, however, that the arc length is always computed and</span>
-<a name="l00496"></a>00496 <span class="comment"> * returned as the function value.</span>
-<a name="l00497"></a>00497 <span class="comment"> **********************************************************************/</span>
-<a name="l00498"></a>00498 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GenPosition(<span class="keywordtype">bool</span> arcmode, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12_a12, <span class="keywordtype">unsigned</span> outmask,
-<a name="l00499"></a>00499 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
-<a name="l00500"></a>00500 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
-<a name="l00501"></a>00501 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00502"></a>00502 <span class="comment"></span>
-<a name="l00503"></a>00503 <span class="comment"> ///@}</span>
-<a name="l00504"></a>00504 <span class="comment"></span><span class="comment"></span>
-<a name="l00505"></a>00505 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00506"></a>00506 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00507"></a>00507 <span class="comment"> ///@{</span>
-<a name="l00508"></a>00508 <span class="comment"></span><span class="comment"></span>
-<a name="l00509"></a>00509 <span class="comment"> /**</span>
-<a name="l00510"></a>00510 <span class="comment"> * @return true if the object has been initialized.</span>
-<a name="l00511"></a>00511 <span class="comment"> **********************************************************************/</span>
-<a name="l00512"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">00512</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps != 0U; }
-<a name="l00513"></a>00513 <span class="comment"></span>
-<a name="l00514"></a>00514 <span class="comment"> /**</span>
-<a name="l00515"></a>00515 <span class="comment"> * @return \e lat1 the latitude of point 1 (degrees).</span>
-<a name="l00516"></a>00516 <span class="comment"> **********************************************************************/</span>
-<a name="l00517"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a00a291e94d0c688a168a58623a360659">00517</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Latitude() <span class="keyword">const</span> throw()
-<a name="l00518"></a>00518 { <span class="keywordflow">return</span> Init() ? _lat1 : Math::NaN<real>(); }
-<a name="l00519"></a>00519 <span class="comment"></span>
-<a name="l00520"></a>00520 <span class="comment"> /**</span>
-<a name="l00521"></a>00521 <span class="comment"> * @return \e lon1 the longitude of point 1 (degrees).</span>
-<a name="l00522"></a>00522 <span class="comment"> **********************************************************************/</span>
-<a name="l00523"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">00523</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Longitude() <span class="keyword">const</span> throw()
-<a name="l00524"></a>00524 { <span class="keywordflow">return</span> Init() ? _lon1 : Math::NaN<real>(); }
-<a name="l00525"></a>00525 <span class="comment"></span>
-<a name="l00526"></a>00526 <span class="comment"> /**</span>
-<a name="l00527"></a>00527 <span class="comment"> * @return \e azi1 the azimuth (degrees) of the geodesic line at point 1.</span>
-<a name="l00528"></a>00528 <span class="comment"> **********************************************************************/</span>
-<a name="l00529"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a40707b9e989c95418b2559b271cc2699">00529</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Azimuth() <span class="keyword">const</span> throw()
-<a name="l00530"></a>00530 { <span class="keywordflow">return</span> Init() ? _azi1 : Math::NaN<real>(); }
-<a name="l00531"></a>00531 <span class="comment"></span>
-<a name="l00532"></a>00532 <span class="comment"> /**</span>
-<a name="l00533"></a>00533 <span class="comment"> * @return \e azi0 the azimuth (degrees) of the geodesic line as it crosses</span>
-<a name="l00534"></a>00534 <span class="comment"> * the equator in a northward direction.</span>
-<a name="l00535"></a>00535 <span class="comment"> **********************************************************************/</span>
-<a name="l00536"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad117912c4fc4ef29bf4050c9be3267f2">00536</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad117912c4fc4ef29bf4050c9be3267f2">EquatorialAzimuth</a>() <span class="keyword">const</span> throw() {
-<a name="l00537"></a>00537 <span class="keywordflow">return</span> Init() ?
-<a name="l00538"></a>00538 atan2(_salp0, _calp0) / Math::degree<real>() : Math::NaN<real>();
-<a name="l00539"></a>00539 }
-<a name="l00540"></a>00540 <span class="comment"></span>
-<a name="l00541"></a>00541 <span class="comment"> /**</span>
-<a name="l00542"></a>00542 <span class="comment"> * @return \e a1 the arc length (degrees) between the northward equatorial</span>
-<a name="l00543"></a>00543 <span class="comment"> * crossing and point 1.</span>
-<a name="l00544"></a>00544 <span class="comment"> **********************************************************************/</span>
-<a name="l00545"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">00545</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">EquatorialArc</a>() <span class="keyword">const</span> throw() {
-<a name="l00546"></a>00546 <span class="keywordflow">return</span> Init() ?
-<a name="l00547"></a>00547 atan2(_ssig1, _csig1) / Math::degree<real>() : Math::NaN<real>();
-<a name="l00548"></a>00548 }
-<a name="l00549"></a>00549 <span class="comment"></span>
-<a name="l00550"></a>00550 <span class="comment"> /**</span>
-<a name="l00551"></a>00551 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00552"></a>00552 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00553"></a>00553 <span class="comment"> **********************************************************************/</span>
-<a name="l00554"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af8953029b9985a3929fe406f7530143b">00554</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00555"></a>00555 { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }
-<a name="l00556"></a>00556 <span class="comment"></span>
-<a name="l00557"></a>00557 <span class="comment"> /**</span>
-<a name="l00558"></a>00558 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00559"></a>00559 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
-<a name="l00560"></a>00560 <span class="comment"> **********************************************************************/</span>
-<a name="l00561"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a42e1f97e3ed564f98b305450b0d04590">00561</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00562"></a>00562 { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }
-<a name="l00563"></a>00563 <span class="comment"></span>
-<a name="l00564"></a>00564 <span class="comment"> /**</span>
-<a name="l00565"></a>00565 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00566"></a>00566 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00567"></a>00567 <span class="comment"> **********************************************************************/</span>
-<a name="l00568"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">00568</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00569"></a>00569 { <span class="keywordflow">return</span> Init() ? 1/_f : Math::NaN<real>(); }
-<a name="l00570"></a>00570 <span class="comment"></span>
-<a name="l00571"></a>00571 <span class="comment"> /**</span>
-<a name="l00572"></a>00572 <span class="comment"> * @return \e caps the computational capabilities that this object was</span>
-<a name="l00573"></a>00573 <span class="comment"> * constructed with. LATITUDE and AZIMUTH are always included.</span>
-<a name="l00574"></a>00574 <span class="comment"> **********************************************************************/</span>
-<a name="l00575"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">00575</a> <span class="keywordtype">unsigned</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">Capabilities</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps; }
-<a name="l00576"></a>00576 <span class="comment"></span>
-<a name="l00577"></a>00577 <span class="comment"> /**</span>
-<a name="l00578"></a>00578 <span class="comment"> * @param[in] testcaps a set of bitor'ed GeodesicLine::mask values.</span>
-<a name="l00579"></a>00579 <span class="comment"> * @return true if the GeodesicLine object has all these capabilities.</span>
-<a name="l00580"></a>00580 <span class="comment"> **********************************************************************/</span>
-<a name="l00581"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">00581</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">Capabilities</a>(<span class="keywordtype">unsigned</span> testcaps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00582"></a>00582 testcaps &= OUT_ALL;
-<a name="l00583"></a>00583 <span class="keywordflow">return</span> (_caps & testcaps) == testcaps;
-<a name="l00584"></a>00584 }<span class="comment"></span>
-<a name="l00585"></a>00585 <span class="comment"> ///@}</span>
-<a name="l00586"></a>00586 <span class="comment"></span>
-<a name="l00587"></a>00587 };
-<a name="l00588"></a>00588
-<a name="l00589"></a>00589 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00590"></a>00590
-<a name="l00591"></a>00591 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEODESICLINE_HPP</span>
+<a name="l00477"></a>00477 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00478"></a>00478 <span class="comment"> * (dimensionless); requires that the GeodesicLine object was constructed</span>
+<a name="l00479"></a>00479 <span class="comment"> * with \e caps |= GeodesicLine::GEODESICSCALE.</span>
+<a name="l00480"></a>00480 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>); requires</span>
+<a name="l00481"></a>00481 <span class="comment"> * that the GeodesicLine object was constructed with \e caps |=</span>
+<a name="l00482"></a>00482 <span class="comment"> * GeodesicLine::AREA.</span>
+<a name="l00483"></a>00483 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00484"></a>00484 <span class="comment"> *</span>
+<a name="l00485"></a>00485 <span class="comment"> * The GeodesicLine::mask values possible for \e outmask are</span>
+<a name="l00486"></a>00486 <span class="comment"> * - \e outmask |= GeodesicLine::LATITUDE for the latitude \e lat2.</span>
+<a name="l00487"></a>00487 <span class="comment"> * - \e outmask |= GeodesicLine::LONGITUDE for the latitude \e lon2.</span>
+<a name="l00488"></a>00488 <span class="comment"> * - \e outmask |= GeodesicLine::AZIMUTH for the latitude \e azi2.</span>
+<a name="l00489"></a>00489 <span class="comment"> * - \e outmask |= GeodesicLine::DISTANCE for the distance \e s12.</span>
+<a name="l00490"></a>00490 <span class="comment"> * - \e outmask |= GeodesicLine::REDUCEDLENGTH for the reduced length \e</span>
+<a name="l00491"></a>00491 <span class="comment"> * m12.</span>
+<a name="l00492"></a>00492 <span class="comment"> * - \e outmask |= GeodesicLine::GEODESICSCALE for the geodesic scales \e</span>
+<a name="l00493"></a>00493 <span class="comment"> * M12 and \e M21.</span>
+<a name="l00494"></a>00494 <span class="comment"> * - \e outmask |= GeodesicLine::AREA for the area \e S12.</span>
+<a name="l00495"></a>00495 <span class="comment"> * .</span>
+<a name="l00496"></a>00496 <span class="comment"> * Requesting a value which the GeodesicLine object is not capable of</span>
+<a name="l00497"></a>00497 <span class="comment"> * computing is not an error; the corresponding argument will not be</span>
+<a name="l00498"></a>00498 <span class="comment"> * altered. Note, however, that the arc length is always computed and</span>
+<a name="l00499"></a>00499 <span class="comment"> * returned as the function value.</span>
+<a name="l00500"></a>00500 <span class="comment"> **********************************************************************/</span>
+<a name="l00501"></a>00501 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GenPosition(<span class="keywordtype">bool</span> arcmode, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12_a12, <span class="keywordtype">unsigned</span> outmask,
+<a name="l00502"></a>00502 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
+<a name="l00503"></a>00503 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
+<a name="l00504"></a>00504 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00505"></a>00505 <span class="comment"></span>
+<a name="l00506"></a>00506 <span class="comment"> ///@}</span>
+<a name="l00507"></a>00507 <span class="comment"></span><span class="comment"></span>
+<a name="l00508"></a>00508 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00509"></a>00509 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00510"></a>00510 <span class="comment"> ///@{</span>
+<a name="l00511"></a>00511 <span class="comment"></span><span class="comment"></span>
+<a name="l00512"></a>00512 <span class="comment"> /**</span>
+<a name="l00513"></a>00513 <span class="comment"> * @return true if the object has been initialized.</span>
+<a name="l00514"></a>00514 <span class="comment"> **********************************************************************/</span>
+<a name="l00515"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">00515</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps != 0U; }
+<a name="l00516"></a>00516 <span class="comment"></span>
+<a name="l00517"></a>00517 <span class="comment"> /**</span>
+<a name="l00518"></a>00518 <span class="comment"> * @return \e lat1 the latitude of point 1 (degrees).</span>
+<a name="l00519"></a>00519 <span class="comment"> **********************************************************************/</span>
+<a name="l00520"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a00a291e94d0c688a168a58623a360659">00520</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Latitude() <span class="keyword">const</span> throw()
+<a name="l00521"></a>00521 { <span class="keywordflow">return</span> Init() ? _lat1 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00522"></a>00522 <span class="comment"></span>
+<a name="l00523"></a>00523 <span class="comment"> /**</span>
+<a name="l00524"></a>00524 <span class="comment"> * @return \e lon1 the longitude of point 1 (degrees).</span>
+<a name="l00525"></a>00525 <span class="comment"> **********************************************************************/</span>
+<a name="l00526"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">00526</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Longitude() <span class="keyword">const</span> throw()
+<a name="l00527"></a>00527 { <span class="keywordflow">return</span> Init() ? _lon1 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00528"></a>00528 <span class="comment"></span>
+<a name="l00529"></a>00529 <span class="comment"> /**</span>
+<a name="l00530"></a>00530 <span class="comment"> * @return \e azi1 the azimuth (degrees) of the geodesic line at point 1.</span>
+<a name="l00531"></a>00531 <span class="comment"> **********************************************************************/</span>
+<a name="l00532"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a40707b9e989c95418b2559b271cc2699">00532</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Azimuth() <span class="keyword">const</span> throw()
+<a name="l00533"></a>00533 { <span class="keywordflow">return</span> Init() ? _azi1 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00534"></a>00534 <span class="comment"></span>
+<a name="l00535"></a>00535 <span class="comment"> /**</span>
+<a name="l00536"></a>00536 <span class="comment"> * @return \e azi0 the azimuth (degrees) of the geodesic line as it crosses</span>
+<a name="l00537"></a>00537 <span class="comment"> * the equator in a northward direction.</span>
+<a name="l00538"></a>00538 <span class="comment"> **********************************************************************/</span>
+<a name="l00539"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad117912c4fc4ef29bf4050c9be3267f2">00539</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeodesicLine.html#ad117912c4fc4ef29bf4050c9be3267f2">EquatorialAzimuth</a>() <span class="keyword">const</span> throw() {
+<a name="l00540"></a>00540 <span class="keywordflow">return</span> Init() ?
+<a name="l00541"></a>00541 atan2(_salp0, _calp0) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() : Math::NaN<real>();
+<a name="l00542"></a>00542 }
+<a name="l00543"></a>00543 <span class="comment"></span>
+<a name="l00544"></a>00544 <span class="comment"> /**</span>
+<a name="l00545"></a>00545 <span class="comment"> * @return \e a1 the arc length (degrees) between the northward equatorial</span>
+<a name="l00546"></a>00546 <span class="comment"> * crossing and point 1.</span>
+<a name="l00547"></a>00547 <span class="comment"> **********************************************************************/</span>
+<a name="l00548"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">00548</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">EquatorialArc</a>() <span class="keyword">const</span> throw() {
+<a name="l00549"></a>00549 <span class="keywordflow">return</span> Init() ?
+<a name="l00550"></a>00550 atan2(_ssig1, _csig1) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() : Math::NaN<real>();
+<a name="l00551"></a>00551 }
+<a name="l00552"></a>00552 <span class="comment"></span>
+<a name="l00553"></a>00553 <span class="comment"> /**</span>
+<a name="l00554"></a>00554 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00555"></a>00555 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00556"></a>00556 <span class="comment"> **********************************************************************/</span>
+<a name="l00557"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#af8953029b9985a3929fe406f7530143b">00557</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00558"></a>00558 { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00559"></a>00559 <span class="comment"></span>
+<a name="l00560"></a>00560 <span class="comment"> /**</span>
+<a name="l00561"></a>00561 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00562"></a>00562 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
+<a name="l00563"></a>00563 <span class="comment"> **********************************************************************/</span>
+<a name="l00564"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a42e1f97e3ed564f98b305450b0d04590">00564</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00565"></a>00565 { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00566"></a>00566 <span class="comment"></span>
+<a name="l00567"></a>00567 <span class="comment"> /// \cond SKIP</span>
+<a name="l00568"></a>00568 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00569"></a>00569 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00570"></a>00570 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00571"></a>00571 <span class="comment"> **********************************************************************/</span>
+<a name="l00572"></a>00572 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00573"></a>00573 { <span class="keywordflow">return</span> Init() ? 1/_f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00574"></a>00574 <span class="comment"> /// \endcond</span>
+<a name="l00575"></a>00575 <span class="comment"></span><span class="comment"></span>
+<a name="l00576"></a>00576 <span class="comment"> /**</span>
+<a name="l00577"></a>00577 <span class="comment"> * @return \e caps the computational capabilities that this object was</span>
+<a name="l00578"></a>00578 <span class="comment"> * constructed with. LATITUDE and AZIMUTH are always included.</span>
+<a name="l00579"></a>00579 <span class="comment"> **********************************************************************/</span>
+<a name="l00580"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">00580</a> <span class="keywordtype">unsigned</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">Capabilities</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps; }
+<a name="l00581"></a>00581 <span class="comment"></span>
+<a name="l00582"></a>00582 <span class="comment"> /**</span>
+<a name="l00583"></a>00583 <span class="comment"> * @param[in] testcaps a set of bitor'ed GeodesicLine::mask values.</span>
+<a name="l00584"></a>00584 <span class="comment"> * @return true if the GeodesicLine object has all these capabilities.</span>
+<a name="l00585"></a>00585 <span class="comment"> **********************************************************************/</span>
+<a name="l00586"></a><a class="code" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">00586</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">Capabilities</a>(<span class="keywordtype">unsigned</span> testcaps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00587"></a>00587 testcaps &= OUT_ALL;
+<a name="l00588"></a>00588 <span class="keywordflow">return</span> (_caps & testcaps) == testcaps;
+<a name="l00589"></a>00589 }<span class="comment"></span>
+<a name="l00590"></a>00590 <span class="comment"> ///@}</span>
+<a name="l00591"></a>00591 <span class="comment"></span>
+<a name="l00592"></a>00592 };
+<a name="l00593"></a>00593
+<a name="l00594"></a>00594 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00595"></a>00595
+<a name="l00596"></a>00596 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEODESICLINE_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeodesicProj.1.html b/doc/html/GeodesicProj.1.html
index 333e061..2d3f493 100644
--- a/doc/html/GeodesicProj.1.html
+++ b/doc/html/GeodesicProj.1.html
@@ -44,8 +44,11 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>GeodesicProj</strong> ( <strong>-z</strong> | <strong>-c</strong> | <strong>-g</strong> ) <em>lat0</em> <em>lon0</em> [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -109,6 +112,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
1/<em>f</em>.) By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
<em>f</em> = 1/298.257223563.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -134,8 +146,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/doc/html/GeodesicProj_8cpp.html b/doc/html/GeodesicProj_8cpp.html
index d8203cc..61fb37c 100644
--- a/doc/html/GeodesicProj_8cpp.html
+++ b/doc/html/GeodesicProj_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeodesicProj.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,7 +87,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for geodesic projections. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o GeodesicProj \ <a class="el" href="GeodesicProj_8cpp.html" title="Command line utility for geodesic projections.">GeodesicProj.cpp</a> \ ../src/AzimuthalEquidistant.cpp \ ../src/CassiniSoldner.cpp \ ../src/DMS.cpp \ ../src/Geodesic.cpp \ ../src/GeodesicLine.cpp \ ../src/Gnomonic.cpp</p>
<p>See the <a href="GeodesicProj.1.html">man page</a> for usage information. </p>
@@ -105,13 +120,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="GeodesicProj_8cpp_source.html#l00037">37</a> of file <a class="el" href="GeodesicProj_8cpp_source.html">GeodesicProj.cpp</a>.</p>
-<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="Gnomonic_8cpp_source.html#l00025">GeographicLib::Gnomonic::Forward()</a>, <a class="el" href="AzimuthalEquidistant_8cpp_source.html#l00025">GeographicLib::AzimuthalEquidistant::Forward()</a>, <a class="el" href="Gnomonic_8cpp_source.html#l00044">GeographicLib::Gnomonic::Reverse()</a>, and <a class="el" href="AzimuthalEquidistant_8cpp_source.html#l00036">GeographicLib [...]
+<p>References <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="AzimuthalEquidistant_8cpp_source.html#l00036">GeographicLib::AzimuthalEquidistant::Reverse()</a>, <a class="el" href="Gnomonic_8cpp_source.html#l00044">GeographicLib::Gnomonic::Reverse()</a>, <a class="el" href="AzimuthalEquidistant_8cpp_source.html#l00025">GeographicLib::AzimuthalEquidistant::Forward()</a>, and <a class="el" href="Gnomonic_8cpp_source.html#l00025">G [...]
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeodesicProj_8cpp_source.html b/doc/html/GeodesicProj_8cpp_source.html
index 4061eeb..4a328a9 100644
--- a/doc/html/GeodesicProj_8cpp_source.html
+++ b/doc/html/GeodesicProj_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeodesicProj.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file GeodesicProj.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for geodesic projections</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -86,174 +101,198 @@
<a name="l00037"></a><a class="code" href="GeodesicProj_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00037</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00038"></a>00038 <span class="keywordflow">try</span> {
<a name="l00039"></a>00039 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00040"></a>00040 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00040"></a>00040 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00041"></a>00041 <span class="keywordtype">bool</span> azimuthal = <span class="keyword">false</span>, cassini = <span class="keyword">false</span>, gnomonic = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
<a name="l00042"></a>00042 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0 = 0, lon0 = 0;
<a name="l00043"></a>00043 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00044"></a>00044 a = Constants::WGS84_a<real>(),
+<a name="l00044"></a>00044 a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
<a name="l00045"></a>00045 f = Constants::WGS84_f<real>();
-<a name="l00046"></a>00046 std::string istring, ifile, ofile;
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00049"></a>00049 std::string arg(argv[m]);
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00051"></a>00051 reverse = <span class="keyword">true</span>;
-<a name="l00052"></a>00052 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span> || arg == <span class="stringliteral">"-z"</span> || arg == <span class="stringliteral">"-g"</span>) {
-<a name="l00053"></a>00053 cassini = arg == <span class="stringliteral">"-c"</span>;
-<a name="l00054"></a>00054 azimuthal = arg == <span class="stringliteral">"-z"</span>;
-<a name="l00055"></a>00055 gnomonic = arg == <span class="stringliteral">"-g"</span>;
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00057"></a>00057 <span class="keywordflow">try</span> {
-<a name="l00058"></a>00058 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
-<a name="l00059"></a>00059 lat0, lon0);
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00062"></a>00062 std::cerr << <span class="stringliteral">"Error decoding arguments of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00063"></a>00063 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00064"></a>00064 <span class="keywordflow">return</span> 1;
-<a name="l00065"></a>00065 }
-<a name="l00066"></a>00066 m += 2;
-<a name="l00067"></a>00067 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00069"></a>00069 <span class="keywordflow">try</span> {
-<a name="l00070"></a>00070 a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00071"></a>00071 f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00074"></a>00074 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00075"></a>00075 <span class="keywordflow">return</span> 1;
-<a name="l00076"></a>00076 }
-<a name="l00077"></a>00077 m += 2;
-<a name="l00078"></a>00078 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00079"></a>00079 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00080"></a>00080 istring = argv[m];
-<a name="l00081"></a>00081 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00082"></a>00082 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00083"></a>00083 ifile = argv[m];
-<a name="l00084"></a>00084 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00086"></a>00086 ofile = argv[m];
-<a name="l00087"></a>00087 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00088"></a>00088 std::cout
-<a name="l00089"></a>00089 << argv[0]
-<a name="l00090"></a>00090 << <span class="stringliteral">": $Id: add83c03428521dde4441cc0de01d5b8313549b6 $\n"</span>
-<a name="l00091"></a>00091 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> 0;
-<a name="l00093"></a>00093 } <span class="keywordflow">else</span>
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00098"></a>00098 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00099"></a>00099 <span class="keywordflow">return</span> 1;
-<a name="l00100"></a>00100 }
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00102"></a>00102 std::ifstream infile;
-<a name="l00103"></a>00103 std::istringstream instring;
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00105"></a>00105 infile.open(ifile.c_str());
-<a name="l00106"></a>00106 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00107"></a>00107 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00108"></a>00108 <span class="keywordflow">return</span> 1;
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00111"></a>00111 std::string::size_type m = 0;
-<a name="l00112"></a>00112 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00113"></a>00113 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00115"></a>00115 <span class="keywordflow">break</span>;
-<a name="l00116"></a>00116 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 instring.str(istring);
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00121"></a>00121 (!istring.empty() ? &instring : &std::cin);
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 std::ofstream outfile;
-<a name="l00124"></a>00124 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00126"></a>00126 outfile.open(ofile.c_str());
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00128"></a>00128 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00129"></a>00129 <span class="keywordflow">return</span> 1;
-<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00046"></a>00046 std::string istring, ifile, ofile, cdelim;
+<a name="l00047"></a>00047 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00050"></a>00050 std::string arg(argv[m]);
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00052"></a>00052 reverse = <span class="keyword">true</span>;
+<a name="l00053"></a>00053 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span> || arg == <span class="stringliteral">"-z"</span> || arg == <span class="stringliteral">"-g"</span>) {
+<a name="l00054"></a>00054 cassini = arg == <span class="stringliteral">"-c"</span>;
+<a name="l00055"></a>00055 azimuthal = arg == <span class="stringliteral">"-z"</span>;
+<a name="l00056"></a>00056 gnomonic = arg == <span class="stringliteral">"-g"</span>;
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
+<a name="l00059"></a>00059 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
+<a name="l00060"></a>00060 lat0, lon0);
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00063"></a>00063 std::cerr << <span class="stringliteral">"Error decoding arguments of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00064"></a>00064 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00065"></a>00065 <span class="keywordflow">return</span> 1;
+<a name="l00066"></a>00066 }
+<a name="l00067"></a>00067 m += 2;
+<a name="l00068"></a>00068 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00070"></a>00070 <span class="keywordflow">try</span> {
+<a name="l00071"></a>00071 a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00072"></a>00072 f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00073"></a>00073 }
+<a name="l00074"></a>00074 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00075"></a>00075 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00076"></a>00076 <span class="keywordflow">return</span> 1;
+<a name="l00077"></a>00077 }
+<a name="l00078"></a>00078 m += 2;
+<a name="l00079"></a>00079 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00080"></a>00080 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00081"></a>00081 istring = argv[m];
+<a name="l00082"></a>00082 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00083"></a>00083 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00084"></a>00084 ifile = argv[m];
+<a name="l00085"></a>00085 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00087"></a>00087 ofile = argv[m];
+<a name="l00088"></a>00088 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00089"></a>00089 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00090"></a>00090 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00091"></a>00091 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00092"></a>00092 <span class="keywordflow">return</span> 1;
+<a name="l00093"></a>00093 }
+<a name="l00094"></a>00094 lsep = argv[m][0];
+<a name="l00095"></a>00095 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00097"></a>00097 cdelim = argv[m];
+<a name="l00098"></a>00098 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00099"></a>00099 std::cout
+<a name="l00100"></a>00100 << argv[0]
+<a name="l00101"></a>00101 << <span class="stringliteral">": $Id: d6745c19af3da288a8f95b4c6a9003906409800c $\n"</span>
+<a name="l00102"></a>00102 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00103"></a>00103 <span class="keywordflow">return</span> 0;
+<a name="l00104"></a>00104 } <span class="keywordflow">else</span>
+<a name="l00105"></a>00105 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00109"></a>00109 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> 1;
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00113"></a>00113 std::ifstream infile;
+<a name="l00114"></a>00114 std::istringstream instring;
+<a name="l00115"></a>00115 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00116"></a>00116 infile.open(ifile.c_str());
+<a name="l00117"></a>00117 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00118"></a>00118 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00119"></a>00119 <span class="keywordflow">return</span> 1;
+<a name="l00120"></a>00120 }
+<a name="l00121"></a>00121 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00122"></a>00122 std::string::size_type m = 0;
+<a name="l00123"></a>00123 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00124"></a>00124 m = istring.find(lsep, m);
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00126"></a>00126 <span class="keywordflow">break</span>;
+<a name="l00127"></a>00127 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 instring.str(istring);
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00132"></a>00132 (!istring.empty() ? &instring : &std::cin);
<a name="l00133"></a>00133
-<a name="l00134"></a>00134 <span class="keywordflow">if</span> (!(azimuthal || cassini || gnomonic)) {
-<a name="l00135"></a>00135 std::cerr << <span class="stringliteral">"Must specify \"-z lat0 lon0\" or "</span>
-<a name="l00136"></a>00136 << <span class="stringliteral">"\"-c lat0 lon0\" or \"-g lat0 lon0\"\n"</span>;
-<a name="l00137"></a>00137 <span class="keywordflow">return</span> 1;
-<a name="l00138"></a>00138 }
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
-<a name="l00141"></a>00141 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a> cs = cassini ?
-<a name="l00142"></a>00142 <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>(lat0, lon0, geod) : CassiniSoldner(geod);
-<a name="l00143"></a>00143 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a> az(geod);
-<a name="l00144"></a>00144 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a> gn(geod);
-<a name="l00145"></a>00145
-<a name="l00146"></a>00146 std::string s;
-<a name="l00147"></a>00147 <span class="keywordtype">int</span> retval = 0;
-<a name="l00148"></a>00148 std::cout << std::fixed;
-<a name="l00149"></a>00149 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00150"></a>00150 <span class="keywordflow">try</span> {
-<a name="l00151"></a>00151 std::istringstream str(s);
-<a name="l00152"></a>00152 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, azi, rk;
-<a name="l00153"></a>00153 std::string stra, strb;
-<a name="l00154"></a>00154 <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00155"></a>00155 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00156"></a>00156 <span class="keywordflow">if</span> (reverse) {
-<a name="l00157"></a>00157 x = Utility::num<real>(stra);
-<a name="l00158"></a>00158 y = Utility::num<real>(strb);
-<a name="l00159"></a>00159 } <span class="keywordflow">else</span>
-<a name="l00160"></a>00160 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00161"></a>00161 std::string strc;
-<a name="l00162"></a>00162 <span class="keywordflow">if</span> (str >> strc)
-<a name="l00163"></a>00163 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00164"></a>00164 <span class="keywordflow">if</span> (reverse) {
-<a name="l00165"></a>00165 <span class="keywordflow">if</span> (cassini)
-<a name="l00166"></a>00166 cs.Reverse(x, y, lat, lon, azi, rk);
-<a name="l00167"></a>00167 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
-<a name="l00168"></a>00168 az.<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a26d1b6fe3af8750babaeb60efdfec062">Reverse</a>(lat0, lon0, x, y, lat, lon, azi, rk);
-<a name="l00169"></a>00169 <span class="keywordflow">else</span>
-<a name="l00170"></a>00170 gn.<a class="code" href="classGeographicLib_1_1Gnomonic.html#afccbed660a482ef73d33ad16406ee626">Reverse</a>(lat0, lon0, x, y, lat, lon, azi, rk);
-<a name="l00171"></a>00171 *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
-<a name="l00172"></a>00172 << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
-<a name="l00173"></a>00173 << Utility::str<real>(azi, 15) << <span class="stringliteral">" "</span>
-<a name="l00174"></a>00174 << Utility::str<real>(rk, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00175"></a>00175 } <span class="keywordflow">else</span> {
-<a name="l00176"></a>00176 <span class="keywordflow">if</span> (cassini)
-<a name="l00177"></a>00177 cs.Forward(lat, lon, x, y, azi, rk);
-<a name="l00178"></a>00178 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
-<a name="l00179"></a>00179 az.<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">Forward</a>(lat0, lon0, lat, lon, x, y, azi, rk);
-<a name="l00180"></a>00180 <span class="keywordflow">else</span>
-<a name="l00181"></a>00181 gn.<a class="code" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">Forward</a>(lat0, lon0, lat, lon, x, y, azi, rk);
-<a name="l00182"></a>00182 *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
-<a name="l00183"></a>00183 << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
-<a name="l00184"></a>00184 << Utility::str<real>(azi, 15) << <span class="stringliteral">" "</span>
-<a name="l00185"></a>00185 << Utility::str<real>(rk, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00186"></a>00186 }
-<a name="l00187"></a>00187 }
-<a name="l00188"></a>00188 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00189"></a>00189 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00190"></a>00190 retval = 1;
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 <span class="keywordflow">return</span> retval;
-<a name="l00194"></a>00194 }
-<a name="l00195"></a>00195 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00196"></a>00196 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> 1;
-<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199 <span class="keywordflow">catch</span> (...) {
-<a name="l00200"></a>00200 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00201"></a>00201 <span class="keywordflow">return</span> 1;
-<a name="l00202"></a>00202 }
-<a name="l00203"></a>00203 }
+<a name="l00134"></a>00134 std::ofstream outfile;
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00137"></a>00137 outfile.open(ofile.c_str());
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00139"></a>00139 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00140"></a>00140 <span class="keywordflow">return</span> 1;
+<a name="l00141"></a>00141 }
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="keywordflow">if</span> (!(azimuthal || cassini || gnomonic)) {
+<a name="l00146"></a>00146 std::cerr << <span class="stringliteral">"Must specify \"-z lat0 lon0\" or "</span>
+<a name="l00147"></a>00147 << <span class="stringliteral">"\"-c lat0 lon0\" or \"-g lat0 lon0\"\n"</span>;
+<a name="l00148"></a>00148 <span class="keywordflow">return</span> 1;
+<a name="l00149"></a>00149 }
+<a name="l00150"></a>00150
+<a name="l00151"></a>00151 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
+<a name="l00152"></a>00152 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a> cs = cassini ?
+<a name="l00153"></a>00153 <a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>(lat0, lon0, geod) : CassiniSoldner(geod);
+<a name="l00154"></a>00154 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a> az(geod);
+<a name="l00155"></a>00155 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a> gn(geod);
+<a name="l00156"></a>00156
+<a name="l00157"></a>00157 std::string s;
+<a name="l00158"></a>00158 <span class="keywordtype">int</span> retval = 0;
+<a name="l00159"></a>00159 std::cout << std::fixed;
+<a name="l00160"></a>00160 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00161"></a>00161 <span class="keywordflow">try</span> {
+<a name="l00162"></a>00162 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00163"></a>00163 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00164"></a>00164 std::string::size_type m = s.find(cdelim);
+<a name="l00165"></a>00165 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00166"></a>00166 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00167"></a>00167 s = s.substr(0, m);
+<a name="l00168"></a>00168 }
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170 std::istringstream str(s);
+<a name="l00171"></a>00171 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y, azi, rk;
+<a name="l00172"></a>00172 std::string stra, strb;
+<a name="l00173"></a>00173 <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00174"></a>00174 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (reverse) {
+<a name="l00176"></a>00176 x = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(stra);
+<a name="l00177"></a>00177 y = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strb);
+<a name="l00178"></a>00178 } <span class="keywordflow">else</span>
+<a name="l00179"></a>00179 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00180"></a>00180 std::string strc;
+<a name="l00181"></a>00181 <span class="keywordflow">if</span> (str >> strc)
+<a name="l00182"></a>00182 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00183"></a>00183 <span class="keywordflow">if</span> (reverse) {
+<a name="l00184"></a>00184 <span class="keywordflow">if</span> (cassini)
+<a name="l00185"></a>00185 cs.Reverse(x, y, lat, lon, azi, rk);
+<a name="l00186"></a>00186 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
+<a name="l00187"></a>00187 az.<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a26d1b6fe3af8750babaeb60efdfec062">Reverse</a>(lat0, lon0, x, y, lat, lon, azi, rk);
+<a name="l00188"></a>00188 <span class="keywordflow">else</span>
+<a name="l00189"></a>00189 gn.<a class="code" href="classGeographicLib_1_1Gnomonic.html#afccbed660a482ef73d33ad16406ee626">Reverse</a>(lat0, lon0, x, y, lat, lon, azi, rk);
+<a name="l00190"></a>00190 *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
+<a name="l00191"></a>00191 << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
+<a name="l00192"></a>00192 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(azi, 15) << <span class="stringliteral">" "</span>
+<a name="l00193"></a>00193 << Utility::str<real>(rk, 16) << eol;
+<a name="l00194"></a>00194 } <span class="keywordflow">else</span> {
+<a name="l00195"></a>00195 <span class="keywordflow">if</span> (cassini)
+<a name="l00196"></a>00196 cs.Forward(lat, lon, x, y, azi, rk);
+<a name="l00197"></a>00197 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (azimuthal)
+<a name="l00198"></a>00198 az.<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">Forward</a>(lat0, lon0, lat, lon, x, y, azi, rk);
+<a name="l00199"></a>00199 <span class="keywordflow">else</span>
+<a name="l00200"></a>00200 gn.<a class="code" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">Forward</a>(lat0, lon0, lat, lon, x, y, azi, rk);
+<a name="l00201"></a>00201 *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
+<a name="l00202"></a>00202 << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
+<a name="l00203"></a>00203 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(azi, 15) << <span class="stringliteral">" "</span>
+<a name="l00204"></a>00204 << Utility::str<real>(rk, 16) << eol;
+<a name="l00205"></a>00205 }
+<a name="l00206"></a>00206 }
+<a name="l00207"></a>00207 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00208"></a>00208 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00209"></a>00209 retval = 1;
+<a name="l00210"></a>00210 }
+<a name="l00211"></a>00211 }
+<a name="l00212"></a>00212 <span class="keywordflow">return</span> retval;
+<a name="l00213"></a>00213 }
+<a name="l00214"></a>00214 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00215"></a>00215 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00216"></a>00216 <span class="keywordflow">return</span> 1;
+<a name="l00217"></a>00217 }
+<a name="l00218"></a>00218 <span class="keywordflow">catch</span> (...) {
+<a name="l00219"></a>00219 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00220"></a>00220 <span class="keywordflow">return</span> 1;
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geodesic_8cpp.html b/doc/html/Geodesic_8cpp.html
index daaae6a..e4089f4 100644
--- a/doc/html/Geodesic_8cpp.html
+++ b/doc/html/Geodesic_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geodesic.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,17 +76,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8cpp.html#a61dcde881d6a80b561fc2b4c4b327883">GEOGRAPHICLIB_GEODESIC_CPP</a> "$Id: ff2511fd7f024c20973838884776d929597eb044 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8cpp.html#a61dcde881d6a80b561fc2b4c4b327883">GEOGRAPHICLIB_GEODESIC_CPP</a> "$Id: dd137806b8a5ba58211a37eb87e163b8a9bd7aa7 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>This is a reformulation of the geodesic problem. The notation is as follows:</p>
<ul>
<li>at a general point (no suffix or 1 or 2 as suffix)<ul>
@@ -103,7 +116,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEODESIC_CPP "$Id: ff2511fd7f024c20973838884776d929597eb044 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEODESIC_CPP "$Id: dd137806b8a5ba58211a37eb87e163b8a9bd7aa7 $"</td>
</tr>
</table>
</div>
@@ -114,8 +127,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geodesic_8cpp_source.html b/doc/html/Geodesic_8cpp_source.html
index f83f7e1..c16f746 100644
--- a/doc/html/Geodesic_8cpp_source.html
+++ b/doc/html/Geodesic_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geodesic.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Geodesic.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::Geodesic class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011, 2012) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * This is a reformulation of the geodesic problem. The notation is as</span>
@@ -79,7 +94,7 @@
<a name="l00030"></a>00030 <span class="preprocessor">#include <<a class="code" href="GeodesicLine_8hpp.html" title="Header for GeographicLib::GeodesicLine class.">GeographicLib/GeodesicLine.hpp</a>></span>
<a name="l00031"></a>00031
<a name="l00032"></a><a class="code" href="Geodesic_8cpp.html#a61dcde881d6a80b561fc2b4c4b327883">00032</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEODESIC_CPP \</span>
-<a name="l00033"></a>00033 <span class="preprocessor"> "$Id: ff2511fd7f024c20973838884776d929597eb044 $"</span>
+<a name="l00033"></a>00033 <span class="preprocessor"> "$Id: dd137806b8a5ba58211a37eb87e163b8a9bd7aa7 $"</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span>
<a name="l00035"></a>00035 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geodesic_8cpp.html#a61dcde881d6a80b561fc2b4c4b327883">GEOGRAPHICLIB_GEODESIC_CPP</a>)
<a name="l00036"></a>00036 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geodesic_8hpp.html#ab538cb707d6ff36056dd372c7e9e6d7e">GEOGRAPHICLIB_GEODESIC_HPP</a>)
@@ -91,14 +106,14 @@
<a name="l00042"></a>00042 <span class="comment">// Underflow guard. We require</span>
<a name="l00043"></a>00043 <span class="comment">// tiny_ * epsilon() > 0</span>
<a name="l00044"></a>00044 <span class="comment">// tiny_ + epsilon() == epsilon()</span>
-<a name="l00045"></a>00045 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::tiny_ = sqrt(numeric_limits<real>::min());
-<a name="l00046"></a>00046 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::tol0_ = numeric_limits<real>::epsilon();
+<a name="l00045"></a>00045 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::tiny_ = sqrt(numeric_limits<real>::min());
+<a name="l00046"></a>00046 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::tol0_ = numeric_limits<real>::epsilon();
<a name="l00047"></a>00047 <span class="comment">// Increase multiplier in defn of tol1_ from 100 to 200 to fix inverse case</span>
<a name="l00048"></a>00048 <span class="comment">// 52.784459512564 0 -52.784459512563990912 179.634407464943777557</span>
<a name="l00049"></a>00049 <span class="comment">// which otherwise failed for Visual Studio 10 (Release and Debug)</span>
-<a name="l00050"></a>00050 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::tol1_ = 200 * tol0_;
-<a name="l00051"></a>00051 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::tol2_ = sqrt(numeric_limits<real>::epsilon());
-<a name="l00052"></a>00052 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Geodesic::xthresh_ = 1000 * tol2_;
+<a name="l00050"></a>00050 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::tol1_ = 200 * tol0_;
+<a name="l00051"></a>00051 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::tol2_ = sqrt(numeric_limits<real>::epsilon());
+<a name="l00052"></a>00052 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::xthresh_ = 1000 * tol2_;
<a name="l00053"></a>00053
<a name="l00054"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a455300c36e6caa70968115416e1573a4">00054</a> Geodesic::Geodesic(real a, real f)
<a name="l00055"></a>00055 : _a(a)
@@ -112,1406 +127,1414 @@
<a name="l00063"></a>00063 (_e2 == 0 ? 1 :
<a name="l00064"></a>00064 (_e2 > 0 ? <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::atanh(sqrt(_e2)) : atan(sqrt(-_e2))) /
<a name="l00065"></a>00065 sqrt(abs(_e2))))/2) <span class="comment">// authalic radius squared</span>
-<a name="l00066"></a>00066 , _etol2(tol2_ / max(real(0.1), sqrt(abs(_e2))))
-<a name="l00067"></a>00067 {
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
-<a name="l00069"></a>00069 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_b) && _b > 0))
-<a name="l00071"></a>00071 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00072"></a>00072 A3coeff();
-<a name="l00073"></a>00073 C3coeff();
-<a name="l00074"></a>00074 C4coeff();
-<a name="l00075"></a>00075 }
-<a name="l00076"></a>00076
-<a name="l00077"></a>00077 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>(Constants::WGS84_a<real>(),
-<a name="l00078"></a>00078 Constants::WGS84_f<real>());
-<a name="l00079"></a>00079
-<a name="l00080"></a>00080 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::SinCosSeries(<span class="keywordtype">bool</span> sinp,
-<a name="l00081"></a>00081 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cosx,
-<a name="l00082"></a>00082 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[], <span class="keywordtype">int</span> n) <span class="keywordflow">throw</span>() {
-<a name="l00083"></a>00083 <span class="comment">// Evaluate</span>
-<a name="l00084"></a>00084 <span class="comment">// y = sinp ? sum(c[i] * sin( 2*i * x), i, 1, n) :</span>
-<a name="l00085"></a>00085 <span class="comment">// sum(c[i] * cos((2*i+1) * x), i, 0, n-1) :</span>
-<a name="l00086"></a>00086 <span class="comment">// using Clenshaw summation. N.B. c[0] is unused for sin series</span>
-<a name="l00087"></a>00087 <span class="comment">// Approx operation count = (n + 5) mult and (2 * n + 2) add</span>
-<a name="l00088"></a>00088 c += (n + sinp); <span class="comment">// Point to one beyond last element</span>
-<a name="l00089"></a>00089 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00090"></a>00090 ar = 2 * (cosx - sinx) * (cosx + sinx), <span class="comment">// 2 * cos(2 * x)</span>
-<a name="l00091"></a>00091 y0 = n & 1 ? *--c : 0, y1 = 0; <span class="comment">// accumulators for sum</span>
-<a name="l00092"></a>00092 <span class="comment">// Now n is even</span>
-<a name="l00093"></a>00093 n /= 2;
-<a name="l00094"></a>00094 <span class="keywordflow">while</span> (n--) {
-<a name="l00095"></a>00095 <span class="comment">// Unroll loop x 2, so accumulators return to their original role</span>
-<a name="l00096"></a>00096 y1 = ar * y0 - y1 + *--c;
-<a name="l00097"></a>00097 y0 = ar * y1 - y0 + *--c;
-<a name="l00098"></a>00098 }
-<a name="l00099"></a>00099 <span class="keywordflow">return</span> sinp
-<a name="l00100"></a>00100 ? 2 * sinx * cosx * y0 <span class="comment">// sin(2 * x) * y0</span>
-<a name="l00101"></a>00101 : cosx * (y0 - y1); <span class="comment">// cos(x) * (y0 - y1)</span>
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103
-<a name="l00104"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">00104</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Geodesic::Line</a>(real lat1, real lon1, real azi1, <span class="keywordtype">unsigned</span> caps)
-<a name="l00105"></a>00105 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(*<span class="keyword">this</span>, lat1, lon1, azi1, caps);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108
-<a name="l00109"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#acaef3032846a71fc730e1ea26ea32d20">00109</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#acaef3032846a71fc730e1ea26ea32d20">Geodesic::GenDirect</a>(real lat1, real lon1, real azi1,
-<a name="l00110"></a>00110 <span class="keywordtype">bool</span> arcmode, real s12_a12, <span class="keywordtype">unsigned</span> outmask,
-<a name="l00111"></a>00111 real& lat2, real& lon2, real& azi2,
-<a name="l00112"></a>00112 real& s12, real& m12, real& M12, real& M21,
-<a name="l00113"></a>00113 real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00114"></a>00114 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(*<span class="keyword">this</span>, lat1, lon1, azi1,
-<a name="l00115"></a>00115 <span class="comment">// Automatically supply DISTANCE_IN if necessary</span>
-<a name="l00116"></a>00116 outmask | (arcmode ? NONE : DISTANCE_IN))
-<a name="l00117"></a>00117 . <span class="comment">// Note the dot!</span>
-<a name="l00118"></a>00118 GenPosition(arcmode, s12_a12, outmask,
-<a name="l00119"></a>00119 lat2, lon2, azi2, s12, m12, M12, M21, S12);
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a84a3b9b457dd87b1059045b9d50303fd">00122</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#a84a3b9b457dd87b1059045b9d50303fd">Geodesic::GenInverse</a>(real lat1, real lon1, real lat2, real lon2,
-<a name="l00123"></a>00123 <span class="keywordtype">unsigned</span> outmask,
-<a name="l00124"></a>00124 real& s12, real& azi1, real& azi2,
-<a name="l00125"></a>00125 real& m12, real& M12, real& M21, real& S12)
-<a name="l00126"></a>00126 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00127"></a>00127 outmask &= OUT_ALL;
-<a name="l00128"></a>00128 lon1 = AngNormalize(lon1);
-<a name="l00129"></a>00129 real lon12 = AngNormalize(AngNormalize(lon2) - lon1);
-<a name="l00130"></a>00130 <span class="comment">// If very close to being on the same meridian, then make it so.</span>
-<a name="l00131"></a>00131 <span class="comment">// Not sure this is necessary...</span>
-<a name="l00132"></a>00132 lon12 = AngRound(lon12);
-<a name="l00133"></a>00133 <span class="comment">// Make longitude difference positive.</span>
-<a name="l00134"></a>00134 <span class="keywordtype">int</span> lonsign = lon12 >= 0 ? 1 : -1;
-<a name="l00135"></a>00135 lon12 *= lonsign;
-<a name="l00136"></a>00136 <span class="keywordflow">if</span> (lon12 == 180)
-<a name="l00137"></a>00137 lonsign = 1;
-<a name="l00138"></a>00138 <span class="comment">// If really close to the equator, treat as on equator.</span>
-<a name="l00139"></a>00139 lat1 = AngRound(lat1);
-<a name="l00140"></a>00140 lat2 = AngRound(lat2);
-<a name="l00141"></a>00141 <span class="comment">// Swap points so that point with higher (abs) latitude is point 1</span>
-<a name="l00142"></a>00142 <span class="keywordtype">int</span> swapp = abs(lat1) >= abs(lat2) ? 1 : -1;
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (swapp < 0) {
-<a name="l00144"></a>00144 lonsign *= -1;
-<a name="l00145"></a>00145 swap(lat1, lat2);
-<a name="l00146"></a>00146 }
-<a name="l00147"></a>00147 <span class="comment">// Make lat1 <= 0</span>
-<a name="l00148"></a>00148 <span class="keywordtype">int</span> latsign = lat1 < 0 ? 1 : -1;
-<a name="l00149"></a>00149 lat1 *= latsign;
-<a name="l00150"></a>00150 lat2 *= latsign;
-<a name="l00151"></a>00151 <span class="comment">// Now we have</span>
-<a name="l00152"></a>00152 <span class="comment">//</span>
-<a name="l00153"></a>00153 <span class="comment">// 0 <= lon12 <= 180</span>
-<a name="l00154"></a>00154 <span class="comment">// -90 <= lat1 <= 0</span>
-<a name="l00155"></a>00155 <span class="comment">// lat1 <= lat2 <= -lat1</span>
-<a name="l00156"></a>00156 <span class="comment">//</span>
-<a name="l00157"></a>00157 <span class="comment">// longsign, swapp, latsign register the transformation to bring the</span>
-<a name="l00158"></a>00158 <span class="comment">// coordinates to this canonical form. In all cases, 1 means no change was</span>
-<a name="l00159"></a>00159 <span class="comment">// made. We make these transformations so that there are few cases to</span>
-<a name="l00160"></a>00160 <span class="comment">// check, e.g., on verifying quadrants in atan2. In addition, this</span>
-<a name="l00161"></a>00161 <span class="comment">// enforces some symmetries in the results returned.</span>
-<a name="l00162"></a>00162
-<a name="l00163"></a>00163 real phi, sbet1, cbet1, sbet2, cbet2, s12x, m12x;
-<a name="l00164"></a>00164
-<a name="l00165"></a>00165 phi = lat1 * Math::degree<real>();
-<a name="l00166"></a>00166 <span class="comment">// Ensure cbet1 = +epsilon at poles</span>
-<a name="l00167"></a>00167 sbet1 = _f1 * sin(phi);
-<a name="l00168"></a>00168 cbet1 = lat1 == -90 ? tiny_ : cos(phi);
-<a name="l00169"></a>00169 SinCosNorm(sbet1, cbet1);
-<a name="l00170"></a>00170
-<a name="l00171"></a>00171 phi = lat2 * Math::degree<real>();
-<a name="l00172"></a>00172 <span class="comment">// Ensure cbet2 = +epsilon at poles</span>
-<a name="l00173"></a>00173 sbet2 = _f1 * sin(phi);
-<a name="l00174"></a>00174 cbet2 = abs(lat2) == 90 ? tiny_ : cos(phi);
-<a name="l00175"></a>00175 SinCosNorm(sbet2, cbet2);
-<a name="l00176"></a>00176
-<a name="l00177"></a>00177 <span class="comment">// If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the</span>
-<a name="l00178"></a>00178 <span class="comment">// |bet1| - |bet2|. Alternatively (cbet1 >= -sbet1), abs(sbet2) + sbet1 is</span>
-<a name="l00179"></a>00179 <span class="comment">// a better measure. This logic is used in assigning calp2 in Lambda12.</span>
-<a name="l00180"></a>00180 <span class="comment">// Sometimes these quantities vanish and in that case we force bet2 = +/-</span>
-<a name="l00181"></a>00181 <span class="comment">// bet1 exactly. An example where is is necessary is the inverse problem</span>
-<a name="l00182"></a>00182 <span class="comment">// 48.522876735459 0 -48.52287673545898293 179.599720456223079643</span>
-<a name="l00183"></a>00183 <span class="comment">// which failed with Visual Studio 10 (Release and Debug)</span>
-<a name="l00184"></a>00184
-<a name="l00185"></a>00185 <span class="keywordflow">if</span> (cbet1 < -sbet1) {
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (cbet2 == cbet1)
-<a name="l00187"></a>00187 sbet2 = sbet2 < 0 ? sbet1 : -sbet1;
-<a name="l00188"></a>00188 } <span class="keywordflow">else</span> {
-<a name="l00189"></a>00189 <span class="keywordflow">if</span> (abs(sbet2) == -sbet1)
-<a name="l00190"></a>00190 cbet2 = cbet1;
-<a name="l00191"></a>00191 }
-<a name="l00192"></a>00192
-<a name="l00193"></a>00193 real
-<a name="l00194"></a>00194 lam12 = lon12 * Math::degree<real>(),
-<a name="l00195"></a>00195 slam12 = lon12 == 180 ? 0 : sin(lam12),
-<a name="l00196"></a>00196 clam12 = cos(lam12); <span class="comment">// lon12 == 90 isn't interesting</span>
-<a name="l00197"></a>00197
-<a name="l00198"></a>00198 real a12, sig12, calp1, salp1, calp2, salp2;
-<a name="l00199"></a>00199 <span class="comment">// index zero elements of these arrays are unused</span>
-<a name="l00200"></a>00200 real C1a[nC1_ + 1], C2a[nC2_ + 1], C3a[nC3_];
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="keywordtype">bool</span> meridian = lat1 == -90 || slam12 == 0;
-<a name="l00203"></a>00203
-<a name="l00204"></a>00204 <span class="keywordflow">if</span> (meridian) {
-<a name="l00205"></a>00205
-<a name="l00206"></a>00206 <span class="comment">// Endpoints are on a single full meridian, so the geodesic might lie on</span>
-<a name="l00207"></a>00207 <span class="comment">// a meridian.</span>
-<a name="l00208"></a>00208
-<a name="l00209"></a>00209 calp1 = clam12; salp1 = slam12; <span class="comment">// Head to the target longitude</span>
-<a name="l00210"></a>00210 calp2 = 1; salp2 = 0; <span class="comment">// At the target we're heading north</span>
-<a name="l00211"></a>00211
-<a name="l00212"></a>00212 real
-<a name="l00213"></a>00213 <span class="comment">// tan(bet) = tan(sig) * cos(alp)</span>
-<a name="l00214"></a>00214 ssig1 = sbet1, csig1 = calp1 * cbet1,
-<a name="l00215"></a>00215 ssig2 = sbet2, csig2 = calp2 * cbet2;
-<a name="l00216"></a>00216
-<a name="l00217"></a>00217 <span class="comment">// sig12 = sig2 - sig1</span>
-<a name="l00218"></a>00218 sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
-<a name="l00219"></a>00219 csig1 * csig2 + ssig1 * ssig2);
-<a name="l00220"></a>00220 {
-<a name="l00221"></a>00221 real dummy;
-<a name="l00222"></a>00222 Lengths(_n, sig12, ssig1, csig1, ssig2, csig2,
-<a name="l00223"></a>00223 cbet1, cbet2, s12x, m12x, dummy,
-<a name="l00224"></a>00224 (outmask & GEODESICSCALE) != 0U, M12, M21, C1a, C2a);
-<a name="l00225"></a>00225 }
-<a name="l00226"></a>00226 <span class="comment">// Add the check for sig12 since zero length geodesics might yield m12 <</span>
-<a name="l00227"></a>00227 <span class="comment">// 0. Test case was</span>
-<a name="l00228"></a>00228 <span class="comment">//</span>
-<a name="l00229"></a>00229 <span class="comment">// echo 20.001 0 20.001 0 | Geod -i</span>
-<a name="l00230"></a>00230 <span class="comment">//</span>
-<a name="l00231"></a>00231 <span class="comment">// In fact, we will have sig12 > pi/2 for meridional geodesic which is</span>
-<a name="l00232"></a>00232 <span class="comment">// not a shortest path.</span>
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (sig12 < 1 || m12x >= 0) {
-<a name="l00234"></a>00234 m12x *= _a;
-<a name="l00235"></a>00235 s12x *= _b;
-<a name="l00236"></a>00236 a12 = sig12 / Math::degree<real>();
-<a name="l00237"></a>00237 } <span class="keywordflow">else</span>
-<a name="l00238"></a>00238 <span class="comment">// m12 < 0, i.e., prolate and too close to anti-podal</span>
-<a name="l00239"></a>00239 meridian = <span class="keyword">false</span>;
-<a name="l00240"></a>00240 }
-<a name="l00241"></a>00241
-<a name="l00242"></a>00242 real omg12;
-<a name="l00243"></a>00243 <span class="keywordflow">if</span> (!meridian &&
-<a name="l00244"></a>00244 sbet1 == 0 && <span class="comment">// and sbet2 == 0</span>
-<a name="l00245"></a>00245 <span class="comment">// Mimic the way Lambda12 works with calp1 = 0</span>
-<a name="l00246"></a>00246 (_f <= 0 || lam12 <= Math::pi<real>() - _f * Math::pi<real>())) {
-<a name="l00247"></a>00247
-<a name="l00248"></a>00248 <span class="comment">// Geodesic runs along equator</span>
-<a name="l00249"></a>00249 calp1 = calp2 = 0; salp1 = salp2 = 1;
-<a name="l00250"></a>00250 s12x = _a * lam12;
-<a name="l00251"></a>00251 m12x = _b * sin(lam12 / _f1);
-<a name="l00252"></a>00252 <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
-<a name="l00253"></a>00253 M12 = M21 = cos(lam12 / _f1);
-<a name="l00254"></a>00254 a12 = lon12 / _f1;
-<a name="l00255"></a>00255 sig12 = omg12 = lam12 / _f1;
-<a name="l00256"></a>00256
-<a name="l00257"></a>00257 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!meridian) {
-<a name="l00258"></a>00258
-<a name="l00259"></a>00259 <span class="comment">// Now point1 and point2 belong within a hemisphere bounded by a</span>
-<a name="l00260"></a>00260 <span class="comment">// meridian and geodesic is neither meridional or equatorial.</span>
-<a name="l00261"></a>00261
-<a name="l00262"></a>00262 <span class="comment">// Figure a starting point for Newton's method</span>
-<a name="l00263"></a>00263 sig12 = InverseStart(sbet1, cbet1, sbet2, cbet2,
-<a name="l00264"></a>00264 lam12,
-<a name="l00265"></a>00265 salp1, calp1, salp2, calp2,
-<a name="l00266"></a>00266 C1a, C2a);
-<a name="l00267"></a>00267
-<a name="l00268"></a>00268 <span class="keywordflow">if</span> (sig12 >= 0) {
-<a name="l00269"></a>00269 <span class="comment">// Short lines (InverseStart sets salp2, calp2)</span>
-<a name="l00270"></a>00270 real w1 = sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1));
-<a name="l00271"></a>00271 s12x = sig12 * _a * w1;
-<a name="l00272"></a>00272 m12x = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(w1) * _a / _f1 * sin(sig12 * _f1 / w1);
-<a name="l00273"></a>00273 <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
-<a name="l00274"></a>00274 M12 = M21 = cos(sig12 * _f1 / w1);
-<a name="l00275"></a>00275 a12 = sig12 / Math::degree<real>();
-<a name="l00276"></a>00276 omg12 = lam12 / w1;
-<a name="l00277"></a>00277 } <span class="keywordflow">else</span> {
-<a name="l00278"></a>00278
-<a name="l00279"></a>00279 <span class="comment">// Newton's method</span>
-<a name="l00280"></a>00280 real ssig1, csig1, ssig2, csig2, eps;
-<a name="l00281"></a>00281 real ov = 0;
-<a name="l00282"></a>00282 <span class="keywordtype">unsigned</span> numit = 0;
-<a name="l00283"></a>00283 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> trip = 0; numit < maxit_; ++numit) {
-<a name="l00284"></a>00284 real dv;
-<a name="l00285"></a>00285 real v = Lambda12(sbet1, cbet1, sbet2, cbet2, salp1, calp1,
-<a name="l00286"></a>00286 salp2, calp2, sig12, ssig1, csig1, ssig2, csig2,
-<a name="l00287"></a>00287 eps, omg12, trip < 1, dv, C1a, C2a, C3a) - lam12;
-<a name="l00288"></a>00288 <span class="keywordflow">if</span> (!(abs(v) > tiny_) || !(trip < 1)) {
-<a name="l00289"></a>00289 <span class="keywordflow">if</span> (!(abs(v) <= max(tol1_, ov)))
-<a name="l00290"></a>00290 numit = maxit_;
-<a name="l00291"></a>00291 <span class="keywordflow">break</span>;
-<a name="l00292"></a>00292 }
-<a name="l00293"></a>00293 real
-<a name="l00294"></a>00294 dalp1 = -v/dv;
-<a name="l00295"></a>00295 real
-<a name="l00296"></a>00296 sdalp1 = sin(dalp1), cdalp1 = cos(dalp1),
-<a name="l00297"></a>00297 nsalp1 = salp1 * cdalp1 + calp1 * sdalp1;
-<a name="l00298"></a>00298 calp1 = calp1 * cdalp1 - salp1 * sdalp1;
-<a name="l00299"></a>00299 salp1 = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), nsalp1);
-<a name="l00300"></a>00300 SinCosNorm(salp1, calp1);
-<a name="l00301"></a>00301 <span class="comment">// In some regimes we don't get quadratic convergence because slope</span>
-<a name="l00302"></a>00302 <span class="comment">// -> 0. So use convergence conditions based on epsilon instead of</span>
-<a name="l00303"></a>00303 <span class="comment">// sqrt(epsilon). The first criterion is a test on abs(v) against</span>
-<a name="l00304"></a>00304 <span class="comment">// 100 * epsilon. The second takes credit for an anticipated</span>
-<a name="l00305"></a>00305 <span class="comment">// reduction in abs(v) by v/ov (due to the latest update in alp1) and</span>
-<a name="l00306"></a>00306 <span class="comment">// checks this against epsilon.</span>
-<a name="l00307"></a>00307 <span class="keywordflow">if</span> (!(abs(v) >= tol1_ && <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(v) >= ov * tol0_)) ++trip;
-<a name="l00308"></a>00308 ov = abs(v);
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310
-<a name="l00311"></a>00311 <span class="keywordflow">if</span> (numit >= maxit_) {
-<a name="l00312"></a>00312 <span class="comment">// Signal failure.</span>
-<a name="l00313"></a>00313 <span class="keywordflow">if</span> (outmask & DISTANCE)
-<a name="l00314"></a>00314 s12 = Math::NaN<real>();
-<a name="l00315"></a>00315 <span class="keywordflow">if</span> (outmask & AZIMUTH)
-<a name="l00316"></a>00316 azi1 = azi2 = Math::NaN<real>();
-<a name="l00317"></a>00317 <span class="keywordflow">if</span> (outmask & REDUCEDLENGTH)
-<a name="l00318"></a>00318 m12 = Math::NaN<real>();
-<a name="l00319"></a>00319 <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
-<a name="l00320"></a>00320 M12 = M21 = Math::NaN<real>();
-<a name="l00321"></a>00321 <span class="keywordflow">if</span> (outmask & AREA)
-<a name="l00322"></a>00322 S12 = Math::NaN<real>();
-<a name="l00323"></a>00323 <span class="keywordflow">return</span> Math::NaN<real>();
-<a name="l00324"></a>00324 }
-<a name="l00325"></a>00325
-<a name="l00326"></a>00326 {
-<a name="l00327"></a>00327 real dummy;
-<a name="l00328"></a>00328 Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
-<a name="l00329"></a>00329 cbet1, cbet2, s12x, m12x, dummy,
-<a name="l00330"></a>00330 (outmask & GEODESICSCALE) != 0U, M12, M21, C1a, C2a);
-<a name="l00331"></a>00331 }
-<a name="l00332"></a>00332 m12x *= _a;
-<a name="l00333"></a>00333 s12x *= _b;
-<a name="l00334"></a>00334 a12 = sig12 / Math::degree<real>();
-<a name="l00335"></a>00335 omg12 = lam12 - omg12;
-<a name="l00336"></a>00336 }
-<a name="l00337"></a>00337 }
-<a name="l00338"></a>00338
-<a name="l00339"></a>00339 <span class="keywordflow">if</span> (outmask & DISTANCE)
-<a name="l00340"></a>00340 s12 = 0 + s12x; <span class="comment">// Convert -0 to 0</span>
-<a name="l00341"></a>00341
-<a name="l00342"></a>00342 <span class="keywordflow">if</span> (outmask & REDUCEDLENGTH)
-<a name="l00343"></a>00343 m12 = 0 + m12x; <span class="comment">// Convert -0 to 0</span>
-<a name="l00344"></a>00344
-<a name="l00345"></a>00345 <span class="keywordflow">if</span> (outmask & AREA) {
-<a name="l00346"></a>00346 real
-<a name="l00347"></a>00347 <span class="comment">// From Lambda12: sin(alp1) * cos(bet1) = sin(alp0)</span>
-<a name="l00348"></a>00348 salp0 = salp1 * cbet1,
-<a name="l00349"></a>00349 calp0 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(calp1, salp1 * sbet1); <span class="comment">// calp0 > 0</span>
-<a name="l00350"></a>00350 real alp12;
-<a name="l00351"></a>00351 <span class="keywordflow">if</span> (calp0 != 0 && salp0 != 0) {
-<a name="l00352"></a>00352 real
-<a name="l00353"></a>00353 <span class="comment">// From Lambda12: tan(bet) = tan(sig) * cos(alp)</span>
-<a name="l00354"></a>00354 ssig1 = sbet1, csig1 = calp1 * cbet1,
-<a name="l00355"></a>00355 ssig2 = sbet2, csig2 = calp2 * cbet2,
-<a name="l00356"></a>00356 k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(calp0) * _ep2,
-<a name="l00357"></a>00357 <span class="comment">// Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0).</span>
-<a name="l00358"></a>00358 A4 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_a) * calp0 * salp0 * _e2;
-<a name="l00359"></a>00359 SinCosNorm(ssig1, csig1);
-<a name="l00360"></a>00360 SinCosNorm(ssig2, csig2);
-<a name="l00361"></a>00361 real C4a[nC4_];
-<a name="l00362"></a>00362 C4f(k2, C4a);
-<a name="l00363"></a>00363 real
-<a name="l00364"></a>00364 B41 = SinCosSeries(<span class="keyword">false</span>, ssig1, csig1, C4a, nC4_),
-<a name="l00365"></a>00365 B42 = SinCosSeries(<span class="keyword">false</span>, ssig2, csig2, C4a, nC4_);
-<a name="l00366"></a>00366 S12 = A4 * (B42 - B41);
-<a name="l00367"></a>00367 } <span class="keywordflow">else</span>
-<a name="l00368"></a>00368 <span class="comment">// Avoid problems with indeterminate sig1, sig2 on equator</span>
-<a name="l00369"></a>00369 S12 = 0;
-<a name="l00370"></a>00370
-<a name="l00371"></a>00371 <span class="keywordflow">if</span> (!meridian &&
-<a name="l00372"></a>00372 omg12 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * Math::pi<real>() && <span class="comment">// Long difference too big</span>
-<a name="l00373"></a>00373 sbet2 - sbet1 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1.75)) { <span class="comment">// Lat difference too big</span>
-<a name="l00374"></a>00374 <span class="comment">// Use tan(Gamma/2) = tan(omg12/2)</span>
-<a name="l00375"></a>00375 <span class="comment">// * (tan(bet1/2)+tan(bet2/2))/(1+tan(bet1/2)*tan(bet2/2))</span>
-<a name="l00376"></a>00376 <span class="comment">// with tan(x/2) = sin(x)/(1+cos(x))</span>
-<a name="l00377"></a>00377 real
-<a name="l00378"></a>00378 somg12 = sin(omg12), domg12 = 1 + cos(omg12),
-<a name="l00379"></a>00379 dbet1 = 1 + cbet1, dbet2 = 1 + cbet2;
-<a name="l00380"></a>00380 alp12 = 2 * atan2( somg12 * ( sbet1 * dbet2 + sbet2 * dbet1 ),
-<a name="l00381"></a>00381 domg12 * ( sbet1 * sbet2 + dbet1 * dbet2 ) );
-<a name="l00382"></a>00382 } <span class="keywordflow">else</span> {
-<a name="l00383"></a>00383 <span class="comment">// alp12 = alp2 - alp1, used in atan2 so no need to normalize</span>
-<a name="l00384"></a>00384 real
-<a name="l00385"></a>00385 salp12 = salp2 * calp1 - calp2 * salp1,
-<a name="l00386"></a>00386 calp12 = calp2 * calp1 + salp2 * salp1;
-<a name="l00387"></a>00387 <span class="comment">// The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz</span>
-<a name="l00388"></a>00388 <span class="comment">// salp12 = -0 and alp12 = -180. However this depends on the sign</span>
-<a name="l00389"></a>00389 <span class="comment">// being attached to 0 correctly. The following ensures the correct</span>
-<a name="l00390"></a>00390 <span class="comment">// behavior.</span>
-<a name="l00391"></a>00391 <span class="keywordflow">if</span> (salp12 == 0 && calp12 < 0) {
-<a name="l00392"></a>00392 salp12 = tiny_ * calp1;
-<a name="l00393"></a>00393 calp12 = -1;
-<a name="l00394"></a>00394 }
-<a name="l00395"></a>00395 alp12 = atan2(salp12, calp12);
-<a name="l00396"></a>00396 }
-<a name="l00397"></a>00397 S12 += _c2 * alp12;
-<a name="l00398"></a>00398 S12 *= swapp * lonsign * latsign;
-<a name="l00399"></a>00399 <span class="comment">// Convert -0 to 0</span>
-<a name="l00400"></a>00400 S12 += 0;
-<a name="l00401"></a>00401 }
-<a name="l00402"></a>00402
-<a name="l00403"></a>00403 <span class="comment">// Convert calp, salp to azimuth accounting for lonsign, swapp, latsign.</span>
-<a name="l00404"></a>00404 <span class="keywordflow">if</span> (swapp < 0) {
-<a name="l00405"></a>00405 swap(salp1, salp2);
-<a name="l00406"></a>00406 swap(calp1, calp2);
-<a name="l00407"></a>00407 <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
-<a name="l00408"></a>00408 swap(M12, M21);
-<a name="l00409"></a>00409 }
-<a name="l00410"></a>00410
-<a name="l00411"></a>00411 salp1 *= swapp * lonsign; calp1 *= swapp * latsign;
-<a name="l00412"></a>00412 salp2 *= swapp * lonsign; calp2 *= swapp * latsign;
-<a name="l00413"></a>00413
-<a name="l00414"></a>00414 <span class="keywordflow">if</span> (outmask & AZIMUTH) {
-<a name="l00415"></a>00415 <span class="comment">// minus signs give range [-180, 180). 0- converts -0 to +0.</span>
-<a name="l00416"></a>00416 azi1 = 0 - atan2(-salp1, calp1) / Math::degree<real>();
-<a name="l00417"></a>00417 azi2 = 0 - atan2(-salp2, calp2) / Math::degree<real>();
-<a name="l00418"></a>00418 }
-<a name="l00419"></a>00419
-<a name="l00420"></a>00420 <span class="comment">// Returned value in [0, 180]</span>
-<a name="l00421"></a>00421 <span class="keywordflow">return</span> a12;
-<a name="l00422"></a>00422 }
-<a name="l00423"></a>00423
-<a name="l00424"></a>00424 <span class="keywordtype">void</span> Geodesic::Lengths(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sig12,
-<a name="l00425"></a>00425 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig2,
-<a name="l00426"></a>00426 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00427"></a>00427 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12b, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m0,
-<a name="l00428"></a>00428 <span class="keywordtype">bool</span> scalep, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
-<a name="l00429"></a>00429 <span class="comment">// Scratch areas of the right size</span>
-<a name="l00430"></a>00430 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00431"></a>00431 <span class="comment">// Return m12a = (reduced length)/_a; also calculate s12b = distance/_b,</span>
-<a name="l00432"></a>00432 <span class="comment">// and m0 = coefficient of secular term in expression for reduced length.</span>
-<a name="l00433"></a>00433 C1f(eps, C1a);
-<a name="l00434"></a>00434 C2f(eps, C2a);
-<a name="l00435"></a>00435 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00436"></a>00436 A1m1 = A1m1f(eps),
-<a name="l00437"></a>00437 AB1 = (1 + A1m1) * (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C1a, nC1_) -
-<a name="l00438"></a>00438 SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C1a, nC1_)),
-<a name="l00439"></a>00439 A2m1 = A2m1f(eps),
-<a name="l00440"></a>00440 AB2 = (1 + A2m1) * (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C2a, nC2_) -
-<a name="l00441"></a>00441 SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C2a, nC2_)),
-<a name="l00442"></a>00442 cbet1sq = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1),
-<a name="l00443"></a>00443 cbet2sq = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet2),
-<a name="l00444"></a>00444 w1 = sqrt(1 - _e2 * cbet1sq),
-<a name="l00445"></a>00445 w2 = sqrt(1 - _e2 * cbet2sq),
-<a name="l00446"></a>00446 <span class="comment">// Make sure it's OK to have repeated dummy arguments</span>
-<a name="l00447"></a>00447 m0x = A1m1 - A2m1,
-<a name="l00448"></a>00448 J12 = m0x * sig12 + (AB1 - AB2);
-<a name="l00449"></a>00449 m0 = m0x;
-<a name="l00450"></a>00450 <span class="comment">// Missing a factor of _a.</span>
-<a name="l00451"></a>00451 <span class="comment">// Add parens around (csig1 * ssig2) and (ssig1 * csig2) to ensure accurate</span>
-<a name="l00452"></a>00452 <span class="comment">// cancellation in the case of coincident points.</span>
-<a name="l00453"></a>00453 m12a = (w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
-<a name="l00454"></a>00454 - _f1 * csig1 * csig2 * J12;
-<a name="l00455"></a>00455 <span class="comment">// Missing a factor of _b</span>
-<a name="l00456"></a>00456 s12b = (1 + A1m1) * sig12 + AB1;
-<a name="l00457"></a>00457 <span class="keywordflow">if</span> (scalep) {
-<a name="l00458"></a>00458 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig12 = csig1 * csig2 + ssig1 * ssig2;
-<a name="l00459"></a>00459 J12 *= _f1;
-<a name="l00460"></a>00460 M12 = csig12 + (_e2 * (cbet1sq - cbet2sq) * ssig2 / (w1 + w2)
-<a name="l00461"></a>00461 - csig2 * J12) * ssig1 / w1;
-<a name="l00462"></a>00462 M21 = csig12 - (_e2 * (cbet1sq - cbet2sq) * ssig1 / (w1 + w2)
-<a name="l00463"></a>00463 - csig1 * J12) * ssig2 / w2;
-<a name="l00464"></a>00464 }
-<a name="l00465"></a>00465 }
-<a name="l00466"></a>00466
-<a name="l00467"></a>00467 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::Astroid(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
-<a name="l00468"></a>00468 <span class="comment">// Solve k^4+2*k^3-(x^2+y^2-1)*k^2-2*y^2*k-y^2 = 0 for positive root k.</span>
-<a name="l00469"></a>00469 <span class="comment">// This solution is adapted from Geocentric::Reverse.</span>
-<a name="l00470"></a>00470 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k;
-<a name="l00471"></a>00471 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00472"></a>00472 p = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(x),
-<a name="l00473"></a>00473 q = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(y),
-<a name="l00474"></a>00474 r = (p + q - 1) / 6;
-<a name="l00475"></a>00475 <span class="keywordflow">if</span> ( !(q == 0 && r <= 0) ) {
-<a name="l00476"></a>00476 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00477"></a>00477 <span class="comment">// Avoid possible division by zero when r = 0 by multiplying equations</span>
-<a name="l00478"></a>00478 <span class="comment">// for s and t by r^3 and r, resp.</span>
-<a name="l00479"></a>00479 S = p * q / 4, <span class="comment">// S = r^3 * s</span>
-<a name="l00480"></a>00480 r2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(r),
-<a name="l00481"></a>00481 r3 = r * r2,
-<a name="l00482"></a>00482 <span class="comment">// The discrimant of the quadratic equation for T3. This is zero on</span>
-<a name="l00483"></a>00483 <span class="comment">// the evolute curve p^(1/3)+q^(1/3) = 1</span>
-<a name="l00484"></a>00484 disc = S * (S + 2 * r3);
-<a name="l00485"></a>00485 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u = r;
-<a name="l00486"></a>00486 <span class="keywordflow">if</span> (disc >= 0) {
-<a name="l00487"></a>00487 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T3 = S + r3;
-<a name="l00488"></a>00488 <span class="comment">// Pick the sign on the sqrt to maximize abs(T3). This minimizes loss</span>
-<a name="l00489"></a>00489 <span class="comment">// of precision due to cancellation. The result is unchanged because</span>
-<a name="l00490"></a>00490 <span class="comment">// of the way the T is used in definition of u.</span>
-<a name="l00491"></a>00491 T3 += T3 < 0 ? -sqrt(disc) : sqrt(disc); <span class="comment">// T3 = (r * t)^3</span>
-<a name="l00492"></a>00492 <span class="comment">// N.B. cbrt always returns the real root. cbrt(-8) = -2.</span>
-<a name="l00493"></a>00493 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T = <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">Math::cbrt</a>(T3); <span class="comment">// T = r * t</span>
-<a name="l00494"></a>00494 <span class="comment">// T can be zero; but then r2 / T -> 0.</span>
-<a name="l00495"></a>00495 u += T + (T != 0 ? r2 / T : 0);
-<a name="l00496"></a>00496 } <span class="keywordflow">else</span> {
-<a name="l00497"></a>00497 <span class="comment">// T is complex, but the way u is defined the result is real.</span>
-<a name="l00498"></a>00498 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ang = atan2(sqrt(-disc), -(S + r3));
-<a name="l00499"></a>00499 <span class="comment">// There are three possible cube roots. We choose the root which</span>
-<a name="l00500"></a>00500 <span class="comment">// avoids cancellation. Note that disc < 0 implies that r < 0.</span>
-<a name="l00501"></a>00501 u += 2 * r * cos(ang / 3);
-<a name="l00502"></a>00502 }
-<a name="l00503"></a>00503 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00504"></a>00504 v = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(u) + q), <span class="comment">// guaranteed positive</span>
-<a name="l00505"></a>00505 <span class="comment">// Avoid loss of accuracy when u < 0.</span>
-<a name="l00506"></a>00506 uv = u < 0 ? q / (v - u) : u + v, <span class="comment">// u+v, guaranteed positive</span>
-<a name="l00507"></a>00507 w = (uv - q) / (2 * v); <span class="comment">// positive?</span>
-<a name="l00508"></a>00508 <span class="comment">// Rearrange expression for k to avoid loss of accuracy due to</span>
-<a name="l00509"></a>00509 <span class="comment">// subtraction. Division by 0 not possible because uv > 0, w >= 0.</span>
-<a name="l00510"></a>00510 k = uv / (sqrt(uv + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(w)) + w); <span class="comment">// guaranteed positive</span>
-<a name="l00511"></a>00511 } <span class="keywordflow">else</span> { <span class="comment">// q == 0 && r <= 0</span>
-<a name="l00512"></a>00512 <span class="comment">// y = 0 with |x| <= 1. Handle this case directly.</span>
-<a name="l00513"></a>00513 <span class="comment">// for y small, positive root is k = abs(y)/sqrt(1-x^2)</span>
-<a name="l00514"></a>00514 k = 0;
-<a name="l00515"></a>00515 }
-<a name="l00516"></a>00516 <span class="keywordflow">return</span> k;
-<a name="l00517"></a>00517 }
-<a name="l00518"></a>00518
-<a name="l00519"></a>00519 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::InverseStart(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1,
-<a name="l00520"></a>00520 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00521"></a>00521 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam12,
-<a name="l00522"></a>00522 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp1,
-<a name="l00523"></a>00523 <span class="comment">// Only updated if return val >= 0</span>
-<a name="l00524"></a>00524 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
-<a name="l00525"></a>00525 <span class="comment">// Scratch areas of the right size</span>
-<a name="l00526"></a>00526 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00527"></a>00527 <span class="comment">// Return a starting point for Newton's method in salp1 and calp1 (function</span>
-<a name="l00528"></a>00528 <span class="comment">// value is -1). If Newton's method doesn't need to be used, return also</span>
-<a name="l00529"></a>00529 <span class="comment">// salp2 and calp2 and function value is sig12.</span>
-<a name="l00530"></a>00530 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00531"></a>00531 sig12 = -1, <span class="comment">// Return value</span>
-<a name="l00532"></a>00532 <span class="comment">// bet12 = bet2 - bet1 in [0, pi); bet12a = bet2 + bet1 in (-pi, 0]</span>
-<a name="l00533"></a>00533 sbet12 = sbet2 * cbet1 - cbet2 * sbet1,
-<a name="l00534"></a>00534 cbet12 = cbet2 * cbet1 + sbet2 * sbet1;
-<a name="l00535"></a>00535 <span class="preprocessor">#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6</span>
-<a name="l00536"></a>00536 <span class="preprocessor"></span> <span class="comment">// Volatile declaration needed to fix inverse cases</span>
-<a name="l00537"></a>00537 <span class="comment">// 88.202499451857 0 -88.202499451857 179.981022032992859592</span>
-<a name="l00538"></a>00538 <span class="comment">// 89.262080389218 0 -89.262080389218 179.992207982775375662</span>
-<a name="l00539"></a>00539 <span class="comment">// 89.333123580033 0 -89.333123580032997687 179.99295812360148422</span>
-<a name="l00540"></a>00540 <span class="comment">// which otherwise fail with g++ 4.4.4 x86 -O3 (Linux)</span>
-<a name="l00541"></a>00541 <span class="comment">// and g++ 4.4.0 (mingw).</span>
-<a name="l00542"></a>00542 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet12a;
-<a name="l00543"></a>00543 {
-<a name="l00544"></a>00544 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xx1 = sbet2 * cbet1;
-<a name="l00545"></a>00545 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xx2 = cbet2 * sbet1;
-<a name="l00546"></a>00546 sbet12a = xx1 + xx2;
-<a name="l00547"></a>00547 }
-<a name="l00548"></a>00548 <span class="preprocessor">#else</span>
-<a name="l00549"></a>00549 <span class="preprocessor"></span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet12a = sbet2 * cbet1 + cbet2 * sbet1;
-<a name="l00550"></a>00550 <span class="preprocessor">#endif</span>
-<a name="l00551"></a>00551 <span class="preprocessor"></span> <span class="keywordtype">bool</span> shortline = cbet12 >= 0 && sbet12 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5) &&
-<a name="l00552"></a>00552 lam12 <= Math::pi<real>() / 6;
-<a name="l00553"></a>00553 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00554"></a>00554 omg12 = shortline ? lam12 / sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1)) : lam12,
-<a name="l00555"></a>00555 somg12 = sin(omg12), comg12 = cos(omg12);
-<a name="l00556"></a>00556
-<a name="l00557"></a>00557 salp1 = cbet2 * somg12;
-<a name="l00558"></a>00558 calp1 = comg12 >= 0 ?
-<a name="l00559"></a>00559 sbet12 + cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(somg12) / (1 + comg12) :
-<a name="l00560"></a>00560 sbet12a - cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(somg12) / (1 - comg12);
-<a name="l00561"></a>00561
-<a name="l00562"></a>00562 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00563"></a>00563 ssig12 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(salp1, calp1),
-<a name="l00564"></a>00564 csig12 = sbet1 * sbet2 + cbet1 * cbet2 * comg12;
-<a name="l00565"></a>00565
-<a name="l00566"></a>00566 <span class="keywordflow">if</span> (shortline && ssig12 < _etol2) {
-<a name="l00567"></a>00567 <span class="comment">// really short lines</span>
-<a name="l00568"></a>00568 salp2 = cbet1 * somg12;
-<a name="l00569"></a>00569 calp2 = sbet12 - cbet1 * sbet2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(somg12) / (1 + comg12);
-<a name="l00570"></a>00570 SinCosNorm(salp2, calp2);
-<a name="l00571"></a>00571 <span class="comment">// Set return value</span>
-<a name="l00572"></a>00572 sig12 = atan2(ssig12, csig12);
-<a name="l00573"></a>00573 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (csig12 >= 0 ||
-<a name="l00574"></a>00574 ssig12 >= 3 * abs(_f) * Math::pi<real>() * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1)) {
-<a name="l00575"></a>00575 <span class="comment">// Nothing to do, zeroth order spherical approximation is OK</span>
-<a name="l00576"></a>00576 } <span class="keywordflow">else</span> {
-<a name="l00577"></a>00577 <span class="comment">// Scale lam12 and bet2 to x, y coordinate system where antipodal point</span>
-<a name="l00578"></a>00578 <span class="comment">// is at origin and singular point is at y = 0, x = -1.</span>
-<a name="l00579"></a>00579 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, lamscale, betscale;
-<a name="l00580"></a>00580 <span class="comment">// Volatile declaration needed to fix inverse case</span>
-<a name="l00581"></a>00581 <span class="comment">// 56.320923501171 0 -56.320923501171 179.664747671772880215</span>
-<a name="l00582"></a>00582 <span class="comment">// which otherwise fails with g++ 4.4.4 x86 -O3</span>
-<a name="l00583"></a>00583 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x;
-<a name="l00584"></a>00584 <span class="keywordflow">if</span> (_f >= 0) { <span class="comment">// In fact f == 0 does not get here</span>
-<a name="l00585"></a>00585 <span class="comment">// x = dlong, y = dlat</span>
-<a name="l00586"></a>00586 {
-<a name="l00587"></a>00587 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00588"></a>00588 k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sbet1) * _ep2,
-<a name="l00589"></a>00589 eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2);
-<a name="l00590"></a>00590 lamscale = _f * cbet1 * A3f(eps) * Math::pi<real>();
-<a name="l00591"></a>00591 }
-<a name="l00592"></a>00592 betscale = lamscale * cbet1;
-<a name="l00593"></a>00593
-<a name="l00594"></a>00594 x = (lam12 - Math::pi<real>()) / lamscale;
-<a name="l00595"></a>00595 y = sbet12a / betscale;
-<a name="l00596"></a>00596 } <span class="keywordflow">else</span> { <span class="comment">// _f < 0</span>
-<a name="l00597"></a>00597 <span class="comment">// x = dlat, y = dlong</span>
-<a name="l00598"></a>00598 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00599"></a>00599 cbet12a = cbet2 * cbet1 - sbet2 * sbet1,
-<a name="l00600"></a>00600 bet12a = atan2(sbet12a, cbet12a);
-<a name="l00601"></a>00601 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> m12a, m0, dummy;
-<a name="l00602"></a>00602 <span class="comment">// In the case of lon12 = 180, this repeats a calculation made in</span>
-<a name="l00603"></a>00603 <span class="comment">// Inverse.</span>
-<a name="l00604"></a>00604 Lengths(_n, Math::pi<real>() + bet12a, sbet1, -cbet1, sbet2, cbet2,
-<a name="l00605"></a>00605 cbet1, cbet2, dummy, m12a, m0, <span class="keyword">false</span>,
-<a name="l00606"></a>00606 dummy, dummy, C1a, C2a);
-<a name="l00607"></a>00607 x = -1 + m12a/(_f1 * cbet1 * cbet2 * m0 * Math::pi<real>());
-<a name="l00608"></a>00608 betscale = x < -<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) ? sbet12a / x :
-<a name="l00609"></a>00609 -_f * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1) * Math::pi<real>();
-<a name="l00610"></a>00610 lamscale = betscale / cbet1;
-<a name="l00611"></a>00611 y = (lam12 - Math::pi<real>()) / lamscale;
-<a name="l00612"></a>00612 }
-<a name="l00613"></a>00613
-<a name="l00614"></a>00614 <span class="keywordflow">if</span> (y > -tol1_ && x > -1 - xthresh_) {
-<a name="l00615"></a>00615 <span class="comment">// strip near cut</span>
-<a name="l00616"></a>00616 <span class="keywordflow">if</span> (_f >= 0) {
-<a name="l00617"></a>00617 salp1 = min(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), -<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x)); calp1 = - sqrt(1 - <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(salp1));
-<a name="l00618"></a>00618 } <span class="keywordflow">else</span> {
-<a name="l00619"></a>00619 calp1 = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x > -tol1_ ? 0 : -1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x));
-<a name="l00620"></a>00620 salp1 = sqrt(1 - <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(calp1));
-<a name="l00621"></a>00621 }
-<a name="l00622"></a>00622 } <span class="keywordflow">else</span> {
-<a name="l00623"></a>00623 <span class="comment">// Estimate alp1, by solving the astroid problem.</span>
-<a name="l00624"></a>00624 <span class="comment">//</span>
-<a name="l00625"></a>00625 <span class="comment">// Could estimate alpha1 = theta + pi/2, directly, i.e.,</span>
-<a name="l00626"></a>00626 <span class="comment">// calp1 = y/k; salp1 = -x/(1+k); for _f >= 0</span>
-<a name="l00627"></a>00627 <span class="comment">// calp1 = x/(1+k); salp1 = -y/k; for _f < 0 (need to check)</span>
-<a name="l00628"></a>00628 <span class="comment">//</span>
-<a name="l00629"></a>00629 <span class="comment">// However, it's better to estimate omg12 from astroid and use</span>
-<a name="l00630"></a>00630 <span class="comment">// spherical formula to compute alp1. This reduces the mean number of</span>
-<a name="l00631"></a>00631 <span class="comment">// Newton iterations for astroid cases from 2.24 (min 0, max 6) to 2.12</span>
-<a name="l00632"></a>00632 <span class="comment">// (min 0 max 5). The changes in the number of iterations are as</span>
-<a name="l00633"></a>00633 <span class="comment">// follows:</span>
-<a name="l00634"></a>00634 <span class="comment">//</span>
-<a name="l00635"></a>00635 <span class="comment">// change percent</span>
-<a name="l00636"></a>00636 <span class="comment">// 1 5</span>
-<a name="l00637"></a>00637 <span class="comment">// 0 78</span>
-<a name="l00638"></a>00638 <span class="comment">// -1 16</span>
-<a name="l00639"></a>00639 <span class="comment">// -2 0.6</span>
-<a name="l00640"></a>00640 <span class="comment">// -3 0.04</span>
-<a name="l00641"></a>00641 <span class="comment">// -4 0.002</span>
-<a name="l00642"></a>00642 <span class="comment">//</span>
-<a name="l00643"></a>00643 <span class="comment">// The histogram of iterations is (m = number of iterations estimating</span>
-<a name="l00644"></a>00644 <span class="comment">// alp1 directly, n = number of iterations estimating via omg12, total</span>
-<a name="l00645"></a>00645 <span class="comment">// number of trials = 148605):</span>
-<a name="l00646"></a>00646 <span class="comment">//</span>
-<a name="l00647"></a>00647 <span class="comment">// iter m n</span>
-<a name="l00648"></a>00648 <span class="comment">// 0 148 186</span>
-<a name="l00649"></a>00649 <span class="comment">// 1 13046 13845</span>
-<a name="l00650"></a>00650 <span class="comment">// 2 93315 102225</span>
-<a name="l00651"></a>00651 <span class="comment">// 3 36189 32341</span>
-<a name="l00652"></a>00652 <span class="comment">// 4 5396 7</span>
-<a name="l00653"></a>00653 <span class="comment">// 5 455 1</span>
-<a name="l00654"></a>00654 <span class="comment">// 6 56 0</span>
-<a name="l00655"></a>00655 <span class="comment">//</span>
-<a name="l00656"></a>00656 <span class="comment">// Because omg12 is near pi, estimate work with omg12a = pi - omg12</span>
-<a name="l00657"></a>00657 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = Astroid(x, y);
-<a name="l00658"></a>00658 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00659"></a>00659 omg12a = lamscale * ( _f >= 0 ? -x * k/(1 + k) : -y * (1 + k)/k ),
-<a name="l00660"></a>00660 somg12 = sin(omg12a), comg12 = -cos(omg12a);
-<a name="l00661"></a>00661 <span class="comment">// Update spherical estimate of alp1 using omg12 instead of lam12</span>
-<a name="l00662"></a>00662 salp1 = cbet2 * somg12;
-<a name="l00663"></a>00663 calp1 = sbet12a - cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(somg12) / (1 - comg12);
-<a name="l00664"></a>00664 }
-<a name="l00665"></a>00665 }
-<a name="l00666"></a>00666 SinCosNorm(salp1, calp1);
-<a name="l00667"></a>00667 <span class="keywordflow">return</span> sig12;
-<a name="l00668"></a>00668 }
-<a name="l00669"></a>00669
-<a name="l00670"></a>00670 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::Lambda12(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real [...]
-<a name="l00671"></a>00671 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> calp1,
-<a name="l00672"></a>00672 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
-<a name="l00673"></a>00673 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sig12,
-<a name="l00674"></a>00674 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig1,
-<a name="l00675"></a>00675 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig2,
-<a name="l00676"></a>00676 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& domg12,
-<a name="l00677"></a>00677 <span class="keywordtype">bool</span> diffp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dlam12,
-<a name="l00678"></a>00678 <span class="comment">// Scratch areas of the right size</span>
-<a name="l00679"></a>00679 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C3a[]) <span class="keyword">const</span>
-<a name="l00680"></a>00680 <span class="keywordflow">throw</span>() {
-<a name="l00681"></a>00681
-<a name="l00682"></a>00682 <span class="keywordflow">if</span> (sbet1 == 0 && calp1 == 0)
-<a name="l00683"></a>00683 <span class="comment">// Break degeneracy of equatorial line. This case has already been</span>
-<a name="l00684"></a>00684 <span class="comment">// handled.</span>
-<a name="l00685"></a>00685 calp1 = -tiny_;
-<a name="l00686"></a>00686
-<a name="l00687"></a>00687 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00688"></a>00688 <span class="comment">// sin(alp1) * cos(bet1) = sin(alp0)</span>
-<a name="l00689"></a>00689 salp0 = salp1 * cbet1,
-<a name="l00690"></a>00690 calp0 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(calp1, salp1 * sbet1); <span class="comment">// calp0 > 0</span>
-<a name="l00691"></a>00691
-<a name="l00692"></a>00692 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> somg1, comg1, somg2, comg2, omg12, lam12;
-<a name="l00693"></a>00693 <span class="comment">// tan(bet1) = tan(sig1) * cos(alp1)</span>
-<a name="l00694"></a>00694 <span class="comment">// tan(omg1) = sin(alp0) * tan(sig1) = tan(omg1)=tan(alp1)*sin(bet1)</span>
-<a name="l00695"></a>00695 ssig1 = sbet1; somg1 = salp0 * sbet1;
-<a name="l00696"></a>00696 csig1 = comg1 = calp1 * cbet1;
-<a name="l00697"></a>00697 SinCosNorm(ssig1, csig1);
-<a name="l00698"></a>00698 <span class="comment">// SinCosNorm(somg1, comg1); -- don't need to normalize!</span>
-<a name="l00699"></a>00699
-<a name="l00700"></a>00700 <span class="comment">// Enforce symmetries in the case abs(bet2) = -bet1. Need to be careful</span>
-<a name="l00701"></a>00701 <span class="comment">// about this case, since this can yield singularities in the Newton</span>
-<a name="l00702"></a>00702 <span class="comment">// iteration.</span>
-<a name="l00703"></a>00703 <span class="comment">// sin(alp2) * cos(bet2) = sin(alp0)</span>
-<a name="l00704"></a>00704 salp2 = cbet2 != cbet1 ? salp0 / cbet2 : salp1;
-<a name="l00705"></a>00705 <span class="comment">// calp2 = sqrt(1 - sq(salp2))</span>
-<a name="l00706"></a>00706 <span class="comment">// = sqrt(sq(calp0) - sq(sbet2)) / cbet2</span>
-<a name="l00707"></a>00707 <span class="comment">// and subst for calp0 and rearrange to give (choose positive sqrt</span>
-<a name="l00708"></a>00708 <span class="comment">// to give alp2 in [0, pi/2]).</span>
-<a name="l00709"></a>00709 calp2 = cbet2 != cbet1 || abs(sbet2) != -sbet1 ?
-<a name="l00710"></a>00710 sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(calp1 * cbet1) +
-<a name="l00711"></a>00711 (cbet1 < -sbet1 ?
-<a name="l00712"></a>00712 (cbet2 - cbet1) * (cbet1 + cbet2) :
-<a name="l00713"></a>00713 (sbet1 - sbet2) * (sbet1 + sbet2))) / cbet2 :
-<a name="l00714"></a>00714 abs(calp1);
-<a name="l00715"></a>00715 <span class="comment">// tan(bet2) = tan(sig2) * cos(alp2)</span>
-<a name="l00716"></a>00716 <span class="comment">// tan(omg2) = sin(alp0) * tan(sig2).</span>
-<a name="l00717"></a>00717 ssig2 = sbet2; somg2 = salp0 * sbet2;
-<a name="l00718"></a>00718 csig2 = comg2 = calp2 * cbet2;
-<a name="l00719"></a>00719 SinCosNorm(ssig2, csig2);
-<a name="l00720"></a>00720 <span class="comment">// SinCosNorm(somg2, comg2); -- don't need to normalize!</span>
-<a name="l00721"></a>00721
-<a name="l00722"></a>00722 <span class="comment">// sig12 = sig2 - sig1, limit to [0, pi]</span>
-<a name="l00723"></a>00723 sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
-<a name="l00724"></a>00724 csig1 * csig2 + ssig1 * ssig2);
-<a name="l00725"></a>00725
-<a name="l00726"></a>00726 <span class="comment">// omg12 = omg2 - omg1, limit to [0, pi]</span>
-<a name="l00727"></a>00727 omg12 = atan2(max(comg1 * somg2 - somg1 * comg2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
-<a name="l00728"></a>00728 comg1 * comg2 + somg1 * somg2);
-<a name="l00729"></a>00729 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> B312, h0;
-<a name="l00730"></a>00730 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(calp0) * _ep2;
-<a name="l00731"></a>00731 eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2);
-<a name="l00732"></a>00732 C3f(eps, C3a);
-<a name="l00733"></a>00733 B312 = (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C3a, nC3_-1) -
-<a name="l00734"></a>00734 SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C3a, nC3_-1));
-<a name="l00735"></a>00735 h0 = -_f * A3f(eps);
-<a name="l00736"></a>00736 domg12 = salp0 * h0 * (sig12 + B312);
-<a name="l00737"></a>00737 lam12 = omg12 + domg12;
-<a name="l00738"></a>00738
-<a name="l00739"></a>00739 <span class="keywordflow">if</span> (diffp) {
-<a name="l00740"></a>00740 <span class="keywordflow">if</span> (calp2 == 0)
-<a name="l00741"></a>00741 dlam12 = - 2 * sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cbet1)) / sbet1;
-<a name="l00742"></a>00742 <span class="keywordflow">else</span> {
-<a name="l00743"></a>00743 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dummy;
-<a name="l00744"></a>00744 Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
-<a name="l00745"></a>00745 cbet1, cbet2, dummy, dlam12, dummy,
-<a name="l00746"></a>00746 <span class="keyword">false</span>, dummy, dummy, C1a, C2a);
-<a name="l00747"></a>00747 dlam12 /= calp2 * cbet2;
-<a name="l00748"></a>00748 }
-<a name="l00749"></a>00749 }
-<a name="l00750"></a>00750
-<a name="l00751"></a>00751 <span class="keywordflow">return</span> lam12;
-<a name="l00752"></a>00752 }
+<a name="l00066"></a>00066 <span class="comment">// The sig12 threshold for "really short"</span>
+<a name="l00067"></a>00067 , _etol2(10 * tol2_ / max(real(0.1), sqrt(abs(_e2))))
+<a name="l00068"></a>00068 {
+<a name="l00069"></a>00069 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00070"></a>00070 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
+<a name="l00071"></a>00071 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_b) && _b > 0))
+<a name="l00072"></a>00072 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
+<a name="l00073"></a>00073 A3coeff();
+<a name="l00074"></a>00074 C3coeff();
+<a name="l00075"></a>00075 C4coeff();
+<a name="l00076"></a>00076 }
+<a name="l00077"></a>00077
+<a name="l00078"></a>00078 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>(Constants::WGS84_a<real>(),
+<a name="l00079"></a>00079 Constants::WGS84_f<real>());
+<a name="l00080"></a>00080
+<a name="l00081"></a>00081 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::SinCosSeries(<span class="keywordtype">bool</span> sinp,
+<a name="l00082"></a>00082 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cosx,
+<a name="l00083"></a>00083 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[], <span class="keywordtype">int</span> n) <span class="keywordflow">throw</span>() {
+<a name="l00084"></a>00084 <span class="comment">// Evaluate</span>
+<a name="l00085"></a>00085 <span class="comment">// y = sinp ? sum(c[i] * sin( 2*i * x), i, 1, n) :</span>
+<a name="l00086"></a>00086 <span class="comment">// sum(c[i] * cos((2*i+1) * x), i, 0, n-1) :</span>
+<a name="l00087"></a>00087 <span class="comment">// using Clenshaw summation. N.B. c[0] is unused for sin series</span>
+<a name="l00088"></a>00088 <span class="comment">// Approx operation count = (n + 5) mult and (2 * n + 2) add</span>
+<a name="l00089"></a>00089 c += (n + sinp); <span class="comment">// Point to one beyond last element</span>
+<a name="l00090"></a>00090 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00091"></a>00091 ar = 2 * (cosx - sinx) * (cosx + sinx), <span class="comment">// 2 * cos(2 * x)</span>
+<a name="l00092"></a>00092 y0 = n & 1 ? *--c : 0, y1 = 0; <span class="comment">// accumulators for sum</span>
+<a name="l00093"></a>00093 <span class="comment">// Now n is even</span>
+<a name="l00094"></a>00094 n /= 2;
+<a name="l00095"></a>00095 <span class="keywordflow">while</span> (n--) {
+<a name="l00096"></a>00096 <span class="comment">// Unroll loop x 2, so accumulators return to their original role</span>
+<a name="l00097"></a>00097 y1 = ar * y0 - y1 + *--c;
+<a name="l00098"></a>00098 y0 = ar * y1 - y0 + *--c;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100 <span class="keywordflow">return</span> sinp
+<a name="l00101"></a>00101 ? 2 * sinx * cosx * y0 <span class="comment">// sin(2 * x) * y0</span>
+<a name="l00102"></a>00102 : cosx * (y0 - y1); <span class="comment">// cos(x) * (y0 - y1)</span>
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104
+<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">00105</a> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Geodesic::Line</a>(real lat1, real lon1, real azi1, <span class="keywordtype">unsigned</span> caps)
+<a name="l00106"></a>00106 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00107"></a>00107 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(*<span class="keyword">this</span>, lat1, lon1, azi1, caps);
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109
+<a name="l00110"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#acaef3032846a71fc730e1ea26ea32d20">00110</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geodesic.html#acaef3032846a71fc730e1ea26ea32d20">Geodesic::GenDirect</a>(real lat1, real lon1, real azi1,
+<a name="l00111"></a>00111 <span class="keywordtype">bool</span> arcmode, real s12_a12, <span class="keywordtype">unsigned</span> outmask,
+<a name="l00112"></a>00112 real& lat2, real& lon2, real& azi2,
+<a name="l00113"></a>00113 real& s12, real& m12, real& M12, real& M21,
+<a name="l00114"></a>00114 real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00115"></a>00115 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>(*<span class="keyword">this</span>, lat1, lon1, azi1,
+<a name="l00116"></a>00116 <span class="comment">// Automatically supply DISTANCE_IN if necessary</span>
+<a name="l00117"></a>00117 outmask | (arcmode ? NONE : DISTANCE_IN))
+<a name="l00118"></a>00118 . <span class="comment">// Note the dot!</span>
+<a name="l00119"></a>00119 GenPosition(arcmode, s12_a12, outmask,
+<a name="l00120"></a>00120 lat2, lon2, azi2, s12, m12, M12, M21, S12);
+<a name="l00121"></a>00121 }
+<a name="l00122"></a>00122
+<a name="l00123"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a84a3b9b457dd87b1059045b9d50303fd">00123</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geodesic.html#a84a3b9b457dd87b1059045b9d50303fd">Geodesic::GenInverse</a>(real lat1, real lon1, real lat2, real lon2,
+<a name="l00124"></a>00124 <span class="keywordtype">unsigned</span> outmask,
+<a name="l00125"></a>00125 real& s12, real& azi1, real& azi2,
+<a name="l00126"></a>00126 real& m12, real& M12, real& M21, real& S12)
+<a name="l00127"></a>00127 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00128"></a>00128 outmask &= OUT_ALL;
+<a name="l00129"></a>00129 lon1 = AngNormalize(lon1);
+<a name="l00130"></a>00130 real lon12 = AngNormalize(AngNormalize(lon2) - lon1);
+<a name="l00131"></a>00131 <span class="comment">// If very close to being on the same meridian, then make it so.</span>
+<a name="l00132"></a>00132 <span class="comment">// Not sure this is necessary...</span>
+<a name="l00133"></a>00133 lon12 = AngRound(lon12);
+<a name="l00134"></a>00134 <span class="comment">// Make longitude difference positive.</span>
+<a name="l00135"></a>00135 <span class="keywordtype">int</span> lonsign = lon12 >= 0 ? 1 : -1;
+<a name="l00136"></a>00136 lon12 *= lonsign;
+<a name="l00137"></a>00137 <span class="keywordflow">if</span> (lon12 == 180)
+<a name="l00138"></a>00138 lonsign = 1;
+<a name="l00139"></a>00139 <span class="comment">// If really close to the equator, treat as on equator.</span>
+<a name="l00140"></a>00140 lat1 = AngRound(lat1);
+<a name="l00141"></a>00141 lat2 = AngRound(lat2);
+<a name="l00142"></a>00142 <span class="comment">// Swap points so that point with higher (abs) latitude is point 1</span>
+<a name="l00143"></a>00143 <span class="keywordtype">int</span> swapp = abs(lat1) >= abs(lat2) ? 1 : -1;
+<a name="l00144"></a>00144 <span class="keywordflow">if</span> (swapp < 0) {
+<a name="l00145"></a>00145 lonsign *= -1;
+<a name="l00146"></a>00146 swap(lat1, lat2);
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 <span class="comment">// Make lat1 <= 0</span>
+<a name="l00149"></a>00149 <span class="keywordtype">int</span> latsign = lat1 < 0 ? 1 : -1;
+<a name="l00150"></a>00150 lat1 *= latsign;
+<a name="l00151"></a>00151 lat2 *= latsign;
+<a name="l00152"></a>00152 <span class="comment">// Now we have</span>
+<a name="l00153"></a>00153 <span class="comment">//</span>
+<a name="l00154"></a>00154 <span class="comment">// 0 <= lon12 <= 180</span>
+<a name="l00155"></a>00155 <span class="comment">// -90 <= lat1 <= 0</span>
+<a name="l00156"></a>00156 <span class="comment">// lat1 <= lat2 <= -lat1</span>
+<a name="l00157"></a>00157 <span class="comment">//</span>
+<a name="l00158"></a>00158 <span class="comment">// longsign, swapp, latsign register the transformation to bring the</span>
+<a name="l00159"></a>00159 <span class="comment">// coordinates to this canonical form. In all cases, 1 means no change was</span>
+<a name="l00160"></a>00160 <span class="comment">// made. We make these transformations so that there are few cases to</span>
+<a name="l00161"></a>00161 <span class="comment">// check, e.g., on verifying quadrants in atan2. In addition, this</span>
+<a name="l00162"></a>00162 <span class="comment">// enforces some symmetries in the results returned.</span>
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 real phi, sbet1, cbet1, sbet2, cbet2, s12x, m12x;
+<a name="l00165"></a>00165
+<a name="l00166"></a>00166 phi = lat1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00167"></a>00167 <span class="comment">// Ensure cbet1 = +epsilon at poles</span>
+<a name="l00168"></a>00168 sbet1 = _f1 * sin(phi);
+<a name="l00169"></a>00169 cbet1 = lat1 == -90 ? tiny_ : cos(phi);
+<a name="l00170"></a>00170 SinCosNorm(sbet1, cbet1);
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 phi = lat2 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00173"></a>00173 <span class="comment">// Ensure cbet2 = +epsilon at poles</span>
+<a name="l00174"></a>00174 sbet2 = _f1 * sin(phi);
+<a name="l00175"></a>00175 cbet2 = abs(lat2) == 90 ? tiny_ : cos(phi);
+<a name="l00176"></a>00176 SinCosNorm(sbet2, cbet2);
+<a name="l00177"></a>00177
+<a name="l00178"></a>00178 <span class="comment">// If cbet1 < -sbet1, then cbet2 - cbet1 is a sensitive measure of the</span>
+<a name="l00179"></a>00179 <span class="comment">// |bet1| - |bet2|. Alternatively (cbet1 >= -sbet1), abs(sbet2) + sbet1 is</span>
+<a name="l00180"></a>00180 <span class="comment">// a better measure. This logic is used in assigning calp2 in Lambda12.</span>
+<a name="l00181"></a>00181 <span class="comment">// Sometimes these quantities vanish and in that case we force bet2 = +/-</span>
+<a name="l00182"></a>00182 <span class="comment">// bet1 exactly. An example where is is necessary is the inverse problem</span>
+<a name="l00183"></a>00183 <span class="comment">// 48.522876735459 0 -48.52287673545898293 179.599720456223079643</span>
+<a name="l00184"></a>00184 <span class="comment">// which failed with Visual Studio 10 (Release and Debug)</span>
+<a name="l00185"></a>00185
+<a name="l00186"></a>00186 <span class="keywordflow">if</span> (cbet1 < -sbet1) {
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (cbet2 == cbet1)
+<a name="l00188"></a>00188 sbet2 = sbet2 < 0 ? sbet1 : -sbet1;
+<a name="l00189"></a>00189 } <span class="keywordflow">else</span> {
+<a name="l00190"></a>00190 <span class="keywordflow">if</span> (abs(sbet2) == -sbet1)
+<a name="l00191"></a>00191 cbet2 = cbet1;
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 real
+<a name="l00195"></a>00195 lam12 = lon12 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
+<a name="l00196"></a>00196 slam12 = lon12 == 180 ? 0 : sin(lam12),
+<a name="l00197"></a>00197 clam12 = cos(lam12); <span class="comment">// lon12 == 90 isn't interesting</span>
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 real a12, sig12, calp1, salp1, calp2, salp2;
+<a name="l00200"></a>00200 <span class="comment">// index zero elements of these arrays are unused</span>
+<a name="l00201"></a>00201 real C1a[nC1_ + 1], C2a[nC2_ + 1], C3a[nC3_];
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 <span class="keywordtype">bool</span> meridian = lat1 == -90 || slam12 == 0;
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205 <span class="keywordflow">if</span> (meridian) {
+<a name="l00206"></a>00206
+<a name="l00207"></a>00207 <span class="comment">// Endpoints are on a single full meridian, so the geodesic might lie on</span>
+<a name="l00208"></a>00208 <span class="comment">// a meridian.</span>
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210 calp1 = clam12; salp1 = slam12; <span class="comment">// Head to the target longitude</span>
+<a name="l00211"></a>00211 calp2 = 1; salp2 = 0; <span class="comment">// At the target we're heading north</span>
+<a name="l00212"></a>00212
+<a name="l00213"></a>00213 real
+<a name="l00214"></a>00214 <span class="comment">// tan(bet) = tan(sig) * cos(alp)</span>
+<a name="l00215"></a>00215 ssig1 = sbet1, csig1 = calp1 * cbet1,
+<a name="l00216"></a>00216 ssig2 = sbet2, csig2 = calp2 * cbet2;
+<a name="l00217"></a>00217
+<a name="l00218"></a>00218 <span class="comment">// sig12 = sig2 - sig1</span>
+<a name="l00219"></a>00219 sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
+<a name="l00220"></a>00220 csig1 * csig2 + ssig1 * ssig2);
+<a name="l00221"></a>00221 {
+<a name="l00222"></a>00222 real dummy;
+<a name="l00223"></a>00223 Lengths(_n, sig12, ssig1, csig1, ssig2, csig2,
+<a name="l00224"></a>00224 cbet1, cbet2, s12x, m12x, dummy,
+<a name="l00225"></a>00225 (outmask & GEODESICSCALE) != 0U, M12, M21, C1a, C2a);
+<a name="l00226"></a>00226 }
+<a name="l00227"></a>00227 <span class="comment">// Add the check for sig12 since zero length geodesics might yield m12 <</span>
+<a name="l00228"></a>00228 <span class="comment">// 0. Test case was</span>
+<a name="l00229"></a>00229 <span class="comment">//</span>
+<a name="l00230"></a>00230 <span class="comment">// echo 20.001 0 20.001 0 | Geod -i</span>
+<a name="l00231"></a>00231 <span class="comment">//</span>
+<a name="l00232"></a>00232 <span class="comment">// In fact, we will have sig12 > pi/2 for meridional geodesic which is</span>
+<a name="l00233"></a>00233 <span class="comment">// not a shortest path.</span>
+<a name="l00234"></a>00234 <span class="keywordflow">if</span> (sig12 < 1 || m12x >= 0) {
+<a name="l00235"></a>00235 m12x *= _a;
+<a name="l00236"></a>00236 s12x *= _b;
+<a name="l00237"></a>00237 a12 = sig12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00238"></a>00238 } <span class="keywordflow">else</span>
+<a name="l00239"></a>00239 <span class="comment">// m12 < 0, i.e., prolate and too close to anti-podal</span>
+<a name="l00240"></a>00240 meridian = <span class="keyword">false</span>;
+<a name="l00241"></a>00241 }
+<a name="l00242"></a>00242
+<a name="l00243"></a>00243 real omg12;
+<a name="l00244"></a>00244 <span class="keywordflow">if</span> (!meridian &&
+<a name="l00245"></a>00245 sbet1 == 0 && <span class="comment">// and sbet2 == 0</span>
+<a name="l00246"></a>00246 <span class="comment">// Mimic the way Lambda12 works with calp1 = 0</span>
+<a name="l00247"></a>00247 (_f <= 0 || lam12 <= Math::pi<real>() - _f * Math::pi<real>())) {
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="comment">// Geodesic runs along equator</span>
+<a name="l00250"></a>00250 calp1 = calp2 = 0; salp1 = salp2 = 1;
+<a name="l00251"></a>00251 s12x = _a * lam12;
+<a name="l00252"></a>00252 m12x = _b * sin(lam12 / _f1);
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
+<a name="l00254"></a>00254 M12 = M21 = cos(lam12 / _f1);
+<a name="l00255"></a>00255 a12 = lon12 / _f1;
+<a name="l00256"></a>00256 sig12 = omg12 = lam12 / _f1;
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!meridian) {
+<a name="l00259"></a>00259
+<a name="l00260"></a>00260 <span class="comment">// Now point1 and point2 belong within a hemisphere bounded by a</span>
+<a name="l00261"></a>00261 <span class="comment">// meridian and geodesic is neither meridional or equatorial.</span>
+<a name="l00262"></a>00262
+<a name="l00263"></a>00263 <span class="comment">// Figure a starting point for Newton's method</span>
+<a name="l00264"></a>00264 sig12 = InverseStart(sbet1, cbet1, sbet2, cbet2,
+<a name="l00265"></a>00265 lam12,
+<a name="l00266"></a>00266 salp1, calp1, salp2, calp2,
+<a name="l00267"></a>00267 C1a, C2a);
+<a name="l00268"></a>00268
+<a name="l00269"></a>00269 <span class="keywordflow">if</span> (sig12 >= 0) {
+<a name="l00270"></a>00270 <span class="comment">// Short lines (InverseStart sets salp2, calp2)</span>
+<a name="l00271"></a>00271 real wm = sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>((cbet1 + cbet2) / 2));
+<a name="l00272"></a>00272 s12x = sig12 * _a * wm;
+<a name="l00273"></a>00273 m12x = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(wm) * _a / _f1 * sin(sig12 * _f1 / wm);
+<a name="l00274"></a>00274 <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
+<a name="l00275"></a>00275 M12 = M21 = cos(sig12 * _f1 / wm);
+<a name="l00276"></a>00276 a12 = sig12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00277"></a>00277 omg12 = lam12 / wm;
+<a name="l00278"></a>00278 } <span class="keywordflow">else</span> {
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 <span class="comment">// Newton's method</span>
+<a name="l00281"></a>00281 real ssig1, csig1, ssig2, csig2, eps;
+<a name="l00282"></a>00282 real ov = 0;
+<a name="l00283"></a>00283 <span class="keywordtype">unsigned</span> numit = 0;
+<a name="l00284"></a>00284 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> trip = 0; numit < maxit_; ++numit) {
+<a name="l00285"></a>00285 real dv;
+<a name="l00286"></a>00286 real v = Lambda12(sbet1, cbet1, sbet2, cbet2, salp1, calp1,
+<a name="l00287"></a>00287 salp2, calp2, sig12, ssig1, csig1, ssig2, csig2,
+<a name="l00288"></a>00288 eps, omg12, trip < 1, dv, C1a, C2a, C3a) - lam12;
+<a name="l00289"></a>00289 <span class="keywordflow">if</span> (!(abs(v) > tiny_) || !(trip < 1)) {
+<a name="l00290"></a>00290 <span class="keywordflow">if</span> (!(abs(v) <= max(tol1_, ov)))
+<a name="l00291"></a>00291 numit = maxit_;
+<a name="l00292"></a>00292 <span class="keywordflow">break</span>;
+<a name="l00293"></a>00293 }
+<a name="l00294"></a>00294 real
+<a name="l00295"></a>00295 dalp1 = -v/dv;
+<a name="l00296"></a>00296 real
+<a name="l00297"></a>00297 sdalp1 = sin(dalp1), cdalp1 = cos(dalp1),
+<a name="l00298"></a>00298 nsalp1 = salp1 * cdalp1 + calp1 * sdalp1;
+<a name="l00299"></a>00299 calp1 = calp1 * cdalp1 - salp1 * sdalp1;
+<a name="l00300"></a>00300 salp1 = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), nsalp1);
+<a name="l00301"></a>00301 SinCosNorm(salp1, calp1);
+<a name="l00302"></a>00302 <span class="comment">// In some regimes we don't get quadratic convergence because slope</span>
+<a name="l00303"></a>00303 <span class="comment">// -> 0. So use convergence conditions based on epsilon instead of</span>
+<a name="l00304"></a>00304 <span class="comment">// sqrt(epsilon). The first criterion is a test on abs(v) against</span>
+<a name="l00305"></a>00305 <span class="comment">// 100 * epsilon. The second takes credit for an anticipated</span>
+<a name="l00306"></a>00306 <span class="comment">// reduction in abs(v) by v/ov (due to the latest update in alp1) and</span>
+<a name="l00307"></a>00307 <span class="comment">// checks this against epsilon.</span>
+<a name="l00308"></a>00308 <span class="keywordflow">if</span> (!(abs(v) >= tol1_ && <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(v) >= ov * tol0_)) ++trip;
+<a name="l00309"></a>00309 ov = abs(v);
+<a name="l00310"></a>00310 }
+<a name="l00311"></a>00311
+<a name="l00312"></a>00312 <span class="keywordflow">if</span> (numit >= maxit_) {
+<a name="l00313"></a>00313 <span class="comment">// Signal failure.</span>
+<a name="l00314"></a>00314 <span class="keywordflow">if</span> (outmask & DISTANCE)
+<a name="l00315"></a>00315 s12 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00316"></a>00316 <span class="keywordflow">if</span> (outmask & AZIMUTH)
+<a name="l00317"></a>00317 azi1 = azi2 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00318"></a>00318 <span class="keywordflow">if</span> (outmask & REDUCEDLENGTH)
+<a name="l00319"></a>00319 m12 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00320"></a>00320 <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
+<a name="l00321"></a>00321 M12 = M21 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00322"></a>00322 <span class="keywordflow">if</span> (outmask & AREA)
+<a name="l00323"></a>00323 S12 = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00324"></a>00324 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00325"></a>00325 }
+<a name="l00326"></a>00326
+<a name="l00327"></a>00327 {
+<a name="l00328"></a>00328 real dummy;
+<a name="l00329"></a>00329 Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
+<a name="l00330"></a>00330 cbet1, cbet2, s12x, m12x, dummy,
+<a name="l00331"></a>00331 (outmask & GEODESICSCALE) != 0U, M12, M21, C1a, C2a);
+<a name="l00332"></a>00332 }
+<a name="l00333"></a>00333 m12x *= _a;
+<a name="l00334"></a>00334 s12x *= _b;
+<a name="l00335"></a>00335 a12 = sig12 / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00336"></a>00336 omg12 = lam12 - omg12;
+<a name="l00337"></a>00337 }
+<a name="l00338"></a>00338 }
+<a name="l00339"></a>00339
+<a name="l00340"></a>00340 <span class="keywordflow">if</span> (outmask & DISTANCE)
+<a name="l00341"></a>00341 s12 = 0 + s12x; <span class="comment">// Convert -0 to 0</span>
+<a name="l00342"></a>00342
+<a name="l00343"></a>00343 <span class="keywordflow">if</span> (outmask & REDUCEDLENGTH)
+<a name="l00344"></a>00344 m12 = 0 + m12x; <span class="comment">// Convert -0 to 0</span>
+<a name="l00345"></a>00345
+<a name="l00346"></a>00346 <span class="keywordflow">if</span> (outmask & AREA) {
+<a name="l00347"></a>00347 real
+<a name="l00348"></a>00348 <span class="comment">// From Lambda12: sin(alp1) * cos(bet1) = sin(alp0)</span>
+<a name="l00349"></a>00349 salp0 = salp1 * cbet1,
+<a name="l00350"></a>00350 calp0 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(calp1, salp1 * sbet1); <span class="comment">// calp0 > 0</span>
+<a name="l00351"></a>00351 real alp12;
+<a name="l00352"></a>00352 <span class="keywordflow">if</span> (calp0 != 0 && salp0 != 0) {
+<a name="l00353"></a>00353 real
+<a name="l00354"></a>00354 <span class="comment">// From Lambda12: tan(bet) = tan(sig) * cos(alp)</span>
+<a name="l00355"></a>00355 ssig1 = sbet1, csig1 = calp1 * cbet1,
+<a name="l00356"></a>00356 ssig2 = sbet2, csig2 = calp2 * cbet2,
+<a name="l00357"></a>00357 k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(calp0) * _ep2,
+<a name="l00358"></a>00358 <span class="comment">// Multiplier = a^2 * e^2 * cos(alpha0) * sin(alpha0).</span>
+<a name="l00359"></a>00359 A4 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_a) * calp0 * salp0 * _e2;
+<a name="l00360"></a>00360 SinCosNorm(ssig1, csig1);
+<a name="l00361"></a>00361 SinCosNorm(ssig2, csig2);
+<a name="l00362"></a>00362 real C4a[nC4_];
+<a name="l00363"></a>00363 C4f(k2, C4a);
+<a name="l00364"></a>00364 real
+<a name="l00365"></a>00365 B41 = SinCosSeries(<span class="keyword">false</span>, ssig1, csig1, C4a, nC4_),
+<a name="l00366"></a>00366 B42 = SinCosSeries(<span class="keyword">false</span>, ssig2, csig2, C4a, nC4_);
+<a name="l00367"></a>00367 S12 = A4 * (B42 - B41);
+<a name="l00368"></a>00368 } <span class="keywordflow">else</span>
+<a name="l00369"></a>00369 <span class="comment">// Avoid problems with indeterminate sig1, sig2 on equator</span>
+<a name="l00370"></a>00370 S12 = 0;
+<a name="l00371"></a>00371
+<a name="l00372"></a>00372 <span class="keywordflow">if</span> (!meridian &&
+<a name="l00373"></a>00373 omg12 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>() && <span class="comment">// Long difference too big</span>
+<a name="l00374"></a>00374 sbet2 - sbet1 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1.75)) { <span class="comment">// Lat difference too big</span>
+<a name="l00375"></a>00375 <span class="comment">// Use tan(Gamma/2) = tan(omg12/2)</span>
+<a name="l00376"></a>00376 <span class="comment">// * (tan(bet1/2)+tan(bet2/2))/(1+tan(bet1/2)*tan(bet2/2))</span>
+<a name="l00377"></a>00377 <span class="comment">// with tan(x/2) = sin(x)/(1+cos(x))</span>
+<a name="l00378"></a>00378 real
+<a name="l00379"></a>00379 somg12 = sin(omg12), domg12 = 1 + cos(omg12),
+<a name="l00380"></a>00380 dbet1 = 1 + cbet1, dbet2 = 1 + cbet2;
+<a name="l00381"></a>00381 alp12 = 2 * atan2( somg12 * ( sbet1 * dbet2 + sbet2 * dbet1 ),
+<a name="l00382"></a>00382 domg12 * ( sbet1 * sbet2 + dbet1 * dbet2 ) );
+<a name="l00383"></a>00383 } <span class="keywordflow">else</span> {
+<a name="l00384"></a>00384 <span class="comment">// alp12 = alp2 - alp1, used in atan2 so no need to normalize</span>
+<a name="l00385"></a>00385 real
+<a name="l00386"></a>00386 salp12 = salp2 * calp1 - calp2 * salp1,
+<a name="l00387"></a>00387 calp12 = calp2 * calp1 + salp2 * salp1;
+<a name="l00388"></a>00388 <span class="comment">// The right thing appears to happen if alp1 = +/-180 and alp2 = 0, viz</span>
+<a name="l00389"></a>00389 <span class="comment">// salp12 = -0 and alp12 = -180. However this depends on the sign</span>
+<a name="l00390"></a>00390 <span class="comment">// being attached to 0 correctly. The following ensures the correct</span>
+<a name="l00391"></a>00391 <span class="comment">// behavior.</span>
+<a name="l00392"></a>00392 <span class="keywordflow">if</span> (salp12 == 0 && calp12 < 0) {
+<a name="l00393"></a>00393 salp12 = tiny_ * calp1;
+<a name="l00394"></a>00394 calp12 = -1;
+<a name="l00395"></a>00395 }
+<a name="l00396"></a>00396 alp12 = atan2(salp12, calp12);
+<a name="l00397"></a>00397 }
+<a name="l00398"></a>00398 S12 += _c2 * alp12;
+<a name="l00399"></a>00399 S12 *= swapp * lonsign * latsign;
+<a name="l00400"></a>00400 <span class="comment">// Convert -0 to 0</span>
+<a name="l00401"></a>00401 S12 += 0;
+<a name="l00402"></a>00402 }
+<a name="l00403"></a>00403
+<a name="l00404"></a>00404 <span class="comment">// Convert calp, salp to azimuth accounting for lonsign, swapp, latsign.</span>
+<a name="l00405"></a>00405 <span class="keywordflow">if</span> (swapp < 0) {
+<a name="l00406"></a>00406 swap(salp1, salp2);
+<a name="l00407"></a>00407 swap(calp1, calp2);
+<a name="l00408"></a>00408 <span class="keywordflow">if</span> (outmask & GEODESICSCALE)
+<a name="l00409"></a>00409 swap(M12, M21);
+<a name="l00410"></a>00410 }
+<a name="l00411"></a>00411
+<a name="l00412"></a>00412 salp1 *= swapp * lonsign; calp1 *= swapp * latsign;
+<a name="l00413"></a>00413 salp2 *= swapp * lonsign; calp2 *= swapp * latsign;
+<a name="l00414"></a>00414
+<a name="l00415"></a>00415 <span class="keywordflow">if</span> (outmask & AZIMUTH) {
+<a name="l00416"></a>00416 <span class="comment">// minus signs give range [-180, 180). 0- converts -0 to +0.</span>
+<a name="l00417"></a>00417 azi1 = 0 - atan2(-salp1, calp1) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00418"></a>00418 azi2 = 0 - atan2(-salp2, calp2) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00419"></a>00419 }
+<a name="l00420"></a>00420
+<a name="l00421"></a>00421 <span class="comment">// Returned value in [0, 180]</span>
+<a name="l00422"></a>00422 <span class="keywordflow">return</span> a12;
+<a name="l00423"></a>00423 }
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <span class="keywordtype">void</span> Geodesic::Lengths(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sig12,
+<a name="l00426"></a>00426 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig2,
+<a name="l00427"></a>00427 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00428"></a>00428 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12b, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m0,
+<a name="l00429"></a>00429 <span class="keywordtype">bool</span> scalep, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
+<a name="l00430"></a>00430 <span class="comment">// Scratch areas of the right size</span>
+<a name="l00431"></a>00431 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00432"></a>00432 <span class="comment">// Return m12a = (reduced length)/_a; also calculate s12b = distance/_b,</span>
+<a name="l00433"></a>00433 <span class="comment">// and m0 = coefficient of secular term in expression for reduced length.</span>
+<a name="l00434"></a>00434 C1f(eps, C1a);
+<a name="l00435"></a>00435 C2f(eps, C2a);
+<a name="l00436"></a>00436 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00437"></a>00437 A1m1 = A1m1f(eps),
+<a name="l00438"></a>00438 AB1 = (1 + A1m1) * (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C1a, nC1_) -
+<a name="l00439"></a>00439 SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C1a, nC1_)),
+<a name="l00440"></a>00440 A2m1 = A2m1f(eps),
+<a name="l00441"></a>00441 AB2 = (1 + A2m1) * (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C2a, nC2_) -
+<a name="l00442"></a>00442 SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C2a, nC2_)),
+<a name="l00443"></a>00443 cbet1sq = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet1),
+<a name="l00444"></a>00444 cbet2sq = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet2),
+<a name="l00445"></a>00445 w1 = sqrt(1 - _e2 * cbet1sq),
+<a name="l00446"></a>00446 w2 = sqrt(1 - _e2 * cbet2sq),
+<a name="l00447"></a>00447 <span class="comment">// Make sure it's OK to have repeated dummy arguments</span>
+<a name="l00448"></a>00448 m0x = A1m1 - A2m1,
+<a name="l00449"></a>00449 J12 = m0x * sig12 + (AB1 - AB2);
+<a name="l00450"></a>00450 m0 = m0x;
+<a name="l00451"></a>00451 <span class="comment">// Missing a factor of _a.</span>
+<a name="l00452"></a>00452 <span class="comment">// Add parens around (csig1 * ssig2) and (ssig1 * csig2) to ensure accurate</span>
+<a name="l00453"></a>00453 <span class="comment">// cancellation in the case of coincident points.</span>
+<a name="l00454"></a>00454 m12a = (w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
+<a name="l00455"></a>00455 - _f1 * csig1 * csig2 * J12;
+<a name="l00456"></a>00456 <span class="comment">// Missing a factor of _b</span>
+<a name="l00457"></a>00457 s12b = (1 + A1m1) * sig12 + AB1;
+<a name="l00458"></a>00458 <span class="keywordflow">if</span> (scalep) {
+<a name="l00459"></a>00459 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig12 = csig1 * csig2 + ssig1 * ssig2;
+<a name="l00460"></a>00460 J12 *= _f1;
+<a name="l00461"></a>00461 M12 = csig12 + (_e2 * (cbet1sq - cbet2sq) * ssig2 / (w1 + w2)
+<a name="l00462"></a>00462 - csig2 * J12) * ssig1 / w1;
+<a name="l00463"></a>00463 M21 = csig12 - (_e2 * (cbet1sq - cbet2sq) * ssig1 / (w1 + w2)
+<a name="l00464"></a>00464 - csig1 * J12) * ssig2 / w2;
+<a name="l00465"></a>00465 }
+<a name="l00466"></a>00466 }
+<a name="l00467"></a>00467
+<a name="l00468"></a>00468 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::Astroid(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
+<a name="l00469"></a>00469 <span class="comment">// Solve k^4+2*k^3-(x^2+y^2-1)*k^2-2*y^2*k-y^2 = 0 for positive root k.</span>
+<a name="l00470"></a>00470 <span class="comment">// This solution is adapted from Geocentric::Reverse.</span>
+<a name="l00471"></a>00471 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k;
+<a name="l00472"></a>00472 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00473"></a>00473 p = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(x),
+<a name="l00474"></a>00474 q = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(y),
+<a name="l00475"></a>00475 r = (p + q - 1) / 6;
+<a name="l00476"></a>00476 <span class="keywordflow">if</span> ( !(q == 0 && r <= 0) ) {
+<a name="l00477"></a>00477 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00478"></a>00478 <span class="comment">// Avoid possible division by zero when r = 0 by multiplying equations</span>
+<a name="l00479"></a>00479 <span class="comment">// for s and t by r^3 and r, resp.</span>
+<a name="l00480"></a>00480 S = p * q / 4, <span class="comment">// S = r^3 * s</span>
+<a name="l00481"></a>00481 r2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(r),
+<a name="l00482"></a>00482 r3 = r * r2,
+<a name="l00483"></a>00483 <span class="comment">// The discrimant of the quadratic equation for T3. This is zero on</span>
+<a name="l00484"></a>00484 <span class="comment">// the evolute curve p^(1/3)+q^(1/3) = 1</span>
+<a name="l00485"></a>00485 disc = S * (S + 2 * r3);
+<a name="l00486"></a>00486 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u = r;
+<a name="l00487"></a>00487 <span class="keywordflow">if</span> (disc >= 0) {
+<a name="l00488"></a>00488 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T3 = S + r3;
+<a name="l00489"></a>00489 <span class="comment">// Pick the sign on the sqrt to maximize abs(T3). This minimizes loss</span>
+<a name="l00490"></a>00490 <span class="comment">// of precision due to cancellation. The result is unchanged because</span>
+<a name="l00491"></a>00491 <span class="comment">// of the way the T is used in definition of u.</span>
+<a name="l00492"></a>00492 T3 += T3 < 0 ? -sqrt(disc) : sqrt(disc); <span class="comment">// T3 = (r * t)^3</span>
+<a name="l00493"></a>00493 <span class="comment">// N.B. cbrt always returns the real root. cbrt(-8) = -2.</span>
+<a name="l00494"></a>00494 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> T = <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">Math::cbrt</a>(T3); <span class="comment">// T = r * t</span>
+<a name="l00495"></a>00495 <span class="comment">// T can be zero; but then r2 / T -> 0.</span>
+<a name="l00496"></a>00496 u += T + (T != 0 ? r2 / T : 0);
+<a name="l00497"></a>00497 } <span class="keywordflow">else</span> {
+<a name="l00498"></a>00498 <span class="comment">// T is complex, but the way u is defined the result is real.</span>
+<a name="l00499"></a>00499 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ang = atan2(sqrt(-disc), -(S + r3));
+<a name="l00500"></a>00500 <span class="comment">// There are three possible cube roots. We choose the root which</span>
+<a name="l00501"></a>00501 <span class="comment">// avoids cancellation. Note that disc < 0 implies that r < 0.</span>
+<a name="l00502"></a>00502 u += 2 * r * cos(ang / 3);
+<a name="l00503"></a>00503 }
+<a name="l00504"></a>00504 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00505"></a>00505 v = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(u) + q), <span class="comment">// guaranteed positive</span>
+<a name="l00506"></a>00506 <span class="comment">// Avoid loss of accuracy when u < 0.</span>
+<a name="l00507"></a>00507 uv = u < 0 ? q / (v - u) : u + v, <span class="comment">// u+v, guaranteed positive</span>
+<a name="l00508"></a>00508 w = (uv - q) / (2 * v); <span class="comment">// positive?</span>
+<a name="l00509"></a>00509 <span class="comment">// Rearrange expression for k to avoid loss of accuracy due to</span>
+<a name="l00510"></a>00510 <span class="comment">// subtraction. Division by 0 not possible because uv > 0, w >= 0.</span>
+<a name="l00511"></a>00511 k = uv / (sqrt(uv + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(w)) + w); <span class="comment">// guaranteed positive</span>
+<a name="l00512"></a>00512 } <span class="keywordflow">else</span> { <span class="comment">// q == 0 && r <= 0</span>
+<a name="l00513"></a>00513 <span class="comment">// y = 0 with |x| <= 1. Handle this case directly.</span>
+<a name="l00514"></a>00514 <span class="comment">// for y small, positive root is k = abs(y)/sqrt(1-x^2)</span>
+<a name="l00515"></a>00515 k = 0;
+<a name="l00516"></a>00516 }
+<a name="l00517"></a>00517 <span class="keywordflow">return</span> k;
+<a name="l00518"></a>00518 }
+<a name="l00519"></a>00519
+<a name="l00520"></a>00520 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::InverseStart(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1,
+<a name="l00521"></a>00521 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00522"></a>00522 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam12,
+<a name="l00523"></a>00523 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp1,
+<a name="l00524"></a>00524 <span class="comment">// Only updated if return val >= 0</span>
+<a name="l00525"></a>00525 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
+<a name="l00526"></a>00526 <span class="comment">// Scratch areas of the right size</span>
+<a name="l00527"></a>00527 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00528"></a>00528 <span class="comment">// Return a starting point for Newton's method in salp1 and calp1 (function</span>
+<a name="l00529"></a>00529 <span class="comment">// value is -1). If Newton's method doesn't need to be used, return also</span>
+<a name="l00530"></a>00530 <span class="comment">// salp2 and calp2 and function value is sig12.</span>
+<a name="l00531"></a>00531 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00532"></a>00532 sig12 = -1, <span class="comment">// Return value</span>
+<a name="l00533"></a>00533 <span class="comment">// bet12 = bet2 - bet1 in [0, pi); bet12a = bet2 + bet1 in (-pi, 0]</span>
+<a name="l00534"></a>00534 sbet12 = sbet2 * cbet1 - cbet2 * sbet1,
+<a name="l00535"></a>00535 cbet12 = cbet2 * cbet1 + sbet2 * sbet1;
+<a name="l00536"></a>00536 <span class="preprocessor">#if defined(__GNUC__) && __GNUC__ == 4 && \</span>
+<a name="l00537"></a>00537 <span class="preprocessor"> (__GNUC_MINOR__ < 6 || defined(__MINGW32__))</span>
+<a name="l00538"></a>00538 <span class="preprocessor"></span> <span class="comment">// Volatile declaration needed to fix inverse cases</span>
+<a name="l00539"></a>00539 <span class="comment">// 88.202499451857 0 -88.202499451857 179.981022032992859592</span>
+<a name="l00540"></a>00540 <span class="comment">// 89.262080389218 0 -89.262080389218 179.992207982775375662</span>
+<a name="l00541"></a>00541 <span class="comment">// 89.333123580033 0 -89.333123580032997687 179.99295812360148422</span>
+<a name="l00542"></a>00542 <span class="comment">// which otherwise fail with g++ 4.4.4 x86 -O3 (Linux)</span>
+<a name="l00543"></a>00543 <span class="comment">// and g++ 4.4.0 (mingw) and g++ 4.6.1 (tdm mingw).</span>
+<a name="l00544"></a>00544 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet12a;
+<a name="l00545"></a>00545 {
+<a name="l00546"></a>00546 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xx1 = sbet2 * cbet1;
+<a name="l00547"></a>00547 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xx2 = cbet2 * sbet1;
+<a name="l00548"></a>00548 sbet12a = xx1 + xx2;
+<a name="l00549"></a>00549 }
+<a name="l00550"></a>00550 <span class="preprocessor">#else</span>
+<a name="l00551"></a>00551 <span class="preprocessor"></span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet12a = sbet2 * cbet1 + cbet2 * sbet1;
+<a name="l00552"></a>00552 <span class="preprocessor">#endif</span>
+<a name="l00553"></a>00553 <span class="preprocessor"></span> <span class="keywordtype">bool</span> shortline = cbet12 >= 0 && sbet12 < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5) &&
+<a name="l00554"></a>00554 lam12 <= Math::pi<real>() / 6;
+<a name="l00555"></a>00555 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00556"></a>00556 omg12 = (!shortline ? lam12 :
+<a name="l00557"></a>00557 lam12 / sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>((cbet1 + cbet2) / 2))),
+<a name="l00558"></a>00558 somg12 = sin(omg12), comg12 = cos(omg12);
+<a name="l00559"></a>00559
+<a name="l00560"></a>00560 salp1 = cbet2 * somg12;
+<a name="l00561"></a>00561 calp1 = comg12 >= 0 ?
+<a name="l00562"></a>00562 sbet12 + cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(somg12) / (1 + comg12) :
+<a name="l00563"></a>00563 sbet12a - cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(somg12) / (1 - comg12);
+<a name="l00564"></a>00564
+<a name="l00565"></a>00565 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00566"></a>00566 ssig12 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(salp1, calp1),
+<a name="l00567"></a>00567 csig12 = sbet1 * sbet2 + cbet1 * cbet2 * comg12;
+<a name="l00568"></a>00568
+<a name="l00569"></a>00569 <span class="keywordflow">if</span> (shortline && ssig12 < _etol2) {
+<a name="l00570"></a>00570 <span class="comment">// really short lines</span>
+<a name="l00571"></a>00571 salp2 = cbet1 * somg12;
+<a name="l00572"></a>00572 calp2 = sbet12 - cbet1 * sbet2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(somg12) / (1 + comg12);
+<a name="l00573"></a>00573 SinCosNorm(salp2, calp2);
+<a name="l00574"></a>00574 <span class="comment">// Set return value</span>
+<a name="l00575"></a>00575 sig12 = atan2(ssig12, csig12);
+<a name="l00576"></a>00576 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (csig12 >= 0 ||
+<a name="l00577"></a>00577 ssig12 >= 3 * abs(_f) * Math::pi<real>() * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet1)) {
+<a name="l00578"></a>00578 <span class="comment">// Nothing to do, zeroth order spherical approximation is OK</span>
+<a name="l00579"></a>00579 } <span class="keywordflow">else</span> {
+<a name="l00580"></a>00580 <span class="comment">// Scale lam12 and bet2 to x, y coordinate system where antipodal point</span>
+<a name="l00581"></a>00581 <span class="comment">// is at origin and singular point is at y = 0, x = -1.</span>
+<a name="l00582"></a>00582 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, lamscale, betscale;
+<a name="l00583"></a>00583 <span class="comment">// Volatile declaration needed to fix inverse case</span>
+<a name="l00584"></a>00584 <span class="comment">// 56.320923501171 0 -56.320923501171 179.664747671772880215</span>
+<a name="l00585"></a>00585 <span class="comment">// which otherwise fails with g++ 4.4.4 x86 -O3</span>
+<a name="l00586"></a>00586 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x;
+<a name="l00587"></a>00587 <span class="keywordflow">if</span> (_f >= 0) { <span class="comment">// In fact f == 0 does not get here</span>
+<a name="l00588"></a>00588 <span class="comment">// x = dlong, y = dlat</span>
+<a name="l00589"></a>00589 {
+<a name="l00590"></a>00590 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00591"></a>00591 k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sbet1) * _ep2,
+<a name="l00592"></a>00592 eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2);
+<a name="l00593"></a>00593 lamscale = _f * cbet1 * A3f(eps) * Math::pi<real>();
+<a name="l00594"></a>00594 }
+<a name="l00595"></a>00595 betscale = lamscale * cbet1;
+<a name="l00596"></a>00596
+<a name="l00597"></a>00597 x = (lam12 - Math::pi<real>()) / lamscale;
+<a name="l00598"></a>00598 y = sbet12a / betscale;
+<a name="l00599"></a>00599 } <span class="keywordflow">else</span> { <span class="comment">// _f < 0</span>
+<a name="l00600"></a>00600 <span class="comment">// x = dlat, y = dlong</span>
+<a name="l00601"></a>00601 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00602"></a>00602 cbet12a = cbet2 * cbet1 - sbet2 * sbet1,
+<a name="l00603"></a>00603 bet12a = atan2(sbet12a, cbet12a);
+<a name="l00604"></a>00604 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> m12a, m0, dummy;
+<a name="l00605"></a>00605 <span class="comment">// In the case of lon12 = 180, this repeats a calculation made in</span>
+<a name="l00606"></a>00606 <span class="comment">// Inverse.</span>
+<a name="l00607"></a>00607 Lengths(_n, Math::pi<real>() + bet12a, sbet1, -cbet1, sbet2, cbet2,
+<a name="l00608"></a>00608 cbet1, cbet2, dummy, m12a, m0, <span class="keyword">false</span>,
+<a name="l00609"></a>00609 dummy, dummy, C1a, C2a);
+<a name="l00610"></a>00610 x = -1 + m12a/(_f1 * cbet1 * cbet2 * m0 * Math::pi<real>());
+<a name="l00611"></a>00611 betscale = x < -<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) ? sbet12a / x :
+<a name="l00612"></a>00612 -_f * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet1) * Math::pi<real>();
+<a name="l00613"></a>00613 lamscale = betscale / cbet1;
+<a name="l00614"></a>00614 y = (lam12 - Math::pi<real>()) / lamscale;
+<a name="l00615"></a>00615 }
+<a name="l00616"></a>00616
+<a name="l00617"></a>00617 <span class="keywordflow">if</span> (y > -tol1_ && x > -1 - xthresh_) {
+<a name="l00618"></a>00618 <span class="comment">// strip near cut</span>
+<a name="l00619"></a>00619 <span class="keywordflow">if</span> (_f >= 0) {
+<a name="l00620"></a>00620 salp1 = min(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), -<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x)); calp1 = - sqrt(1 - <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(salp1));
+<a name="l00621"></a>00621 } <span class="keywordflow">else</span> {
+<a name="l00622"></a>00622 calp1 = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x > -tol1_ ? 0 : -1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(x));
+<a name="l00623"></a>00623 salp1 = sqrt(1 - <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(calp1));
+<a name="l00624"></a>00624 }
+<a name="l00625"></a>00625 } <span class="keywordflow">else</span> {
+<a name="l00626"></a>00626 <span class="comment">// Estimate alp1, by solving the astroid problem.</span>
+<a name="l00627"></a>00627 <span class="comment">//</span>
+<a name="l00628"></a>00628 <span class="comment">// Could estimate alpha1 = theta + pi/2, directly, i.e.,</span>
+<a name="l00629"></a>00629 <span class="comment">// calp1 = y/k; salp1 = -x/(1+k); for _f >= 0</span>
+<a name="l00630"></a>00630 <span class="comment">// calp1 = x/(1+k); salp1 = -y/k; for _f < 0 (need to check)</span>
+<a name="l00631"></a>00631 <span class="comment">//</span>
+<a name="l00632"></a>00632 <span class="comment">// However, it's better to estimate omg12 from astroid and use</span>
+<a name="l00633"></a>00633 <span class="comment">// spherical formula to compute alp1. This reduces the mean number of</span>
+<a name="l00634"></a>00634 <span class="comment">// Newton iterations for astroid cases from 2.24 (min 0, max 6) to 2.12</span>
+<a name="l00635"></a>00635 <span class="comment">// (min 0 max 5). The changes in the number of iterations are as</span>
+<a name="l00636"></a>00636 <span class="comment">// follows:</span>
+<a name="l00637"></a>00637 <span class="comment">//</span>
+<a name="l00638"></a>00638 <span class="comment">// change percent</span>
+<a name="l00639"></a>00639 <span class="comment">// 1 5</span>
+<a name="l00640"></a>00640 <span class="comment">// 0 78</span>
+<a name="l00641"></a>00641 <span class="comment">// -1 16</span>
+<a name="l00642"></a>00642 <span class="comment">// -2 0.6</span>
+<a name="l00643"></a>00643 <span class="comment">// -3 0.04</span>
+<a name="l00644"></a>00644 <span class="comment">// -4 0.002</span>
+<a name="l00645"></a>00645 <span class="comment">//</span>
+<a name="l00646"></a>00646 <span class="comment">// The histogram of iterations is (m = number of iterations estimating</span>
+<a name="l00647"></a>00647 <span class="comment">// alp1 directly, n = number of iterations estimating via omg12, total</span>
+<a name="l00648"></a>00648 <span class="comment">// number of trials = 148605):</span>
+<a name="l00649"></a>00649 <span class="comment">//</span>
+<a name="l00650"></a>00650 <span class="comment">// iter m n</span>
+<a name="l00651"></a>00651 <span class="comment">// 0 148 186</span>
+<a name="l00652"></a>00652 <span class="comment">// 1 13046 13845</span>
+<a name="l00653"></a>00653 <span class="comment">// 2 93315 102225</span>
+<a name="l00654"></a>00654 <span class="comment">// 3 36189 32341</span>
+<a name="l00655"></a>00655 <span class="comment">// 4 5396 7</span>
+<a name="l00656"></a>00656 <span class="comment">// 5 455 1</span>
+<a name="l00657"></a>00657 <span class="comment">// 6 56 0</span>
+<a name="l00658"></a>00658 <span class="comment">//</span>
+<a name="l00659"></a>00659 <span class="comment">// Because omg12 is near pi, estimate work with omg12a = pi - omg12</span>
+<a name="l00660"></a>00660 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = Astroid(x, y);
+<a name="l00661"></a>00661 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00662"></a>00662 omg12a = lamscale * ( _f >= 0 ? -x * k/(1 + k) : -y * (1 + k)/k ),
+<a name="l00663"></a>00663 somg12 = sin(omg12a), comg12 = -cos(omg12a);
+<a name="l00664"></a>00664 <span class="comment">// Update spherical estimate of alp1 using omg12 instead of lam12</span>
+<a name="l00665"></a>00665 salp1 = cbet2 * somg12;
+<a name="l00666"></a>00666 calp1 = sbet12a - cbet2 * sbet1 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(somg12) / (1 - comg12);
+<a name="l00667"></a>00667 }
+<a name="l00668"></a>00668 }
+<a name="l00669"></a>00669 SinCosNorm(salp1, calp1);
+<a name="l00670"></a>00670 <span class="keywordflow">return</span> sig12;
+<a name="l00671"></a>00671 }
+<a name="l00672"></a>00672
+<a name="l00673"></a>00673 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::Lambda12(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00674"></a>00674 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> calp1,
+<a name="l00675"></a>00675 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
+<a name="l00676"></a>00676 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sig12,
+<a name="l00677"></a>00677 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig1,
+<a name="l00678"></a>00678 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig2,
+<a name="l00679"></a>00679 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& domg12,
+<a name="l00680"></a>00680 <span class="keywordtype">bool</span> diffp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dlam12,
+<a name="l00681"></a>00681 <span class="comment">// Scratch areas of the right size</span>
+<a name="l00682"></a>00682 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C3a[]) <span class="keyword">const</span>
+<a name="l00683"></a>00683 <span class="keywordflow">throw</span>() {
+<a name="l00684"></a>00684
+<a name="l00685"></a>00685 <span class="keywordflow">if</span> (sbet1 == 0 && calp1 == 0)
+<a name="l00686"></a>00686 <span class="comment">// Break degeneracy of equatorial line. This case has already been</span>
+<a name="l00687"></a>00687 <span class="comment">// handled.</span>
+<a name="l00688"></a>00688 calp1 = -tiny_;
+<a name="l00689"></a>00689
+<a name="l00690"></a>00690 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00691"></a>00691 <span class="comment">// sin(alp1) * cos(bet1) = sin(alp0)</span>
+<a name="l00692"></a>00692 salp0 = salp1 * cbet1,
+<a name="l00693"></a>00693 calp0 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(calp1, salp1 * sbet1); <span class="comment">// calp0 > 0</span>
+<a name="l00694"></a>00694
+<a name="l00695"></a>00695 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> somg1, comg1, somg2, comg2, omg12, lam12;
+<a name="l00696"></a>00696 <span class="comment">// tan(bet1) = tan(sig1) * cos(alp1)</span>
+<a name="l00697"></a>00697 <span class="comment">// tan(omg1) = sin(alp0) * tan(sig1) = tan(omg1)=tan(alp1)*sin(bet1)</span>
+<a name="l00698"></a>00698 ssig1 = sbet1; somg1 = salp0 * sbet1;
+<a name="l00699"></a>00699 csig1 = comg1 = calp1 * cbet1;
+<a name="l00700"></a>00700 SinCosNorm(ssig1, csig1);
+<a name="l00701"></a>00701 <span class="comment">// SinCosNorm(somg1, comg1); -- don't need to normalize!</span>
+<a name="l00702"></a>00702
+<a name="l00703"></a>00703 <span class="comment">// Enforce symmetries in the case abs(bet2) = -bet1. Need to be careful</span>
+<a name="l00704"></a>00704 <span class="comment">// about this case, since this can yield singularities in the Newton</span>
+<a name="l00705"></a>00705 <span class="comment">// iteration.</span>
+<a name="l00706"></a>00706 <span class="comment">// sin(alp2) * cos(bet2) = sin(alp0)</span>
+<a name="l00707"></a>00707 salp2 = cbet2 != cbet1 ? salp0 / cbet2 : salp1;
+<a name="l00708"></a>00708 <span class="comment">// calp2 = sqrt(1 - sq(salp2))</span>
+<a name="l00709"></a>00709 <span class="comment">// = sqrt(sq(calp0) - sq(sbet2)) / cbet2</span>
+<a name="l00710"></a>00710 <span class="comment">// and subst for calp0 and rearrange to give (choose positive sqrt</span>
+<a name="l00711"></a>00711 <span class="comment">// to give alp2 in [0, pi/2]).</span>
+<a name="l00712"></a>00712 calp2 = cbet2 != cbet1 || abs(sbet2) != -sbet1 ?
+<a name="l00713"></a>00713 sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(calp1 * cbet1) +
+<a name="l00714"></a>00714 (cbet1 < -sbet1 ?
+<a name="l00715"></a>00715 (cbet2 - cbet1) * (cbet1 + cbet2) :
+<a name="l00716"></a>00716 (sbet1 - sbet2) * (sbet1 + sbet2))) / cbet2 :
+<a name="l00717"></a>00717 abs(calp1);
+<a name="l00718"></a>00718 <span class="comment">// tan(bet2) = tan(sig2) * cos(alp2)</span>
+<a name="l00719"></a>00719 <span class="comment">// tan(omg2) = sin(alp0) * tan(sig2).</span>
+<a name="l00720"></a>00720 ssig2 = sbet2; somg2 = salp0 * sbet2;
+<a name="l00721"></a>00721 csig2 = comg2 = calp2 * cbet2;
+<a name="l00722"></a>00722 SinCosNorm(ssig2, csig2);
+<a name="l00723"></a>00723 <span class="comment">// SinCosNorm(somg2, comg2); -- don't need to normalize!</span>
+<a name="l00724"></a>00724
+<a name="l00725"></a>00725 <span class="comment">// sig12 = sig2 - sig1, limit to [0, pi]</span>
+<a name="l00726"></a>00726 sig12 = atan2(max(csig1 * ssig2 - ssig1 * csig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
+<a name="l00727"></a>00727 csig1 * csig2 + ssig1 * ssig2);
+<a name="l00728"></a>00728
+<a name="l00729"></a>00729 <span class="comment">// omg12 = omg2 - omg1, limit to [0, pi]</span>
+<a name="l00730"></a>00730 omg12 = atan2(max(comg1 * somg2 - somg1 * comg2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)),
+<a name="l00731"></a>00731 comg1 * comg2 + somg1 * somg2);
+<a name="l00732"></a>00732 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> B312, h0;
+<a name="l00733"></a>00733 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(calp0) * _ep2;
+<a name="l00734"></a>00734 eps = k2 / (2 * (1 + sqrt(1 + k2)) + k2);
+<a name="l00735"></a>00735 C3f(eps, C3a);
+<a name="l00736"></a>00736 B312 = (SinCosSeries(<span class="keyword">true</span>, ssig2, csig2, C3a, nC3_-1) -
+<a name="l00737"></a>00737 SinCosSeries(<span class="keyword">true</span>, ssig1, csig1, C3a, nC3_-1));
+<a name="l00738"></a>00738 h0 = -_f * A3f(eps);
+<a name="l00739"></a>00739 domg12 = salp0 * h0 * (sig12 + B312);
+<a name="l00740"></a>00740 lam12 = omg12 + domg12;
+<a name="l00741"></a>00741
+<a name="l00742"></a>00742 <span class="keywordflow">if</span> (diffp) {
+<a name="l00743"></a>00743 <span class="keywordflow">if</span> (calp2 == 0)
+<a name="l00744"></a>00744 dlam12 = - 2 * sqrt(1 - _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cbet1)) / sbet1;
+<a name="l00745"></a>00745 <span class="keywordflow">else</span> {
+<a name="l00746"></a>00746 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dummy;
+<a name="l00747"></a>00747 Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
+<a name="l00748"></a>00748 cbet1, cbet2, dummy, dlam12, dummy,
+<a name="l00749"></a>00749 <span class="keyword">false</span>, dummy, dummy, C1a, C2a);
+<a name="l00750"></a>00750 dlam12 /= calp2 * cbet2;
+<a name="l00751"></a>00751 }
+<a name="l00752"></a>00752 }
<a name="l00753"></a>00753
-<a name="l00754"></a>00754 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::A3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00755"></a>00755 <span class="comment">// Evaluation sum(_A3c[k] * eps^k, k, 0, nA3x_-1) by Horner's method</span>
-<a name="l00756"></a>00756 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v = 0;
-<a name="l00757"></a>00757 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nA3x_; i; )
-<a name="l00758"></a>00758 v = eps * v + _A3x[--i];
-<a name="l00759"></a>00759 <span class="keywordflow">return</span> v;
-<a name="l00760"></a>00760 }
-<a name="l00761"></a>00761
-<a name="l00762"></a>00762 <span class="keywordtype">void</span> Geodesic::C3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00763"></a>00763 <span class="comment">// Evaluation C3 coeffs by Horner's method</span>
-<a name="l00764"></a>00764 <span class="comment">// Elements c[1] thru c[nC3_ - 1] are set</span>
-<a name="l00765"></a>00765 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = nC3x_, k = nC3_ - 1; k; ) {
-<a name="l00766"></a>00766 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = 0;
-<a name="l00767"></a>00767 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nC3_ - k; i; --i)
-<a name="l00768"></a>00768 t = eps * t + _C3x[--j];
-<a name="l00769"></a>00769 c[k--] = t;
-<a name="l00770"></a>00770 }
-<a name="l00771"></a>00771
-<a name="l00772"></a>00772 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mult = 1;
-<a name="l00773"></a>00773 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 1; k < nC3_; ) {
-<a name="l00774"></a>00774 mult *= eps;
-<a name="l00775"></a>00775 c[k++] *= mult;
-<a name="l00776"></a>00776 }
-<a name="l00777"></a>00777 }
-<a name="l00778"></a>00778
-<a name="l00779"></a>00779 <span class="keywordtype">void</span> Geodesic::C4f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00780"></a>00780 <span class="comment">// Evaluation C4 coeffs by Horner's method</span>
-<a name="l00781"></a>00781 <span class="comment">// Elements c[0] thru c[nC4_ - 1] are set</span>
-<a name="l00782"></a>00782 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = nC4x_, k = nC4_; k; ) {
-<a name="l00783"></a>00783 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = 0;
-<a name="l00784"></a>00784 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nC4_ - k + 1; i; --i)
-<a name="l00785"></a>00785 t = k2 * t + _C4x[--j];
-<a name="l00786"></a>00786 c[--k] = t;
-<a name="l00787"></a>00787 }
-<a name="l00788"></a>00788
-<a name="l00789"></a>00789 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mult = 1;
-<a name="l00790"></a>00790 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 1; k < nC4_; ) {
-<a name="l00791"></a>00791 mult *= k2;
-<a name="l00792"></a>00792 c[k++] *= mult;
-<a name="l00793"></a>00793 }
-<a name="l00794"></a>00794 }
-<a name="l00795"></a>00795
-<a name="l00796"></a>00796 <span class="comment">// Generated by Maxima on 2010-09-04 10:26:17-04:00</span>
-<a name="l00797"></a>00797
-<a name="l00798"></a>00798 <span class="comment">// The scale factor A1-1 = mean value of I1-1</span>
-<a name="l00799"></a>00799 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::A1m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>() {
-<a name="l00800"></a>00800 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00801"></a>00801 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l00802"></a>00802 t;
-<a name="l00803"></a>00803 <span class="keywordflow">switch</span> (nA1_/2) {
-<a name="l00804"></a>00804 <span class="keywordflow">case</span> 0:
-<a name="l00805"></a>00805 t = 0;
-<a name="l00806"></a>00806 <span class="keywordflow">break</span>;
-<a name="l00807"></a>00807 <span class="keywordflow">case</span> 1:
-<a name="l00808"></a>00808 t = eps2/4;
+<a name="l00754"></a>00754 <span class="keywordflow">return</span> lam12;
+<a name="l00755"></a>00755 }
+<a name="l00756"></a>00756
+<a name="l00757"></a>00757 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::A3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00758"></a>00758 <span class="comment">// Evaluation sum(_A3c[k] * eps^k, k, 0, nA3x_-1) by Horner's method</span>
+<a name="l00759"></a>00759 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v = 0;
+<a name="l00760"></a>00760 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nA3x_; i; )
+<a name="l00761"></a>00761 v = eps * v + _A3x[--i];
+<a name="l00762"></a>00762 <span class="keywordflow">return</span> v;
+<a name="l00763"></a>00763 }
+<a name="l00764"></a>00764
+<a name="l00765"></a>00765 <span class="keywordtype">void</span> Geodesic::C3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00766"></a>00766 <span class="comment">// Evaluation C3 coeffs by Horner's method</span>
+<a name="l00767"></a>00767 <span class="comment">// Elements c[1] thru c[nC3_ - 1] are set</span>
+<a name="l00768"></a>00768 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = nC3x_, k = nC3_ - 1; k; ) {
+<a name="l00769"></a>00769 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = 0;
+<a name="l00770"></a>00770 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nC3_ - k; i; --i)
+<a name="l00771"></a>00771 t = eps * t + _C3x[--j];
+<a name="l00772"></a>00772 c[k--] = t;
+<a name="l00773"></a>00773 }
+<a name="l00774"></a>00774
+<a name="l00775"></a>00775 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mult = 1;
+<a name="l00776"></a>00776 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 1; k < nC3_; ) {
+<a name="l00777"></a>00777 mult *= eps;
+<a name="l00778"></a>00778 c[k++] *= mult;
+<a name="l00779"></a>00779 }
+<a name="l00780"></a>00780 }
+<a name="l00781"></a>00781
+<a name="l00782"></a>00782 <span class="keywordtype">void</span> Geodesic::C4f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00783"></a>00783 <span class="comment">// Evaluation C4 coeffs by Horner's method</span>
+<a name="l00784"></a>00784 <span class="comment">// Elements c[0] thru c[nC4_ - 1] are set</span>
+<a name="l00785"></a>00785 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = nC4x_, k = nC4_; k; ) {
+<a name="l00786"></a>00786 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = 0;
+<a name="l00787"></a>00787 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = nC4_ - k + 1; i; --i)
+<a name="l00788"></a>00788 t = k2 * t + _C4x[--j];
+<a name="l00789"></a>00789 c[--k] = t;
+<a name="l00790"></a>00790 }
+<a name="l00791"></a>00791
+<a name="l00792"></a>00792 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mult = 1;
+<a name="l00793"></a>00793 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k = 1; k < nC4_; ) {
+<a name="l00794"></a>00794 mult *= k2;
+<a name="l00795"></a>00795 c[k++] *= mult;
+<a name="l00796"></a>00796 }
+<a name="l00797"></a>00797 }
+<a name="l00798"></a>00798
+<a name="l00799"></a>00799 <span class="comment">// Generated by Maxima on 2010-09-04 10:26:17-04:00</span>
+<a name="l00800"></a>00800
+<a name="l00801"></a>00801 <span class="comment">// The scale factor A1-1 = mean value of I1-1</span>
+<a name="l00802"></a>00802 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::A1m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>() {
+<a name="l00803"></a>00803 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00804"></a>00804 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l00805"></a>00805 t;
+<a name="l00806"></a>00806 <span class="keywordflow">switch</span> (nA1_/2) {
+<a name="l00807"></a>00807 <span class="keywordflow">case</span> 0:
+<a name="l00808"></a>00808 t = 0;
<a name="l00809"></a>00809 <span class="keywordflow">break</span>;
-<a name="l00810"></a>00810 <span class="keywordflow">case</span> 2:
-<a name="l00811"></a>00811 t = eps2*(eps2+16)/64;
+<a name="l00810"></a>00810 <span class="keywordflow">case</span> 1:
+<a name="l00811"></a>00811 t = eps2/4;
<a name="l00812"></a>00812 <span class="keywordflow">break</span>;
-<a name="l00813"></a>00813 <span class="keywordflow">case</span> 3:
-<a name="l00814"></a>00814 t = eps2*(eps2*(eps2+4)+64)/256;
+<a name="l00813"></a>00813 <span class="keywordflow">case</span> 2:
+<a name="l00814"></a>00814 t = eps2*(eps2+16)/64;
<a name="l00815"></a>00815 <span class="keywordflow">break</span>;
-<a name="l00816"></a>00816 <span class="keywordflow">case</span> 4:
-<a name="l00817"></a>00817 t = eps2*(eps2*(eps2*(25*eps2+64)+256)+4096)/16384;
+<a name="l00816"></a>00816 <span class="keywordflow">case</span> 3:
+<a name="l00817"></a>00817 t = eps2*(eps2*(eps2+4)+64)/256;
<a name="l00818"></a>00818 <span class="keywordflow">break</span>;
-<a name="l00819"></a>00819 <span class="keywordflow">default</span>:
-<a name="l00820"></a>00820 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA1_ >= 0 && nA1_ <= 8, <span class="stringliteral">"Bad value of nA1_"</span>);
-<a name="l00821"></a>00821 t = 0;
-<a name="l00822"></a>00822 }
-<a name="l00823"></a>00823 <span class="keywordflow">return</span> (t + eps) / (1 - eps);
-<a name="l00824"></a>00824 }
-<a name="l00825"></a>00825
-<a name="l00826"></a>00826 <span class="comment">// The coefficients C1[l] in the Fourier expansion of B1</span>
-<a name="l00827"></a>00827 <span class="keywordtype">void</span> Geodesic::C1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
-<a name="l00828"></a>00828 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00829"></a>00829 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l00830"></a>00830 d = eps;
-<a name="l00831"></a>00831 <span class="keywordflow">switch</span> (nC1_) {
-<a name="l00832"></a>00832 <span class="keywordflow">case</span> 0:
-<a name="l00833"></a>00833 <span class="keywordflow">break</span>;
-<a name="l00834"></a>00834 <span class="keywordflow">case</span> 1:
-<a name="l00835"></a>00835 c[1] = -d/2;
+<a name="l00819"></a>00819 <span class="keywordflow">case</span> 4:
+<a name="l00820"></a>00820 t = eps2*(eps2*(eps2*(25*eps2+64)+256)+4096)/16384;
+<a name="l00821"></a>00821 <span class="keywordflow">break</span>;
+<a name="l00822"></a>00822 <span class="keywordflow">default</span>:
+<a name="l00823"></a>00823 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA1_ >= 0 && nA1_ <= 8, <span class="stringliteral">"Bad value of nA1_"</span>);
+<a name="l00824"></a>00824 t = 0;
+<a name="l00825"></a>00825 }
+<a name="l00826"></a>00826 <span class="keywordflow">return</span> (t + eps) / (1 - eps);
+<a name="l00827"></a>00827 }
+<a name="l00828"></a>00828
+<a name="l00829"></a>00829 <span class="comment">// The coefficients C1[l] in the Fourier expansion of B1</span>
+<a name="l00830"></a>00830 <span class="keywordtype">void</span> Geodesic::C1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
+<a name="l00831"></a>00831 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00832"></a>00832 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l00833"></a>00833 d = eps;
+<a name="l00834"></a>00834 <span class="keywordflow">switch</span> (nC1_) {
+<a name="l00835"></a>00835 <span class="keywordflow">case</span> 0:
<a name="l00836"></a>00836 <span class="keywordflow">break</span>;
-<a name="l00837"></a>00837 <span class="keywordflow">case</span> 2:
+<a name="l00837"></a>00837 <span class="keywordflow">case</span> 1:
<a name="l00838"></a>00838 c[1] = -d/2;
-<a name="l00839"></a>00839 d *= eps;
-<a name="l00840"></a>00840 c[2] = -d/16;
-<a name="l00841"></a>00841 <span class="keywordflow">break</span>;
-<a name="l00842"></a>00842 <span class="keywordflow">case</span> 3:
-<a name="l00843"></a>00843 c[1] = d*(3*eps2-8)/16;
-<a name="l00844"></a>00844 d *= eps;
-<a name="l00845"></a>00845 c[2] = -d/16;
-<a name="l00846"></a>00846 d *= eps;
-<a name="l00847"></a>00847 c[3] = -d/48;
-<a name="l00848"></a>00848 <span class="keywordflow">break</span>;
-<a name="l00849"></a>00849 <span class="keywordflow">case</span> 4:
-<a name="l00850"></a>00850 c[1] = d*(3*eps2-8)/16;
-<a name="l00851"></a>00851 d *= eps;
-<a name="l00852"></a>00852 c[2] = d*(eps2-2)/32;
-<a name="l00853"></a>00853 d *= eps;
-<a name="l00854"></a>00854 c[3] = -d/48;
-<a name="l00855"></a>00855 d *= eps;
-<a name="l00856"></a>00856 c[4] = -5*d/512;
-<a name="l00857"></a>00857 <span class="keywordflow">break</span>;
-<a name="l00858"></a>00858 <span class="keywordflow">case</span> 5:
-<a name="l00859"></a>00859 c[1] = d*((6-eps2)*eps2-16)/32;
-<a name="l00860"></a>00860 d *= eps;
-<a name="l00861"></a>00861 c[2] = d*(eps2-2)/32;
-<a name="l00862"></a>00862 d *= eps;
-<a name="l00863"></a>00863 c[3] = d*(9*eps2-16)/768;
-<a name="l00864"></a>00864 d *= eps;
-<a name="l00865"></a>00865 c[4] = -5*d/512;
-<a name="l00866"></a>00866 d *= eps;
-<a name="l00867"></a>00867 c[5] = -7*d/1280;
-<a name="l00868"></a>00868 <span class="keywordflow">break</span>;
-<a name="l00869"></a>00869 <span class="keywordflow">case</span> 6:
-<a name="l00870"></a>00870 c[1] = d*((6-eps2)*eps2-16)/32;
-<a name="l00871"></a>00871 d *= eps;
-<a name="l00872"></a>00872 c[2] = d*((64-9*eps2)*eps2-128)/2048;
-<a name="l00873"></a>00873 d *= eps;
-<a name="l00874"></a>00874 c[3] = d*(9*eps2-16)/768;
-<a name="l00875"></a>00875 d *= eps;
-<a name="l00876"></a>00876 c[4] = d*(3*eps2-5)/512;
-<a name="l00877"></a>00877 d *= eps;
-<a name="l00878"></a>00878 c[5] = -7*d/1280;
-<a name="l00879"></a>00879 d *= eps;
-<a name="l00880"></a>00880 c[6] = -7*d/2048;
-<a name="l00881"></a>00881 <span class="keywordflow">break</span>;
-<a name="l00882"></a>00882 <span class="keywordflow">case</span> 7:
-<a name="l00883"></a>00883 c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
-<a name="l00884"></a>00884 d *= eps;
-<a name="l00885"></a>00885 c[2] = d*((64-9*eps2)*eps2-128)/2048;
-<a name="l00886"></a>00886 d *= eps;
-<a name="l00887"></a>00887 c[3] = d*((72-9*eps2)*eps2-128)/6144;
-<a name="l00888"></a>00888 d *= eps;
-<a name="l00889"></a>00889 c[4] = d*(3*eps2-5)/512;
-<a name="l00890"></a>00890 d *= eps;
-<a name="l00891"></a>00891 c[5] = d*(35*eps2-56)/10240;
-<a name="l00892"></a>00892 d *= eps;
-<a name="l00893"></a>00893 c[6] = -7*d/2048;
-<a name="l00894"></a>00894 d *= eps;
-<a name="l00895"></a>00895 c[7] = -33*d/14336;
-<a name="l00896"></a>00896 <span class="keywordflow">break</span>;
-<a name="l00897"></a>00897 <span class="keywordflow">case</span> 8:
-<a name="l00898"></a>00898 c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
-<a name="l00899"></a>00899 d *= eps;
-<a name="l00900"></a>00900 c[2] = d*(eps2*(eps2*(7*eps2-18)+128)-256)/4096;
-<a name="l00901"></a>00901 d *= eps;
-<a name="l00902"></a>00902 c[3] = d*((72-9*eps2)*eps2-128)/6144;
-<a name="l00903"></a>00903 d *= eps;
-<a name="l00904"></a>00904 c[4] = d*((96-11*eps2)*eps2-160)/16384;
-<a name="l00905"></a>00905 d *= eps;
-<a name="l00906"></a>00906 c[5] = d*(35*eps2-56)/10240;
-<a name="l00907"></a>00907 d *= eps;
-<a name="l00908"></a>00908 c[6] = d*(9*eps2-14)/4096;
-<a name="l00909"></a>00909 d *= eps;
-<a name="l00910"></a>00910 c[7] = -33*d/14336;
-<a name="l00911"></a>00911 d *= eps;
-<a name="l00912"></a>00912 c[8] = -429*d/262144;
-<a name="l00913"></a>00913 <span class="keywordflow">break</span>;
-<a name="l00914"></a>00914 <span class="keywordflow">default</span>:
-<a name="l00915"></a>00915 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC1_ >= 0 && nC1_ <= 8, <span class="stringliteral">"Bad value of nC1_"</span>);
-<a name="l00916"></a>00916 }
-<a name="l00917"></a>00917 }
-<a name="l00918"></a>00918
-<a name="l00919"></a>00919 <span class="comment">// The coefficients C1p[l] in the Fourier expansion of B1p</span>
-<a name="l00920"></a>00920 <span class="keywordtype">void</span> Geodesic::C1pf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
-<a name="l00921"></a>00921 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00922"></a>00922 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l00923"></a>00923 d = eps;
-<a name="l00924"></a>00924 <span class="keywordflow">switch</span> (nC1p_) {
-<a name="l00925"></a>00925 <span class="keywordflow">case</span> 0:
-<a name="l00926"></a>00926 <span class="keywordflow">break</span>;
-<a name="l00927"></a>00927 <span class="keywordflow">case</span> 1:
-<a name="l00928"></a>00928 c[1] = d/2;
+<a name="l00839"></a>00839 <span class="keywordflow">break</span>;
+<a name="l00840"></a>00840 <span class="keywordflow">case</span> 2:
+<a name="l00841"></a>00841 c[1] = -d/2;
+<a name="l00842"></a>00842 d *= eps;
+<a name="l00843"></a>00843 c[2] = -d/16;
+<a name="l00844"></a>00844 <span class="keywordflow">break</span>;
+<a name="l00845"></a>00845 <span class="keywordflow">case</span> 3:
+<a name="l00846"></a>00846 c[1] = d*(3*eps2-8)/16;
+<a name="l00847"></a>00847 d *= eps;
+<a name="l00848"></a>00848 c[2] = -d/16;
+<a name="l00849"></a>00849 d *= eps;
+<a name="l00850"></a>00850 c[3] = -d/48;
+<a name="l00851"></a>00851 <span class="keywordflow">break</span>;
+<a name="l00852"></a>00852 <span class="keywordflow">case</span> 4:
+<a name="l00853"></a>00853 c[1] = d*(3*eps2-8)/16;
+<a name="l00854"></a>00854 d *= eps;
+<a name="l00855"></a>00855 c[2] = d*(eps2-2)/32;
+<a name="l00856"></a>00856 d *= eps;
+<a name="l00857"></a>00857 c[3] = -d/48;
+<a name="l00858"></a>00858 d *= eps;
+<a name="l00859"></a>00859 c[4] = -5*d/512;
+<a name="l00860"></a>00860 <span class="keywordflow">break</span>;
+<a name="l00861"></a>00861 <span class="keywordflow">case</span> 5:
+<a name="l00862"></a>00862 c[1] = d*((6-eps2)*eps2-16)/32;
+<a name="l00863"></a>00863 d *= eps;
+<a name="l00864"></a>00864 c[2] = d*(eps2-2)/32;
+<a name="l00865"></a>00865 d *= eps;
+<a name="l00866"></a>00866 c[3] = d*(9*eps2-16)/768;
+<a name="l00867"></a>00867 d *= eps;
+<a name="l00868"></a>00868 c[4] = -5*d/512;
+<a name="l00869"></a>00869 d *= eps;
+<a name="l00870"></a>00870 c[5] = -7*d/1280;
+<a name="l00871"></a>00871 <span class="keywordflow">break</span>;
+<a name="l00872"></a>00872 <span class="keywordflow">case</span> 6:
+<a name="l00873"></a>00873 c[1] = d*((6-eps2)*eps2-16)/32;
+<a name="l00874"></a>00874 d *= eps;
+<a name="l00875"></a>00875 c[2] = d*((64-9*eps2)*eps2-128)/2048;
+<a name="l00876"></a>00876 d *= eps;
+<a name="l00877"></a>00877 c[3] = d*(9*eps2-16)/768;
+<a name="l00878"></a>00878 d *= eps;
+<a name="l00879"></a>00879 c[4] = d*(3*eps2-5)/512;
+<a name="l00880"></a>00880 d *= eps;
+<a name="l00881"></a>00881 c[5] = -7*d/1280;
+<a name="l00882"></a>00882 d *= eps;
+<a name="l00883"></a>00883 c[6] = -7*d/2048;
+<a name="l00884"></a>00884 <span class="keywordflow">break</span>;
+<a name="l00885"></a>00885 <span class="keywordflow">case</span> 7:
+<a name="l00886"></a>00886 c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
+<a name="l00887"></a>00887 d *= eps;
+<a name="l00888"></a>00888 c[2] = d*((64-9*eps2)*eps2-128)/2048;
+<a name="l00889"></a>00889 d *= eps;
+<a name="l00890"></a>00890 c[3] = d*((72-9*eps2)*eps2-128)/6144;
+<a name="l00891"></a>00891 d *= eps;
+<a name="l00892"></a>00892 c[4] = d*(3*eps2-5)/512;
+<a name="l00893"></a>00893 d *= eps;
+<a name="l00894"></a>00894 c[5] = d*(35*eps2-56)/10240;
+<a name="l00895"></a>00895 d *= eps;
+<a name="l00896"></a>00896 c[6] = -7*d/2048;
+<a name="l00897"></a>00897 d *= eps;
+<a name="l00898"></a>00898 c[7] = -33*d/14336;
+<a name="l00899"></a>00899 <span class="keywordflow">break</span>;
+<a name="l00900"></a>00900 <span class="keywordflow">case</span> 8:
+<a name="l00901"></a>00901 c[1] = d*(eps2*(eps2*(19*eps2-64)+384)-1024)/2048;
+<a name="l00902"></a>00902 d *= eps;
+<a name="l00903"></a>00903 c[2] = d*(eps2*(eps2*(7*eps2-18)+128)-256)/4096;
+<a name="l00904"></a>00904 d *= eps;
+<a name="l00905"></a>00905 c[3] = d*((72-9*eps2)*eps2-128)/6144;
+<a name="l00906"></a>00906 d *= eps;
+<a name="l00907"></a>00907 c[4] = d*((96-11*eps2)*eps2-160)/16384;
+<a name="l00908"></a>00908 d *= eps;
+<a name="l00909"></a>00909 c[5] = d*(35*eps2-56)/10240;
+<a name="l00910"></a>00910 d *= eps;
+<a name="l00911"></a>00911 c[6] = d*(9*eps2-14)/4096;
+<a name="l00912"></a>00912 d *= eps;
+<a name="l00913"></a>00913 c[7] = -33*d/14336;
+<a name="l00914"></a>00914 d *= eps;
+<a name="l00915"></a>00915 c[8] = -429*d/262144;
+<a name="l00916"></a>00916 <span class="keywordflow">break</span>;
+<a name="l00917"></a>00917 <span class="keywordflow">default</span>:
+<a name="l00918"></a>00918 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC1_ >= 0 && nC1_ <= 8, <span class="stringliteral">"Bad value of nC1_"</span>);
+<a name="l00919"></a>00919 }
+<a name="l00920"></a>00920 }
+<a name="l00921"></a>00921
+<a name="l00922"></a>00922 <span class="comment">// The coefficients C1p[l] in the Fourier expansion of B1p</span>
+<a name="l00923"></a>00923 <span class="keywordtype">void</span> Geodesic::C1pf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
+<a name="l00924"></a>00924 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00925"></a>00925 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l00926"></a>00926 d = eps;
+<a name="l00927"></a>00927 <span class="keywordflow">switch</span> (nC1p_) {
+<a name="l00928"></a>00928 <span class="keywordflow">case</span> 0:
<a name="l00929"></a>00929 <span class="keywordflow">break</span>;
-<a name="l00930"></a>00930 <span class="keywordflow">case</span> 2:
+<a name="l00930"></a>00930 <span class="keywordflow">case</span> 1:
<a name="l00931"></a>00931 c[1] = d/2;
-<a name="l00932"></a>00932 d *= eps;
-<a name="l00933"></a>00933 c[2] = 5*d/16;
-<a name="l00934"></a>00934 <span class="keywordflow">break</span>;
-<a name="l00935"></a>00935 <span class="keywordflow">case</span> 3:
-<a name="l00936"></a>00936 c[1] = d*(16-9*eps2)/32;
-<a name="l00937"></a>00937 d *= eps;
-<a name="l00938"></a>00938 c[2] = 5*d/16;
-<a name="l00939"></a>00939 d *= eps;
-<a name="l00940"></a>00940 c[3] = 29*d/96;
-<a name="l00941"></a>00941 <span class="keywordflow">break</span>;
-<a name="l00942"></a>00942 <span class="keywordflow">case</span> 4:
-<a name="l00943"></a>00943 c[1] = d*(16-9*eps2)/32;
-<a name="l00944"></a>00944 d *= eps;
-<a name="l00945"></a>00945 c[2] = d*(30-37*eps2)/96;
-<a name="l00946"></a>00946 d *= eps;
-<a name="l00947"></a>00947 c[3] = 29*d/96;
-<a name="l00948"></a>00948 d *= eps;
-<a name="l00949"></a>00949 c[4] = 539*d/1536;
-<a name="l00950"></a>00950 <span class="keywordflow">break</span>;
-<a name="l00951"></a>00951 <span class="keywordflow">case</span> 5:
-<a name="l00952"></a>00952 c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-<a name="l00953"></a>00953 d *= eps;
-<a name="l00954"></a>00954 c[2] = d*(30-37*eps2)/96;
-<a name="l00955"></a>00955 d *= eps;
-<a name="l00956"></a>00956 c[3] = d*(116-225*eps2)/384;
-<a name="l00957"></a>00957 d *= eps;
-<a name="l00958"></a>00958 c[4] = 539*d/1536;
-<a name="l00959"></a>00959 d *= eps;
-<a name="l00960"></a>00960 c[5] = 3467*d/7680;
-<a name="l00961"></a>00961 <span class="keywordflow">break</span>;
-<a name="l00962"></a>00962 <span class="keywordflow">case</span> 6:
-<a name="l00963"></a>00963 c[1] = d*(eps2*(205*eps2-432)+768)/1536;
-<a name="l00964"></a>00964 d *= eps;
-<a name="l00965"></a>00965 c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-<a name="l00966"></a>00966 d *= eps;
-<a name="l00967"></a>00967 c[3] = d*(116-225*eps2)/384;
-<a name="l00968"></a>00968 d *= eps;
-<a name="l00969"></a>00969 c[4] = d*(2695-7173*eps2)/7680;
-<a name="l00970"></a>00970 d *= eps;
-<a name="l00971"></a>00971 c[5] = 3467*d/7680;
-<a name="l00972"></a>00972 d *= eps;
-<a name="l00973"></a>00973 c[6] = 38081*d/61440;
-<a name="l00974"></a>00974 <span class="keywordflow">break</span>;
-<a name="l00975"></a>00975 <span class="keywordflow">case</span> 7:
-<a name="l00976"></a>00976 c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
-<a name="l00977"></a>00977 d *= eps;
-<a name="l00978"></a>00978 c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
-<a name="l00979"></a>00979 d *= eps;
-<a name="l00980"></a>00980 c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
-<a name="l00981"></a>00981 d *= eps;
-<a name="l00982"></a>00982 c[4] = d*(2695-7173*eps2)/7680;
-<a name="l00983"></a>00983 d *= eps;
-<a name="l00984"></a>00984 c[5] = d*(41604-141115*eps2)/92160;
-<a name="l00985"></a>00985 d *= eps;
-<a name="l00986"></a>00986 c[6] = 38081*d/61440;
-<a name="l00987"></a>00987 d *= eps;
-<a name="l00988"></a>00988 c[7] = 459485*d/516096;
-<a name="l00989"></a>00989 <span class="keywordflow">break</span>;
-<a name="l00990"></a>00990 <span class="keywordflow">case</span> 8:
-<a name="l00991"></a>00991 c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
-<a name="l00992"></a>00992 d *= eps;
-<a name="l00993"></a>00993 c[2] = d*(eps2*((120150-86171*eps2)*eps2-142080)+115200)/368640;
-<a name="l00994"></a>00994 d *= eps;
-<a name="l00995"></a>00995 c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
-<a name="l00996"></a>00996 d *= eps;
-<a name="l00997"></a>00997 c[4] = d*(eps2*(1082857*eps2-688608)+258720)/737280;
-<a name="l00998"></a>00998 d *= eps;
-<a name="l00999"></a>00999 c[5] = d*(41604-141115*eps2)/92160;
-<a name="l01000"></a>01000 d *= eps;
-<a name="l01001"></a>01001 c[6] = d*(533134-2200311*eps2)/860160;
-<a name="l01002"></a>01002 d *= eps;
-<a name="l01003"></a>01003 c[7] = 459485*d/516096;
-<a name="l01004"></a>01004 d *= eps;
-<a name="l01005"></a>01005 c[8] = 109167851*d/82575360;
-<a name="l01006"></a>01006 <span class="keywordflow">break</span>;
-<a name="l01007"></a>01007 <span class="keywordflow">default</span>:
-<a name="l01008"></a>01008 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC1p_ >= 0 && nC1p_ <= 8, <span class="stringliteral">"Bad value of nC1p_"</span>);
-<a name="l01009"></a>01009 }
-<a name="l01010"></a>01010 }
-<a name="l01011"></a>01011
-<a name="l01012"></a>01012 <span class="comment">// The scale factor A2-1 = mean value of I2-1</span>
-<a name="l01013"></a>01013 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geodesic::A2m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>() {
-<a name="l01014"></a>01014 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l01015"></a>01015 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l01016"></a>01016 t;
-<a name="l01017"></a>01017 <span class="keywordflow">switch</span> (nA2_/2) {
-<a name="l01018"></a>01018 <span class="keywordflow">case</span> 0:
-<a name="l01019"></a>01019 t = 0;
-<a name="l01020"></a>01020 <span class="keywordflow">break</span>;
-<a name="l01021"></a>01021 <span class="keywordflow">case</span> 1:
-<a name="l01022"></a>01022 t = eps2/4;
+<a name="l00932"></a>00932 <span class="keywordflow">break</span>;
+<a name="l00933"></a>00933 <span class="keywordflow">case</span> 2:
+<a name="l00934"></a>00934 c[1] = d/2;
+<a name="l00935"></a>00935 d *= eps;
+<a name="l00936"></a>00936 c[2] = 5*d/16;
+<a name="l00937"></a>00937 <span class="keywordflow">break</span>;
+<a name="l00938"></a>00938 <span class="keywordflow">case</span> 3:
+<a name="l00939"></a>00939 c[1] = d*(16-9*eps2)/32;
+<a name="l00940"></a>00940 d *= eps;
+<a name="l00941"></a>00941 c[2] = 5*d/16;
+<a name="l00942"></a>00942 d *= eps;
+<a name="l00943"></a>00943 c[3] = 29*d/96;
+<a name="l00944"></a>00944 <span class="keywordflow">break</span>;
+<a name="l00945"></a>00945 <span class="keywordflow">case</span> 4:
+<a name="l00946"></a>00946 c[1] = d*(16-9*eps2)/32;
+<a name="l00947"></a>00947 d *= eps;
+<a name="l00948"></a>00948 c[2] = d*(30-37*eps2)/96;
+<a name="l00949"></a>00949 d *= eps;
+<a name="l00950"></a>00950 c[3] = 29*d/96;
+<a name="l00951"></a>00951 d *= eps;
+<a name="l00952"></a>00952 c[4] = 539*d/1536;
+<a name="l00953"></a>00953 <span class="keywordflow">break</span>;
+<a name="l00954"></a>00954 <span class="keywordflow">case</span> 5:
+<a name="l00955"></a>00955 c[1] = d*(eps2*(205*eps2-432)+768)/1536;
+<a name="l00956"></a>00956 d *= eps;
+<a name="l00957"></a>00957 c[2] = d*(30-37*eps2)/96;
+<a name="l00958"></a>00958 d *= eps;
+<a name="l00959"></a>00959 c[3] = d*(116-225*eps2)/384;
+<a name="l00960"></a>00960 d *= eps;
+<a name="l00961"></a>00961 c[4] = 539*d/1536;
+<a name="l00962"></a>00962 d *= eps;
+<a name="l00963"></a>00963 c[5] = 3467*d/7680;
+<a name="l00964"></a>00964 <span class="keywordflow">break</span>;
+<a name="l00965"></a>00965 <span class="keywordflow">case</span> 6:
+<a name="l00966"></a>00966 c[1] = d*(eps2*(205*eps2-432)+768)/1536;
+<a name="l00967"></a>00967 d *= eps;
+<a name="l00968"></a>00968 c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
+<a name="l00969"></a>00969 d *= eps;
+<a name="l00970"></a>00970 c[3] = d*(116-225*eps2)/384;
+<a name="l00971"></a>00971 d *= eps;
+<a name="l00972"></a>00972 c[4] = d*(2695-7173*eps2)/7680;
+<a name="l00973"></a>00973 d *= eps;
+<a name="l00974"></a>00974 c[5] = 3467*d/7680;
+<a name="l00975"></a>00975 d *= eps;
+<a name="l00976"></a>00976 c[6] = 38081*d/61440;
+<a name="l00977"></a>00977 <span class="keywordflow">break</span>;
+<a name="l00978"></a>00978 <span class="keywordflow">case</span> 7:
+<a name="l00979"></a>00979 c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
+<a name="l00980"></a>00980 d *= eps;
+<a name="l00981"></a>00981 c[2] = d*(eps2*(4005*eps2-4736)+3840)/12288;
+<a name="l00982"></a>00982 d *= eps;
+<a name="l00983"></a>00983 c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
+<a name="l00984"></a>00984 d *= eps;
+<a name="l00985"></a>00985 c[4] = d*(2695-7173*eps2)/7680;
+<a name="l00986"></a>00986 d *= eps;
+<a name="l00987"></a>00987 c[5] = d*(41604-141115*eps2)/92160;
+<a name="l00988"></a>00988 d *= eps;
+<a name="l00989"></a>00989 c[6] = 38081*d/61440;
+<a name="l00990"></a>00990 d *= eps;
+<a name="l00991"></a>00991 c[7] = 459485*d/516096;
+<a name="l00992"></a>00992 <span class="keywordflow">break</span>;
+<a name="l00993"></a>00993 <span class="keywordflow">case</span> 8:
+<a name="l00994"></a>00994 c[1] = d*(eps2*((9840-4879*eps2)*eps2-20736)+36864)/73728;
+<a name="l00995"></a>00995 d *= eps;
+<a name="l00996"></a>00996 c[2] = d*(eps2*((120150-86171*eps2)*eps2-142080)+115200)/368640;
+<a name="l00997"></a>00997 d *= eps;
+<a name="l00998"></a>00998 c[3] = d*(eps2*(8703*eps2-7200)+3712)/12288;
+<a name="l00999"></a>00999 d *= eps;
+<a name="l01000"></a>01000 c[4] = d*(eps2*(1082857*eps2-688608)+258720)/737280;
+<a name="l01001"></a>01001 d *= eps;
+<a name="l01002"></a>01002 c[5] = d*(41604-141115*eps2)/92160;
+<a name="l01003"></a>01003 d *= eps;
+<a name="l01004"></a>01004 c[6] = d*(533134-2200311*eps2)/860160;
+<a name="l01005"></a>01005 d *= eps;
+<a name="l01006"></a>01006 c[7] = 459485*d/516096;
+<a name="l01007"></a>01007 d *= eps;
+<a name="l01008"></a>01008 c[8] = 109167851*d/82575360;
+<a name="l01009"></a>01009 <span class="keywordflow">break</span>;
+<a name="l01010"></a>01010 <span class="keywordflow">default</span>:
+<a name="l01011"></a>01011 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC1p_ >= 0 && nC1p_ <= 8, <span class="stringliteral">"Bad value of nC1p_"</span>);
+<a name="l01012"></a>01012 }
+<a name="l01013"></a>01013 }
+<a name="l01014"></a>01014
+<a name="l01015"></a>01015 <span class="comment">// The scale factor A2-1 = mean value of I2-1</span>
+<a name="l01016"></a>01016 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geodesic::A2m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>() {
+<a name="l01017"></a>01017 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l01018"></a>01018 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l01019"></a>01019 t;
+<a name="l01020"></a>01020 <span class="keywordflow">switch</span> (nA2_/2) {
+<a name="l01021"></a>01021 <span class="keywordflow">case</span> 0:
+<a name="l01022"></a>01022 t = 0;
<a name="l01023"></a>01023 <span class="keywordflow">break</span>;
-<a name="l01024"></a>01024 <span class="keywordflow">case</span> 2:
-<a name="l01025"></a>01025 t = eps2*(9*eps2+16)/64;
+<a name="l01024"></a>01024 <span class="keywordflow">case</span> 1:
+<a name="l01025"></a>01025 t = eps2/4;
<a name="l01026"></a>01026 <span class="keywordflow">break</span>;
-<a name="l01027"></a>01027 <span class="keywordflow">case</span> 3:
-<a name="l01028"></a>01028 t = eps2*(eps2*(25*eps2+36)+64)/256;
+<a name="l01027"></a>01027 <span class="keywordflow">case</span> 2:
+<a name="l01028"></a>01028 t = eps2*(9*eps2+16)/64;
<a name="l01029"></a>01029 <span class="keywordflow">break</span>;
-<a name="l01030"></a>01030 <span class="keywordflow">case</span> 4:
-<a name="l01031"></a>01031 t = eps2*(eps2*(eps2*(1225*eps2+1600)+2304)+4096)/16384;
+<a name="l01030"></a>01030 <span class="keywordflow">case</span> 3:
+<a name="l01031"></a>01031 t = eps2*(eps2*(25*eps2+36)+64)/256;
<a name="l01032"></a>01032 <span class="keywordflow">break</span>;
-<a name="l01033"></a>01033 <span class="keywordflow">default</span>:
-<a name="l01034"></a>01034 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA2_ >= 0 && nA2_ <= 8, <span class="stringliteral">"Bad value of nA2_"</span>);
-<a name="l01035"></a>01035 t = 0;
-<a name="l01036"></a>01036 }
-<a name="l01037"></a>01037 <span class="keywordflow">return</span> t * (1 - eps) - eps;
-<a name="l01038"></a>01038 }
-<a name="l01039"></a>01039
-<a name="l01040"></a>01040 <span class="comment">// The coefficients C2[l] in the Fourier expansion of B2</span>
-<a name="l01041"></a>01041 <span class="keywordtype">void</span> Geodesic::C2f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
-<a name="l01042"></a>01042 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l01043"></a>01043 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(eps),
-<a name="l01044"></a>01044 d = eps;
-<a name="l01045"></a>01045 <span class="keywordflow">switch</span> (nC2_) {
-<a name="l01046"></a>01046 <span class="keywordflow">case</span> 0:
-<a name="l01047"></a>01047 <span class="keywordflow">break</span>;
-<a name="l01048"></a>01048 <span class="keywordflow">case</span> 1:
-<a name="l01049"></a>01049 c[1] = d/2;
+<a name="l01033"></a>01033 <span class="keywordflow">case</span> 4:
+<a name="l01034"></a>01034 t = eps2*(eps2*(eps2*(1225*eps2+1600)+2304)+4096)/16384;
+<a name="l01035"></a>01035 <span class="keywordflow">break</span>;
+<a name="l01036"></a>01036 <span class="keywordflow">default</span>:
+<a name="l01037"></a>01037 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA2_ >= 0 && nA2_ <= 8, <span class="stringliteral">"Bad value of nA2_"</span>);
+<a name="l01038"></a>01038 t = 0;
+<a name="l01039"></a>01039 }
+<a name="l01040"></a>01040 <span class="keywordflow">return</span> t * (1 - eps) - eps;
+<a name="l01041"></a>01041 }
+<a name="l01042"></a>01042
+<a name="l01043"></a>01043 <span class="comment">// The coefficients C2[l] in the Fourier expansion of B2</span>
+<a name="l01044"></a>01044 <span class="keywordtype">void</span> Geodesic::C2f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>() {
+<a name="l01045"></a>01045 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l01046"></a>01046 eps2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(eps),
+<a name="l01047"></a>01047 d = eps;
+<a name="l01048"></a>01048 <span class="keywordflow">switch</span> (nC2_) {
+<a name="l01049"></a>01049 <span class="keywordflow">case</span> 0:
<a name="l01050"></a>01050 <span class="keywordflow">break</span>;
-<a name="l01051"></a>01051 <span class="keywordflow">case</span> 2:
+<a name="l01051"></a>01051 <span class="keywordflow">case</span> 1:
<a name="l01052"></a>01052 c[1] = d/2;
-<a name="l01053"></a>01053 d *= eps;
-<a name="l01054"></a>01054 c[2] = 3*d/16;
-<a name="l01055"></a>01055 <span class="keywordflow">break</span>;
-<a name="l01056"></a>01056 <span class="keywordflow">case</span> 3:
-<a name="l01057"></a>01057 c[1] = d*(eps2+8)/16;
-<a name="l01058"></a>01058 d *= eps;
-<a name="l01059"></a>01059 c[2] = 3*d/16;
-<a name="l01060"></a>01060 d *= eps;
-<a name="l01061"></a>01061 c[3] = 5*d/48;
-<a name="l01062"></a>01062 <span class="keywordflow">break</span>;
-<a name="l01063"></a>01063 <span class="keywordflow">case</span> 4:
-<a name="l01064"></a>01064 c[1] = d*(eps2+8)/16;
-<a name="l01065"></a>01065 d *= eps;
-<a name="l01066"></a>01066 c[2] = d*(eps2+6)/32;
-<a name="l01067"></a>01067 d *= eps;
-<a name="l01068"></a>01068 c[3] = 5*d/48;
-<a name="l01069"></a>01069 d *= eps;
-<a name="l01070"></a>01070 c[4] = 35*d/512;
-<a name="l01071"></a>01071 <span class="keywordflow">break</span>;
-<a name="l01072"></a>01072 <span class="keywordflow">case</span> 5:
-<a name="l01073"></a>01073 c[1] = d*(eps2*(eps2+2)+16)/32;
-<a name="l01074"></a>01074 d *= eps;
-<a name="l01075"></a>01075 c[2] = d*(eps2+6)/32;
-<a name="l01076"></a>01076 d *= eps;
-<a name="l01077"></a>01077 c[3] = d*(15*eps2+80)/768;
-<a name="l01078"></a>01078 d *= eps;
-<a name="l01079"></a>01079 c[4] = 35*d/512;
-<a name="l01080"></a>01080 d *= eps;
-<a name="l01081"></a>01081 c[5] = 63*d/1280;
-<a name="l01082"></a>01082 <span class="keywordflow">break</span>;
-<a name="l01083"></a>01083 <span class="keywordflow">case</span> 6:
-<a name="l01084"></a>01084 c[1] = d*(eps2*(eps2+2)+16)/32;
-<a name="l01085"></a>01085 d *= eps;
-<a name="l01086"></a>01086 c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-<a name="l01087"></a>01087 d *= eps;
-<a name="l01088"></a>01088 c[3] = d*(15*eps2+80)/768;
-<a name="l01089"></a>01089 d *= eps;
-<a name="l01090"></a>01090 c[4] = d*(7*eps2+35)/512;
-<a name="l01091"></a>01091 d *= eps;
-<a name="l01092"></a>01092 c[5] = 63*d/1280;
-<a name="l01093"></a>01093 d *= eps;
-<a name="l01094"></a>01094 c[6] = 77*d/2048;
-<a name="l01095"></a>01095 <span class="keywordflow">break</span>;
-<a name="l01096"></a>01096 <span class="keywordflow">case</span> 7:
-<a name="l01097"></a>01097 c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
-<a name="l01098"></a>01098 d *= eps;
-<a name="l01099"></a>01099 c[2] = d*(eps2*(35*eps2+64)+384)/2048;
-<a name="l01100"></a>01100 d *= eps;
-<a name="l01101"></a>01101 c[3] = d*(eps2*(69*eps2+120)+640)/6144;
-<a name="l01102"></a>01102 d *= eps;
-<a name="l01103"></a>01103 c[4] = d*(7*eps2+35)/512;
-<a name="l01104"></a>01104 d *= eps;
-<a name="l01105"></a>01105 c[5] = d*(105*eps2+504)/10240;
-<a name="l01106"></a>01106 d *= eps;
-<a name="l01107"></a>01107 c[6] = 77*d/2048;
-<a name="l01108"></a>01108 d *= eps;
-<a name="l01109"></a>01109 c[7] = 429*d/14336;
-<a name="l01110"></a>01110 <span class="keywordflow">break</span>;
-<a name="l01111"></a>01111 <span class="keywordflow">case</span> 8:
-<a name="l01112"></a>01112 c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
-<a name="l01113"></a>01113 d *= eps;
-<a name="l01114"></a>01114 c[2] = d*(eps2*(eps2*(47*eps2+70)+128)+768)/4096;
-<a name="l01115"></a>01115 d *= eps;
-<a name="l01116"></a>01116 c[3] = d*(eps2*(69*eps2+120)+640)/6144;
-<a name="l01117"></a>01117 d *= eps;
-<a name="l01118"></a>01118 c[4] = d*(eps2*(133*eps2+224)+1120)/16384;
-<a name="l01119"></a>01119 d *= eps;
-<a name="l01120"></a>01120 c[5] = d*(105*eps2+504)/10240;
-<a name="l01121"></a>01121 d *= eps;
-<a name="l01122"></a>01122 c[6] = d*(33*eps2+154)/4096;
-<a name="l01123"></a>01123 d *= eps;
-<a name="l01124"></a>01124 c[7] = 429*d/14336;
-<a name="l01125"></a>01125 d *= eps;
-<a name="l01126"></a>01126 c[8] = 6435*d/262144;
-<a name="l01127"></a>01127 <span class="keywordflow">break</span>;
-<a name="l01128"></a>01128 <span class="keywordflow">default</span>:
-<a name="l01129"></a>01129 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC2_ >= 0 && nC2_ <= 8, <span class="stringliteral">"Bad value of nC2_"</span>);
-<a name="l01130"></a>01130 }
-<a name="l01131"></a>01131 }
-<a name="l01132"></a>01132
-<a name="l01133"></a>01133 <span class="comment">// The scale factor A3 = mean value of I3</span>
-<a name="l01134"></a>01134 <span class="keywordtype">void</span> Geodesic::A3coeff() throw() {
-<a name="l01135"></a>01135 <span class="keywordflow">switch</span> (nA3_) {
-<a name="l01136"></a>01136 <span class="keywordflow">case</span> 0:
-<a name="l01137"></a>01137 <span class="keywordflow">break</span>;
-<a name="l01138"></a>01138 <span class="keywordflow">case</span> 1:
-<a name="l01139"></a>01139 _A3x[0] = 1;
+<a name="l01053"></a>01053 <span class="keywordflow">break</span>;
+<a name="l01054"></a>01054 <span class="keywordflow">case</span> 2:
+<a name="l01055"></a>01055 c[1] = d/2;
+<a name="l01056"></a>01056 d *= eps;
+<a name="l01057"></a>01057 c[2] = 3*d/16;
+<a name="l01058"></a>01058 <span class="keywordflow">break</span>;
+<a name="l01059"></a>01059 <span class="keywordflow">case</span> 3:
+<a name="l01060"></a>01060 c[1] = d*(eps2+8)/16;
+<a name="l01061"></a>01061 d *= eps;
+<a name="l01062"></a>01062 c[2] = 3*d/16;
+<a name="l01063"></a>01063 d *= eps;
+<a name="l01064"></a>01064 c[3] = 5*d/48;
+<a name="l01065"></a>01065 <span class="keywordflow">break</span>;
+<a name="l01066"></a>01066 <span class="keywordflow">case</span> 4:
+<a name="l01067"></a>01067 c[1] = d*(eps2+8)/16;
+<a name="l01068"></a>01068 d *= eps;
+<a name="l01069"></a>01069 c[2] = d*(eps2+6)/32;
+<a name="l01070"></a>01070 d *= eps;
+<a name="l01071"></a>01071 c[3] = 5*d/48;
+<a name="l01072"></a>01072 d *= eps;
+<a name="l01073"></a>01073 c[4] = 35*d/512;
+<a name="l01074"></a>01074 <span class="keywordflow">break</span>;
+<a name="l01075"></a>01075 <span class="keywordflow">case</span> 5:
+<a name="l01076"></a>01076 c[1] = d*(eps2*(eps2+2)+16)/32;
+<a name="l01077"></a>01077 d *= eps;
+<a name="l01078"></a>01078 c[2] = d*(eps2+6)/32;
+<a name="l01079"></a>01079 d *= eps;
+<a name="l01080"></a>01080 c[3] = d*(15*eps2+80)/768;
+<a name="l01081"></a>01081 d *= eps;
+<a name="l01082"></a>01082 c[4] = 35*d/512;
+<a name="l01083"></a>01083 d *= eps;
+<a name="l01084"></a>01084 c[5] = 63*d/1280;
+<a name="l01085"></a>01085 <span class="keywordflow">break</span>;
+<a name="l01086"></a>01086 <span class="keywordflow">case</span> 6:
+<a name="l01087"></a>01087 c[1] = d*(eps2*(eps2+2)+16)/32;
+<a name="l01088"></a>01088 d *= eps;
+<a name="l01089"></a>01089 c[2] = d*(eps2*(35*eps2+64)+384)/2048;
+<a name="l01090"></a>01090 d *= eps;
+<a name="l01091"></a>01091 c[3] = d*(15*eps2+80)/768;
+<a name="l01092"></a>01092 d *= eps;
+<a name="l01093"></a>01093 c[4] = d*(7*eps2+35)/512;
+<a name="l01094"></a>01094 d *= eps;
+<a name="l01095"></a>01095 c[5] = 63*d/1280;
+<a name="l01096"></a>01096 d *= eps;
+<a name="l01097"></a>01097 c[6] = 77*d/2048;
+<a name="l01098"></a>01098 <span class="keywordflow">break</span>;
+<a name="l01099"></a>01099 <span class="keywordflow">case</span> 7:
+<a name="l01100"></a>01100 c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
+<a name="l01101"></a>01101 d *= eps;
+<a name="l01102"></a>01102 c[2] = d*(eps2*(35*eps2+64)+384)/2048;
+<a name="l01103"></a>01103 d *= eps;
+<a name="l01104"></a>01104 c[3] = d*(eps2*(69*eps2+120)+640)/6144;
+<a name="l01105"></a>01105 d *= eps;
+<a name="l01106"></a>01106 c[4] = d*(7*eps2+35)/512;
+<a name="l01107"></a>01107 d *= eps;
+<a name="l01108"></a>01108 c[5] = d*(105*eps2+504)/10240;
+<a name="l01109"></a>01109 d *= eps;
+<a name="l01110"></a>01110 c[6] = 77*d/2048;
+<a name="l01111"></a>01111 d *= eps;
+<a name="l01112"></a>01112 c[7] = 429*d/14336;
+<a name="l01113"></a>01113 <span class="keywordflow">break</span>;
+<a name="l01114"></a>01114 <span class="keywordflow">case</span> 8:
+<a name="l01115"></a>01115 c[1] = d*(eps2*(eps2*(41*eps2+64)+128)+1024)/2048;
+<a name="l01116"></a>01116 d *= eps;
+<a name="l01117"></a>01117 c[2] = d*(eps2*(eps2*(47*eps2+70)+128)+768)/4096;
+<a name="l01118"></a>01118 d *= eps;
+<a name="l01119"></a>01119 c[3] = d*(eps2*(69*eps2+120)+640)/6144;
+<a name="l01120"></a>01120 d *= eps;
+<a name="l01121"></a>01121 c[4] = d*(eps2*(133*eps2+224)+1120)/16384;
+<a name="l01122"></a>01122 d *= eps;
+<a name="l01123"></a>01123 c[5] = d*(105*eps2+504)/10240;
+<a name="l01124"></a>01124 d *= eps;
+<a name="l01125"></a>01125 c[6] = d*(33*eps2+154)/4096;
+<a name="l01126"></a>01126 d *= eps;
+<a name="l01127"></a>01127 c[7] = 429*d/14336;
+<a name="l01128"></a>01128 d *= eps;
+<a name="l01129"></a>01129 c[8] = 6435*d/262144;
+<a name="l01130"></a>01130 <span class="keywordflow">break</span>;
+<a name="l01131"></a>01131 <span class="keywordflow">default</span>:
+<a name="l01132"></a>01132 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC2_ >= 0 && nC2_ <= 8, <span class="stringliteral">"Bad value of nC2_"</span>);
+<a name="l01133"></a>01133 }
+<a name="l01134"></a>01134 }
+<a name="l01135"></a>01135
+<a name="l01136"></a>01136 <span class="comment">// The scale factor A3 = mean value of I3</span>
+<a name="l01137"></a>01137 <span class="keywordtype">void</span> Geodesic::A3coeff() throw() {
+<a name="l01138"></a>01138 <span class="keywordflow">switch</span> (nA3_) {
+<a name="l01139"></a>01139 <span class="keywordflow">case</span> 0:
<a name="l01140"></a>01140 <span class="keywordflow">break</span>;
-<a name="l01141"></a>01141 <span class="keywordflow">case</span> 2:
+<a name="l01141"></a>01141 <span class="keywordflow">case</span> 1:
<a name="l01142"></a>01142 _A3x[0] = 1;
-<a name="l01143"></a>01143 _A3x[1] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2);
-<a name="l01144"></a>01144 <span class="keywordflow">break</span>;
-<a name="l01145"></a>01145 <span class="keywordflow">case</span> 3:
-<a name="l01146"></a>01146 _A3x[0] = 1;
-<a name="l01147"></a>01147 _A3x[1] = (_n-1)/2;
-<a name="l01148"></a>01148 _A3x[2] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4);
-<a name="l01149"></a>01149 <span class="keywordflow">break</span>;
-<a name="l01150"></a>01150 <span class="keywordflow">case</span> 4:
-<a name="l01151"></a>01151 _A3x[0] = 1;
-<a name="l01152"></a>01152 _A3x[1] = (_n-1)/2;
-<a name="l01153"></a>01153 _A3x[2] = (-_n-2)/8;
-<a name="l01154"></a>01154 _A3x[3] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16);
-<a name="l01155"></a>01155 <span class="keywordflow">break</span>;
-<a name="l01156"></a>01156 <span class="keywordflow">case</span> 5:
-<a name="l01157"></a>01157 _A3x[0] = 1;
-<a name="l01158"></a>01158 _A3x[1] = (_n-1)/2;
-<a name="l01159"></a>01159 _A3x[2] = (_n*(3*_n-1)-2)/8;
-<a name="l01160"></a>01160 _A3x[3] = (-3*_n-1)/16;
-<a name="l01161"></a>01161 _A3x[4] = -3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
-<a name="l01162"></a>01162 <span class="keywordflow">break</span>;
-<a name="l01163"></a>01163 <span class="keywordflow">case</span> 6:
-<a name="l01164"></a>01164 _A3x[0] = 1;
-<a name="l01165"></a>01165 _A3x[1] = (_n-1)/2;
-<a name="l01166"></a>01166 _A3x[2] = (_n*(3*_n-1)-2)/8;
-<a name="l01167"></a>01167 _A3x[3] = ((-_n-3)*_n-1)/16;
-<a name="l01168"></a>01168 _A3x[4] = (-2*_n-3)/64;
-<a name="l01169"></a>01169 _A3x[5] = -3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01170"></a>01170 <span class="keywordflow">break</span>;
-<a name="l01171"></a>01171 <span class="keywordflow">case</span> 7:
-<a name="l01172"></a>01172 _A3x[0] = 1;
-<a name="l01173"></a>01173 _A3x[1] = (_n-1)/2;
-<a name="l01174"></a>01174 _A3x[2] = (_n*(3*_n-1)-2)/8;
-<a name="l01175"></a>01175 _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
-<a name="l01176"></a>01176 _A3x[4] = ((-10*_n-2)*_n-3)/64;
-<a name="l01177"></a>01177 _A3x[5] = (-5*_n-3)/128;
-<a name="l01178"></a>01178 _A3x[6] = -5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
-<a name="l01179"></a>01179 <span class="keywordflow">break</span>;
-<a name="l01180"></a>01180 <span class="keywordflow">case</span> 8:
-<a name="l01181"></a>01181 _A3x[0] = 1;
-<a name="l01182"></a>01182 _A3x[1] = (_n-1)/2;
-<a name="l01183"></a>01183 _A3x[2] = (_n*(3*_n-1)-2)/8;
-<a name="l01184"></a>01184 _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
-<a name="l01185"></a>01185 _A3x[4] = (_n*((-5*_n-20)*_n-4)-6)/128;
-<a name="l01186"></a>01186 _A3x[5] = ((-5*_n-10)*_n-6)/256;
-<a name="l01187"></a>01187 _A3x[6] = (-15*_n-20)/1024;
-<a name="l01188"></a>01188 _A3x[7] = -25/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
-<a name="l01189"></a>01189 <span class="keywordflow">break</span>;
-<a name="l01190"></a>01190 <span class="keywordflow">default</span>:
-<a name="l01191"></a>01191 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA3_ >= 0 && nA3_ <= 8, <span class="stringliteral">"Bad value of nA3_"</span>);
-<a name="l01192"></a>01192 }
-<a name="l01193"></a>01193 }
-<a name="l01194"></a>01194
-<a name="l01195"></a>01195 <span class="comment">// The coefficients C3[l] in the Fourier expansion of B3</span>
-<a name="l01196"></a>01196 <span class="keywordtype">void</span> Geodesic::C3coeff() throw() {
-<a name="l01197"></a>01197 <span class="keywordflow">switch</span> (nC3_) {
-<a name="l01198"></a>01198 <span class="keywordflow">case</span> 0:
-<a name="l01199"></a>01199 <span class="keywordflow">break</span>;
-<a name="l01200"></a>01200 <span class="keywordflow">case</span> 1:
-<a name="l01201"></a>01201 <span class="keywordflow">break</span>;
-<a name="l01202"></a>01202 <span class="keywordflow">case</span> 2:
-<a name="l01203"></a>01203 _C3x[0] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4);
+<a name="l01143"></a>01143 <span class="keywordflow">break</span>;
+<a name="l01144"></a>01144 <span class="keywordflow">case</span> 2:
+<a name="l01145"></a>01145 _A3x[0] = 1;
+<a name="l01146"></a>01146 _A3x[1] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2);
+<a name="l01147"></a>01147 <span class="keywordflow">break</span>;
+<a name="l01148"></a>01148 <span class="keywordflow">case</span> 3:
+<a name="l01149"></a>01149 _A3x[0] = 1;
+<a name="l01150"></a>01150 _A3x[1] = (_n-1)/2;
+<a name="l01151"></a>01151 _A3x[2] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4);
+<a name="l01152"></a>01152 <span class="keywordflow">break</span>;
+<a name="l01153"></a>01153 <span class="keywordflow">case</span> 4:
+<a name="l01154"></a>01154 _A3x[0] = 1;
+<a name="l01155"></a>01155 _A3x[1] = (_n-1)/2;
+<a name="l01156"></a>01156 _A3x[2] = (-_n-2)/8;
+<a name="l01157"></a>01157 _A3x[3] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16);
+<a name="l01158"></a>01158 <span class="keywordflow">break</span>;
+<a name="l01159"></a>01159 <span class="keywordflow">case</span> 5:
+<a name="l01160"></a>01160 _A3x[0] = 1;
+<a name="l01161"></a>01161 _A3x[1] = (_n-1)/2;
+<a name="l01162"></a>01162 _A3x[2] = (_n*(3*_n-1)-2)/8;
+<a name="l01163"></a>01163 _A3x[3] = (-3*_n-1)/16;
+<a name="l01164"></a>01164 _A3x[4] = -3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
+<a name="l01165"></a>01165 <span class="keywordflow">break</span>;
+<a name="l01166"></a>01166 <span class="keywordflow">case</span> 6:
+<a name="l01167"></a>01167 _A3x[0] = 1;
+<a name="l01168"></a>01168 _A3x[1] = (_n-1)/2;
+<a name="l01169"></a>01169 _A3x[2] = (_n*(3*_n-1)-2)/8;
+<a name="l01170"></a>01170 _A3x[3] = ((-_n-3)*_n-1)/16;
+<a name="l01171"></a>01171 _A3x[4] = (-2*_n-3)/64;
+<a name="l01172"></a>01172 _A3x[5] = -3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01173"></a>01173 <span class="keywordflow">break</span>;
+<a name="l01174"></a>01174 <span class="keywordflow">case</span> 7:
+<a name="l01175"></a>01175 _A3x[0] = 1;
+<a name="l01176"></a>01176 _A3x[1] = (_n-1)/2;
+<a name="l01177"></a>01177 _A3x[2] = (_n*(3*_n-1)-2)/8;
+<a name="l01178"></a>01178 _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
+<a name="l01179"></a>01179 _A3x[4] = ((-10*_n-2)*_n-3)/64;
+<a name="l01180"></a>01180 _A3x[5] = (-5*_n-3)/128;
+<a name="l01181"></a>01181 _A3x[6] = -5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
+<a name="l01182"></a>01182 <span class="keywordflow">break</span>;
+<a name="l01183"></a>01183 <span class="keywordflow">case</span> 8:
+<a name="l01184"></a>01184 _A3x[0] = 1;
+<a name="l01185"></a>01185 _A3x[1] = (_n-1)/2;
+<a name="l01186"></a>01186 _A3x[2] = (_n*(3*_n-1)-2)/8;
+<a name="l01187"></a>01187 _A3x[3] = (_n*(_n*(5*_n-1)-3)-1)/16;
+<a name="l01188"></a>01188 _A3x[4] = (_n*((-5*_n-20)*_n-4)-6)/128;
+<a name="l01189"></a>01189 _A3x[5] = ((-5*_n-10)*_n-6)/256;
+<a name="l01190"></a>01190 _A3x[6] = (-15*_n-20)/1024;
+<a name="l01191"></a>01191 _A3x[7] = -25/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
+<a name="l01192"></a>01192 <span class="keywordflow">break</span>;
+<a name="l01193"></a>01193 <span class="keywordflow">default</span>:
+<a name="l01194"></a>01194 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nA3_ >= 0 && nA3_ <= 8, <span class="stringliteral">"Bad value of nA3_"</span>);
+<a name="l01195"></a>01195 }
+<a name="l01196"></a>01196 }
+<a name="l01197"></a>01197
+<a name="l01198"></a>01198 <span class="comment">// The coefficients C3[l] in the Fourier expansion of B3</span>
+<a name="l01199"></a>01199 <span class="keywordtype">void</span> Geodesic::C3coeff() throw() {
+<a name="l01200"></a>01200 <span class="keywordflow">switch</span> (nC3_) {
+<a name="l01201"></a>01201 <span class="keywordflow">case</span> 0:
+<a name="l01202"></a>01202 <span class="keywordflow">break</span>;
+<a name="l01203"></a>01203 <span class="keywordflow">case</span> 1:
<a name="l01204"></a>01204 <span class="keywordflow">break</span>;
-<a name="l01205"></a>01205 <span class="keywordflow">case</span> 3:
-<a name="l01206"></a>01206 _C3x[0] = (1-_n)/4;
-<a name="l01207"></a>01207 _C3x[1] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8);
-<a name="l01208"></a>01208 _C3x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16);
-<a name="l01209"></a>01209 <span class="keywordflow">break</span>;
-<a name="l01210"></a>01210 <span class="keywordflow">case</span> 4:
-<a name="l01211"></a>01211 _C3x[0] = (1-_n)/4;
-<a name="l01212"></a>01212 _C3x[1] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8);
-<a name="l01213"></a>01213 _C3x[2] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
-<a name="l01214"></a>01214 _C3x[3] = (2-3*_n)/32;
-<a name="l01215"></a>01215 _C3x[4] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
-<a name="l01216"></a>01216 _C3x[5] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(192);
-<a name="l01217"></a>01217 <span class="keywordflow">break</span>;
-<a name="l01218"></a>01218 <span class="keywordflow">case</span> 5:
-<a name="l01219"></a>01219 _C3x[0] = (1-_n)/4;
-<a name="l01220"></a>01220 _C3x[1] = (1-_n*_n)/8;
-<a name="l01221"></a>01221 _C3x[2] = (3*_n+3)/64;
-<a name="l01222"></a>01222 _C3x[3] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01223"></a>01223 _C3x[4] = ((_n-3)*_n+2)/32;
-<a name="l01224"></a>01224 _C3x[5] = (3-2*_n)/64;
-<a name="l01225"></a>01225 _C3x[6] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01226"></a>01226 _C3x[7] = (5-9*_n)/192;
-<a name="l01227"></a>01227 _C3x[8] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01228"></a>01228 _C3x[9] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
-<a name="l01229"></a>01229 <span class="keywordflow">break</span>;
-<a name="l01230"></a>01230 <span class="keywordflow">case</span> 6:
-<a name="l01231"></a>01231 _C3x[0] = (1-_n)/4;
-<a name="l01232"></a>01232 _C3x[1] = (1-_n*_n)/8;
-<a name="l01233"></a>01233 _C3x[2] = ((3-_n)*_n+3)/64;
-<a name="l01234"></a>01234 _C3x[3] = (2*_n+5)/128;
-<a name="l01235"></a>01235 _C3x[4] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
-<a name="l01236"></a>01236 _C3x[5] = ((_n-3)*_n+2)/32;
-<a name="l01237"></a>01237 _C3x[6] = ((-3*_n-2)*_n+3)/64;
-<a name="l01238"></a>01238 _C3x[7] = (_n+3)/128;
-<a name="l01239"></a>01239 _C3x[8] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
-<a name="l01240"></a>01240 _C3x[9] = (_n*(5*_n-9)+5)/192;
-<a name="l01241"></a>01241 _C3x[10] = (9-10*_n)/384;
-<a name="l01242"></a>01242 _C3x[11] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
-<a name="l01243"></a>01243 _C3x[12] = (7-14*_n)/512;
-<a name="l01244"></a>01244 _C3x[13] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
-<a name="l01245"></a>01245 _C3x[14] = 21/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2560);
-<a name="l01246"></a>01246 <span class="keywordflow">break</span>;
-<a name="l01247"></a>01247 <span class="keywordflow">case</span> 7:
-<a name="l01248"></a>01248 _C3x[0] = (1-_n)/4;
-<a name="l01249"></a>01249 _C3x[1] = (1-_n*_n)/8;
-<a name="l01250"></a>01250 _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
-<a name="l01251"></a>01251 _C3x[3] = (_n*(2*_n+2)+5)/128;
-<a name="l01252"></a>01252 _C3x[4] = (11*_n+12)/512;
-<a name="l01253"></a>01253 _C3x[5] = 21/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
-<a name="l01254"></a>01254 _C3x[6] = ((_n-3)*_n+2)/32;
-<a name="l01255"></a>01255 _C3x[7] = (_n*(_n*(2*_n-3)-2)+3)/64;
-<a name="l01256"></a>01256 _C3x[8] = ((2-9*_n)*_n+6)/256;
-<a name="l01257"></a>01257 _C3x[9] = (_n+5)/256;
-<a name="l01258"></a>01258 _C3x[10] = 27/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
-<a name="l01259"></a>01259 _C3x[11] = (_n*((5-_n)*_n-9)+5)/192;
-<a name="l01260"></a>01260 _C3x[12] = ((-6*_n-10)*_n+9)/384;
-<a name="l01261"></a>01261 _C3x[13] = (21-4*_n)/1536;
-<a name="l01262"></a>01262 _C3x[14] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
-<a name="l01263"></a>01263 _C3x[15] = (_n*(10*_n-14)+7)/512;
-<a name="l01264"></a>01264 _C3x[16] = (7-10*_n)/512;
-<a name="l01265"></a>01265 _C3x[17] = 9/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
-<a name="l01266"></a>01266 _C3x[18] = (21-45*_n)/2560;
-<a name="l01267"></a>01267 _C3x[19] = 9/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
-<a name="l01268"></a>01268 _C3x[20] = 11/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
-<a name="l01269"></a>01269 <span class="keywordflow">break</span>;
-<a name="l01270"></a>01270 <span class="keywordflow">case</span> 8:
-<a name="l01271"></a>01271 _C3x[0] = (1-_n)/4;
-<a name="l01272"></a>01272 _C3x[1] = (1-_n*_n)/8;
-<a name="l01273"></a>01273 _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
-<a name="l01274"></a>01274 _C3x[3] = (_n*((2-2*_n)*_n+2)+5)/128;
-<a name="l01275"></a>01275 _C3x[4] = (_n*(3*_n+11)+12)/512;
-<a name="l01276"></a>01276 _C3x[5] = (10*_n+21)/1024;
-<a name="l01277"></a>01277 _C3x[6] = 243/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01278"></a>01278 _C3x[7] = ((_n-3)*_n+2)/32;
-<a name="l01279"></a>01279 _C3x[8] = (_n*(_n*(2*_n-3)-2)+3)/64;
-<a name="l01280"></a>01280 _C3x[9] = (_n*((-6*_n-9)*_n+2)+6)/256;
-<a name="l01281"></a>01281 _C3x[10] = ((1-2*_n)*_n+5)/256;
-<a name="l01282"></a>01282 _C3x[11] = (69*_n+108)/8192;
-<a name="l01283"></a>01283 _C3x[12] = 187/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01284"></a>01284 _C3x[13] = (_n*((5-_n)*_n-9)+5)/192;
-<a name="l01285"></a>01285 _C3x[14] = (_n*(_n*(10*_n-6)-10)+9)/384;
-<a name="l01286"></a>01286 _C3x[15] = ((-77*_n-8)*_n+42)/3072;
-<a name="l01287"></a>01287 _C3x[16] = (12-_n)/1024;
-<a name="l01288"></a>01288 _C3x[17] = 139/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01289"></a>01289 _C3x[18] = (_n*((20-7*_n)*_n-28)+14)/1024;
-<a name="l01290"></a>01290 _C3x[19] = ((-7*_n-40)*_n+28)/2048;
-<a name="l01291"></a>01291 _C3x[20] = (72-43*_n)/8192;
-<a name="l01292"></a>01292 _C3x[21] = 127/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01293"></a>01293 _C3x[22] = (_n*(75*_n-90)+42)/5120;
-<a name="l01294"></a>01294 _C3x[23] = (9-15*_n)/1024;
-<a name="l01295"></a>01295 _C3x[24] = 99/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01296"></a>01296 _C3x[25] = (44-99*_n)/8192;
-<a name="l01297"></a>01297 _C3x[26] = 99/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
-<a name="l01298"></a>01298 _C3x[27] = 429/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(114688);
-<a name="l01299"></a>01299 <span class="keywordflow">break</span>;
-<a name="l01300"></a>01300 <span class="keywordflow">default</span>:
-<a name="l01301"></a>01301 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC3_ >= 0 && nC3_ <= 8, <span class="stringliteral">"Bad value of nC3_"</span>);
-<a name="l01302"></a>01302 }
-<a name="l01303"></a>01303 }
-<a name="l01304"></a>01304
-<a name="l01305"></a>01305 <span class="comment">// The coefficients C4[l] in the Fourier expansion of I4</span>
-<a name="l01306"></a>01306 <span class="keywordtype">void</span> Geodesic::C4coeff() throw() {
-<a name="l01307"></a>01307 <span class="keywordflow">switch</span> (nC4_) {
-<a name="l01308"></a>01308 <span class="keywordflow">case</span> 0:
-<a name="l01309"></a>01309 <span class="keywordflow">break</span>;
-<a name="l01310"></a>01310 <span class="keywordflow">case</span> 1:
-<a name="l01311"></a>01311 _C4x[0] = 2/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3);
+<a name="l01205"></a>01205 <span class="keywordflow">case</span> 2:
+<a name="l01206"></a>01206 _C3x[0] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4);
+<a name="l01207"></a>01207 <span class="keywordflow">break</span>;
+<a name="l01208"></a>01208 <span class="keywordflow">case</span> 3:
+<a name="l01209"></a>01209 _C3x[0] = (1-_n)/4;
+<a name="l01210"></a>01210 _C3x[1] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8);
+<a name="l01211"></a>01211 _C3x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16);
+<a name="l01212"></a>01212 <span class="keywordflow">break</span>;
+<a name="l01213"></a>01213 <span class="keywordflow">case</span> 4:
+<a name="l01214"></a>01214 _C3x[0] = (1-_n)/4;
+<a name="l01215"></a>01215 _C3x[1] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8);
+<a name="l01216"></a>01216 _C3x[2] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
+<a name="l01217"></a>01217 _C3x[3] = (2-3*_n)/32;
+<a name="l01218"></a>01218 _C3x[4] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(64);
+<a name="l01219"></a>01219 _C3x[5] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(192);
+<a name="l01220"></a>01220 <span class="keywordflow">break</span>;
+<a name="l01221"></a>01221 <span class="keywordflow">case</span> 5:
+<a name="l01222"></a>01222 _C3x[0] = (1-_n)/4;
+<a name="l01223"></a>01223 _C3x[1] = (1-_n*_n)/8;
+<a name="l01224"></a>01224 _C3x[2] = (3*_n+3)/64;
+<a name="l01225"></a>01225 _C3x[3] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01226"></a>01226 _C3x[4] = ((_n-3)*_n+2)/32;
+<a name="l01227"></a>01227 _C3x[5] = (3-2*_n)/64;
+<a name="l01228"></a>01228 _C3x[6] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01229"></a>01229 _C3x[7] = (5-9*_n)/192;
+<a name="l01230"></a>01230 _C3x[8] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01231"></a>01231 _C3x[9] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
+<a name="l01232"></a>01232 <span class="keywordflow">break</span>;
+<a name="l01233"></a>01233 <span class="keywordflow">case</span> 6:
+<a name="l01234"></a>01234 _C3x[0] = (1-_n)/4;
+<a name="l01235"></a>01235 _C3x[1] = (1-_n*_n)/8;
+<a name="l01236"></a>01236 _C3x[2] = ((3-_n)*_n+3)/64;
+<a name="l01237"></a>01237 _C3x[3] = (2*_n+5)/128;
+<a name="l01238"></a>01238 _C3x[4] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(128);
+<a name="l01239"></a>01239 _C3x[5] = ((_n-3)*_n+2)/32;
+<a name="l01240"></a>01240 _C3x[6] = ((-3*_n-2)*_n+3)/64;
+<a name="l01241"></a>01241 _C3x[7] = (_n+3)/128;
+<a name="l01242"></a>01242 _C3x[8] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
+<a name="l01243"></a>01243 _C3x[9] = (_n*(5*_n-9)+5)/192;
+<a name="l01244"></a>01244 _C3x[10] = (9-10*_n)/384;
+<a name="l01245"></a>01245 _C3x[11] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
+<a name="l01246"></a>01246 _C3x[12] = (7-14*_n)/512;
+<a name="l01247"></a>01247 _C3x[13] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(512);
+<a name="l01248"></a>01248 _C3x[14] = 21/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2560);
+<a name="l01249"></a>01249 <span class="keywordflow">break</span>;
+<a name="l01250"></a>01250 <span class="keywordflow">case</span> 7:
+<a name="l01251"></a>01251 _C3x[0] = (1-_n)/4;
+<a name="l01252"></a>01252 _C3x[1] = (1-_n*_n)/8;
+<a name="l01253"></a>01253 _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
+<a name="l01254"></a>01254 _C3x[3] = (_n*(2*_n+2)+5)/128;
+<a name="l01255"></a>01255 _C3x[4] = (11*_n+12)/512;
+<a name="l01256"></a>01256 _C3x[5] = 21/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
+<a name="l01257"></a>01257 _C3x[6] = ((_n-3)*_n+2)/32;
+<a name="l01258"></a>01258 _C3x[7] = (_n*(_n*(2*_n-3)-2)+3)/64;
+<a name="l01259"></a>01259 _C3x[8] = ((2-9*_n)*_n+6)/256;
+<a name="l01260"></a>01260 _C3x[9] = (_n+5)/256;
+<a name="l01261"></a>01261 _C3x[10] = 27/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
+<a name="l01262"></a>01262 _C3x[11] = (_n*((5-_n)*_n-9)+5)/192;
+<a name="l01263"></a>01263 _C3x[12] = ((-6*_n-10)*_n+9)/384;
+<a name="l01264"></a>01264 _C3x[13] = (21-4*_n)/1536;
+<a name="l01265"></a>01265 _C3x[14] = 3/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(256);
+<a name="l01266"></a>01266 _C3x[15] = (_n*(10*_n-14)+7)/512;
+<a name="l01267"></a>01267 _C3x[16] = (7-10*_n)/512;
+<a name="l01268"></a>01268 _C3x[17] = 9/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
+<a name="l01269"></a>01269 _C3x[18] = (21-45*_n)/2560;
+<a name="l01270"></a>01270 _C3x[19] = 9/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1024);
+<a name="l01271"></a>01271 _C3x[20] = 11/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2048);
+<a name="l01272"></a>01272 <span class="keywordflow">break</span>;
+<a name="l01273"></a>01273 <span class="keywordflow">case</span> 8:
+<a name="l01274"></a>01274 _C3x[0] = (1-_n)/4;
+<a name="l01275"></a>01275 _C3x[1] = (1-_n*_n)/8;
+<a name="l01276"></a>01276 _C3x[2] = (_n*((-5*_n-1)*_n+3)+3)/64;
+<a name="l01277"></a>01277 _C3x[3] = (_n*((2-2*_n)*_n+2)+5)/128;
+<a name="l01278"></a>01278 _C3x[4] = (_n*(3*_n+11)+12)/512;
+<a name="l01279"></a>01279 _C3x[5] = (10*_n+21)/1024;
+<a name="l01280"></a>01280 _C3x[6] = 243/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01281"></a>01281 _C3x[7] = ((_n-3)*_n+2)/32;
+<a name="l01282"></a>01282 _C3x[8] = (_n*(_n*(2*_n-3)-2)+3)/64;
+<a name="l01283"></a>01283 _C3x[9] = (_n*((-6*_n-9)*_n+2)+6)/256;
+<a name="l01284"></a>01284 _C3x[10] = ((1-2*_n)*_n+5)/256;
+<a name="l01285"></a>01285 _C3x[11] = (69*_n+108)/8192;
+<a name="l01286"></a>01286 _C3x[12] = 187/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01287"></a>01287 _C3x[13] = (_n*((5-_n)*_n-9)+5)/192;
+<a name="l01288"></a>01288 _C3x[14] = (_n*(_n*(10*_n-6)-10)+9)/384;
+<a name="l01289"></a>01289 _C3x[15] = ((-77*_n-8)*_n+42)/3072;
+<a name="l01290"></a>01290 _C3x[16] = (12-_n)/1024;
+<a name="l01291"></a>01291 _C3x[17] = 139/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01292"></a>01292 _C3x[18] = (_n*((20-7*_n)*_n-28)+14)/1024;
+<a name="l01293"></a>01293 _C3x[19] = ((-7*_n-40)*_n+28)/2048;
+<a name="l01294"></a>01294 _C3x[20] = (72-43*_n)/8192;
+<a name="l01295"></a>01295 _C3x[21] = 127/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01296"></a>01296 _C3x[22] = (_n*(75*_n-90)+42)/5120;
+<a name="l01297"></a>01297 _C3x[23] = (9-15*_n)/1024;
+<a name="l01298"></a>01298 _C3x[24] = 99/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01299"></a>01299 _C3x[25] = (44-99*_n)/8192;
+<a name="l01300"></a>01300 _C3x[26] = 99/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(16384);
+<a name="l01301"></a>01301 _C3x[27] = 429/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(114688);
+<a name="l01302"></a>01302 <span class="keywordflow">break</span>;
+<a name="l01303"></a>01303 <span class="keywordflow">default</span>:
+<a name="l01304"></a>01304 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC3_ >= 0 && nC3_ <= 8, <span class="stringliteral">"Bad value of nC3_"</span>);
+<a name="l01305"></a>01305 }
+<a name="l01306"></a>01306 }
+<a name="l01307"></a>01307
+<a name="l01308"></a>01308 <span class="comment">// The coefficients C4[l] in the Fourier expansion of I4</span>
+<a name="l01309"></a>01309 <span class="keywordtype">void</span> Geodesic::C4coeff() throw() {
+<a name="l01310"></a>01310 <span class="keywordflow">switch</span> (nC4_) {
+<a name="l01311"></a>01311 <span class="keywordflow">case</span> 0:
<a name="l01312"></a>01312 <span class="keywordflow">break</span>;
-<a name="l01313"></a>01313 <span class="keywordflow">case</span> 2:
-<a name="l01314"></a>01314 _C4x[0] = (10-_ep2)/15;
-<a name="l01315"></a>01315 _C4x[1] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20);
-<a name="l01316"></a>01316 _C4x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(180);
-<a name="l01317"></a>01317 <span class="keywordflow">break</span>;
-<a name="l01318"></a>01318 <span class="keywordflow">case</span> 3:
-<a name="l01319"></a>01319 _C4x[0] = (_ep2*(4*_ep2-7)+70)/105;
-<a name="l01320"></a>01320 _C4x[1] = (4*_ep2-7)/140;
-<a name="l01321"></a>01321 _C4x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(42);
-<a name="l01322"></a>01322 _C4x[3] = (7-4*_ep2)/1260;
-<a name="l01323"></a>01323 _C4x[4] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(252);
-<a name="l01324"></a>01324 _C4x[5] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2100);
-<a name="l01325"></a>01325 <span class="keywordflow">break</span>;
-<a name="l01326"></a>01326 <span class="keywordflow">case</span> 4:
-<a name="l01327"></a>01327 _C4x[0] = (_ep2*((12-8*_ep2)*_ep2-21)+210)/315;
-<a name="l01328"></a>01328 _C4x[1] = ((12-8*_ep2)*_ep2-21)/420;
-<a name="l01329"></a>01329 _C4x[2] = (3-2*_ep2)/126;
-<a name="l01330"></a>01330 _C4x[3] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(72);
-<a name="l01331"></a>01331 _C4x[4] = (_ep2*(8*_ep2-12)+21)/3780;
-<a name="l01332"></a>01332 _C4x[5] = (2*_ep2-3)/756;
-<a name="l01333"></a>01333 _C4x[6] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(360);
-<a name="l01334"></a>01334 _C4x[7] = (3-2*_ep2)/6300;
-<a name="l01335"></a>01335 _C4x[8] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1800);
-<a name="l01336"></a>01336 _C4x[9] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(17640);
-<a name="l01337"></a>01337 <span class="keywordflow">break</span>;
-<a name="l01338"></a>01338 <span class="keywordflow">case</span> 5:
-<a name="l01339"></a>01339 _C4x[0] = (_ep2*(_ep2*(_ep2*(64*_ep2-88)+132)-231)+2310)/3465;
-<a name="l01340"></a>01340 _C4x[1] = (_ep2*(_ep2*(64*_ep2-88)+132)-231)/4620;
-<a name="l01341"></a>01341 _C4x[2] = (_ep2*(16*_ep2-22)+33)/1386;
-<a name="l01342"></a>01342 _C4x[3] = (8*_ep2-11)/792;
-<a name="l01343"></a>01343 _C4x[4] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(110);
-<a name="l01344"></a>01344 _C4x[5] = (_ep2*((88-64*_ep2)*_ep2-132)+231)/41580;
-<a name="l01345"></a>01345 _C4x[6] = ((22-16*_ep2)*_ep2-33)/8316;
-<a name="l01346"></a>01346 _C4x[7] = (11-8*_ep2)/3960;
-<a name="l01347"></a>01347 _C4x[8] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(495);
-<a name="l01348"></a>01348 _C4x[9] = (_ep2*(16*_ep2-22)+33)/69300;
-<a name="l01349"></a>01349 _C4x[10] = (8*_ep2-11)/19800;
-<a name="l01350"></a>01350 _C4x[11] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1925);
-<a name="l01351"></a>01351 _C4x[12] = (11-8*_ep2)/194040;
-<a name="l01352"></a>01352 _C4x[13] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10780);
-<a name="l01353"></a>01353 _C4x[14] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(124740);
-<a name="l01354"></a>01354 <span class="keywordflow">break</span>;
-<a name="l01355"></a>01355 <span class="keywordflow">case</span> 6:
-<a name="l01356"></a>01356 _C4x[0] = (_ep2*(_ep2*(_ep2*((832-640*_ep2)*_ep2-1144)+1716)-3003)+
-<a name="l01357"></a>01357 30030)/45045;
-<a name="l01358"></a>01358 _C4x[1] = (_ep2*(_ep2*((832-640*_ep2)*_ep2-1144)+1716)-3003)/60060;
-<a name="l01359"></a>01359 _C4x[2] = (_ep2*((208-160*_ep2)*_ep2-286)+429)/18018;
-<a name="l01360"></a>01360 _C4x[3] = ((104-80*_ep2)*_ep2-143)/10296;
-<a name="l01361"></a>01361 _C4x[4] = (13-10*_ep2)/1430;
-<a name="l01362"></a>01362 _C4x[5] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(156);
-<a name="l01363"></a>01363 _C4x[6] = (_ep2*(_ep2*(_ep2*(640*_ep2-832)+1144)-1716)+3003)/540540;
-<a name="l01364"></a>01364 _C4x[7] = (_ep2*(_ep2*(160*_ep2-208)+286)-429)/108108;
-<a name="l01365"></a>01365 _C4x[8] = (_ep2*(80*_ep2-104)+143)/51480;
-<a name="l01366"></a>01366 _C4x[9] = (10*_ep2-13)/6435;
-<a name="l01367"></a>01367 _C4x[10] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3276);
-<a name="l01368"></a>01368 _C4x[11] = (_ep2*((208-160*_ep2)*_ep2-286)+429)/900900;
-<a name="l01369"></a>01369 _C4x[12] = ((104-80*_ep2)*_ep2-143)/257400;
-<a name="l01370"></a>01370 _C4x[13] = (13-10*_ep2)/25025;
-<a name="l01371"></a>01371 _C4x[14] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2184);
-<a name="l01372"></a>01372 _C4x[15] = (_ep2*(80*_ep2-104)+143)/2522520;
-<a name="l01373"></a>01373 _C4x[16] = (10*_ep2-13)/140140;
-<a name="l01374"></a>01374 _C4x[17] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(45864);
-<a name="l01375"></a>01375 _C4x[18] = (13-10*_ep2)/1621620;
-<a name="l01376"></a>01376 _C4x[19] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(58968);
-<a name="l01377"></a>01377 _C4x[20] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(792792);
-<a name="l01378"></a>01378 <span class="keywordflow">break</span>;
-<a name="l01379"></a>01379 <span class="keywordflow">case</span> 7:
-<a name="l01380"></a>01380 _C4x[0] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*(512*_ep2-640)+832)-1144)+1716)-
-<a name="l01381"></a>01381 3003)+30030)/45045;
-<a name="l01382"></a>01382 _C4x[1] = (_ep2*(_ep2*(_ep2*(_ep2*(512*_ep2-640)+832)-1144)+1716)-
-<a name="l01383"></a>01383 3003)/60060;
-<a name="l01384"></a>01384 _C4x[2] = (_ep2*(_ep2*(_ep2*(128*_ep2-160)+208)-286)+429)/18018;
-<a name="l01385"></a>01385 _C4x[3] = (_ep2*(_ep2*(64*_ep2-80)+104)-143)/10296;
-<a name="l01386"></a>01386 _C4x[4] = (_ep2*(8*_ep2-10)+13)/1430;
-<a name="l01387"></a>01387 _C4x[5] = (4*_ep2-5)/780;
-<a name="l01388"></a>01388 _C4x[6] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(210);
-<a name="l01389"></a>01389 _C4x[7] = (_ep2*(_ep2*(_ep2*((640-512*_ep2)*_ep2-832)+1144)-1716)+
-<a name="l01390"></a>01390 3003)/540540;
-<a name="l01391"></a>01391 _C4x[8] = (_ep2*(_ep2*((160-128*_ep2)*_ep2-208)+286)-429)/108108;
-<a name="l01392"></a>01392 _C4x[9] = (_ep2*((80-64*_ep2)*_ep2-104)+143)/51480;
-<a name="l01393"></a>01393 _C4x[10] = ((10-8*_ep2)*_ep2-13)/6435;
-<a name="l01394"></a>01394 _C4x[11] = (5-4*_ep2)/3276;
-<a name="l01395"></a>01395 _C4x[12] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(840);
-<a name="l01396"></a>01396 _C4x[13] = (_ep2*(_ep2*(_ep2*(128*_ep2-160)+208)-286)+429)/900900;
-<a name="l01397"></a>01397 _C4x[14] = (_ep2*(_ep2*(64*_ep2-80)+104)-143)/257400;
-<a name="l01398"></a>01398 _C4x[15] = (_ep2*(8*_ep2-10)+13)/25025;
-<a name="l01399"></a>01399 _C4x[16] = (4*_ep2-5)/10920;
-<a name="l01400"></a>01400 _C4x[17] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2520);
-<a name="l01401"></a>01401 _C4x[18] = (_ep2*((80-64*_ep2)*_ep2-104)+143)/2522520;
-<a name="l01402"></a>01402 _C4x[19] = ((10-8*_ep2)*_ep2-13)/140140;
-<a name="l01403"></a>01403 _C4x[20] = (5-4*_ep2)/45864;
-<a name="l01404"></a>01404 _C4x[21] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8820);
-<a name="l01405"></a>01405 _C4x[22] = (_ep2*(8*_ep2-10)+13)/1621620;
-<a name="l01406"></a>01406 _C4x[23] = (4*_ep2-5)/294840;
-<a name="l01407"></a>01407 _C4x[24] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(41580);
-<a name="l01408"></a>01408 _C4x[25] = (5-4*_ep2)/3963960;
-<a name="l01409"></a>01409 _C4x[26] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(304920);
-<a name="l01410"></a>01410 _C4x[27] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4684680);
-<a name="l01411"></a>01411 <span class="keywordflow">break</span>;
-<a name="l01412"></a>01412 <span class="keywordflow">case</span> 8:
-<a name="l01413"></a>01413 _C4x[0] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*((8704-7168*_ep2)*_ep2-10880)+
-<a name="l01414"></a>01414 14144)-19448)+29172)-51051)+510510)/765765;
-<a name="l01415"></a>01415 _C4x[1] = (_ep2*(_ep2*(_ep2*(_ep2*((8704-7168*_ep2)*_ep2-10880)+14144)-
-<a name="l01416"></a>01416 19448)+29172)-51051)/1021020;
-<a name="l01417"></a>01417 _C4x[2] = (_ep2*(_ep2*(_ep2*((2176-1792*_ep2)*_ep2-2720)+3536)-4862)+
-<a name="l01418"></a>01418 7293)/306306;
-<a name="l01419"></a>01419 _C4x[3] = (_ep2*(_ep2*((1088-896*_ep2)*_ep2-1360)+1768)-2431)/175032;
-<a name="l01420"></a>01420 _C4x[4] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/24310;
-<a name="l01421"></a>01421 _C4x[5] = ((68-56*_ep2)*_ep2-85)/13260;
-<a name="l01422"></a>01422 _C4x[6] = (17-14*_ep2)/3570;
-<a name="l01423"></a>01423 _C4x[7] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(272);
-<a name="l01424"></a>01424 _C4x[8] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*(7168*_ep2-8704)+10880)-14144)+
-<a name="l01425"></a>01425 19448)-29172)+51051)/9189180;
-<a name="l01426"></a>01426 _C4x[9] = (_ep2*(_ep2*(_ep2*(_ep2*(1792*_ep2-2176)+2720)-3536)+4862)-
-<a name="l01427"></a>01427 7293)/1837836;
-<a name="l01428"></a>01428 _C4x[10] = (_ep2*(_ep2*(_ep2*(896*_ep2-1088)+1360)-1768)+2431)/875160;
-<a name="l01429"></a>01429 _C4x[11] = (_ep2*(_ep2*(112*_ep2-136)+170)-221)/109395;
-<a name="l01430"></a>01430 _C4x[12] = (_ep2*(56*_ep2-68)+85)/55692;
-<a name="l01431"></a>01431 _C4x[13] = (14*_ep2-17)/14280;
-<a name="l01432"></a>01432 _C4x[14] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(7344);
-<a name="l01433"></a>01433 _C4x[15] = (_ep2*(_ep2*(_ep2*((2176-1792*_ep2)*_ep2-2720)+3536)-4862)+
-<a name="l01434"></a>01434 7293)/15315300;
-<a name="l01435"></a>01435 _C4x[16] = (_ep2*(_ep2*((1088-896*_ep2)*_ep2-1360)+1768)-2431)/4375800;
-<a name="l01436"></a>01436 _C4x[17] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/425425;
-<a name="l01437"></a>01437 _C4x[18] = ((68-56*_ep2)*_ep2-85)/185640;
-<a name="l01438"></a>01438 _C4x[19] = (17-14*_ep2)/42840;
-<a name="l01439"></a>01439 _C4x[20] = -7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20400);
-<a name="l01440"></a>01440 _C4x[21] = (_ep2*(_ep2*(_ep2*(896*_ep2-1088)+1360)-1768)+2431)/42882840;
-<a name="l01441"></a>01441 _C4x[22] = (_ep2*(_ep2*(112*_ep2-136)+170)-221)/2382380;
-<a name="l01442"></a>01442 _C4x[23] = (_ep2*(56*_ep2-68)+85)/779688;
-<a name="l01443"></a>01443 _C4x[24] = (14*_ep2-17)/149940;
-<a name="l01444"></a>01444 _C4x[25] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8976);
-<a name="l01445"></a>01445 _C4x[26] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/27567540;
-<a name="l01446"></a>01446 _C4x[27] = ((68-56*_ep2)*_ep2-85)/5012280;
-<a name="l01447"></a>01447 _C4x[28] = (17-14*_ep2)/706860;
-<a name="l01448"></a>01448 _C4x[29] = -7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(242352);
-<a name="l01449"></a>01449 _C4x[30] = (_ep2*(56*_ep2-68)+85)/67387320;
-<a name="l01450"></a>01450 _C4x[31] = (14*_ep2-17)/5183640;
-<a name="l01451"></a>01451 _C4x[32] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1283568);
-<a name="l01452"></a>01452 _C4x[33] = (17-14*_ep2)/79639560;
-<a name="l01453"></a>01453 _C4x[34] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1516944);
-<a name="l01454"></a>01454 _C4x[35] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(26254800);
-<a name="l01455"></a>01455 <span class="keywordflow">break</span>;
-<a name="l01456"></a>01456 <span class="keywordflow">default</span>:
-<a name="l01457"></a>01457 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC3_ >= 0 && nC4_ <= 8, <span class="stringliteral">"Bad value of nC4_"</span>);
-<a name="l01458"></a>01458 }
-<a name="l01459"></a>01459 }
-<a name="l01460"></a>01460
-<a name="l01461"></a>01461 } <span class="comment">// namespace GeographicLib</span>
+<a name="l01313"></a>01313 <span class="keywordflow">case</span> 1:
+<a name="l01314"></a>01314 _C4x[0] = 2/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3);
+<a name="l01315"></a>01315 <span class="keywordflow">break</span>;
+<a name="l01316"></a>01316 <span class="keywordflow">case</span> 2:
+<a name="l01317"></a>01317 _C4x[0] = (10-_ep2)/15;
+<a name="l01318"></a>01318 _C4x[1] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20);
+<a name="l01319"></a>01319 _C4x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(180);
+<a name="l01320"></a>01320 <span class="keywordflow">break</span>;
+<a name="l01321"></a>01321 <span class="keywordflow">case</span> 3:
+<a name="l01322"></a>01322 _C4x[0] = (_ep2*(4*_ep2-7)+70)/105;
+<a name="l01323"></a>01323 _C4x[1] = (4*_ep2-7)/140;
+<a name="l01324"></a>01324 _C4x[2] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(42);
+<a name="l01325"></a>01325 _C4x[3] = (7-4*_ep2)/1260;
+<a name="l01326"></a>01326 _C4x[4] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(252);
+<a name="l01327"></a>01327 _C4x[5] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2100);
+<a name="l01328"></a>01328 <span class="keywordflow">break</span>;
+<a name="l01329"></a>01329 <span class="keywordflow">case</span> 4:
+<a name="l01330"></a>01330 _C4x[0] = (_ep2*((12-8*_ep2)*_ep2-21)+210)/315;
+<a name="l01331"></a>01331 _C4x[1] = ((12-8*_ep2)*_ep2-21)/420;
+<a name="l01332"></a>01332 _C4x[2] = (3-2*_ep2)/126;
+<a name="l01333"></a>01333 _C4x[3] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(72);
+<a name="l01334"></a>01334 _C4x[4] = (_ep2*(8*_ep2-12)+21)/3780;
+<a name="l01335"></a>01335 _C4x[5] = (2*_ep2-3)/756;
+<a name="l01336"></a>01336 _C4x[6] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(360);
+<a name="l01337"></a>01337 _C4x[7] = (3-2*_ep2)/6300;
+<a name="l01338"></a>01338 _C4x[8] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1800);
+<a name="l01339"></a>01339 _C4x[9] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(17640);
+<a name="l01340"></a>01340 <span class="keywordflow">break</span>;
+<a name="l01341"></a>01341 <span class="keywordflow">case</span> 5:
+<a name="l01342"></a>01342 _C4x[0] = (_ep2*(_ep2*(_ep2*(64*_ep2-88)+132)-231)+2310)/3465;
+<a name="l01343"></a>01343 _C4x[1] = (_ep2*(_ep2*(64*_ep2-88)+132)-231)/4620;
+<a name="l01344"></a>01344 _C4x[2] = (_ep2*(16*_ep2-22)+33)/1386;
+<a name="l01345"></a>01345 _C4x[3] = (8*_ep2-11)/792;
+<a name="l01346"></a>01346 _C4x[4] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(110);
+<a name="l01347"></a>01347 _C4x[5] = (_ep2*((88-64*_ep2)*_ep2-132)+231)/41580;
+<a name="l01348"></a>01348 _C4x[6] = ((22-16*_ep2)*_ep2-33)/8316;
+<a name="l01349"></a>01349 _C4x[7] = (11-8*_ep2)/3960;
+<a name="l01350"></a>01350 _C4x[8] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(495);
+<a name="l01351"></a>01351 _C4x[9] = (_ep2*(16*_ep2-22)+33)/69300;
+<a name="l01352"></a>01352 _C4x[10] = (8*_ep2-11)/19800;
+<a name="l01353"></a>01353 _C4x[11] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1925);
+<a name="l01354"></a>01354 _C4x[12] = (11-8*_ep2)/194040;
+<a name="l01355"></a>01355 _C4x[13] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10780);
+<a name="l01356"></a>01356 _C4x[14] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(124740);
+<a name="l01357"></a>01357 <span class="keywordflow">break</span>;
+<a name="l01358"></a>01358 <span class="keywordflow">case</span> 6:
+<a name="l01359"></a>01359 _C4x[0] = (_ep2*(_ep2*(_ep2*((832-640*_ep2)*_ep2-1144)+1716)-3003)+
+<a name="l01360"></a>01360 30030)/45045;
+<a name="l01361"></a>01361 _C4x[1] = (_ep2*(_ep2*((832-640*_ep2)*_ep2-1144)+1716)-3003)/60060;
+<a name="l01362"></a>01362 _C4x[2] = (_ep2*((208-160*_ep2)*_ep2-286)+429)/18018;
+<a name="l01363"></a>01363 _C4x[3] = ((104-80*_ep2)*_ep2-143)/10296;
+<a name="l01364"></a>01364 _C4x[4] = (13-10*_ep2)/1430;
+<a name="l01365"></a>01365 _C4x[5] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(156);
+<a name="l01366"></a>01366 _C4x[6] = (_ep2*(_ep2*(_ep2*(640*_ep2-832)+1144)-1716)+3003)/540540;
+<a name="l01367"></a>01367 _C4x[7] = (_ep2*(_ep2*(160*_ep2-208)+286)-429)/108108;
+<a name="l01368"></a>01368 _C4x[8] = (_ep2*(80*_ep2-104)+143)/51480;
+<a name="l01369"></a>01369 _C4x[9] = (10*_ep2-13)/6435;
+<a name="l01370"></a>01370 _C4x[10] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3276);
+<a name="l01371"></a>01371 _C4x[11] = (_ep2*((208-160*_ep2)*_ep2-286)+429)/900900;
+<a name="l01372"></a>01372 _C4x[12] = ((104-80*_ep2)*_ep2-143)/257400;
+<a name="l01373"></a>01373 _C4x[13] = (13-10*_ep2)/25025;
+<a name="l01374"></a>01374 _C4x[14] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2184);
+<a name="l01375"></a>01375 _C4x[15] = (_ep2*(80*_ep2-104)+143)/2522520;
+<a name="l01376"></a>01376 _C4x[16] = (10*_ep2-13)/140140;
+<a name="l01377"></a>01377 _C4x[17] = 5/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(45864);
+<a name="l01378"></a>01378 _C4x[18] = (13-10*_ep2)/1621620;
+<a name="l01379"></a>01379 _C4x[19] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(58968);
+<a name="l01380"></a>01380 _C4x[20] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(792792);
+<a name="l01381"></a>01381 <span class="keywordflow">break</span>;
+<a name="l01382"></a>01382 <span class="keywordflow">case</span> 7:
+<a name="l01383"></a>01383 _C4x[0] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*(512*_ep2-640)+832)-1144)+1716)-
+<a name="l01384"></a>01384 3003)+30030)/45045;
+<a name="l01385"></a>01385 _C4x[1] = (_ep2*(_ep2*(_ep2*(_ep2*(512*_ep2-640)+832)-1144)+1716)-
+<a name="l01386"></a>01386 3003)/60060;
+<a name="l01387"></a>01387 _C4x[2] = (_ep2*(_ep2*(_ep2*(128*_ep2-160)+208)-286)+429)/18018;
+<a name="l01388"></a>01388 _C4x[3] = (_ep2*(_ep2*(64*_ep2-80)+104)-143)/10296;
+<a name="l01389"></a>01389 _C4x[4] = (_ep2*(8*_ep2-10)+13)/1430;
+<a name="l01390"></a>01390 _C4x[5] = (4*_ep2-5)/780;
+<a name="l01391"></a>01391 _C4x[6] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(210);
+<a name="l01392"></a>01392 _C4x[7] = (_ep2*(_ep2*(_ep2*((640-512*_ep2)*_ep2-832)+1144)-1716)+
+<a name="l01393"></a>01393 3003)/540540;
+<a name="l01394"></a>01394 _C4x[8] = (_ep2*(_ep2*((160-128*_ep2)*_ep2-208)+286)-429)/108108;
+<a name="l01395"></a>01395 _C4x[9] = (_ep2*((80-64*_ep2)*_ep2-104)+143)/51480;
+<a name="l01396"></a>01396 _C4x[10] = ((10-8*_ep2)*_ep2-13)/6435;
+<a name="l01397"></a>01397 _C4x[11] = (5-4*_ep2)/3276;
+<a name="l01398"></a>01398 _C4x[12] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(840);
+<a name="l01399"></a>01399 _C4x[13] = (_ep2*(_ep2*(_ep2*(128*_ep2-160)+208)-286)+429)/900900;
+<a name="l01400"></a>01400 _C4x[14] = (_ep2*(_ep2*(64*_ep2-80)+104)-143)/257400;
+<a name="l01401"></a>01401 _C4x[15] = (_ep2*(8*_ep2-10)+13)/25025;
+<a name="l01402"></a>01402 _C4x[16] = (4*_ep2-5)/10920;
+<a name="l01403"></a>01403 _C4x[17] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(2520);
+<a name="l01404"></a>01404 _C4x[18] = (_ep2*((80-64*_ep2)*_ep2-104)+143)/2522520;
+<a name="l01405"></a>01405 _C4x[19] = ((10-8*_ep2)*_ep2-13)/140140;
+<a name="l01406"></a>01406 _C4x[20] = (5-4*_ep2)/45864;
+<a name="l01407"></a>01407 _C4x[21] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8820);
+<a name="l01408"></a>01408 _C4x[22] = (_ep2*(8*_ep2-10)+13)/1621620;
+<a name="l01409"></a>01409 _C4x[23] = (4*_ep2-5)/294840;
+<a name="l01410"></a>01410 _C4x[24] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(41580);
+<a name="l01411"></a>01411 _C4x[25] = (5-4*_ep2)/3963960;
+<a name="l01412"></a>01412 _C4x[26] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(304920);
+<a name="l01413"></a>01413 _C4x[27] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(4684680);
+<a name="l01414"></a>01414 <span class="keywordflow">break</span>;
+<a name="l01415"></a>01415 <span class="keywordflow">case</span> 8:
+<a name="l01416"></a>01416 _C4x[0] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*((8704-7168*_ep2)*_ep2-10880)+
+<a name="l01417"></a>01417 14144)-19448)+29172)-51051)+510510)/765765;
+<a name="l01418"></a>01418 _C4x[1] = (_ep2*(_ep2*(_ep2*(_ep2*((8704-7168*_ep2)*_ep2-10880)+14144)-
+<a name="l01419"></a>01419 19448)+29172)-51051)/1021020;
+<a name="l01420"></a>01420 _C4x[2] = (_ep2*(_ep2*(_ep2*((2176-1792*_ep2)*_ep2-2720)+3536)-4862)+
+<a name="l01421"></a>01421 7293)/306306;
+<a name="l01422"></a>01422 _C4x[3] = (_ep2*(_ep2*((1088-896*_ep2)*_ep2-1360)+1768)-2431)/175032;
+<a name="l01423"></a>01423 _C4x[4] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/24310;
+<a name="l01424"></a>01424 _C4x[5] = ((68-56*_ep2)*_ep2-85)/13260;
+<a name="l01425"></a>01425 _C4x[6] = (17-14*_ep2)/3570;
+<a name="l01426"></a>01426 _C4x[7] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(272);
+<a name="l01427"></a>01427 _C4x[8] = (_ep2*(_ep2*(_ep2*(_ep2*(_ep2*(7168*_ep2-8704)+10880)-14144)+
+<a name="l01428"></a>01428 19448)-29172)+51051)/9189180;
+<a name="l01429"></a>01429 _C4x[9] = (_ep2*(_ep2*(_ep2*(_ep2*(1792*_ep2-2176)+2720)-3536)+4862)-
+<a name="l01430"></a>01430 7293)/1837836;
+<a name="l01431"></a>01431 _C4x[10] = (_ep2*(_ep2*(_ep2*(896*_ep2-1088)+1360)-1768)+2431)/875160;
+<a name="l01432"></a>01432 _C4x[11] = (_ep2*(_ep2*(112*_ep2-136)+170)-221)/109395;
+<a name="l01433"></a>01433 _C4x[12] = (_ep2*(56*_ep2-68)+85)/55692;
+<a name="l01434"></a>01434 _C4x[13] = (14*_ep2-17)/14280;
+<a name="l01435"></a>01435 _C4x[14] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(7344);
+<a name="l01436"></a>01436 _C4x[15] = (_ep2*(_ep2*(_ep2*((2176-1792*_ep2)*_ep2-2720)+3536)-4862)+
+<a name="l01437"></a>01437 7293)/15315300;
+<a name="l01438"></a>01438 _C4x[16] = (_ep2*(_ep2*((1088-896*_ep2)*_ep2-1360)+1768)-2431)/4375800;
+<a name="l01439"></a>01439 _C4x[17] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/425425;
+<a name="l01440"></a>01440 _C4x[18] = ((68-56*_ep2)*_ep2-85)/185640;
+<a name="l01441"></a>01441 _C4x[19] = (17-14*_ep2)/42840;
+<a name="l01442"></a>01442 _C4x[20] = -7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20400);
+<a name="l01443"></a>01443 _C4x[21] = (_ep2*(_ep2*(_ep2*(896*_ep2-1088)+1360)-1768)+2431)/42882840;
+<a name="l01444"></a>01444 _C4x[22] = (_ep2*(_ep2*(112*_ep2-136)+170)-221)/2382380;
+<a name="l01445"></a>01445 _C4x[23] = (_ep2*(56*_ep2-68)+85)/779688;
+<a name="l01446"></a>01446 _C4x[24] = (14*_ep2-17)/149940;
+<a name="l01447"></a>01447 _C4x[25] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(8976);
+<a name="l01448"></a>01448 _C4x[26] = (_ep2*((136-112*_ep2)*_ep2-170)+221)/27567540;
+<a name="l01449"></a>01449 _C4x[27] = ((68-56*_ep2)*_ep2-85)/5012280;
+<a name="l01450"></a>01450 _C4x[28] = (17-14*_ep2)/706860;
+<a name="l01451"></a>01451 _C4x[29] = -7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(242352);
+<a name="l01452"></a>01452 _C4x[30] = (_ep2*(56*_ep2-68)+85)/67387320;
+<a name="l01453"></a>01453 _C4x[31] = (14*_ep2-17)/5183640;
+<a name="l01454"></a>01454 _C4x[32] = 7/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1283568);
+<a name="l01455"></a>01455 _C4x[33] = (17-14*_ep2)/79639560;
+<a name="l01456"></a>01456 _C4x[34] = -1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1516944);
+<a name="l01457"></a>01457 _C4x[35] = 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(26254800);
+<a name="l01458"></a>01458 <span class="keywordflow">break</span>;
+<a name="l01459"></a>01459 <span class="keywordflow">default</span>:
+<a name="l01460"></a>01460 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(nC3_ >= 0 && nC4_ <= 8, <span class="stringliteral">"Bad value of nC4_"</span>);
+<a name="l01461"></a>01461 }
+<a name="l01462"></a>01462 }
+<a name="l01463"></a>01463
+<a name="l01464"></a>01464 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geodesic_8hpp.html b/doc/html/Geodesic_8hpp.html
index 6d81054..812b9f7 100644
--- a/doc/html/Geodesic_8hpp.html
+++ b/doc/html/Geodesic_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geodesic.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -66,18 +81,16 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8hpp.html#ab538cb707d6ff36056dd372c7e9e6d7e">GEOGRAPHICLIB_GEODESIC_HPP</a> "$Id: 94017f1e00ed1e70c28e86271a49d5f03732648f $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8hpp.html#ab538cb707d6ff36056dd372c7e9e6d7e">GEOGRAPHICLIB_GEODESIC_HPP</a> "$Id: c1b085aadd7b8eabe0f9518b29531a38c152d495 $"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a> (GEOGRAPHICLIB_PREC == 1 ? 6 : (GEOGRAPHICLIB_PREC == 0 ? 3 : 7))</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEODESIC_HPP "$Id: 94017f1e00ed1e70c28e86271a49d5f03732648f $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEODESIC_HPP "$Id: c1b085aadd7b8eabe0f9518b29531a38c152d495 $"</td>
</tr>
</table>
</div>
@@ -113,8 +126,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geodesic_8hpp_source.html b/doc/html/Geodesic_8hpp_source.html
index 8da6a88..641cc7a 100644
--- a/doc/html/Geodesic_8hpp_source.html
+++ b/doc/html/Geodesic_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geodesic.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Geodesic.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Geodesic class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GEODESIC_HPP)</span>
<a name="l00011"></a><a class="code" href="Geodesic_8hpp.html#ab538cb707d6ff36056dd372c7e9e6d7e">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEODESIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 94017f1e00ed1e70c28e86271a49d5f03732648f $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: c1b085aadd7b8eabe0f9518b29531a38c152d495 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
<a name="l00015"></a>00015
@@ -171,729 +186,739 @@
<a name="l00121"></a>00121 <span class="comment"> *</span>
<a name="l00122"></a>00122 <span class="comment"> * Example of use:</span>
<a name="l00123"></a>00123 <span class="comment"> * \include example-Geodesic.cpp</span>
-<a name="l00124"></a>00124 <span class="comment"> **********************************************************************/</span>
-<a name="l00125"></a>00125
-<a name="l00126"></a><a class="code" href="classGeographicLib_1_1Geodesic.html">00126</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> {
-<a name="l00127"></a>00127 <span class="keyword">private</span>:
-<a name="l00128"></a>00128 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00129"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac4a8bd684285e00b12427c052697a106">00129</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>;
-<a name="l00130"></a>00130 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA1_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00131"></a>00131 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00132"></a>00132 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1p_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00133"></a>00133 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA2_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00134"></a>00134 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC2_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA3_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00136"></a>00136 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA3x_ = nA3_;
-<a name="l00137"></a>00137 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00138"></a>00138 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3x_ = (nC3_ * (nC3_ - 1)) / 2;
-<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
-<a name="l00140"></a>00140 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4x_ = (nC4_ * (nC4_ + 1)) / 2;
-<a name="l00141"></a>00141 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxit_ = 50;
-<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <span class="keyword">static</span> <span class="keyword">const</span> real tiny_;
-<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keyword">const</span> real tol0_;
-<a name="l00145"></a>00145 <span class="keyword">static</span> <span class="keyword">const</span> real tol1_;
-<a name="l00146"></a>00146 <span class="keyword">static</span> <span class="keyword">const</span> real tol2_;
-<a name="l00147"></a>00147 <span class="keyword">static</span> <span class="keyword">const</span> real xthresh_;
-<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <span class="keyword">enum</span> captype {
-<a name="l00150"></a>00150 CAP_NONE = 0U,
-<a name="l00151"></a>00151 CAP_C1 = 1U<<0,
-<a name="l00152"></a>00152 CAP_C1p = 1U<<1,
-<a name="l00153"></a>00153 CAP_C2 = 1U<<2,
-<a name="l00154"></a>00154 CAP_C3 = 1U<<3,
-<a name="l00155"></a>00155 CAP_C4 = 1U<<4,
-<a name="l00156"></a>00156 CAP_ALL = 0x1FU,
-<a name="l00157"></a>00157 OUT_ALL = 0x7F80U,
-<a name="l00158"></a>00158 };
-<a name="l00159"></a>00159
-<a name="l00160"></a>00160 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> SinCosSeries(<span class="keywordtype">bool</span> sinp,
-<a name="l00161"></a>00161 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cosx, <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[], <span class="keywordtype">int</span> n)
-<a name="l00162"></a>00162 <span class="keywordflow">throw</span>();
-<a name="l00163"></a>00163 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngNormalize(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
-<a name="l00164"></a>00164 <span class="comment">// Place angle in [-180, 180). Assumes x is in [-540, 540).</span>
-<a name="l00165"></a>00165 <span class="keywordflow">return</span> x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
-<a name="l00166"></a>00166 }
-<a name="l00167"></a>00167 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngRound(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
-<a name="l00168"></a>00168 <span class="comment">// The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57</span>
-<a name="l00169"></a>00169 <span class="comment">// for reals = 0.7 pm on the earth if x is an angle in degrees. (This</span>
-<a name="l00170"></a>00170 <span class="comment">// is about 1000 times more resolution than we get with angles around 90</span>
-<a name="l00171"></a>00171 <span class="comment">// degrees.) We use this to avoid having to deal with near singular</span>
-<a name="l00172"></a>00172 <span class="comment">// cases when x is non-zero but tiny (e.g., 1.0e-200).</span>
-<a name="l00173"></a>00173 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0625); <span class="comment">// 1/16</span>
-<a name="l00174"></a>00174 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y = std::abs(x);
-<a name="l00175"></a>00175 <span class="comment">// The compiler mustn't "simplify" z - (z - y) to y</span>
-<a name="l00176"></a>00176 y = y < z ? z - (z - y) : y;
-<a name="l00177"></a>00177 <span class="keywordflow">return</span> x < 0 ? -y : y;
-<a name="l00178"></a>00178 }
-<a name="l00179"></a>00179 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SinCosNorm(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& cosx) <span class="keywordflow">throw</span>() {
-<a name="l00180"></a>00180 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sinx, cosx);
-<a name="l00181"></a>00181 sinx /= r;
-<a name="l00182"></a>00182 cosx /= r;
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Astroid(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>();
-<a name="l00185"></a>00185
-<a name="l00186"></a>00186 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _f1, _e2, _ep2, _n, _b, _c2, _etol2;
-<a name="l00187"></a>00187 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _A3x[nA3x_], _C3x[nC3x_], _C4x[nC4x_];
+<a name="l00124"></a>00124 <span class="comment"> *</span>
+<a name="l00125"></a>00125 <span class="comment"> * <a href="Geod.1.html">Geod</a> is a command-line utility providing access</span>
+<a name="l00126"></a>00126 <span class="comment"> * to the functionality of Geodesic and GeodesicLine.</span>
+<a name="l00127"></a>00127 <span class="comment"> **********************************************************************/</span>
+<a name="l00128"></a>00128
+<a name="l00129"></a>00129 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Geodesic {
+<a name="l00130"></a>00130 <span class="keyword">private</span>:
+<a name="l00131"></a>00131 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00132"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac4a8bd684285e00b12427c052697a106">00132</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>;
+<a name="l00133"></a>00133 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA1_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00134"></a>00134 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00135"></a>00135 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC1p_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00136"></a>00136 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA2_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00137"></a>00137 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC2_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00138"></a>00138 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA3_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00139"></a>00139 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nA3x_ = nA3_;
+<a name="l00140"></a>00140 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00141"></a>00141 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC3x_ = (nC3_ * (nC3_ - 1)) / 2;
+<a name="l00142"></a>00142 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4_ = <a class="code" href="Geodesic_8hpp.html#a1927ca941a173c95631417cbd8cc8e0c">GEOD_ORD</a>;
+<a name="l00143"></a>00143 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> nC4x_ = (nC4_ * (nC4_ + 1)) / 2;
+<a name="l00144"></a>00144 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> maxit_ = 50;
+<a name="l00145"></a>00145
+<a name="l00146"></a>00146 <span class="keyword">static</span> <span class="keyword">const</span> real tiny_;
+<a name="l00147"></a>00147 <span class="keyword">static</span> <span class="keyword">const</span> real tol0_;
+<a name="l00148"></a>00148 <span class="keyword">static</span> <span class="keyword">const</span> real tol1_;
+<a name="l00149"></a>00149 <span class="keyword">static</span> <span class="keyword">const</span> real tol2_;
+<a name="l00150"></a>00150 <span class="keyword">static</span> <span class="keyword">const</span> real xthresh_;
+<a name="l00151"></a>00151
+<a name="l00152"></a>00152 <span class="keyword">enum</span> captype {
+<a name="l00153"></a>00153 CAP_NONE = 0U,
+<a name="l00154"></a>00154 CAP_C1 = 1U<<0,
+<a name="l00155"></a>00155 CAP_C1p = 1U<<1,
+<a name="l00156"></a>00156 CAP_C2 = 1U<<2,
+<a name="l00157"></a>00157 CAP_C3 = 1U<<3,
+<a name="l00158"></a>00158 CAP_C4 = 1U<<4,
+<a name="l00159"></a>00159 CAP_ALL = 0x1FU,
+<a name="l00160"></a>00160 OUT_ALL = 0x7F80U,
+<a name="l00161"></a>00161 };
+<a name="l00162"></a>00162
+<a name="l00163"></a>00163 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> SinCosSeries(<span class="keywordtype">bool</span> sinp,
+<a name="l00164"></a>00164 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cosx, <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[], <span class="keywordtype">int</span> n)
+<a name="l00165"></a>00165 <span class="keywordflow">throw</span>();
+<a name="l00166"></a>00166 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngNormalize(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00167"></a>00167 <span class="comment">// Place angle in [-180, 180). Assumes x is in [-540, 540).</span>
+<a name="l00168"></a>00168 <span class="keywordflow">return</span> x >= 180 ? x - 360 : (x < -180 ? x + 360 : x);
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngRound(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00171"></a>00171 <span class="comment">// The makes the smallest gap in x = 1/16 - nextafter(1/16, 0) = 1/2^57</span>
+<a name="l00172"></a>00172 <span class="comment">// for reals = 0.7 pm on the earth if x is an angle in degrees. (This</span>
+<a name="l00173"></a>00173 <span class="comment">// is about 1000 times more resolution than we get with angles around 90</span>
+<a name="l00174"></a>00174 <span class="comment">// degrees.) We use this to avoid having to deal with near singular</span>
+<a name="l00175"></a>00175 <span class="comment">// cases when x is non-zero but tiny (e.g., 1.0e-200).</span>
+<a name="l00176"></a>00176 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.0625); <span class="comment">// 1/16</span>
+<a name="l00177"></a>00177 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y = std::abs(x);
+<a name="l00178"></a>00178 <span class="comment">// The compiler mustn't "simplify" z - (z - y) to y</span>
+<a name="l00179"></a>00179 y = y < z ? z - (z - y) : y;
+<a name="l00180"></a>00180 <span class="keywordflow">return</span> x < 0 ? -y : y;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> SinCosNorm(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sinx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& cosx) <span class="keywordflow">throw</span>() {
+<a name="l00183"></a>00183 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sinx, cosx);
+<a name="l00184"></a>00184 sinx /= r;
+<a name="l00185"></a>00185 cosx /= r;
+<a name="l00186"></a>00186 }
+<a name="l00187"></a>00187 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Astroid(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>();
<a name="l00188"></a>00188
-<a name="l00189"></a>00189 <span class="keywordtype">void</span> Lengths(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sig12,
-<a name="l00190"></a>00190 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig2,
-<a name="l00191"></a>00191 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00192"></a>00192 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12s, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m0,
-<a name="l00193"></a>00193 <span class="keywordtype">bool</span> scalep, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
-<a name="l00194"></a>00194 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00195"></a>00195 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> InverseStart(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00196"></a>00196 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam12,
-<a name="l00197"></a>00197 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp1,
-<a name="l00198"></a>00198 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
-<a name="l00199"></a>00199 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00200"></a>00200 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Lambda12(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
-<a name="l00201"></a>00201 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> calp1,
-<a name="l00202"></a>00202 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sig12,
-<a name="l00203"></a>00203 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig2,
-<a name="l00204"></a>00204 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& domg12, <span class="keywordtype">bool</span> diffp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dlam12,
-<a name="l00205"></a>00205 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C3a[])
-<a name="l00206"></a>00206 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00207"></a>00207
-<a name="l00208"></a>00208 <span class="comment">// These are Maxima generated functions to provide series approximations to</span>
-<a name="l00209"></a>00209 <span class="comment">// the integrals for the ellipsoidal geodesic.</span>
-<a name="l00210"></a>00210 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A1m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>();
-<a name="l00211"></a>00211 <span class="keyword">static</span> <span class="keywordtype">void</span> C1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
-<a name="l00212"></a>00212 <span class="keyword">static</span> <span class="keywordtype">void</span> C1pf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
-<a name="l00213"></a>00213 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A2m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>();
-<a name="l00214"></a>00214 <span class="keyword">static</span> <span class="keywordtype">void</span> C2f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
-<a name="l00215"></a>00215
-<a name="l00216"></a>00216 <span class="keywordtype">void</span> A3coeff() throw();
-<a name="l00217"></a>00217 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) const throw();
-<a name="l00218"></a>00218 <span class="keywordtype">void</span> C3coeff() throw();
-<a name="l00219"></a>00219 <span class="keywordtype">void</span> C3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) const throw();
-<a name="l00220"></a>00220 <span class="keywordtype">void</span> C4coeff() throw();
-<a name="l00221"></a>00221 <span class="keywordtype">void</span> C4f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) const throw();
-<a name="l00222"></a>00222
-<a name="l00223"></a>00223 public:
-<a name="l00224"></a>00224 <span class="comment"></span>
-<a name="l00225"></a>00225 <span class="comment"> /**</span>
-<a name="l00226"></a>00226 <span class="comment"> * Bit masks for what calculations to do. These masks do double duty.</span>
-<a name="l00227"></a>00227 <span class="comment"> * They signify to the GeodesicLine::GeodesicLine constructor and to</span>
-<a name="l00228"></a>00228 <span class="comment"> * Geodesic::Line what capabilities should be included in the GeodesicLine</span>
-<a name="l00229"></a>00229 <span class="comment"> * object. They also specify which results to return in the general</span>
-<a name="l00230"></a>00230 <span class="comment"> * routines Geodesic::GenDirect and Geodesic::GenInverse routines.</span>
-<a name="l00231"></a>00231 <span class="comment"> * GeodesicLine::mask is a duplication of this enum.</span>
-<a name="l00232"></a>00232 <span class="comment"> **********************************************************************/</span>
-<a name="l00233"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828">00233</a> enum <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828">mask</a> {<span class="comment"></span>
-<a name="l00234"></a>00234 <span class="comment"> /**</span>
-<a name="l00235"></a>00235 <span class="comment"> * No capabilities, no output.</span>
-<a name="l00236"></a>00236 <span class="comment"> * @hideinitializer</span>
-<a name="l00237"></a>00237 <span class="comment"> **********************************************************************/</span>
-<a name="l00238"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ab10adfebcb73de5356c4787246f056af">00238</a> NONE = 0U,<span class="comment"></span>
-<a name="l00239"></a>00239 <span class="comment"> /**</span>
-<a name="l00240"></a>00240 <span class="comment"> * Calculate latitude \e lat2. (It's not necessary to include this as a</span>
-<a name="l00241"></a>00241 <span class="comment"> * capability to GeodesicLine because this is included by default.)</span>
-<a name="l00242"></a>00242 <span class="comment"> * @hideinitializer</span>
-<a name="l00243"></a>00243 <span class="comment"> **********************************************************************/</span>
-<a name="l00244"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7c1f4742e41ae5e75c8133ee7fb8fd90">00244</a> LATITUDE = 1U<<7 | CAP_NONE,<span class="comment"></span>
-<a name="l00245"></a>00245 <span class="comment"> /**</span>
-<a name="l00246"></a>00246 <span class="comment"> * Calculate longitude \e lon2.</span>
-<a name="l00247"></a>00247 <span class="comment"> * @hideinitializer</span>
-<a name="l00248"></a>00248 <span class="comment"> **********************************************************************/</span>
-<a name="l00249"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">00249</a> LONGITUDE = 1U<<8 | CAP_C3,<span class="comment"></span>
-<a name="l00250"></a>00250 <span class="comment"> /**</span>
-<a name="l00251"></a>00251 <span class="comment"> * Calculate azimuths \e azi1 and \e azi2. (It's not necessary to</span>
-<a name="l00252"></a>00252 <span class="comment"> * include this as a capability to GeodesicLine because this is included</span>
-<a name="l00253"></a>00253 <span class="comment"> * by default.)</span>
-<a name="l00254"></a>00254 <span class="comment"> * @hideinitializer</span>
-<a name="l00255"></a>00255 <span class="comment"> **********************************************************************/</span>
-<a name="l00256"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa413d0b81ccb4b5302285b1a01f16c08">00256</a> AZIMUTH = 1U<<9 | CAP_NONE,<span class="comment"></span>
-<a name="l00257"></a>00257 <span class="comment"> /**</span>
-<a name="l00258"></a>00258 <span class="comment"> * Calculate distance \e s12.</span>
-<a name="l00259"></a>00259 <span class="comment"> * @hideinitializer</span>
-<a name="l00260"></a>00260 <span class="comment"> **********************************************************************/</span>
-<a name="l00261"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">00261</a> DISTANCE = 1U<<10 | CAP_C1,<span class="comment"></span>
-<a name="l00262"></a>00262 <span class="comment"> /**</span>
-<a name="l00263"></a>00263 <span class="comment"> * Allow distance \e s12 to be used as input in the direct geodesic</span>
-<a name="l00264"></a>00264 <span class="comment"> * problem.</span>
-<a name="l00265"></a>00265 <span class="comment"> * @hideinitializer</span>
-<a name="l00266"></a>00266 <span class="comment"> **********************************************************************/</span>
-<a name="l00267"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ae20140cdf788fa0497df59630d3211ef">00267</a> DISTANCE_IN = 1U<<11 | CAP_C1 | CAP_C1p,<span class="comment"></span>
-<a name="l00268"></a>00268 <span class="comment"> /**</span>
-<a name="l00269"></a>00269 <span class="comment"> * Calculate reduced length \e m12.</span>
-<a name="l00270"></a>00270 <span class="comment"> * @hideinitializer</span>
-<a name="l00271"></a>00271 <span class="comment"> **********************************************************************/</span>
-<a name="l00272"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7a27709e1377a8c34704cf1cec64db6c">00272</a> REDUCEDLENGTH = 1U<<12 | CAP_C1 | CAP_C2,<span class="comment"></span>
-<a name="l00273"></a>00273 <span class="comment"> /**</span>
-<a name="l00274"></a>00274 <span class="comment"> * Calculate geodesic scales \e M12 and \e M21.</span>
-<a name="l00275"></a>00275 <span class="comment"> * @hideinitializer</span>
-<a name="l00276"></a>00276 <span class="comment"> **********************************************************************/</span>
-<a name="l00277"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828afb114302395314a68dfef3c14693ea2e">00277</a> GEODESICSCALE = 1U<<13 | CAP_C1 | CAP_C2,<span class="comment"></span>
-<a name="l00278"></a>00278 <span class="comment"> /**</span>
-<a name="l00279"></a>00279 <span class="comment"> * Calculate area \e S12.</span>
-<a name="l00280"></a>00280 <span class="comment"> * @hideinitializer</span>
-<a name="l00281"></a>00281 <span class="comment"> **********************************************************************/</span>
-<a name="l00282"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a9aea7d24f8e437d6ea38defbe4ec9b14">00282</a> AREA = 1U<<14 | CAP_C4,<span class="comment"></span>
-<a name="l00283"></a>00283 <span class="comment"> /**</span>
-<a name="l00284"></a>00284 <span class="comment"> * All capabilities. Calculate everything.</span>
-<a name="l00285"></a>00285 <span class="comment"> * @hideinitializer</span>
-<a name="l00286"></a>00286 <span class="comment"> **********************************************************************/</span>
-<a name="l00287"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a30e0c9456c5df9e6ff23880014bd11e0">00287</a> ALL = OUT_ALL| CAP_ALL,
-<a name="l00288"></a>00288 };
-<a name="l00289"></a>00289 <span class="comment"></span>
-<a name="l00290"></a>00290 <span class="comment"> /** \name Constructor</span>
-<a name="l00291"></a>00291 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00292"></a>00292 <span class="comment"> ///@{</span>
-<a name="l00293"></a>00293 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00294"></a>00294 <span class="comment"> * Constructor for a ellipsoid with</span>
-<a name="l00295"></a>00295 <span class="comment"> *</span>
-<a name="l00296"></a>00296 <span class="comment"> * @param[in] a equatorial radius (meters).</span>
-<a name="l00297"></a>00297 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00298"></a>00298 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00299"></a>00299 <span class="comment"> * to 1/\e f.</span>
-<a name="l00300"></a>00300 <span class="comment"> *</span>
-<a name="l00301"></a>00301 <span class="comment"> * An exception is thrown if either of the axes of the ellipsoid is</span>
-<a name="l00302"></a>00302 <span class="comment"> * non-positive.</span>
-<a name="l00303"></a>00303 <span class="comment"> **********************************************************************/</span>
-<a name="l00304"></a>00304 <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f);<span class="comment"></span>
-<a name="l00305"></a>00305 <span class="comment"> ///@}</span>
-<a name="l00306"></a>00306 <span class="comment"></span><span class="comment"></span>
-<a name="l00307"></a>00307 <span class="comment"> /** \name Direct geodesic problem specified in terms of distance.</span>
-<a name="l00308"></a>00308 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00309"></a>00309 <span class="comment"> ///@{</span>
-<a name="l00310"></a>00310 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00311"></a>00311 <span class="comment"> * Perform the direct geodesic calculation where the length of the geodesic</span>
-<a name="l00312"></a>00312 <span class="comment"> * is specify in terms of distance.</span>
-<a name="l00313"></a>00313 <span class="comment"> *</span>
-<a name="l00314"></a>00314 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00315"></a>00315 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00316"></a>00316 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00317"></a>00317 <span class="comment"> * @param[in] s12 distance between point 1 and point 2 (meters); it can be</span>
-<a name="l00318"></a>00318 <span class="comment"> * signed.</span>
-<a name="l00319"></a>00319 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00320"></a>00320 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees).</span>
-<a name="l00321"></a>00321 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00322"></a>00322 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00323"></a>00323 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00324"></a>00324 <span class="comment"> * (dimensionless).</span>
-<a name="l00325"></a>00325 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00326"></a>00326 <span class="comment"> * (dimensionless).</span>
-<a name="l00327"></a>00327 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00328"></a>00328 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00329"></a>00329 <span class="comment"> *</span>
-<a name="l00330"></a>00330 <span class="comment"> * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
-<a name="l00331"></a>00331 <span class="comment"> * in the range [-180, 360]. The values of \e lon2 and \e azi2 returned</span>
-<a name="l00332"></a>00332 <span class="comment"> * are in the range [-180, 180).</span>
-<a name="l00333"></a>00333 <span class="comment"> *</span>
-<a name="l00334"></a>00334 <span class="comment"> * If either point is at a pole, the azimuth is defined by keeping the</span>
-<a name="l00335"></a>00335 <span class="comment"> * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
-<a name="l00336"></a>00336 <span class="comment"> * taking the limit \e eps -> 0 from above. An arc length greater that 180</span>
-<a name="l00337"></a>00337 <span class="comment"> * degrees signifies a geodesic which is not a shortest path. (For a</span>
-<a name="l00338"></a>00338 <span class="comment"> * prolate ellipsoid, an additional condition is necessary for a shortest</span>
-<a name="l00339"></a>00339 <span class="comment"> * path: the longitudinal extent must not exceed of 180 degrees.)</span>
-<a name="l00340"></a>00340 <span class="comment"> *</span>
-<a name="l00341"></a>00341 <span class="comment"> * The following functions are overloaded versions of Geodesic::Direct</span>
-<a name="l00342"></a>00342 <span class="comment"> * which omit some of the output parameters. Note, however, that the arc</span>
-<a name="l00343"></a>00343 <span class="comment"> * length is always computed and returned as the function value.</span>
-<a name="l00344"></a>00344 <span class="comment"> **********************************************************************/</span>
-<a name="l00345"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">00345</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00346"></a>00346 real& lat2, real& lon2, real& azi2,
-<a name="l00347"></a>00347 real& m12, real& M12, real& M21, real& S12)
-<a name="l00348"></a>00348 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00349"></a>00349 real t;
-<a name="l00350"></a>00350 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00351"></a>00351 LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00352"></a>00352 REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00353"></a>00353 lat2, lon2, azi2, t, m12, M12, M21, S12);
-<a name="l00354"></a>00354 }
-<a name="l00355"></a>00355 <span class="comment"></span>
-<a name="l00356"></a>00356 <span class="comment"> /**</span>
-<a name="l00357"></a>00357 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
-<a name="l00358"></a>00358 <span class="comment"> **********************************************************************/</span>
-<a name="l00359"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac8b9e451fc4093253cfe3f8051d72a14">00359</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00360"></a>00360 real& lat2, real& lon2)
-<a name="l00361"></a>00361 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00362"></a>00362 real t;
-<a name="l00363"></a>00363 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00364"></a>00364 LATITUDE | LONGITUDE,
-<a name="l00365"></a>00365 lat2, lon2, t, t, t, t, t, t);
-<a name="l00366"></a>00366 }
-<a name="l00367"></a>00367 <span class="comment"></span>
-<a name="l00368"></a>00368 <span class="comment"> /**</span>
-<a name="l00369"></a>00369 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
-<a name="l00370"></a>00370 <span class="comment"> **********************************************************************/</span>
-<a name="l00371"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac8f0b5f4db73c5d8d11797698f937402">00371</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00372"></a>00372 real& lat2, real& lon2, real& azi2)
-<a name="l00373"></a>00373 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00374"></a>00374 real t;
-<a name="l00375"></a>00375 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00376"></a>00376 LATITUDE | LONGITUDE | AZIMUTH,
-<a name="l00377"></a>00377 lat2, lon2, azi2, t, t, t, t, t);
-<a name="l00378"></a>00378 }
-<a name="l00379"></a>00379 <span class="comment"></span>
-<a name="l00380"></a>00380 <span class="comment"> /**</span>
-<a name="l00381"></a>00381 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
-<a name="l00382"></a>00382 <span class="comment"> **********************************************************************/</span>
-<a name="l00383"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a63f7681d1239902dc3f528ded0f90352">00383</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00384"></a>00384 real& lat2, real& lon2, real& azi2, real& m12)
-<a name="l00385"></a>00385 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00386"></a>00386 real t;
-<a name="l00387"></a>00387 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00388"></a>00388 LATITUDE | LONGITUDE | AZIMUTH | REDUCEDLENGTH,
-<a name="l00389"></a>00389 lat2, lon2, azi2, t, m12, t, t, t);
-<a name="l00390"></a>00390 }
-<a name="l00391"></a>00391 <span class="comment"></span>
-<a name="l00392"></a>00392 <span class="comment"> /**</span>
-<a name="l00393"></a>00393 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
-<a name="l00394"></a>00394 <span class="comment"> **********************************************************************/</span>
-<a name="l00395"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7fb2003b8f1d68976fac43d158b4b8b4">00395</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00396"></a>00396 real& lat2, real& lon2, real& azi2,
-<a name="l00397"></a>00397 real& M12, real& M21)
-<a name="l00398"></a>00398 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00399"></a>00399 real t;
-<a name="l00400"></a>00400 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00401"></a>00401 LATITUDE | LONGITUDE | AZIMUTH | GEODESICSCALE,
-<a name="l00402"></a>00402 lat2, lon2, azi2, t, t, M12, M21, t);
-<a name="l00403"></a>00403 }
-<a name="l00404"></a>00404 <span class="comment"></span>
-<a name="l00405"></a>00405 <span class="comment"> /**</span>
-<a name="l00406"></a>00406 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
-<a name="l00407"></a>00407 <span class="comment"> **********************************************************************/</span>
-<a name="l00408"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a65cf95dc7f5c0bfd427e963281e044f0">00408</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Direct(real lat1, real lon1, real azi1, real s12,
-<a name="l00409"></a>00409 real& lat2, real& lon2, real& azi2,
-<a name="l00410"></a>00410 real& m12, real& M12, real& M21)
-<a name="l00411"></a>00411 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00412"></a>00412 real t;
-<a name="l00413"></a>00413 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
-<a name="l00414"></a>00414 LATITUDE | LONGITUDE | AZIMUTH |
-<a name="l00415"></a>00415 REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00416"></a>00416 lat2, lon2, azi2, t, m12, M12, M21, t);
-<a name="l00417"></a>00417 }<span class="comment"></span>
-<a name="l00418"></a>00418 <span class="comment"> ///@}</span>
-<a name="l00419"></a>00419 <span class="comment"></span><span class="comment"></span>
-<a name="l00420"></a>00420 <span class="comment"> /** \name Direct geodesic problem specified in terms of arc length.</span>
-<a name="l00421"></a>00421 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00422"></a>00422 <span class="comment"> ///@{</span>
-<a name="l00423"></a>00423 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00424"></a>00424 <span class="comment"> * Perform the direct geodesic calculation where the length of the geodesic</span>
-<a name="l00425"></a>00425 <span class="comment"> * is specify in terms of arc length.</span>
-<a name="l00426"></a>00426 <span class="comment"> *</span>
-<a name="l00427"></a>00427 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00428"></a>00428 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00429"></a>00429 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00430"></a>00430 <span class="comment"> * @param[in] a12 arc length between point 1 and point 2 (degrees); it can</span>
-<a name="l00431"></a>00431 <span class="comment"> * be signed.</span>
-<a name="l00432"></a>00432 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00433"></a>00433 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees).</span>
-<a name="l00434"></a>00434 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00435"></a>00435 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters).</span>
-<a name="l00436"></a>00436 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00437"></a>00437 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00438"></a>00438 <span class="comment"> * (dimensionless).</span>
-<a name="l00439"></a>00439 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00440"></a>00440 <span class="comment"> * (dimensionless).</span>
-<a name="l00441"></a>00441 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00442"></a>00442 <span class="comment"> *</span>
-<a name="l00443"></a>00443 <span class="comment"> * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
-<a name="l00444"></a>00444 <span class="comment"> * in the range [-180, 360]. The values of \e lon2 and \e azi2 returned</span>
-<a name="l00445"></a>00445 <span class="comment"> * are in the range [-180, 180).</span>
-<a name="l00446"></a>00446 <span class="comment"> *</span>
-<a name="l00447"></a>00447 <span class="comment"> * If either point is at a pole, the azimuth is defined by keeping the</span>
-<a name="l00448"></a>00448 <span class="comment"> * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
-<a name="l00449"></a>00449 <span class="comment"> * taking the limit \e eps -> 0 from above. An arc length greater that 180</span>
-<a name="l00450"></a>00450 <span class="comment"> * degrees signifies a geodesic which is not a shortest path. (For a</span>
-<a name="l00451"></a>00451 <span class="comment"> * prolate ellipsoid, an additional condition is necessary for a shortest</span>
-<a name="l00452"></a>00452 <span class="comment"> * path: the longitudinal extent must not exceed of 180 degrees.)</span>
-<a name="l00453"></a>00453 <span class="comment"> *</span>
-<a name="l00454"></a>00454 <span class="comment"> * The following functions are overloaded versions of Geodesic::Direct</span>
-<a name="l00455"></a>00455 <span class="comment"> * which omit some of the output parameters.</span>
-<a name="l00456"></a>00456 <span class="comment"> **********************************************************************/</span>
-<a name="l00457"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">00457</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00458"></a>00458 real& lat2, real& lon2, real& azi2, real& s12,
-<a name="l00459"></a>00459 real& m12, real& M12, real& M21, real& S12)
-<a name="l00460"></a>00460 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00461"></a>00461 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00462"></a>00462 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00463"></a>00463 REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00464"></a>00464 lat2, lon2, azi2, s12, m12, M12, M21, S12);
-<a name="l00465"></a>00465 }
-<a name="l00466"></a>00466 <span class="comment"></span>
-<a name="l00467"></a>00467 <span class="comment"> /**</span>
-<a name="l00468"></a>00468 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00469"></a>00469 <span class="comment"> **********************************************************************/</span>
-<a name="l00470"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aa1bed6c11200c0323cffd0e7027e4df2">00470</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00471"></a>00471 real& lat2, real& lon2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00472"></a>00472 real t;
-<a name="l00473"></a>00473 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00474"></a>00474 LATITUDE | LONGITUDE,
-<a name="l00475"></a>00475 lat2, lon2, t, t, t, t, t, t);
-<a name="l00476"></a>00476 }
-<a name="l00477"></a>00477 <span class="comment"></span>
-<a name="l00478"></a>00478 <span class="comment"> /**</span>
-<a name="l00479"></a>00479 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00480"></a>00480 <span class="comment"> **********************************************************************/</span>
-<a name="l00481"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a6f8eabd951b2fe23ffacb6209b2d43bc">00481</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00482"></a>00482 real& lat2, real& lon2, real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00483"></a>00483 real t;
-<a name="l00484"></a>00484 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00485"></a>00485 LATITUDE | LONGITUDE | AZIMUTH,
-<a name="l00486"></a>00486 lat2, lon2, azi2, t, t, t, t, t);
-<a name="l00487"></a>00487 }
-<a name="l00488"></a>00488 <span class="comment"></span>
-<a name="l00489"></a>00489 <span class="comment"> /**</span>
-<a name="l00490"></a>00490 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00491"></a>00491 <span class="comment"> **********************************************************************/</span>
-<a name="l00492"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a223802b76bae1665f360b2e343d7afd7">00492</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00493"></a>00493 real& lat2, real& lon2, real& azi2, real& s12)
-<a name="l00494"></a>00494 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00495"></a>00495 real t;
-<a name="l00496"></a>00496 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00497"></a>00497 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
-<a name="l00498"></a>00498 lat2, lon2, azi2, s12, t, t, t, t);
-<a name="l00499"></a>00499 }
-<a name="l00500"></a>00500 <span class="comment"></span>
-<a name="l00501"></a>00501 <span class="comment"> /**</span>
-<a name="l00502"></a>00502 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00503"></a>00503 <span class="comment"> **********************************************************************/</span>
-<a name="l00504"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a63ffe80d449adad813dc98805adcca81">00504</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00505"></a>00505 real& lat2, real& lon2, real& azi2,
-<a name="l00506"></a>00506 real& s12, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00507"></a>00507 real t;
-<a name="l00508"></a>00508 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00509"></a>00509 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00510"></a>00510 REDUCEDLENGTH,
-<a name="l00511"></a>00511 lat2, lon2, azi2, s12, m12, t, t, t);
-<a name="l00512"></a>00512 }
-<a name="l00513"></a>00513 <span class="comment"></span>
-<a name="l00514"></a>00514 <span class="comment"> /**</span>
-<a name="l00515"></a>00515 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00516"></a>00516 <span class="comment"> **********************************************************************/</span>
-<a name="l00517"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a55c17605d76f6c46ac5b11f36e8e8641">00517</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00518"></a>00518 real& lat2, real& lon2, real& azi2, real& s12,
-<a name="l00519"></a>00519 real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00520"></a>00520 real t;
-<a name="l00521"></a>00521 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00522"></a>00522 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00523"></a>00523 GEODESICSCALE,
-<a name="l00524"></a>00524 lat2, lon2, azi2, s12, t, M12, M21, t);
-<a name="l00525"></a>00525 }
-<a name="l00526"></a>00526 <span class="comment"></span>
-<a name="l00527"></a>00527 <span class="comment"> /**</span>
-<a name="l00528"></a>00528 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
-<a name="l00529"></a>00529 <span class="comment"> **********************************************************************/</span>
-<a name="l00530"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#adc8a4d02e631e8966d5842056a49be9c">00530</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
-<a name="l00531"></a>00531 real& lat2, real& lon2, real& azi2, real& s12,
-<a name="l00532"></a>00532 real& m12, real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00533"></a>00533 real t;
-<a name="l00534"></a>00534 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
-<a name="l00535"></a>00535 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
-<a name="l00536"></a>00536 REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00537"></a>00537 lat2, lon2, azi2, s12, m12, M12, M21, t);
-<a name="l00538"></a>00538 }<span class="comment"></span>
-<a name="l00539"></a>00539 <span class="comment"> ///@}</span>
-<a name="l00540"></a>00540 <span class="comment"></span><span class="comment"></span>
-<a name="l00541"></a>00541 <span class="comment"> /** \name General version of the direct geodesic solution.</span>
-<a name="l00542"></a>00542 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00543"></a>00543 <span class="comment"> ///@{</span>
-<a name="l00544"></a>00544 <span class="comment"></span><span class="comment"></span>
-<a name="l00545"></a>00545 <span class="comment"> /**</span>
-<a name="l00546"></a>00546 <span class="comment"> * The general direct geodesic calculation. Geodesic::Direct and</span>
-<a name="l00547"></a>00547 <span class="comment"> * Geodesic::ArcDirect are defined in terms of this function.</span>
-<a name="l00548"></a>00548 <span class="comment"> *</span>
-<a name="l00549"></a>00549 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00550"></a>00550 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00551"></a>00551 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00552"></a>00552 <span class="comment"> * @param[in] arcmode boolean flag determining the meaning of the second</span>
-<a name="l00553"></a>00553 <span class="comment"> * parameter.</span>
-<a name="l00554"></a>00554 <span class="comment"> * @param[in] s12_a12 if \e arcmode is false, this is the distance between</span>
-<a name="l00555"></a>00555 <span class="comment"> * point 1 and point 2 (meters); otherwise it is the arc length between</span>
-<a name="l00556"></a>00556 <span class="comment"> * point 1 and point 2 (degrees); it can be signed.</span>
-<a name="l00557"></a>00557 <span class="comment"> * @param[in] outmask a bitor'ed combination of Geodesic::mask values</span>
-<a name="l00558"></a>00558 <span class="comment"> * specifying which of the following parameters should be set.</span>
-<a name="l00559"></a>00559 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
-<a name="l00560"></a>00560 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees).</span>
-<a name="l00561"></a>00561 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00562"></a>00562 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters).</span>
-<a name="l00563"></a>00563 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00564"></a>00564 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00565"></a>00565 <span class="comment"> * (dimensionless).</span>
-<a name="l00566"></a>00566 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00567"></a>00567 <span class="comment"> * (dimensionless).</span>
-<a name="l00568"></a>00568 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00569"></a>00569 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00570"></a>00570 <span class="comment"> *</span>
-<a name="l00571"></a>00571 <span class="comment"> * The Geodesic::mask values possible for \e outmask are</span>
-<a name="l00572"></a>00572 <span class="comment"> * - \e outmask |= Geodesic::LATITUDE for the latitude \e lat2.</span>
-<a name="l00573"></a>00573 <span class="comment"> * - \e outmask |= Geodesic::LONGITUDE for the latitude \e lon2.</span>
-<a name="l00574"></a>00574 <span class="comment"> * - \e outmask |= Geodesic::AZIMUTH for the latitude \e azi2.</span>
-<a name="l00575"></a>00575 <span class="comment"> * - \e outmask |= Geodesic::DISTANCE for the distance \e s12.</span>
-<a name="l00576"></a>00576 <span class="comment"> * - \e outmask |= Geodesic::REDUCEDLENGTH for the reduced length \e</span>
-<a name="l00577"></a>00577 <span class="comment"> * m12.</span>
-<a name="l00578"></a>00578 <span class="comment"> * - \e outmask |= Geodesic::GEODESICSCALE for the geodesic scales \e</span>
-<a name="l00579"></a>00579 <span class="comment"> * M12 and \e M21.</span>
-<a name="l00580"></a>00580 <span class="comment"> * - \e outmask |= Geodesic::AREA for the area \e S12.</span>
-<a name="l00581"></a>00581 <span class="comment"> * .</span>
-<a name="l00582"></a>00582 <span class="comment"> * The function value \e a12 is always computed and returned and this</span>
-<a name="l00583"></a>00583 <span class="comment"> * equals \e s12_a12 is \e arcmode is true. If \e outmask includes</span>
-<a name="l00584"></a>00584 <span class="comment"> * Geodesic::DISTANCE and \e arcmode is false, then \e s12 = \e s12_a12.</span>
-<a name="l00585"></a>00585 <span class="comment"> * It is not necessary to include Geodesic::DISTANCE_IN in \e outmask; this</span>
-<a name="l00586"></a>00586 <span class="comment"> * is automatically included is \e arcmode is false.</span>
-<a name="l00587"></a>00587 <span class="comment"> **********************************************************************/</span>
-<a name="l00588"></a>00588 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GenDirect(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi1,
-<a name="l00589"></a>00589 <span class="keywordtype">bool</span> arcmode, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12_a12, <span class="keywordtype">unsigned</span> outmask,
-<a name="l00590"></a>00590 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
-<a name="l00591"></a>00591 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
-<a name="l00592"></a>00592 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
-<a name="l00593"></a>00593 <span class="comment"> ///@}</span>
-<a name="l00594"></a>00594 <span class="comment"></span><span class="comment"></span>
-<a name="l00595"></a>00595 <span class="comment"> /** \name Inverse geodesic problem.</span>
-<a name="l00596"></a>00596 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00597"></a>00597 <span class="comment"> ///@{</span>
-<a name="l00598"></a>00598 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00599"></a>00599 <span class="comment"> * Perform the inverse geodesic calculation.</span>
-<a name="l00600"></a>00600 <span class="comment"> *</span>
-<a name="l00601"></a>00601 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00602"></a>00602 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00603"></a>00603 <span class="comment"> * @param[in] lat2 latitude of point 2 (degrees).</span>
-<a name="l00604"></a>00604 <span class="comment"> * @param[in] lon2 longitude of point 2 (degrees).</span>
-<a name="l00605"></a>00605 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters).</span>
-<a name="l00606"></a>00606 <span class="comment"> * @param[out] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00607"></a>00607 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00608"></a>00608 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00609"></a>00609 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00610"></a>00610 <span class="comment"> * (dimensionless).</span>
-<a name="l00611"></a>00611 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00612"></a>00612 <span class="comment"> * (dimensionless).</span>
-<a name="l00613"></a>00613 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00614"></a>00614 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00615"></a>00615 <span class="comment"> *</span>
-<a name="l00616"></a>00616 <span class="comment"> * \e lat1 and \e lat2 should be in the range [-90, 90]; \e lon1 and \e</span>
-<a name="l00617"></a>00617 <span class="comment"> * lon2 should be in the range [-180, 360]. The values of \e azi1 and \e</span>
-<a name="l00618"></a>00618 <span class="comment"> * azi2 returned are in the range [-180, 180).</span>
-<a name="l00619"></a>00619 <span class="comment"> *</span>
-<a name="l00620"></a>00620 <span class="comment"> * If either point is at a pole, the azimuth is defined by keeping the</span>
-<a name="l00621"></a>00621 <span class="comment"> * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
-<a name="l00622"></a>00622 <span class="comment"> * taking the limit \e eps -> 0 from above. If the routine fails to</span>
-<a name="l00623"></a>00623 <span class="comment"> * converge, then all the requested outputs are set to Math::NaN(). (Test</span>
-<a name="l00624"></a>00624 <span class="comment"> * for such results with Math::isnan.) This is not expected to happen with</span>
-<a name="l00625"></a>00625 <span class="comment"> * ellipsoidal models of the earth; please report all cases where this</span>
-<a name="l00626"></a>00626 <span class="comment"> * occurs.</span>
-<a name="l00627"></a>00627 <span class="comment"> *</span>
-<a name="l00628"></a>00628 <span class="comment"> * The following functions are overloaded versions of Geodesic::Inverse</span>
-<a name="l00629"></a>00629 <span class="comment"> * which omit some of the output parameters. Note, however, that the arc</span>
-<a name="l00630"></a>00630 <span class="comment"> * length is always computed and returned as the function value.</span>
-<a name="l00631"></a>00631 <span class="comment"> **********************************************************************/</span>
-<a name="l00632"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">00632</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00633"></a>00633 real& s12, real& azi1, real& azi2, real& m12,
-<a name="l00634"></a>00634 real& M12, real& M21, real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00635"></a>00635 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00636"></a>00636 DISTANCE | AZIMUTH |
-<a name="l00637"></a>00637 REDUCEDLENGTH | GEODESICSCALE | AREA,
-<a name="l00638"></a>00638 s12, azi1, azi2, m12, M12, M21, S12);
-<a name="l00639"></a>00639 }
-<a name="l00640"></a>00640 <span class="comment"></span>
-<a name="l00641"></a>00641 <span class="comment"> /**</span>
-<a name="l00642"></a>00642 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
-<a name="l00643"></a>00643 <span class="comment"> **********************************************************************/</span>
-<a name="l00644"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7c35218473b1784b1a80b8631f2d345d">00644</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00645"></a>00645 real& s12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00646"></a>00646 real t;
-<a name="l00647"></a>00647 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00648"></a>00648 DISTANCE,
-<a name="l00649"></a>00649 s12, t, t, t, t, t, t);
-<a name="l00650"></a>00650 }
-<a name="l00651"></a>00651 <span class="comment"></span>
-<a name="l00652"></a>00652 <span class="comment"> /**</span>
-<a name="l00653"></a>00653 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
-<a name="l00654"></a>00654 <span class="comment"> **********************************************************************/</span>
-<a name="l00655"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a599e587407713f7019906881d6116873">00655</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00656"></a>00656 real& azi1, real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00657"></a>00657 real t;
-<a name="l00658"></a>00658 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00659"></a>00659 AZIMUTH,
-<a name="l00660"></a>00660 t, azi1, azi2, t, t, t, t);
-<a name="l00661"></a>00661 }
-<a name="l00662"></a>00662 <span class="comment"></span>
-<a name="l00663"></a>00663 <span class="comment"> /**</span>
-<a name="l00664"></a>00664 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
-<a name="l00665"></a>00665 <span class="comment"> **********************************************************************/</span>
-<a name="l00666"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a3e07eef498c82ac25b482cadf129d8ae">00666</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00667"></a>00667 real& s12, real& azi1, real& azi2)
-<a name="l00668"></a>00668 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00669"></a>00669 real t;
-<a name="l00670"></a>00670 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00671"></a>00671 DISTANCE | AZIMUTH,
-<a name="l00672"></a>00672 s12, azi1, azi2, t, t, t, t);
-<a name="l00673"></a>00673 }
-<a name="l00674"></a>00674 <span class="comment"></span>
-<a name="l00675"></a>00675 <span class="comment"> /**</span>
-<a name="l00676"></a>00676 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
-<a name="l00677"></a>00677 <span class="comment"> **********************************************************************/</span>
-<a name="l00678"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">00678</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00679"></a>00679 real& s12, real& azi1, real& azi2, real& m12)
-<a name="l00680"></a>00680 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00681"></a>00681 real t;
-<a name="l00682"></a>00682 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00683"></a>00683 DISTANCE | AZIMUTH | REDUCEDLENGTH,
-<a name="l00684"></a>00684 s12, azi1, azi2, m12, t, t, t);
-<a name="l00685"></a>00685 }
-<a name="l00686"></a>00686 <span class="comment"></span>
-<a name="l00687"></a>00687 <span class="comment"> /**</span>
-<a name="l00688"></a>00688 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
-<a name="l00689"></a>00689 <span class="comment"> **********************************************************************/</span>
-<a name="l00690"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">00690</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00691"></a>00691 real& s12, real& azi1, real& azi2,
-<a name="l00692"></a>00692 real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00693"></a>00693 real t;
-<a name="l00694"></a>00694 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00695"></a>00695 DISTANCE | AZIMUTH | GEODESICSCALE,
-<a name="l00696"></a>00696 s12, azi1, azi2, t, M12, M21, t);
-<a name="l00697"></a>00697 }
-<a name="l00698"></a>00698 <span class="comment"></span>
-<a name="l00699"></a>00699 <span class="comment"> /**</span>
-<a name="l00700"></a>00700 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
-<a name="l00701"></a>00701 <span class="comment"> **********************************************************************/</span>
-<a name="l00702"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ad3f98a5f2adf39ff26cf3d6fe32258a8">00702</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Inverse(real lat1, real lon1, real lat2, real lon2,
-<a name="l00703"></a>00703 real& s12, real& azi1, real& azi2, real& m12,
-<a name="l00704"></a>00704 real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00705"></a>00705 real t;
-<a name="l00706"></a>00706 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
-<a name="l00707"></a>00707 DISTANCE | AZIMUTH |
-<a name="l00708"></a>00708 REDUCEDLENGTH | GEODESICSCALE,
-<a name="l00709"></a>00709 s12, azi1, azi2, m12, M12, M21, t);
-<a name="l00710"></a>00710 }<span class="comment"></span>
-<a name="l00711"></a>00711 <span class="comment"> ///@}</span>
-<a name="l00712"></a>00712 <span class="comment"></span><span class="comment"></span>
-<a name="l00713"></a>00713 <span class="comment"> /** \name General version of inverse geodesic solution.</span>
-<a name="l00714"></a>00714 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00715"></a>00715 <span class="comment"> ///@{</span>
-<a name="l00716"></a>00716 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00717"></a>00717 <span class="comment"> * The general inverse geodesic calculation. Geodesic::Inverse is defined</span>
-<a name="l00718"></a>00718 <span class="comment"> * in terms of this function.</span>
-<a name="l00719"></a>00719 <span class="comment"> *</span>
-<a name="l00720"></a>00720 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00721"></a>00721 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00722"></a>00722 <span class="comment"> * @param[in] lat2 latitude of point 2 (degrees).</span>
-<a name="l00723"></a>00723 <span class="comment"> * @param[in] lon2 longitude of point 2 (degrees).</span>
-<a name="l00724"></a>00724 <span class="comment"> * @param[in] outmask a bitor'ed combination of Geodesic::mask values</span>
-<a name="l00725"></a>00725 <span class="comment"> * specifying which of the following parameters should be set.</span>
-<a name="l00726"></a>00726 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters).</span>
-<a name="l00727"></a>00727 <span class="comment"> * @param[out] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00728"></a>00728 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
-<a name="l00729"></a>00729 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
-<a name="l00730"></a>00730 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
-<a name="l00731"></a>00731 <span class="comment"> * (dimensionless).</span>
-<a name="l00732"></a>00732 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
-<a name="l00733"></a>00733 <span class="comment"> * (dimensionless).</span>
-<a name="l00734"></a>00734 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
-<a name="l00735"></a>00735 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
-<a name="l00736"></a>00736 <span class="comment"> *</span>
-<a name="l00737"></a>00737 <span class="comment"> * The Geodesic::mask values possible for \e outmask are</span>
-<a name="l00738"></a>00738 <span class="comment"> * - \e outmask |= Geodesic::DISTANCE for the distance \e s12.</span>
-<a name="l00739"></a>00739 <span class="comment"> * - \e outmask |= Geodesic::AZIMUTH for the latitude \e azi2.</span>
-<a name="l00740"></a>00740 <span class="comment"> * - \e outmask |= Geodesic::REDUCEDLENGTH for the reduced length \e</span>
-<a name="l00741"></a>00741 <span class="comment"> * m12.</span>
-<a name="l00742"></a>00742 <span class="comment"> * - \e outmask |= Geodesic::GEODESICSCALE for the geodesic scales \e</span>
-<a name="l00743"></a>00743 <span class="comment"> * M12 and \e M21.</span>
-<a name="l00744"></a>00744 <span class="comment"> * - \e outmask |= Geodesic::AREA for the area \e S12.</span>
-<a name="l00745"></a>00745 <span class="comment"> * .</span>
-<a name="l00746"></a>00746 <span class="comment"> * The arc length is always computed and returned as the function value.</span>
-<a name="l00747"></a>00747 <span class="comment"> **********************************************************************/</span>
-<a name="l00748"></a>00748 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GenInverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon2,
-<a name="l00749"></a>00749 <span class="keywordtype">unsigned</span> outmask,
-<a name="l00750"></a>00750 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
-<a name="l00751"></a>00751 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12)
-<a name="l00752"></a>00752 <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
-<a name="l00753"></a>00753 <span class="comment"> ///@}</span>
-<a name="l00754"></a>00754 <span class="comment"></span><span class="comment"></span>
-<a name="l00755"></a>00755 <span class="comment"> /** \name Interface to GeodesicLine.</span>
-<a name="l00756"></a>00756 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00757"></a>00757 <span class="comment"> ///@{</span>
-<a name="l00758"></a>00758 <span class="comment"></span><span class="comment"></span>
-<a name="l00759"></a>00759 <span class="comment"> /**</span>
-<a name="l00760"></a>00760 <span class="comment"> * Set up to compute several points on a singe geodesic.</span>
-<a name="l00761"></a>00761 <span class="comment"> *</span>
-<a name="l00762"></a>00762 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
-<a name="l00763"></a>00763 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
-<a name="l00764"></a>00764 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
-<a name="l00765"></a>00765 <span class="comment"> * @param[in] caps bitor'ed combination of Geodesic::mask values</span>
-<a name="l00766"></a>00766 <span class="comment"> * specifying the capabilities the GeodesicLine object should possess,</span>
-<a name="l00767"></a>00767 <span class="comment"> * i.e., which quantities can be returned in calls to</span>
-<a name="l00768"></a>00768 <span class="comment"> * GeodesicLib::Position.</span>
-<a name="l00769"></a>00769 <span class="comment"> *</span>
-<a name="l00770"></a>00770 <span class="comment"> * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
-<a name="l00771"></a>00771 <span class="comment"> * in the range [-180, 360].</span>
+<a name="l00189"></a>00189 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _f1, _e2, _ep2, _n, _b, _c2, _etol2;
+<a name="l00190"></a>00190 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _A3x[nA3x_], _C3x[nC3x_], _C4x[nC4x_];
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <span class="keywordtype">void</span> Lengths(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sig12,
+<a name="l00193"></a>00193 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> csig2,
+<a name="l00194"></a>00194 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00195"></a>00195 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12s, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m0,
+<a name="l00196"></a>00196 <span class="keywordtype">bool</span> scalep, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
+<a name="l00197"></a>00197 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00198"></a>00198 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> InverseStart(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00199"></a>00199 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam12,
+<a name="l00200"></a>00200 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp1,
+<a name="l00201"></a>00201 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2,
+<a name="l00202"></a>00202 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00203"></a>00203 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Lambda12(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sbet2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cbet2,
+<a name="l00204"></a>00204 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> salp1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> calp1,
+<a name="l00205"></a>00205 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& salp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& calp2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& sig12,
+<a name="l00206"></a>00206 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& ssig2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& csig2,
+<a name="l00207"></a>00207 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& domg12, <span class="keywordtype">bool</span> diffp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dlam12,
+<a name="l00208"></a>00208 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C1a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C2a[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> C3a[])
+<a name="l00209"></a>00209 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00210"></a>00210
+<a name="l00211"></a>00211 <span class="comment">// These are Maxima generated functions to provide series approximations to</span>
+<a name="l00212"></a>00212 <span class="comment">// the integrals for the ellipsoidal geodesic.</span>
+<a name="l00213"></a>00213 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A1m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>();
+<a name="l00214"></a>00214 <span class="keyword">static</span> <span class="keywordtype">void</span> C1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
+<a name="l00215"></a>00215 <span class="keyword">static</span> <span class="keywordtype">void</span> C1pf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
+<a name="l00216"></a>00216 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A2m1f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) <span class="keywordflow">throw</span>();
+<a name="l00217"></a>00217 <span class="keyword">static</span> <span class="keywordtype">void</span> C2f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) <span class="keywordflow">throw</span>();
+<a name="l00218"></a>00218
+<a name="l00219"></a>00219 <span class="keywordtype">void</span> A3coeff() throw();
+<a name="l00220"></a>00220 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> A3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps) const throw();
+<a name="l00221"></a>00221 <span class="keywordtype">void</span> C3coeff() throw();
+<a name="l00222"></a>00222 <span class="keywordtype">void</span> C3f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) const throw();
+<a name="l00223"></a>00223 <span class="keywordtype">void</span> C4coeff() throw();
+<a name="l00224"></a>00224 <span class="keywordtype">void</span> C4f(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c[]) const throw();
+<a name="l00225"></a>00225
+<a name="l00226"></a>00226 public:
+<a name="l00227"></a>00227 <span class="comment"></span>
+<a name="l00228"></a>00228 <span class="comment"> /**</span>
+<a name="l00229"></a>00229 <span class="comment"> * Bit masks for what calculations to do. These masks do double duty.</span>
+<a name="l00230"></a>00230 <span class="comment"> * They signify to the GeodesicLine::GeodesicLine constructor and to</span>
+<a name="l00231"></a>00231 <span class="comment"> * Geodesic::Line what capabilities should be included in the GeodesicLine</span>
+<a name="l00232"></a>00232 <span class="comment"> * object. They also specify which results to return in the general</span>
+<a name="l00233"></a>00233 <span class="comment"> * routines Geodesic::GenDirect and Geodesic::GenInverse routines.</span>
+<a name="l00234"></a>00234 <span class="comment"> * GeodesicLine::mask is a duplication of this enum.</span>
+<a name="l00235"></a>00235 <span class="comment"> **********************************************************************/</span>
+<a name="l00236"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828">00236</a> enum <a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828">mask</a> {<span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment"> /**</span>
+<a name="l00238"></a>00238 <span class="comment"> * No capabilities, no output.</span>
+<a name="l00239"></a>00239 <span class="comment"> * @hideinitializer</span>
+<a name="l00240"></a>00240 <span class="comment"> **********************************************************************/</span>
+<a name="l00241"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ab10adfebcb73de5356c4787246f056af">00241</a> NONE = 0U,<span class="comment"></span>
+<a name="l00242"></a>00242 <span class="comment"> /**</span>
+<a name="l00243"></a>00243 <span class="comment"> * Calculate latitude \e lat2. (It's not necessary to include this as a</span>
+<a name="l00244"></a>00244 <span class="comment"> * capability to GeodesicLine because this is included by default.)</span>
+<a name="l00245"></a>00245 <span class="comment"> * @hideinitializer</span>
+<a name="l00246"></a>00246 <span class="comment"> **********************************************************************/</span>
+<a name="l00247"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7c1f4742e41ae5e75c8133ee7fb8fd90">00247</a> LATITUDE = 1U<<7 | CAP_NONE,<span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment"> /**</span>
+<a name="l00249"></a>00249 <span class="comment"> * Calculate longitude \e lon2.</span>
+<a name="l00250"></a>00250 <span class="comment"> * @hideinitializer</span>
+<a name="l00251"></a>00251 <span class="comment"> **********************************************************************/</span>
+<a name="l00252"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">00252</a> LONGITUDE = 1U<<8 | CAP_C3,<span class="comment"></span>
+<a name="l00253"></a>00253 <span class="comment"> /**</span>
+<a name="l00254"></a>00254 <span class="comment"> * Calculate azimuths \e azi1 and \e azi2. (It's not necessary to</span>
+<a name="l00255"></a>00255 <span class="comment"> * include this as a capability to GeodesicLine because this is included</span>
+<a name="l00256"></a>00256 <span class="comment"> * by default.)</span>
+<a name="l00257"></a>00257 <span class="comment"> * @hideinitializer</span>
+<a name="l00258"></a>00258 <span class="comment"> **********************************************************************/</span>
+<a name="l00259"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa413d0b81ccb4b5302285b1a01f16c08">00259</a> AZIMUTH = 1U<<9 | CAP_NONE,<span class="comment"></span>
+<a name="l00260"></a>00260 <span class="comment"> /**</span>
+<a name="l00261"></a>00261 <span class="comment"> * Calculate distance \e s12.</span>
+<a name="l00262"></a>00262 <span class="comment"> * @hideinitializer</span>
+<a name="l00263"></a>00263 <span class="comment"> **********************************************************************/</span>
+<a name="l00264"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">00264</a> DISTANCE = 1U<<10 | CAP_C1,<span class="comment"></span>
+<a name="l00265"></a>00265 <span class="comment"> /**</span>
+<a name="l00266"></a>00266 <span class="comment"> * Allow distance \e s12 to be used as input in the direct geodesic</span>
+<a name="l00267"></a>00267 <span class="comment"> * problem.</span>
+<a name="l00268"></a>00268 <span class="comment"> * @hideinitializer</span>
+<a name="l00269"></a>00269 <span class="comment"> **********************************************************************/</span>
+<a name="l00270"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828ae20140cdf788fa0497df59630d3211ef">00270</a> DISTANCE_IN = 1U<<11 | CAP_C1 | CAP_C1p,<span class="comment"></span>
+<a name="l00271"></a>00271 <span class="comment"> /**</span>
+<a name="l00272"></a>00272 <span class="comment"> * Calculate reduced length \e m12.</span>
+<a name="l00273"></a>00273 <span class="comment"> * @hideinitializer</span>
+<a name="l00274"></a>00274 <span class="comment"> **********************************************************************/</span>
+<a name="l00275"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7a27709e1377a8c34704cf1cec64db6c">00275</a> REDUCEDLENGTH = 1U<<12 | CAP_C1 | CAP_C2,<span class="comment"></span>
+<a name="l00276"></a>00276 <span class="comment"> /**</span>
+<a name="l00277"></a>00277 <span class="comment"> * Calculate geodesic scales \e M12 and \e M21.</span>
+<a name="l00278"></a>00278 <span class="comment"> * @hideinitializer</span>
+<a name="l00279"></a>00279 <span class="comment"> **********************************************************************/</span>
+<a name="l00280"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828afb114302395314a68dfef3c14693ea2e">00280</a> GEODESICSCALE = 1U<<13 | CAP_C1 | CAP_C2,<span class="comment"></span>
+<a name="l00281"></a>00281 <span class="comment"> /**</span>
+<a name="l00282"></a>00282 <span class="comment"> * Calculate area \e S12.</span>
+<a name="l00283"></a>00283 <span class="comment"> * @hideinitializer</span>
+<a name="l00284"></a>00284 <span class="comment"> **********************************************************************/</span>
+<a name="l00285"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a9aea7d24f8e437d6ea38defbe4ec9b14">00285</a> AREA = 1U<<14 | CAP_C4,<span class="comment"></span>
+<a name="l00286"></a>00286 <span class="comment"> /**</span>
+<a name="l00287"></a>00287 <span class="comment"> * All capabilities. Calculate everything.</span>
+<a name="l00288"></a>00288 <span class="comment"> * @hideinitializer</span>
+<a name="l00289"></a>00289 <span class="comment"> **********************************************************************/</span>
+<a name="l00290"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a30e0c9456c5df9e6ff23880014bd11e0">00290</a> ALL = OUT_ALL| CAP_ALL,
+<a name="l00291"></a>00291 };
+<a name="l00292"></a>00292 <span class="comment"></span>
+<a name="l00293"></a>00293 <span class="comment"> /** \name Constructor</span>
+<a name="l00294"></a>00294 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00295"></a>00295 <span class="comment"> ///@{</span>
+<a name="l00296"></a>00296 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00297"></a>00297 <span class="comment"> * Constructor for a ellipsoid with</span>
+<a name="l00298"></a>00298 <span class="comment"> *</span>
+<a name="l00299"></a>00299 <span class="comment"> * @param[in] a equatorial radius (meters).</span>
+<a name="l00300"></a>00300 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00301"></a>00301 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00302"></a>00302 <span class="comment"> * to 1/\e f.</span>
+<a name="l00303"></a>00303 <span class="comment"> *</span>
+<a name="l00304"></a>00304 <span class="comment"> * An exception is thrown if either of the axes of the ellipsoid is</span>
+<a name="l00305"></a>00305 <span class="comment"> * non-positive.</span>
+<a name="l00306"></a>00306 <span class="comment"> **********************************************************************/</span>
+<a name="l00307"></a>00307 Geodesic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f);<span class="comment"></span>
+<a name="l00308"></a>00308 <span class="comment"> ///@}</span>
+<a name="l00309"></a>00309 <span class="comment"></span><span class="comment"></span>
+<a name="l00310"></a>00310 <span class="comment"> /** \name Direct geodesic problem specified in terms of distance.</span>
+<a name="l00311"></a>00311 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00312"></a>00312 <span class="comment"> ///@{</span>
+<a name="l00313"></a>00313 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00314"></a>00314 <span class="comment"> * Perform the direct geodesic calculation where the length of the geodesic</span>
+<a name="l00315"></a>00315 <span class="comment"> * is specify in terms of distance.</span>
+<a name="l00316"></a>00316 <span class="comment"> *</span>
+<a name="l00317"></a>00317 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00318"></a>00318 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00319"></a>00319 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00320"></a>00320 <span class="comment"> * @param[in] s12 distance between point 1 and point 2 (meters); it can be</span>
+<a name="l00321"></a>00321 <span class="comment"> * signed.</span>
+<a name="l00322"></a>00322 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00323"></a>00323 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees).</span>
+<a name="l00324"></a>00324 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00325"></a>00325 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00326"></a>00326 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00327"></a>00327 <span class="comment"> * (dimensionless).</span>
+<a name="l00328"></a>00328 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00329"></a>00329 <span class="comment"> * (dimensionless).</span>
+<a name="l00330"></a>00330 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00331"></a>00331 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00332"></a>00332 <span class="comment"> *</span>
+<a name="l00333"></a>00333 <span class="comment"> * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
+<a name="l00334"></a>00334 <span class="comment"> * in the range [-180, 360]. The values of \e lon2 and \e azi2 returned</span>
+<a name="l00335"></a>00335 <span class="comment"> * are in the range [-180, 180).</span>
+<a name="l00336"></a>00336 <span class="comment"> *</span>
+<a name="l00337"></a>00337 <span class="comment"> * If either point is at a pole, the azimuth is defined by keeping the</span>
+<a name="l00338"></a>00338 <span class="comment"> * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
+<a name="l00339"></a>00339 <span class="comment"> * taking the limit \e eps -> 0 from above. An arc length greater that 180</span>
+<a name="l00340"></a>00340 <span class="comment"> * degrees signifies a geodesic which is not a shortest path. (For a</span>
+<a name="l00341"></a>00341 <span class="comment"> * prolate ellipsoid, an additional condition is necessary for a shortest</span>
+<a name="l00342"></a>00342 <span class="comment"> * path: the longitudinal extent must not exceed of 180 degrees.)</span>
+<a name="l00343"></a>00343 <span class="comment"> *</span>
+<a name="l00344"></a>00344 <span class="comment"> * The following functions are overloaded versions of Geodesic::Direct</span>
+<a name="l00345"></a>00345 <span class="comment"> * which omit some of the output parameters. Note, however, that the arc</span>
+<a name="l00346"></a>00346 <span class="comment"> * length is always computed and returned as the function value.</span>
+<a name="l00347"></a>00347 <span class="comment"> **********************************************************************/</span>
+<a name="l00348"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">00348</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00349"></a>00349 real& lat2, real& lon2, real& azi2,
+<a name="l00350"></a>00350 real& m12, real& M12, real& M21, real& S12)
+<a name="l00351"></a>00351 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00352"></a>00352 real t;
+<a name="l00353"></a>00353 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00354"></a>00354 LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00355"></a>00355 REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00356"></a>00356 lat2, lon2, azi2, t, m12, M12, M21, S12);
+<a name="l00357"></a>00357 }
+<a name="l00358"></a>00358 <span class="comment"></span>
+<a name="l00359"></a>00359 <span class="comment"> /**</span>
+<a name="l00360"></a>00360 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
+<a name="l00361"></a>00361 <span class="comment"> **********************************************************************/</span>
+<a name="l00362"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac8b9e451fc4093253cfe3f8051d72a14">00362</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00363"></a>00363 real& lat2, real& lon2)
+<a name="l00364"></a>00364 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00365"></a>00365 real t;
+<a name="l00366"></a>00366 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00367"></a>00367 LATITUDE | LONGITUDE,
+<a name="l00368"></a>00368 lat2, lon2, t, t, t, t, t, t);
+<a name="l00369"></a>00369 }
+<a name="l00370"></a>00370 <span class="comment"></span>
+<a name="l00371"></a>00371 <span class="comment"> /**</span>
+<a name="l00372"></a>00372 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
+<a name="l00373"></a>00373 <span class="comment"> **********************************************************************/</span>
+<a name="l00374"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac8f0b5f4db73c5d8d11797698f937402">00374</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00375"></a>00375 real& lat2, real& lon2, real& azi2)
+<a name="l00376"></a>00376 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00377"></a>00377 real t;
+<a name="l00378"></a>00378 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00379"></a>00379 LATITUDE | LONGITUDE | AZIMUTH,
+<a name="l00380"></a>00380 lat2, lon2, azi2, t, t, t, t, t);
+<a name="l00381"></a>00381 }
+<a name="l00382"></a>00382 <span class="comment"></span>
+<a name="l00383"></a>00383 <span class="comment"> /**</span>
+<a name="l00384"></a>00384 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
+<a name="l00385"></a>00385 <span class="comment"> **********************************************************************/</span>
+<a name="l00386"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a63f7681d1239902dc3f528ded0f90352">00386</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00387"></a>00387 real& lat2, real& lon2, real& azi2, real& m12)
+<a name="l00388"></a>00388 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00389"></a>00389 real t;
+<a name="l00390"></a>00390 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00391"></a>00391 LATITUDE | LONGITUDE | AZIMUTH | REDUCEDLENGTH,
+<a name="l00392"></a>00392 lat2, lon2, azi2, t, m12, t, t, t);
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394 <span class="comment"></span>
+<a name="l00395"></a>00395 <span class="comment"> /**</span>
+<a name="l00396"></a>00396 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
+<a name="l00397"></a>00397 <span class="comment"> **********************************************************************/</span>
+<a name="l00398"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7fb2003b8f1d68976fac43d158b4b8b4">00398</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00399"></a>00399 real& lat2, real& lon2, real& azi2,
+<a name="l00400"></a>00400 real& M12, real& M21)
+<a name="l00401"></a>00401 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00402"></a>00402 real t;
+<a name="l00403"></a>00403 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00404"></a>00404 LATITUDE | LONGITUDE | AZIMUTH | GEODESICSCALE,
+<a name="l00405"></a>00405 lat2, lon2, azi2, t, t, M12, M21, t);
+<a name="l00406"></a>00406 }
+<a name="l00407"></a>00407 <span class="comment"></span>
+<a name="l00408"></a>00408 <span class="comment"> /**</span>
+<a name="l00409"></a>00409 <span class="comment"> * See the documentation for Geodesic::Direct.</span>
+<a name="l00410"></a>00410 <span class="comment"> **********************************************************************/</span>
+<a name="l00411"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a65cf95dc7f5c0bfd427e963281e044f0">00411</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Direct(real lat1, real lon1, real azi1, real s12,
+<a name="l00412"></a>00412 real& lat2, real& lon2, real& azi2,
+<a name="l00413"></a>00413 real& m12, real& M12, real& M21)
+<a name="l00414"></a>00414 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00415"></a>00415 real t;
+<a name="l00416"></a>00416 <span class="keywordflow">return</span> GenDirect(lat1, lon1, azi1, <span class="keyword">false</span>, s12,
+<a name="l00417"></a>00417 LATITUDE | LONGITUDE | AZIMUTH |
+<a name="l00418"></a>00418 REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00419"></a>00419 lat2, lon2, azi2, t, m12, M12, M21, t);
+<a name="l00420"></a>00420 }<span class="comment"></span>
+<a name="l00421"></a>00421 <span class="comment"> ///@}</span>
+<a name="l00422"></a>00422 <span class="comment"></span><span class="comment"></span>
+<a name="l00423"></a>00423 <span class="comment"> /** \name Direct geodesic problem specified in terms of arc length.</span>
+<a name="l00424"></a>00424 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00425"></a>00425 <span class="comment"> ///@{</span>
+<a name="l00426"></a>00426 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00427"></a>00427 <span class="comment"> * Perform the direct geodesic calculation where the length of the geodesic</span>
+<a name="l00428"></a>00428 <span class="comment"> * is specify in terms of arc length.</span>
+<a name="l00429"></a>00429 <span class="comment"> *</span>
+<a name="l00430"></a>00430 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00431"></a>00431 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00432"></a>00432 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00433"></a>00433 <span class="comment"> * @param[in] a12 arc length between point 1 and point 2 (degrees); it can</span>
+<a name="l00434"></a>00434 <span class="comment"> * be signed.</span>
+<a name="l00435"></a>00435 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00436"></a>00436 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees).</span>
+<a name="l00437"></a>00437 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00438"></a>00438 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters).</span>
+<a name="l00439"></a>00439 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00440"></a>00440 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00441"></a>00441 <span class="comment"> * (dimensionless).</span>
+<a name="l00442"></a>00442 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00443"></a>00443 <span class="comment"> * (dimensionless).</span>
+<a name="l00444"></a>00444 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00445"></a>00445 <span class="comment"> *</span>
+<a name="l00446"></a>00446 <span class="comment"> * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
+<a name="l00447"></a>00447 <span class="comment"> * in the range [-180, 360]. The values of \e lon2 and \e azi2 returned</span>
+<a name="l00448"></a>00448 <span class="comment"> * are in the range [-180, 180).</span>
+<a name="l00449"></a>00449 <span class="comment"> *</span>
+<a name="l00450"></a>00450 <span class="comment"> * If either point is at a pole, the azimuth is defined by keeping the</span>
+<a name="l00451"></a>00451 <span class="comment"> * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
+<a name="l00452"></a>00452 <span class="comment"> * taking the limit \e eps -> 0 from above. An arc length greater that 180</span>
+<a name="l00453"></a>00453 <span class="comment"> * degrees signifies a geodesic which is not a shortest path. (For a</span>
+<a name="l00454"></a>00454 <span class="comment"> * prolate ellipsoid, an additional condition is necessary for a shortest</span>
+<a name="l00455"></a>00455 <span class="comment"> * path: the longitudinal extent must not exceed of 180 degrees.)</span>
+<a name="l00456"></a>00456 <span class="comment"> *</span>
+<a name="l00457"></a>00457 <span class="comment"> * The following functions are overloaded versions of Geodesic::Direct</span>
+<a name="l00458"></a>00458 <span class="comment"> * which omit some of the output parameters.</span>
+<a name="l00459"></a>00459 <span class="comment"> **********************************************************************/</span>
+<a name="l00460"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">00460</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00461"></a>00461 real& lat2, real& lon2, real& azi2, real& s12,
+<a name="l00462"></a>00462 real& m12, real& M12, real& M21, real& S12)
+<a name="l00463"></a>00463 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00464"></a>00464 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00465"></a>00465 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00466"></a>00466 REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00467"></a>00467 lat2, lon2, azi2, s12, m12, M12, M21, S12);
+<a name="l00468"></a>00468 }
+<a name="l00469"></a>00469 <span class="comment"></span>
+<a name="l00470"></a>00470 <span class="comment"> /**</span>
+<a name="l00471"></a>00471 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00472"></a>00472 <span class="comment"> **********************************************************************/</span>
+<a name="l00473"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aa1bed6c11200c0323cffd0e7027e4df2">00473</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00474"></a>00474 real& lat2, real& lon2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00475"></a>00475 real t;
+<a name="l00476"></a>00476 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00477"></a>00477 LATITUDE | LONGITUDE,
+<a name="l00478"></a>00478 lat2, lon2, t, t, t, t, t, t);
+<a name="l00479"></a>00479 }
+<a name="l00480"></a>00480 <span class="comment"></span>
+<a name="l00481"></a>00481 <span class="comment"> /**</span>
+<a name="l00482"></a>00482 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00483"></a>00483 <span class="comment"> **********************************************************************/</span>
+<a name="l00484"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a6f8eabd951b2fe23ffacb6209b2d43bc">00484</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00485"></a>00485 real& lat2, real& lon2, real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00486"></a>00486 real t;
+<a name="l00487"></a>00487 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00488"></a>00488 LATITUDE | LONGITUDE | AZIMUTH,
+<a name="l00489"></a>00489 lat2, lon2, azi2, t, t, t, t, t);
+<a name="l00490"></a>00490 }
+<a name="l00491"></a>00491 <span class="comment"></span>
+<a name="l00492"></a>00492 <span class="comment"> /**</span>
+<a name="l00493"></a>00493 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00494"></a>00494 <span class="comment"> **********************************************************************/</span>
+<a name="l00495"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a223802b76bae1665f360b2e343d7afd7">00495</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00496"></a>00496 real& lat2, real& lon2, real& azi2, real& s12)
+<a name="l00497"></a>00497 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00498"></a>00498 real t;
+<a name="l00499"></a>00499 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00500"></a>00500 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE,
+<a name="l00501"></a>00501 lat2, lon2, azi2, s12, t, t, t, t);
+<a name="l00502"></a>00502 }
+<a name="l00503"></a>00503 <span class="comment"></span>
+<a name="l00504"></a>00504 <span class="comment"> /**</span>
+<a name="l00505"></a>00505 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00506"></a>00506 <span class="comment"> **********************************************************************/</span>
+<a name="l00507"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a63ffe80d449adad813dc98805adcca81">00507</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00508"></a>00508 real& lat2, real& lon2, real& azi2,
+<a name="l00509"></a>00509 real& s12, real& m12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00510"></a>00510 real t;
+<a name="l00511"></a>00511 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00512"></a>00512 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00513"></a>00513 REDUCEDLENGTH,
+<a name="l00514"></a>00514 lat2, lon2, azi2, s12, m12, t, t, t);
+<a name="l00515"></a>00515 }
+<a name="l00516"></a>00516 <span class="comment"></span>
+<a name="l00517"></a>00517 <span class="comment"> /**</span>
+<a name="l00518"></a>00518 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00519"></a>00519 <span class="comment"> **********************************************************************/</span>
+<a name="l00520"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a55c17605d76f6c46ac5b11f36e8e8641">00520</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00521"></a>00521 real& lat2, real& lon2, real& azi2, real& s12,
+<a name="l00522"></a>00522 real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00523"></a>00523 real t;
+<a name="l00524"></a>00524 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00525"></a>00525 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00526"></a>00526 GEODESICSCALE,
+<a name="l00527"></a>00527 lat2, lon2, azi2, s12, t, M12, M21, t);
+<a name="l00528"></a>00528 }
+<a name="l00529"></a>00529 <span class="comment"></span>
+<a name="l00530"></a>00530 <span class="comment"> /**</span>
+<a name="l00531"></a>00531 <span class="comment"> * See the documentation for Geodesic::ArcDirect.</span>
+<a name="l00532"></a>00532 <span class="comment"> **********************************************************************/</span>
+<a name="l00533"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#adc8a4d02e631e8966d5842056a49be9c">00533</a> <span class="keywordtype">void</span> ArcDirect(real lat1, real lon1, real azi1, real a12,
+<a name="l00534"></a>00534 real& lat2, real& lon2, real& azi2, real& s12,
+<a name="l00535"></a>00535 real& m12, real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00536"></a>00536 real t;
+<a name="l00537"></a>00537 GenDirect(lat1, lon1, azi1, <span class="keyword">true</span>, a12,
+<a name="l00538"></a>00538 LATITUDE | LONGITUDE | AZIMUTH | DISTANCE |
+<a name="l00539"></a>00539 REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00540"></a>00540 lat2, lon2, azi2, s12, m12, M12, M21, t);
+<a name="l00541"></a>00541 }<span class="comment"></span>
+<a name="l00542"></a>00542 <span class="comment"> ///@}</span>
+<a name="l00543"></a>00543 <span class="comment"></span><span class="comment"></span>
+<a name="l00544"></a>00544 <span class="comment"> /** \name General version of the direct geodesic solution.</span>
+<a name="l00545"></a>00545 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00546"></a>00546 <span class="comment"> ///@{</span>
+<a name="l00547"></a>00547 <span class="comment"></span><span class="comment"></span>
+<a name="l00548"></a>00548 <span class="comment"> /**</span>
+<a name="l00549"></a>00549 <span class="comment"> * The general direct geodesic calculation. Geodesic::Direct and</span>
+<a name="l00550"></a>00550 <span class="comment"> * Geodesic::ArcDirect are defined in terms of this function.</span>
+<a name="l00551"></a>00551 <span class="comment"> *</span>
+<a name="l00552"></a>00552 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00553"></a>00553 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00554"></a>00554 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00555"></a>00555 <span class="comment"> * @param[in] arcmode boolean flag determining the meaning of the second</span>
+<a name="l00556"></a>00556 <span class="comment"> * parameter.</span>
+<a name="l00557"></a>00557 <span class="comment"> * @param[in] s12_a12 if \e arcmode is false, this is the distance between</span>
+<a name="l00558"></a>00558 <span class="comment"> * point 1 and point 2 (meters); otherwise it is the arc length between</span>
+<a name="l00559"></a>00559 <span class="comment"> * point 1 and point 2 (degrees); it can be signed.</span>
+<a name="l00560"></a>00560 <span class="comment"> * @param[in] outmask a bitor'ed combination of Geodesic::mask values</span>
+<a name="l00561"></a>00561 <span class="comment"> * specifying which of the following parameters should be set.</span>
+<a name="l00562"></a>00562 <span class="comment"> * @param[out] lat2 latitude of point 2 (degrees).</span>
+<a name="l00563"></a>00563 <span class="comment"> * @param[out] lon2 longitude of point 2 (degrees).</span>
+<a name="l00564"></a>00564 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00565"></a>00565 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters).</span>
+<a name="l00566"></a>00566 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00567"></a>00567 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00568"></a>00568 <span class="comment"> * (dimensionless).</span>
+<a name="l00569"></a>00569 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00570"></a>00570 <span class="comment"> * (dimensionless).</span>
+<a name="l00571"></a>00571 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00572"></a>00572 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00573"></a>00573 <span class="comment"> *</span>
+<a name="l00574"></a>00574 <span class="comment"> * The Geodesic::mask values possible for \e outmask are</span>
+<a name="l00575"></a>00575 <span class="comment"> * - \e outmask |= Geodesic::LATITUDE for the latitude \e lat2.</span>
+<a name="l00576"></a>00576 <span class="comment"> * - \e outmask |= Geodesic::LONGITUDE for the latitude \e lon2.</span>
+<a name="l00577"></a>00577 <span class="comment"> * - \e outmask |= Geodesic::AZIMUTH for the latitude \e azi2.</span>
+<a name="l00578"></a>00578 <span class="comment"> * - \e outmask |= Geodesic::DISTANCE for the distance \e s12.</span>
+<a name="l00579"></a>00579 <span class="comment"> * - \e outmask |= Geodesic::REDUCEDLENGTH for the reduced length \e</span>
+<a name="l00580"></a>00580 <span class="comment"> * m12.</span>
+<a name="l00581"></a>00581 <span class="comment"> * - \e outmask |= Geodesic::GEODESICSCALE for the geodesic scales \e</span>
+<a name="l00582"></a>00582 <span class="comment"> * M12 and \e M21.</span>
+<a name="l00583"></a>00583 <span class="comment"> * - \e outmask |= Geodesic::AREA for the area \e S12.</span>
+<a name="l00584"></a>00584 <span class="comment"> * .</span>
+<a name="l00585"></a>00585 <span class="comment"> * The function value \e a12 is always computed and returned and this</span>
+<a name="l00586"></a>00586 <span class="comment"> * equals \e s12_a12 is \e arcmode is true. If \e outmask includes</span>
+<a name="l00587"></a>00587 <span class="comment"> * Geodesic::DISTANCE and \e arcmode is false, then \e s12 = \e s12_a12.</span>
+<a name="l00588"></a>00588 <span class="comment"> * It is not necessary to include Geodesic::DISTANCE_IN in \e outmask; this</span>
+<a name="l00589"></a>00589 <span class="comment"> * is automatically included is \e arcmode is false.</span>
+<a name="l00590"></a>00590 <span class="comment"> **********************************************************************/</span>
+<a name="l00591"></a>00591 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GenDirect(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">rea [...]
+<a name="l00592"></a>00592 <span class="keywordtype">bool</span> arcmode, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> s12_a12, <span class="keywordtype">unsigned</span> outmask,
+<a name="l00593"></a>00593 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
+<a name="l00594"></a>00594 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21,
+<a name="l00595"></a>00595 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
+<a name="l00596"></a>00596 <span class="comment"> ///@}</span>
+<a name="l00597"></a>00597 <span class="comment"></span><span class="comment"></span>
+<a name="l00598"></a>00598 <span class="comment"> /** \name Inverse geodesic problem.</span>
+<a name="l00599"></a>00599 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00600"></a>00600 <span class="comment"> ///@{</span>
+<a name="l00601"></a>00601 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00602"></a>00602 <span class="comment"> * Perform the inverse geodesic calculation.</span>
+<a name="l00603"></a>00603 <span class="comment"> *</span>
+<a name="l00604"></a>00604 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00605"></a>00605 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00606"></a>00606 <span class="comment"> * @param[in] lat2 latitude of point 2 (degrees).</span>
+<a name="l00607"></a>00607 <span class="comment"> * @param[in] lon2 longitude of point 2 (degrees).</span>
+<a name="l00608"></a>00608 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters).</span>
+<a name="l00609"></a>00609 <span class="comment"> * @param[out] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00610"></a>00610 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00611"></a>00611 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00612"></a>00612 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00613"></a>00613 <span class="comment"> * (dimensionless).</span>
+<a name="l00614"></a>00614 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00615"></a>00615 <span class="comment"> * (dimensionless).</span>
+<a name="l00616"></a>00616 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00617"></a>00617 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00618"></a>00618 <span class="comment"> *</span>
+<a name="l00619"></a>00619 <span class="comment"> * \e lat1 and \e lat2 should be in the range [-90, 90]; \e lon1 and \e</span>
+<a name="l00620"></a>00620 <span class="comment"> * lon2 should be in the range [-180, 360]. The values of \e azi1 and \e</span>
+<a name="l00621"></a>00621 <span class="comment"> * azi2 returned are in the range [-180, 180).</span>
+<a name="l00622"></a>00622 <span class="comment"> *</span>
+<a name="l00623"></a>00623 <span class="comment"> * If either point is at a pole, the azimuth is defined by keeping the</span>
+<a name="l00624"></a>00624 <span class="comment"> * longitude fixed and writing \e lat = 90 - \e eps or -90 + \e eps and</span>
+<a name="l00625"></a>00625 <span class="comment"> * taking the limit \e eps -> 0 from above. If the routine fails to</span>
+<a name="l00626"></a>00626 <span class="comment"> * converge, then all the requested outputs are set to Math::NaN(). (Test</span>
+<a name="l00627"></a>00627 <span class="comment"> * for such results with Math::isnan.) This is not expected to happen with</span>
+<a name="l00628"></a>00628 <span class="comment"> * ellipsoidal models of the earth; please report all cases where this</span>
+<a name="l00629"></a>00629 <span class="comment"> * occurs.</span>
+<a name="l00630"></a>00630 <span class="comment"> *</span>
+<a name="l00631"></a>00631 <span class="comment"> * The following functions are overloaded versions of Geodesic::Inverse</span>
+<a name="l00632"></a>00632 <span class="comment"> * which omit some of the output parameters. Note, however, that the arc</span>
+<a name="l00633"></a>00633 <span class="comment"> * length is always computed and returned as the function value.</span>
+<a name="l00634"></a>00634 <span class="comment"> **********************************************************************/</span>
+<a name="l00635"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">00635</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00636"></a>00636 real& s12, real& azi1, real& azi2, real& m12,
+<a name="l00637"></a>00637 real& M12, real& M21, real& S12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00638"></a>00638 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00639"></a>00639 DISTANCE | AZIMUTH |
+<a name="l00640"></a>00640 REDUCEDLENGTH | GEODESICSCALE | AREA,
+<a name="l00641"></a>00641 s12, azi1, azi2, m12, M12, M21, S12);
+<a name="l00642"></a>00642 }
+<a name="l00643"></a>00643 <span class="comment"></span>
+<a name="l00644"></a>00644 <span class="comment"> /**</span>
+<a name="l00645"></a>00645 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
+<a name="l00646"></a>00646 <span class="comment"> **********************************************************************/</span>
+<a name="l00647"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7c35218473b1784b1a80b8631f2d345d">00647</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00648"></a>00648 real& s12) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00649"></a>00649 real t;
+<a name="l00650"></a>00650 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00651"></a>00651 DISTANCE,
+<a name="l00652"></a>00652 s12, t, t, t, t, t, t);
+<a name="l00653"></a>00653 }
+<a name="l00654"></a>00654 <span class="comment"></span>
+<a name="l00655"></a>00655 <span class="comment"> /**</span>
+<a name="l00656"></a>00656 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
+<a name="l00657"></a>00657 <span class="comment"> **********************************************************************/</span>
+<a name="l00658"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a599e587407713f7019906881d6116873">00658</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00659"></a>00659 real& azi1, real& azi2) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00660"></a>00660 real t;
+<a name="l00661"></a>00661 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00662"></a>00662 AZIMUTH,
+<a name="l00663"></a>00663 t, azi1, azi2, t, t, t, t);
+<a name="l00664"></a>00664 }
+<a name="l00665"></a>00665 <span class="comment"></span>
+<a name="l00666"></a>00666 <span class="comment"> /**</span>
+<a name="l00667"></a>00667 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
+<a name="l00668"></a>00668 <span class="comment"> **********************************************************************/</span>
+<a name="l00669"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a3e07eef498c82ac25b482cadf129d8ae">00669</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00670"></a>00670 real& s12, real& azi1, real& azi2)
+<a name="l00671"></a>00671 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00672"></a>00672 real t;
+<a name="l00673"></a>00673 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00674"></a>00674 DISTANCE | AZIMUTH,
+<a name="l00675"></a>00675 s12, azi1, azi2, t, t, t, t);
+<a name="l00676"></a>00676 }
+<a name="l00677"></a>00677 <span class="comment"></span>
+<a name="l00678"></a>00678 <span class="comment"> /**</span>
+<a name="l00679"></a>00679 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
+<a name="l00680"></a>00680 <span class="comment"> **********************************************************************/</span>
+<a name="l00681"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">00681</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00682"></a>00682 real& s12, real& azi1, real& azi2, real& m12)
+<a name="l00683"></a>00683 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00684"></a>00684 real t;
+<a name="l00685"></a>00685 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00686"></a>00686 DISTANCE | AZIMUTH | REDUCEDLENGTH,
+<a name="l00687"></a>00687 s12, azi1, azi2, m12, t, t, t);
+<a name="l00688"></a>00688 }
+<a name="l00689"></a>00689 <span class="comment"></span>
+<a name="l00690"></a>00690 <span class="comment"> /**</span>
+<a name="l00691"></a>00691 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
+<a name="l00692"></a>00692 <span class="comment"> **********************************************************************/</span>
+<a name="l00693"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">00693</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00694"></a>00694 real& s12, real& azi1, real& azi2,
+<a name="l00695"></a>00695 real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00696"></a>00696 real t;
+<a name="l00697"></a>00697 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00698"></a>00698 DISTANCE | AZIMUTH | GEODESICSCALE,
+<a name="l00699"></a>00699 s12, azi1, azi2, t, M12, M21, t);
+<a name="l00700"></a>00700 }
+<a name="l00701"></a>00701 <span class="comment"></span>
+<a name="l00702"></a>00702 <span class="comment"> /**</span>
+<a name="l00703"></a>00703 <span class="comment"> * See the documentation for Geodesic::Inverse.</span>
+<a name="l00704"></a>00704 <span class="comment"> **********************************************************************/</span>
+<a name="l00705"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ad3f98a5f2adf39ff26cf3d6fe32258a8">00705</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Inverse(real lat1, real lon1, real lat2, real lon2,
+<a name="l00706"></a>00706 real& s12, real& azi1, real& azi2, real& m12,
+<a name="l00707"></a>00707 real& M12, real& M21) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00708"></a>00708 real t;
+<a name="l00709"></a>00709 <span class="keywordflow">return</span> GenInverse(lat1, lon1, lat2, lon2,
+<a name="l00710"></a>00710 DISTANCE | AZIMUTH |
+<a name="l00711"></a>00711 REDUCEDLENGTH | GEODESICSCALE,
+<a name="l00712"></a>00712 s12, azi1, azi2, m12, M12, M21, t);
+<a name="l00713"></a>00713 }<span class="comment"></span>
+<a name="l00714"></a>00714 <span class="comment"> ///@}</span>
+<a name="l00715"></a>00715 <span class="comment"></span><span class="comment"></span>
+<a name="l00716"></a>00716 <span class="comment"> /** \name General version of inverse geodesic solution.</span>
+<a name="l00717"></a>00717 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00718"></a>00718 <span class="comment"> ///@{</span>
+<a name="l00719"></a>00719 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00720"></a>00720 <span class="comment"> * The general inverse geodesic calculation. Geodesic::Inverse is defined</span>
+<a name="l00721"></a>00721 <span class="comment"> * in terms of this function.</span>
+<a name="l00722"></a>00722 <span class="comment"> *</span>
+<a name="l00723"></a>00723 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00724"></a>00724 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00725"></a>00725 <span class="comment"> * @param[in] lat2 latitude of point 2 (degrees).</span>
+<a name="l00726"></a>00726 <span class="comment"> * @param[in] lon2 longitude of point 2 (degrees).</span>
+<a name="l00727"></a>00727 <span class="comment"> * @param[in] outmask a bitor'ed combination of Geodesic::mask values</span>
+<a name="l00728"></a>00728 <span class="comment"> * specifying which of the following parameters should be set.</span>
+<a name="l00729"></a>00729 <span class="comment"> * @param[out] s12 distance between point 1 and point 2 (meters).</span>
+<a name="l00730"></a>00730 <span class="comment"> * @param[out] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00731"></a>00731 <span class="comment"> * @param[out] azi2 (forward) azimuth at point 2 (degrees).</span>
+<a name="l00732"></a>00732 <span class="comment"> * @param[out] m12 reduced length of geodesic (meters).</span>
+<a name="l00733"></a>00733 <span class="comment"> * @param[out] M12 geodesic scale of point 2 relative to point 1</span>
+<a name="l00734"></a>00734 <span class="comment"> * (dimensionless).</span>
+<a name="l00735"></a>00735 <span class="comment"> * @param[out] M21 geodesic scale of point 1 relative to point 2</span>
+<a name="l00736"></a>00736 <span class="comment"> * (dimensionless).</span>
+<a name="l00737"></a>00737 <span class="comment"> * @param[out] S12 area under the geodesic (meters<sup>2</sup>).</span>
+<a name="l00738"></a>00738 <span class="comment"> * @return \e a12 arc length of between point 1 and point 2 (degrees).</span>
+<a name="l00739"></a>00739 <span class="comment"> *</span>
+<a name="l00740"></a>00740 <span class="comment"> * The Geodesic::mask values possible for \e outmask are</span>
+<a name="l00741"></a>00741 <span class="comment"> * - \e outmask |= Geodesic::DISTANCE for the distance \e s12.</span>
+<a name="l00742"></a>00742 <span class="comment"> * - \e outmask |= Geodesic::AZIMUTH for the latitude \e azi2.</span>
+<a name="l00743"></a>00743 <span class="comment"> * - \e outmask |= Geodesic::REDUCEDLENGTH for the reduced length \e</span>
+<a name="l00744"></a>00744 <span class="comment"> * m12.</span>
+<a name="l00745"></a>00745 <span class="comment"> * - \e outmask |= Geodesic::GEODESICSCALE for the geodesic scales \e</span>
+<a name="l00746"></a>00746 <span class="comment"> * M12 and \e M21.</span>
+<a name="l00747"></a>00747 <span class="comment"> * - \e outmask |= Geodesic::AREA for the area \e S12.</span>
+<a name="l00748"></a>00748 <span class="comment"> * .</span>
+<a name="l00749"></a>00749 <span class="comment"> * The arc length is always computed and returned as the function value.</span>
+<a name="l00750"></a>00750 <span class="comment"> **********************************************************************/</span>
+<a name="l00751"></a>00751 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GenInverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">re [...]
+<a name="l00752"></a>00752 <span class="keywordtype">unsigned</span> outmask,
+<a name="l00753"></a>00753 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& s12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi2,
+<a name="l00754"></a>00754 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& m12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M12, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& M21, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& S12)
+<a name="l00755"></a>00755 <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
+<a name="l00756"></a>00756 <span class="comment"> ///@}</span>
+<a name="l00757"></a>00757 <span class="comment"></span><span class="comment"></span>
+<a name="l00758"></a>00758 <span class="comment"> /** \name Interface to GeodesicLine.</span>
+<a name="l00759"></a>00759 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00760"></a>00760 <span class="comment"> ///@{</span>
+<a name="l00761"></a>00761 <span class="comment"></span><span class="comment"></span>
+<a name="l00762"></a>00762 <span class="comment"> /**</span>
+<a name="l00763"></a>00763 <span class="comment"> * Set up to compute several points on a singe geodesic.</span>
+<a name="l00764"></a>00764 <span class="comment"> *</span>
+<a name="l00765"></a>00765 <span class="comment"> * @param[in] lat1 latitude of point 1 (degrees).</span>
+<a name="l00766"></a>00766 <span class="comment"> * @param[in] lon1 longitude of point 1 (degrees).</span>
+<a name="l00767"></a>00767 <span class="comment"> * @param[in] azi1 azimuth at point 1 (degrees).</span>
+<a name="l00768"></a>00768 <span class="comment"> * @param[in] caps bitor'ed combination of Geodesic::mask values</span>
+<a name="l00769"></a>00769 <span class="comment"> * specifying the capabilities the GeodesicLine object should possess,</span>
+<a name="l00770"></a>00770 <span class="comment"> * i.e., which quantities can be returned in calls to</span>
+<a name="l00771"></a>00771 <span class="comment"> * GeodesicLib::Position.</span>
<a name="l00772"></a>00772 <span class="comment"> *</span>
-<a name="l00773"></a>00773 <span class="comment"> * The Geodesic::mask values are</span>
-<a name="l00774"></a>00774 <span class="comment"> * - \e caps |= Geodesic::LATITUDE for the latitude \e lat2; this is</span>
-<a name="l00775"></a>00775 <span class="comment"> * added automatically</span>
-<a name="l00776"></a>00776 <span class="comment"> * - \e caps |= Geodesic::LONGITUDE for the latitude \e lon2</span>
-<a name="l00777"></a>00777 <span class="comment"> * - \e caps |= Geodesic::AZIMUTH for the latitude \e azi2; this is</span>
+<a name="l00773"></a>00773 <span class="comment"> * \e lat1 should be in the range [-90, 90]; \e lon1 and \e azi1 should be</span>
+<a name="l00774"></a>00774 <span class="comment"> * in the range [-180, 360].</span>
+<a name="l00775"></a>00775 <span class="comment"> *</span>
+<a name="l00776"></a>00776 <span class="comment"> * The Geodesic::mask values are</span>
+<a name="l00777"></a>00777 <span class="comment"> * - \e caps |= Geodesic::LATITUDE for the latitude \e lat2; this is</span>
<a name="l00778"></a>00778 <span class="comment"> * added automatically</span>
-<a name="l00779"></a>00779 <span class="comment"> * - \e caps |= Geodesic::DISTANCE for the distance \e s12</span>
-<a name="l00780"></a>00780 <span class="comment"> * - \e caps |= Geodesic::REDUCEDLENGTH for the reduced length \e m12</span>
-<a name="l00781"></a>00781 <span class="comment"> * - \e caps |= Geodesic::GEODESICSCALE for the geodesic scales \e M12</span>
-<a name="l00782"></a>00782 <span class="comment"> * and \e M21</span>
-<a name="l00783"></a>00783 <span class="comment"> * - \e caps |= Geodesic::AREA for the area \e S12</span>
-<a name="l00784"></a>00784 <span class="comment"> * - \e caps |= Geodesic::DISTANCE_IN permits the length of the</span>
-<a name="l00785"></a>00785 <span class="comment"> * geodesic to be given in terms of \e s12; without this capability the</span>
-<a name="l00786"></a>00786 <span class="comment"> * length can only be specified in terms of arc length.</span>
-<a name="l00787"></a>00787 <span class="comment"> * .</span>
-<a name="l00788"></a>00788 <span class="comment"> * The default value of \e caps is Geodesic::ALL which turns on all the</span>
-<a name="l00789"></a>00789 <span class="comment"> * capabilities.</span>
-<a name="l00790"></a>00790 <span class="comment"> *</span>
-<a name="l00791"></a>00791 <span class="comment"> * If the point is at a pole, the azimuth is defined by keeping the \e lon1</span>
-<a name="l00792"></a>00792 <span class="comment"> * fixed and writing \e lat1 = 90 - \e eps or -90 + \e eps and taking the</span>
-<a name="l00793"></a>00793 <span class="comment"> * limit \e eps -> 0 from above.</span>
-<a name="l00794"></a>00794 <span class="comment"> **********************************************************************/</span>
-<a name="l00795"></a>00795 <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> Line(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi1, <span class="keywordtype">unsigned</span> caps = ALL)
-<a name="l00796"></a>00796 <span class="keyword">const</span> throw();
-<a name="l00797"></a>00797 <span class="comment"></span>
-<a name="l00798"></a>00798 <span class="comment"> ///@}</span>
-<a name="l00799"></a>00799 <span class="comment"></span><span class="comment"></span>
-<a name="l00800"></a>00800 <span class="comment"> /** \name Inspector functions.</span>
-<a name="l00801"></a>00801 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00802"></a>00802 <span class="comment"> ///@{</span>
-<a name="l00803"></a>00803 <span class="comment"></span><span class="comment"></span>
-<a name="l00804"></a>00804 <span class="comment"> /**</span>
-<a name="l00805"></a>00805 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00806"></a>00806 <span class="comment"> * the value used in the constructor.</span>
-<a name="l00807"></a>00807 <span class="comment"> **********************************************************************/</span>
-<a name="l00808"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#acd276bb113cfdf3fe59aa43fb3d7289b">00808</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() const throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00809"></a>00809 <span class="comment"></span>
-<a name="l00810"></a>00810 <span class="comment"> /**</span>
-<a name="l00811"></a>00811 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the</span>
-<a name="l00812"></a>00812 <span class="comment"> * value used in the constructor.</span>
-<a name="l00813"></a>00813 <span class="comment"> **********************************************************************/</span>
-<a name="l00814"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">00814</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00815"></a>00815 <span class="comment"></span>
-<a name="l00816"></a>00816 <span class="comment"> /**</span>
-<a name="l00817"></a>00817 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00818"></a>00818 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00819"></a>00819 <span class="comment"> **********************************************************************/</span>
-<a name="l00820"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">00820</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00821"></a>00821 <span class="comment"></span>
-<a name="l00822"></a>00822 <span class="comment"> /**</span>
-<a name="l00823"></a>00823 <span class="comment"> * @return total area of ellipsoid in meters<sup>2</sup>. The area of a</span>
-<a name="l00824"></a>00824 <span class="comment"> * polygon encircling a pole can be found by adding</span>
-<a name="l00825"></a>00825 <span class="comment"> * Geodesic::EllipsoidArea()/2 to the sum of \e S12 for each side of the</span>
-<a name="l00826"></a>00826 <span class="comment"> * polygon.</span>
-<a name="l00827"></a>00827 <span class="comment"> **********************************************************************/</span>
-<a name="l00828"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a0dde7d12d4bafedef63d371c5fe40f50">00828</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> EllipsoidArea() <span class="keyword">const</span> throw()
-<a name="l00829"></a>00829 { <span class="keywordflow">return</span> 4 * Math::pi<real>() * _c2; }<span class="comment"></span>
-<a name="l00830"></a>00830 <span class="comment"> ///@}</span>
-<a name="l00831"></a>00831 <span class="comment"></span><span class="comment"></span>
-<a name="l00832"></a>00832 <span class="comment"> /**</span>
-<a name="l00833"></a>00833 <span class="comment"> * A global instantiation of Geodesic with the parameters for the WGS84</span>
-<a name="l00834"></a>00834 <span class="comment"> * ellipsoid.</span>
-<a name="l00835"></a>00835 <span class="comment"> **********************************************************************/</span>
-<a name="l00836"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">00836</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">WGS84</a>;
-<a name="l00837"></a>00837
-<a name="l00838"></a>00838 };
-<a name="l00839"></a>00839
-<a name="l00840"></a>00840 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00841"></a>00841
-<a name="l00842"></a>00842 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEODESIC_HPP</span>
+<a name="l00779"></a>00779 <span class="comment"> * - \e caps |= Geodesic::LONGITUDE for the latitude \e lon2</span>
+<a name="l00780"></a>00780 <span class="comment"> * - \e caps |= Geodesic::AZIMUTH for the latitude \e azi2; this is</span>
+<a name="l00781"></a>00781 <span class="comment"> * added automatically</span>
+<a name="l00782"></a>00782 <span class="comment"> * - \e caps |= Geodesic::DISTANCE for the distance \e s12</span>
+<a name="l00783"></a>00783 <span class="comment"> * - \e caps |= Geodesic::REDUCEDLENGTH for the reduced length \e m12</span>
+<a name="l00784"></a>00784 <span class="comment"> * - \e caps |= Geodesic::GEODESICSCALE for the geodesic scales \e M12</span>
+<a name="l00785"></a>00785 <span class="comment"> * and \e M21</span>
+<a name="l00786"></a>00786 <span class="comment"> * - \e caps |= Geodesic::AREA for the area \e S12</span>
+<a name="l00787"></a>00787 <span class="comment"> * - \e caps |= Geodesic::DISTANCE_IN permits the length of the</span>
+<a name="l00788"></a>00788 <span class="comment"> * geodesic to be given in terms of \e s12; without this capability the</span>
+<a name="l00789"></a>00789 <span class="comment"> * length can only be specified in terms of arc length.</span>
+<a name="l00790"></a>00790 <span class="comment"> * .</span>
+<a name="l00791"></a>00791 <span class="comment"> * The default value of \e caps is Geodesic::ALL which turns on all the</span>
+<a name="l00792"></a>00792 <span class="comment"> * capabilities.</span>
+<a name="l00793"></a>00793 <span class="comment"> *</span>
+<a name="l00794"></a>00794 <span class="comment"> * If the point is at a pole, the azimuth is defined by keeping the \e lon1</span>
+<a name="l00795"></a>00795 <span class="comment"> * fixed and writing \e lat1 = 90 - \e eps or -90 + \e eps and taking the</span>
+<a name="l00796"></a>00796 <span class="comment"> * limit \e eps -> 0 from above.</span>
+<a name="l00797"></a>00797 <span class="comment"> **********************************************************************/</span>
+<a name="l00798"></a>00798 <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> Line(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> azi1, <span class="keywordtype">unsigned</span> caps = ALL)
+<a name="l00799"></a>00799 <span class="keyword">const</span> throw();
+<a name="l00800"></a>00800 <span class="comment"></span>
+<a name="l00801"></a>00801 <span class="comment"> ///@}</span>
+<a name="l00802"></a>00802 <span class="comment"></span><span class="comment"></span>
+<a name="l00803"></a>00803 <span class="comment"> /** \name Inspector functions.</span>
+<a name="l00804"></a>00804 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00805"></a>00805 <span class="comment"> ///@{</span>
+<a name="l00806"></a>00806 <span class="comment"></span><span class="comment"></span>
+<a name="l00807"></a>00807 <span class="comment"> /**</span>
+<a name="l00808"></a>00808 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00809"></a>00809 <span class="comment"> * the value used in the constructor.</span>
+<a name="l00810"></a>00810 <span class="comment"> **********************************************************************/</span>
+<a name="l00811"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#acd276bb113cfdf3fe59aa43fb3d7289b">00811</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() const throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00812"></a>00812 <span class="comment"></span>
+<a name="l00813"></a>00813 <span class="comment"> /**</span>
+<a name="l00814"></a>00814 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the</span>
+<a name="l00815"></a>00815 <span class="comment"> * value used in the constructor.</span>
+<a name="l00816"></a>00816 <span class="comment"> **********************************************************************/</span>
+<a name="l00817"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">00817</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00818"></a>00818 <span class="comment"></span>
+<a name="l00819"></a>00819 <span class="comment"> /// \cond SKIP</span>
+<a name="l00820"></a>00820 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00821"></a>00821 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00822"></a>00822 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00823"></a>00823 <span class="comment"> **********************************************************************/</span>
+<a name="l00824"></a>00824 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00825"></a>00825 <span class="comment"> /// \endcond</span>
+<a name="l00826"></a>00826 <span class="comment"></span><span class="comment"></span>
+<a name="l00827"></a>00827 <span class="comment"> /**</span>
+<a name="l00828"></a>00828 <span class="comment"> * @return total area of ellipsoid in meters<sup>2</sup>. The area of a</span>
+<a name="l00829"></a>00829 <span class="comment"> * polygon encircling a pole can be found by adding</span>
+<a name="l00830"></a>00830 <span class="comment"> * Geodesic::EllipsoidArea()/2 to the sum of \e S12 for each side of the</span>
+<a name="l00831"></a>00831 <span class="comment"> * polygon.</span>
+<a name="l00832"></a>00832 <span class="comment"> **********************************************************************/</span>
+<a name="l00833"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#a0dde7d12d4bafedef63d371c5fe40f50">00833</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real EllipsoidArea() <span class="keyword">const</span> throw()
+<a name="l00834"></a>00834 { <span class="keywordflow">return</span> 4 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>() * _c2; }<span class="comment"></span>
+<a name="l00835"></a>00835 <span class="comment"> ///@}</span>
+<a name="l00836"></a>00836 <span class="comment"></span><span class="comment"></span>
+<a name="l00837"></a>00837 <span class="comment"> /**</span>
+<a name="l00838"></a>00838 <span class="comment"> * A global instantiation of Geodesic with the parameters for the WGS84</span>
+<a name="l00839"></a>00839 <span class="comment"> * ellipsoid.</span>
+<a name="l00840"></a>00840 <span class="comment"> **********************************************************************/</span>
+<a name="l00841"></a><a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">00841</a> <span class="keyword">static</span> <span class="keyword">const</span> Geodesic <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">WGS84</a>;
+<a name="l00842"></a>00842
+<a name="l00843"></a>00843 };
+<a name="l00844"></a>00844
+<a name="l00845"></a>00845 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00846"></a>00846
+<a name="l00847"></a>00847 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEODESIC_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geographic.tag b/doc/html/Geographic.tag
index 1af6d9d..5dffa3d 100644
--- a/doc/html/Geographic.tag
+++ b/doc/html/Geographic.tag
@@ -367,15 +367,15 @@
<type>std::string</type>
<name>LatLonString</name>
<anchorfile>Geod_8cpp.html</anchorfile>
- <anchor>a816c824309c06ba9fce8978d534c8a59</anchor>
- <arglist>(real lat, real lon, int prec, bool dms)</arglist>
+ <anchor>a8c3a2a4c039b4d0118416afd97a45fcf</anchor>
+ <arglist>(real lat, real lon, int prec, bool dms, char dmssep)</arglist>
</member>
<member kind="function">
<type>std::string</type>
<name>AzimuthString</name>
<anchorfile>Geod_8cpp.html</anchorfile>
- <anchor>ade33c0d3b83c6fcbf2fc612d5c6a7172</anchor>
- <arglist>(real azi, int prec, bool dms)</arglist>
+ <anchor>adeb84b4732b410c9fdccf799037ef245</anchor>
+ <arglist>(real azi, int prec, bool dms, char dmssep)</arglist>
</member>
<member kind="function">
<type>std::string</type>
@@ -494,6 +494,7 @@
<path>/scratch/geographic-dist/gita/geographiclib/src/</path>
<filename>Geoid_8cpp</filename>
<includes id="Geoid_8hpp" name="Geoid.hpp" local="no" imported="no">GeographicLib/Geoid.hpp</includes>
+ <includes id="Utility_8hpp" name="Utility.hpp" local="no" imported="no">GeographicLib/Utility.hpp</includes>
<namespace>GeographicLib</namespace>
<member kind="define">
<type>#define</type>
@@ -531,6 +532,13 @@
<anchor>a81966978f2fe7fad1effabc667a99820</anchor>
<arglist></arglist>
</member>
+ <member kind="define">
+ <type>#define</type>
+ <name>PGM_PIXEL_WIDTH</name>
+ <anchorfile>Geoid_8hpp.html</anchorfile>
+ <anchor>aa34d236045b829973cbc0d958d3ed139</anchor>
+ <arglist></arglist>
+ </member>
</compound>
<compound kind="file">
<name>GeoidEval.cpp</name>
@@ -860,9 +868,9 @@
</member>
<member kind="define">
<type>#define</type>
- <name>GEOGRAPHICLIB_CPLUSPLUS0X_MATH</name>
+ <name>GEOGRAPHICLIB_CPLUSPLUS11_MATH</name>
<anchorfile>Math_8hpp.html</anchorfile>
- <anchor>a6cdc2f4c764d4116788cc5c24625e75d</anchor>
+ <anchor>a2769cdfa2277e2728e4e157ec3f6318b</anchor>
<arglist></arglist>
</member>
<member kind="define">
@@ -1301,7 +1309,7 @@
</compound>
<compound kind="page">
<name>utilities</name>
- <title>Utility Programs</title>
+ <title>Utility programs</title>
<filename>utilities</filename>
</compound>
<compound kind="page">
@@ -1347,14 +1355,14 @@
</compound>
<compound kind="page">
<name>geodesic</name>
- <title>Geodesics on the Ellipsoid</title>
+ <title>Geodesics on the ellipsoid</title>
<filename>geodesic</filename>
<docanchor file="geodesic">testgeod</docanchor>
<docanchor file="geodesic">geodseries</docanchor>
</compound>
<compound kind="page">
<name>transversemercator</name>
- <title>Transverse Mercator Projection</title>
+ <title>Transverse Mercator projection</title>
<filename>transversemercator</filename>
<docanchor file="transversemercator">tmseries</docanchor>
<docanchor file="transversemercator">testmerc</docanchor>
@@ -1366,7 +1374,7 @@
</compound>
<compound kind="page">
<name>old</name>
- <title>Old Versions</title>
+ <title>Old versions</title>
<filename>old</filename>
</compound>
<compound kind="namespace">
@@ -1411,96 +1419,95 @@
<compound kind="class">
<name>GeographicLib::Accumulator</name>
<filename>classGeographicLib_1_1Accumulator.html</filename>
- <templarg>T</templarg>
<member kind="function">
<type></type>
<name>Accumulator</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a14d98e366933e0997c1954290f9d0fc3</anchor>
+ <anchor>a6d30e4a792644ffc78546dda4b5d0022</anchor>
<arglist>(T y=T(0))</arglist>
</member>
<member kind="function">
<type>Accumulator &</type>
<name>operator=</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>acb3c1aa458551c474bd8d487c3488789</anchor>
+ <anchor>a9cd31c9155208a2de0fdd9810f2a9dd8</anchor>
<arglist>(T y)</arglist>
</member>
<member kind="function">
<type>T</type>
<name>operator()</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a7da3f417100387abd140f4f6fd541f3c</anchor>
+ <anchor>af74ec2f9a77fcc82819111e6bb87b375</anchor>
<arglist>() const </arglist>
</member>
<member kind="function">
<type>T</type>
<name>operator()</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a34cc7a21a2163fe7865734f9c2995f34</anchor>
+ <anchor>a1a2b7ac3fd3b067a1c9930cb02a102b2</anchor>
<arglist>(T y) const </arglist>
</member>
<member kind="function">
<type>Accumulator &</type>
<name>operator+=</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>acdefeaf2aa13cfc78109bdcf4b2cc5d9</anchor>
+ <anchor>adc56d12f08b8a61b19dd78ce532285d4</anchor>
<arglist>(T y)</arglist>
</member>
<member kind="function">
<type>Accumulator &</type>
<name>operator-=</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a1add8644c70e445b32c11f269a0345ef</anchor>
+ <anchor>abf3e43f38791c48d1fa09e4fb569827b</anchor>
<arglist>(T y)</arglist>
</member>
<member kind="function">
<type>Accumulator &</type>
<name>operator*=</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a400f473aa76225662c0493679c1a9072</anchor>
+ <anchor>a2b0bc40e9722e1ffac89ecfeb601fb23</anchor>
<arglist>(int n)</arglist>
</member>
<member kind="function">
<type>bool</type>
<name>operator==</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a826d30c1794c242628121d528461a383</anchor>
+ <anchor>a6ea5d769a36e01327f3633b39cd38290</anchor>
<arglist>(T y) const </arglist>
</member>
<member kind="function">
<type>bool</type>
<name>operator!=</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a64df6698b929c36ef2ea53762b1ca93b</anchor>
+ <anchor>a4102ce7aac36753c2b0390c4fc951a42</anchor>
<arglist>(T y) const </arglist>
</member>
<member kind="function">
<type>bool</type>
<name>operator<</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a3852660b49bef6eb2d92f1296a86459b</anchor>
+ <anchor>a9a7299c02ec8805d951309fdae60e57f</anchor>
<arglist>(T y) const </arglist>
</member>
<member kind="function">
<type>bool</type>
<name>operator<=</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a04aea3f9aad7dd1599bb419e7cf4529a</anchor>
+ <anchor>afb83bdb43b78e20f76e2a7e5e2440386</anchor>
<arglist>(T y) const </arglist>
</member>
<member kind="function">
<type>bool</type>
<name>operator></name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a3f1172477b4c225e064fb87753d567ef</anchor>
+ <anchor>af0e4a35c09b0b179ebf1e2f6912ddeb3</anchor>
<arglist>(T y) const </arglist>
</member>
<member kind="function">
<type>bool</type>
<name>operator>=</name>
<anchorfile>classGeographicLib_1_1Accumulator.html</anchorfile>
- <anchor>a4d509a497da83624d913ed00649644c1</anchor>
+ <anchor>aeafc5d10683648d37fe18ec75725196b</anchor>
<arglist>(T y) const </arglist>
</member>
</compound>
@@ -1579,13 +1586,6 @@
</member>
<member kind="function">
<type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1AlbersEqualArea.html</anchorfile>
- <anchor>a1d0ad953a852d4cdb9faa731b5530d70</anchor>
- <arglist>() const </arglist>
- </member>
- <member kind="function">
- <type>Math::real</type>
<name>OriginLatitude</name>
<anchorfile>classGeographicLib_1_1AlbersEqualArea.html</anchorfile>
<anchor>ad780e943e9a9ba168b350d809d0bfe08</anchor>
@@ -1672,13 +1672,6 @@
<anchor>a3f300fcc10aeee9dc88ff93fb991f191</anchor>
<arglist>() const </arglist>
</member>
- <member kind="function">
- <type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1AzimuthalEquidistant.html</anchorfile>
- <anchor>ac4ec606131221d3eb0acc1ae00a34c63</anchor>
- <arglist>() const </arglist>
- </member>
</compound>
<compound kind="class">
<name>GeographicLib::CassiniSoldner</name>
@@ -1767,13 +1760,6 @@
<anchor>a8d618d5abe71a49fc5ec4f2801d22555</anchor>
<arglist>() const </arglist>
</member>
- <member kind="function">
- <type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1CassiniSoldner.html</anchorfile>
- <anchor>aae869d96e9267c13e675e3a3804eb0e2</anchor>
- <arglist>() const </arglist>
- </member>
</compound>
<compound kind="class">
<name>GeographicLib::CircularEngine</name>
@@ -1863,7 +1849,7 @@
<type>static T</type>
<name>WGS84_a</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>af7abfdedede7d8180d0c2c4015b72194</anchor>
+ <anchor>ae12127984ac6713823746d917b4abfa7</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -1877,7 +1863,7 @@
<type>static T</type>
<name>WGS84_f</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>a2e95ed8ac2738590348f9f3bbaa3fa41</anchor>
+ <anchor>acc5244425bb484594be51b27d56cd335</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -1891,21 +1877,14 @@
<type>static T</type>
<name>WGS84_GM</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>aa6cbaa16e143ebbe8b2c226492c09fbc</anchor>
+ <anchor>af7806106d7bd289bb63d5290e79c87a6</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>WGS84_omega</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>a60299d9299292f18312eee2870bdf9ba</anchor>
- <arglist>()</arglist>
- </member>
- <member kind="function" static="yes">
- <type>static T</type>
- <name>WGS84_r</name>
- <anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>aa886c9955848d0fe9204b1a14f7ae43f</anchor>
+ <anchor>a98c114d5a6ca42d3e4ece8595a0c2180</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -1919,35 +1898,35 @@
<type>static T</type>
<name>GRS80_a</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>ac0ae4c03001a7fb4dea386d7539d38d3</anchor>
+ <anchor>a9b955c3556dcfcebce6a2926bfeaf464</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>GRS80_GM</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>a436996122a60fde693eef527c74b3f05</anchor>
+ <anchor>a7541474ca70cbec7fccb08d3e3fbfe31</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>GRS80_omega</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>ae714c61fde82178814973c94038b9b41</anchor>
+ <anchor>a9caea97ab2be0959c7972155141bfd1b</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>GRS80_J2</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>ae37450bc3e1137946cdf874affa2e44c</anchor>
+ <anchor>a59c7a1d298eb72256119894b67470974</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>UTM_k0</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>a76c804fc143b26086a296d05ed09fe4f</anchor>
+ <anchor>ab5cc487ab160c0a213fdf8e12cde198a</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -1961,7 +1940,7 @@
<type>static T</type>
<name>UPS_k0</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>ae48baa0a561e58acb2574f07e7acda1f</anchor>
+ <anchor>a3fe287ab1a0847f5392c1aaf9c5e635a</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -1975,7 +1954,7 @@
<type>static T</type>
<name>meter</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>aa1f90367063bc442ef165907650ef1f0</anchor>
+ <anchor>ac1b17e7cf67ef42b9b91f3677c2eaa75</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -2003,7 +1982,7 @@
<type>static T</type>
<name>square_meter</name>
<anchorfile>classGeographicLib_1_1Constants.html</anchorfile>
- <anchor>a69b9a03f52615661b8e16f4aaa05425a</anchor>
+ <anchor>ab92200b36f9d306a2710738c6d9bc705</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -2187,20 +2166,6 @@
<arglist>(real d, real m=0, real s=0)</arglist>
</member>
<member kind="function" static="yes">
- <type>static Math::real</type>
- <name>Decode</name>
- <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
- <anchor>aab2493a4f9bcf1b8fa8b636361feca47</anchor>
- <arglist>(const std::string &str)</arglist>
- </member>
- <member kind="function" static="yes">
- <type>static Math::real</type>
- <name>DecodeFraction</name>
- <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
- <anchor>adb889bc03d4370fbc99c6f8fd34b12f9</anchor>
- <arglist>(const std::string &str)</arglist>
- </member>
- <member kind="function" static="yes">
<type>static void</type>
<name>DecodeLatLon</name>
<anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
@@ -2225,6 +2190,13 @@
<type>static std::string</type>
<name>Encode</name>
<anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
+ <anchor>a0777e26ef4507f8123549723bf3cb56f</anchor>
+ <arglist>(real angle, component trailing, unsigned prec, flag ind, char dmssep)</arglist>
+ </member>
+ <member kind="function" static="yes">
+ <type>static std::string</type>
+ <name>Encode</name>
+ <anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
<anchor>a3e36baa6114d46f82a8900d002784369</anchor>
<arglist>(real angle, component trailing, unsigned prec, flag ind=NONE)</arglist>
</member>
@@ -2232,8 +2204,8 @@
<type>static std::string</type>
<name>Encode</name>
<anchorfile>classGeographicLib_1_1DMS.html</anchorfile>
- <anchor>a87dd4a3eea0be6d3a45c8390e725aeb9</anchor>
- <arglist>(real angle, unsigned prec, flag ind=NONE)</arglist>
+ <anchor>aeb9d338b12e885092a611bda7e52f9f4</anchor>
+ <arglist>(real angle, unsigned prec, flag ind=NONE, char dmssep=char(0))</arglist>
</member>
<member kind="function" static="yes">
<type>static void</type>
@@ -2383,13 +2355,6 @@
<anchor>a30ba434524b5836c9852d454e61d795f</anchor>
<arglist>() const </arglist>
</member>
- <member kind="function">
- <type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1Geocentric.html</anchorfile>
- <anchor>aa947dd7275c12692b03d6ff43d217d13</anchor>
- <arglist>() const </arglist>
- </member>
<member kind="variable" static="yes">
<type>static const Geocentric</type>
<name>WGS84</name>
@@ -2629,6 +2594,13 @@
<type>std::string</type>
<name>DMSRepresentation</name>
<anchorfile>classGeographicLib_1_1GeoCoords.html</anchorfile>
+ <anchor>af6e9f9087a407b01dc24401df8610257</anchor>
+ <arglist>(int prec, bool swaplatlong, char dmssep) const </arglist>
+ </member>
+ <member kind="function">
+ <type>std::string</type>
+ <name>DMSRepresentation</name>
+ <anchorfile>classGeographicLib_1_1GeoCoords.html</anchorfile>
<anchor>ab37746606876eb77335268054589390a</anchor>
<arglist>(int prec=0, bool swaplatlong=false) const </arglist>
</member>
@@ -2674,13 +2646,6 @@
<anchor>a4d892f5e55df8cbb597d1a693da4783c</anchor>
<arglist>() const </arglist>
</member>
- <member kind="function">
- <type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1GeoCoords.html</anchorfile>
- <anchor>a8f653a04eb087280cd020466213c9cac</anchor>
- <arglist>() const </arglist>
- </member>
</compound>
<compound kind="class">
<name>GeographicLib::Geodesic</name>
@@ -2935,13 +2900,6 @@
</member>
<member kind="function">
<type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1Geodesic.html</anchorfile>
- <anchor>ab64c9662ce24d7a658924db0c85f8b2d</anchor>
- <arglist>() const </arglist>
- </member>
- <member kind="function">
- <type>Math::real</type>
<name>EllipsoidArea</name>
<anchorfile>classGeographicLib_1_1Geodesic.html</anchorfile>
<anchor>a0dde7d12d4bafedef63d371c5fe40f50</anchor>
@@ -3200,13 +3158,6 @@
<arglist>() const </arglist>
</member>
<member kind="function">
- <type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1GeodesicLine.html</anchorfile>
- <anchor>ad0d59a47c24d11229ab7ce4363d525ea</anchor>
- <arglist>() const </arglist>
- </member>
- <member kind="function">
<type>unsigned</type>
<name>Capabilities</name>
<anchorfile>classGeographicLib_1_1GeodesicLine.html</anchorfile>
@@ -3430,13 +3381,6 @@
<anchor>abd2076cab3455b816e9477cdb410b187</anchor>
<arglist>() const </arglist>
</member>
- <member kind="function">
- <type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1Geoid.html</anchorfile>
- <anchor>a19fd88ada94ee9b3b063e9ff097fd2e5</anchor>
- <arglist>() const </arglist>
- </member>
<member kind="function" static="yes">
<type>static std::string</type>
<name>DefaultGeoidPath</name>
@@ -3504,13 +3448,6 @@
<anchor>a06b559fa72aa1e51da966c43d22b983d</anchor>
<arglist>() const </arglist>
</member>
- <member kind="function">
- <type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1Gnomonic.html</anchorfile>
- <anchor>a655eff8ef95f92902899459e8a5efe63</anchor>
- <arglist>() const </arglist>
- </member>
</compound>
<compound kind="class">
<name>GeographicLib::GravityCircle</name>
@@ -3944,13 +3881,6 @@
</member>
<member kind="function">
<type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1LambertConformalConic.html</anchorfile>
- <anchor>a2dcd66922112771c232d686e7bcc5f31</anchor>
- <arglist>() const </arglist>
- </member>
- <member kind="function">
- <type>Math::real</type>
<name>OriginLatitude</name>
<anchorfile>classGeographicLib_1_1LambertConformalConic.html</anchorfile>
<anchor>a7c589335b43b2274d3a68c0f68f29d77</anchor>
@@ -4058,13 +3988,6 @@
<anchor>a99907eda4b863acbe8e7d159a6482abb</anchor>
<arglist>() const </arglist>
</member>
- <member kind="function">
- <type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1LocalCartesian.html</anchorfile>
- <anchor>ad6991a2dff56a460a650c757ffda8e94</anchor>
- <arglist>() const </arglist>
- </member>
</compound>
<compound kind="class">
<name>GeographicLib::MagneticCircle</name>
@@ -4298,7 +4221,7 @@
<type>static T</type>
<name>pi</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a55d06bfccddf52b1c1066962af738b75</anchor>
+ <anchor>aca1580c771e7019bfe826512fba9b2f1</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -4312,7 +4235,7 @@
<type>static T</type>
<name>degree</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a3d84677a4dfd6c2149c16426544eaf6c</anchor>
+ <anchor>a0f3b4ea16cc2cb21557555fca3b1c201</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -4326,63 +4249,63 @@
<type>static T</type>
<name>sq</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a8a952f405e2ff2cbe079ba5687c40327</anchor>
+ <anchor>a6a092f38e231c80a1f144814c90f1895</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>hypot</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a0d422863198d4bec2aae6b187a60760c</anchor>
+ <anchor>a62b6fca06c571481aafba3f1716a8bb2</anchor>
<arglist>(T x, T y)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>expm1</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a71afd1ae80f942a0b90d65f7784bf2f8</anchor>
+ <anchor>a2fd4e8930d9dd953352d25fc184d843e</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>log1p</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>ac84507dc4df09cf27e831620e8ad8880</anchor>
+ <anchor>a90eddd5a6d0c9dcc4a9f18dd647ac520</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>asinh</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>ab0998a80c8946d1c016c1bc4810a0698</anchor>
+ <anchor>aba75669f9d52fc672a8faaf69261bd8a</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>atanh</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a62ae372f983cb076561204be8de263bd</anchor>
+ <anchor>a372ac604592d9de9cf608cfdfc463447</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>cbrt</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a21b33765456b50bf9e32ed0d57b441a6</anchor>
+ <anchor>a04b87b033b845f4812a5700661c64a2a</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="function" static="yes">
<type>static bool</type>
<name>isfinite</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>adadc6f5069c0a5f75a7c5a5bf2720aa3</anchor>
+ <anchor>af61f7360e67c35131d80083e7b53dda8</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>NaN</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a77c57c61f93d7ac3f6a5095489c36715</anchor>
+ <anchor>ad1dc13a367125d3f8d291eaa98339186</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -4396,14 +4319,14 @@
<type>static bool</type>
<name>isnan</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>aa63d7a640d1126e47af65f782dd40bca</anchor>
+ <anchor>a554d35e9f54bf304447833a21ee2047c</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>infinity</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>a4e8a86ff2039262e99b8e41070cc2223</anchor>
+ <anchor>a82ccc01be301f14061c681ee93a5120b</anchor>
<arglist>()</arglist>
</member>
<member kind="function" static="yes">
@@ -4417,7 +4340,7 @@
<type>static T</type>
<name>swab</name>
<anchorfile>classGeographicLib_1_1Math.html</anchorfile>
- <anchor>aa81163e3148b2d45d903d23f5d8fb261</anchor>
+ <anchor>aec7f95c2bb99422f1f047cb628a232f8</anchor>
<arglist>(T x)</arglist>
</member>
<member kind="variable" static="yes">
@@ -4466,13 +4389,6 @@
<anchor>a8eee27799bda8238d6d0525dffdddd4e</anchor>
<arglist>()</arglist>
</member>
- <member kind="function" static="yes">
- <type>static Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1MGRS.html</anchorfile>
- <anchor>a32792f0e117641cb48d06786d4c6fdbc</anchor>
- <arglist>()</arglist>
- </member>
<member kind="friend" protection="private">
<type>friend class</type>
<name>UTMUPS</name>
@@ -4693,13 +4609,6 @@
</member>
<member kind="function" static="yes">
<type>static Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1OSGB.html</anchorfile>
- <anchor>a72bb966b2a93e4607bfcbf78f5b80bb4</anchor>
- <arglist>()</arglist>
- </member>
- <member kind="function" static="yes">
- <type>static Math::real</type>
<name>CentralScale</name>
<anchorfile>classGeographicLib_1_1OSGB.html</anchorfile>
<anchor>a65210bfdcac362f393a8f81f28259ad0</anchor>
@@ -4795,13 +4704,6 @@
</member>
<member kind="function">
<type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1PolarStereographic.html</anchorfile>
- <anchor>a969a21c3df38517a081e233ae90c098e</anchor>
- <arglist>() const </arglist>
- </member>
- <member kind="function">
- <type>Math::real</type>
<name>CentralScale</name>
<anchorfile>classGeographicLib_1_1PolarStereographic.html</anchorfile>
<anchor>ad6f7bd8a35208d91706ac8c258387e6f</anchor>
@@ -4894,14 +4796,14 @@
<type>static Math::real</type>
<name>Value</name>
<anchorfile>classGeographicLib_1_1SphericalEngine.html</anchorfile>
- <anchor>a987cbe2cdb67410174a6e9594da92573</anchor>
+ <anchor>a1157f59596dd15bf0a21b6a7fb99630b</anchor>
<arglist>(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)</arglist>
</member>
<member kind="function" static="yes">
<type>static CircularEngine</type>
<name>Circle</name>
<anchorfile>classGeographicLib_1_1SphericalEngine.html</anchorfile>
- <anchor>a7733e7913671b573042a2fcf8db089dd</anchor>
+ <anchor>af6a5fa63535d47cf528b733bb6a97901</anchor>
<arglist>(const coeff c[], const real f[], real p, real z, real a)</arglist>
</member>
<member kind="function" static="yes">
@@ -5316,13 +5218,6 @@
</member>
<member kind="function">
<type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1TransverseMercator.html</anchorfile>
- <anchor>a5b5a56027507ae2aa08ab5b43a4bddc5</anchor>
- <arglist>() const </arglist>
- </member>
- <member kind="function">
- <type>Math::real</type>
<name>CentralScale</name>
<anchorfile>classGeographicLib_1_1TransverseMercator.html</anchorfile>
<anchor>a63876dc20e8765501ca62022f9a73432</anchor>
@@ -5390,13 +5285,6 @@
</member>
<member kind="function">
<type>Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1TransverseMercatorExact.html</anchorfile>
- <anchor>a9c4df948ed85f96273c04414fc6871df</anchor>
- <arglist>() const </arglist>
- </member>
- <member kind="function">
- <type>Math::real</type>
<name>CentralScale</name>
<anchorfile>classGeographicLib_1_1TransverseMercatorExact.html</anchorfile>
<anchor>a355a827f45c194d56a465e0d4f91c3a3</anchor>
@@ -5459,35 +5347,35 @@
<type>static T</type>
<name>fractionalyear</name>
<anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
- <anchor>a6daedff1fb56da7ee149066c1cce106a</anchor>
+ <anchor>a074607cb34326b7109532c8fdd07e38c</anchor>
<arglist>(const std::string &s)</arglist>
</member>
<member kind="function" static="yes">
<type>static std::string</type>
<name>str</name>
<anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
- <anchor>a53fbf616c74bab1cbbc9e8d4c7b6739f</anchor>
+ <anchor>ae87a7ae2bee75f724907af9f753f03b7</anchor>
<arglist>(T x, int p=-1)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>num</name>
<anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
- <anchor>a8a490ea58d4de4c5a7ce86ab2cda25bd</anchor>
+ <anchor>aa35f1f83c0543558a79b3cf42ddf50c8</anchor>
<arglist>(const std::string &s)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>nummatch</name>
<anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
- <anchor>a6e8268e5d125846dee7b087dec889825</anchor>
+ <anchor>ad0d89bfe63814bab5312306fe3ac2b43</anchor>
<arglist>(const std::string &s)</arglist>
</member>
<member kind="function" static="yes">
<type>static T</type>
<name>fract</name>
<anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
- <anchor>ad6fbe8736a470a0acecf191e29f72ceb</anchor>
+ <anchor>a46b13d9ce2893f7e0fe6e7da093f528f</anchor>
<arglist>(const std::string &s)</arglist>
</member>
<member kind="function" static="yes">
@@ -5501,17 +5389,31 @@
<type>static void</type>
<name>readarray</name>
<anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
- <anchor>ae9208f2d9c37de596ead9af2136e8468</anchor>
+ <anchor>a23e88040ceb60bd3fe28efc04f9119f8</anchor>
<arglist>(std::istream &str, IntT array[], size_t num)</arglist>
</member>
<member kind="function" static="yes">
<type>static void</type>
<name>readarray</name>
<anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
- <anchor>a3acad0c1faffcd87292776d1cae26290</anchor>
+ <anchor>a044796b4fc14a952abec27da27fc20be</anchor>
<arglist>(std::istream &str, std::vector< IntT > &array)</arglist>
</member>
<member kind="function" static="yes">
+ <type>static void</type>
+ <name>writearray</name>
+ <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
+ <anchor>a276eb20ace49c5260e1878c7d8aefd31</anchor>
+ <arglist>(std::ostream &str, const IntT array[], size_t num)</arglist>
+ </member>
+ <member kind="function" static="yes">
+ <type>static void</type>
+ <name>writearray</name>
+ <anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
+ <anchor>a0621066e4aa146a2c100802375e70389</anchor>
+ <arglist>(std::ostream &str, std::vector< IntT > &array)</arglist>
+ </member>
+ <member kind="function" static="yes">
<type>static bool</type>
<name>ParseLine</name>
<anchorfile>classGeographicLib_1_1Utility.html</anchorfile>
@@ -5664,13 +5566,6 @@
<anchor>a182de2e29f1181c55a266777039b8a9d</anchor>
<arglist>()</arglist>
</member>
- <member kind="function" static="yes">
- <type>static Math::real</type>
- <name>InverseFlattening</name>
- <anchorfile>classGeographicLib_1_1UTMUPS.html</anchorfile>
- <anchor>a3de827995b6327282bfe95fcab99ebb2</anchor>
- <arglist>()</arglist>
- </member>
</compound>
<compound kind="dir">
<name>include/GeographicLib/</name>
diff --git a/doc/html/Geographic_8doc.html b/doc/html/Geographic_8doc.html
index 68c8ace..da5a7f8 100644
--- a/doc/html/Geographic_8doc.html
+++ b/doc/html/Geographic_8doc.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geographic.doc File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,16 +60,19 @@
<p>Documentation for <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a>.
<a href="#details">More...</a></p>
-<table class="memberdecls">
-</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Documentation for <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a>. </p>
<p>Written by Charles Karney <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="Geographic_8doc_source.html">Geographic.doc</a>.</p>
</div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeoidEval.1.html b/doc/html/GeoidEval.1.html
index 48d4505..13b32d2 100644
--- a/doc/html/GeoidEval.1.html
+++ b/doc/html/GeoidEval.1.html
@@ -49,20 +49,21 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>GeoidEval</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ] [ <strong>-l</strong> ]
-[ <strong>-a</strong> | <strong>-c</strong> <em>south</em> <em>west</em> <em>north</em> <em>east</em> ]
+[ <strong>-a</strong> | <strong>-c</strong> <em>south</em> <em>west</em> <em>north</em> <em>east</em> ] [ <strong>-g</strong> ]
[ <strong>-z</strong> <em>zone</em> ] [ <strong>--msltohae</strong> ] [ <strong>--haetomsl</strong> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p><strong>GeoidEval</strong> reads in positions on standard input and prints out the
-corresponding geoid heights on standard output. It also prints the
-northerly and easterly gradients of the geoid height (i.e., the rate at
-which the geoid height changes per unit distance along the WGS84
-ellipsoid in the specified directions).</p>
+corresponding geoid heights on standard output. Optionally, it also
+prints the northerly and easterly gradients of the geoid height.</p>
<p>Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any
of the formats accepted by <a href="GeoConvert.1.html"><code>GeoConvert(1)</code></a>. (MGRS coordinates signify the
<em>center</em> of the corresponding MGRS square.) If the <strong>-z</strong> option is
@@ -105,6 +106,16 @@ This utility can also compute the direction of gravity accurately.</p>
<p>cache the data bounded by <em>south</em> <em>west</em> <em>north</em> <em>east</em> in memory.
See <a href="#cache">CACHE</a>.</p>
</dd>
+<dt><strong><a name="g" class="item"><strong>-g</strong></a></strong></dt>
+
+<dd>
+<p>print the northerly and easterly gradients after the geoid height (i.e.,
+the rate at which the geoid height changes per unit distance along the
+WGS84 ellipsoid in the specified directions). As a result of the way
+that the geoid data is stored, the calculation of gradients can result
+in large quantization errors. This is particularly acute at high
+latitudes and for the easterly gradient.</p>
+</dd>
<dt><strong><a name="z" class="item"><strong>-z</strong></a></strong></dt>
<dd>
@@ -134,6 +145,15 @@ input line with the height converted to height above the geoid (MSL).</p>
<p>print information about the geoid on standard error before processing
the input.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -159,8 +179,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -181,19 +207,16 @@ installed):</p>
bilinear error cubic error
name geoid grid max rms max rms
egm84-30 EGM84 30' 1.546 m 70 mm 0.274 m 14 mm
- egm84-15 EGM84 15' 0.413 m 18 mm 0.020 m 1 mm
- egm96-15 EGM96 15' 1.152 m 40 mm 0.169 m 7 mm
- egm96-5 EGM96 5' 0.140 m 5 mm 0.003 m 1 mm
- egm2008-5 EGM2008 5' 0.478 m 12 mm 0.294 m 5 mm
- egm2008-2_5 EGM2008 2.5' 0.135 m 3 mm 0.031 m 1 mm
- egm2008-1 EGM2008 1' 0.025 m 1 mm 0.003 m 1 mm</pre>
+ egm84-15 EGM84 15' 0.413 m 18 mm 0.021 m 1.2 mm
+ egm96-15 EGM96 15' 1.152 m 40 mm 0.169 m 7.0 mm
+ egm96-5 EGM96 5' 0.140 m 4.6 mm .0032 m 0.7 mm
+ egm2008-5 EGM2008 5' 0.478 m 12 mm 0.294 m 4.5 mm
+ egm2008-2_5 EGM2008 2.5' 0.135 m 3.2 mm 0.031 m 0.8 mm
+ egm2008-1 EGM2008 1' 0.025 m 0.8 mm .0022 m 0.7 mm</pre>
<p>By default, the <code>egm96-5</code> geoid is used. This may changed by setting
the environment variable <a href="#geoid_name"><code>GEOID_NAME</code></a> or with the <strong>-n</strong> option. The
errors listed here are estimates of the quantization and interpolation
-errors in the reported heights compared to the specified geoid. As a
-result of the way that the geoid data is stored, the calculation of
-gradients can result in large quantization errors. This is particularly
-acute at high latitudes and for the easterly gradient.</p>
+errors in the reported heights compared to the specified geoid.</p>
<p>The geoid data will be loaded from a directory specified at compile
time. This may changed by setting the environment variables
<a href="#geoid_path"><code>GEOID_PATH</code></a> or <a href="#geographiclib_data"><code>GEOGRAPHICLIB_DATA</code></a>, or with the <strong>-d</strong> option. The
@@ -220,10 +243,7 @@ interpolation is based on a least-squares fit of a cubic polynomial to a
the height at one of the poles. Cubic interpolation is considerably
more accurate than bilinear; however it results in small discontinuities
in the returned height on cell boundaries. The gradients are computed
-by differentiating the interpolated results. As a result of the way
-that the geoid data is stored, the calculation of gradients can result
-in large quantization errors. This is particularly acute for fine
-grids, at high latitudes, and for the easterly gradient.</p>
+by differentiating the interpolated results.</p>
<p>
</p>
<hr />
@@ -331,7 +351,7 @@ level.)</p>
<h1><a name="examples">EXAMPLES</a></h1>
<p>The height of the EGM96 geoid at Timbuktu</p>
<pre>
- echo "16d46'33N" "3d00'34W" | GeoidEval
+ echo 16:46:33N 3:00:34W | GeoidEval
=> 28.7068 -0.02e-6 -1.73e-6</pre>
<p>The first number returned is the height of the geoid and the 2nd and 3rd
are its slopes in the northerly and easterly directions.</p>
diff --git a/doc/html/GeoidEval_8cpp.html b/doc/html/GeoidEval_8cpp.html
index 1d53588..ff2c1cc 100644
--- a/doc/html/GeoidEval_8cpp.html
+++ b/doc/html/GeoidEval_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeoidEval.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for evaluating geoid heights. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o GeoidEval \ <a class="el" href="GeoidEval_8cpp.html" title="Command line utility for evaluating geoid heights.">GeoidEval.cpp</a> \ ../src/DMS.cpp \ ../src/GeoCoords.cpp \ ../src/Geoid.cpp \ ../src/MGRS.cpp \ ../src/PolarStereographic.cpp \ ../src/TransverseMercator.cpp \ ../src/UTMUPS.cpp</p>
<p>See the <a href="GeoidEval.1.html">man page</a> for usage information. </p>
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="GeoidEval_8cpp_source.html#l00035">35</a> of file <a class="el" href="GeoidEval_8cpp_source.html">GeoidEval.cpp</a>.</p>
-<p>References <a class="el" href="Geoid_8hpp_source.html#l00376">GeographicLib::Geoid::Cache()</a>, <a class="el" href="Geoid_8hpp_source.html#l00228">GeographicLib::Geoid::CacheAll()</a>, <a class="el" href="Geoid_8cpp_source.html#l00446">GeographicLib::Geoid::CacheArea()</a>, <a class="el" href="Geoid_8hpp_source.html#l00390">GeographicLib::Geoid::CacheEast()</a>, <a class="el" href="Geoid_8hpp_source.html#l00400">GeographicLib::Geoid::CacheNorth()</a>, <a class="el" href="Geoid_8hpp_s [...]
+<p>References <a class="el" href="Geoid_8cpp_source.html#l00542">GeographicLib::Geoid::DefaultGeoidName()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="UTMUPS_8cpp_source.html#l00186">GeographicLib::UTMUPS::DecodeZone()</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00128">GeographicLib::UTMUPS::MINZONE</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00144">GeographicLib::UTMUPS::MAXZONE</a>, <a class="el" href="Geo [...]
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GeoidEval_8cpp_source.html b/doc/html/GeoidEval_8cpp_source.html
index 1252439..97419ca 100644
--- a/doc/html/GeoidEval_8cpp_source.html
+++ b/doc/html/GeoidEval_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeoidEval.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file GeoidEval.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for evaluating geoid heights</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -84,239 +99,274 @@
<a name="l00035"></a><a class="code" href="GeoidEval_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00035</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00036"></a>00036 <span class="keywordflow">try</span> {
<a name="l00037"></a>00037 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00038"></a>00038 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00039"></a>00039 <span class="keywordtype">bool</span> cacheall = <span class="keyword">false</span>, cachearea = <span class="keyword">false</span>, verbose = <span class="keyword">false</span>, cubic = <span class="keyword">true</span>;
-<a name="l00040"></a>00040 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> caches, cachew, cachen, cachee;
-<a name="l00041"></a>00041 std::string dir;
-<a name="l00042"></a>00042 std::string geoid = <a class="code" href="classGeographicLib_1_1Geoid.html#a048865342b2b12ed2272e547209381fd">Geoid::DefaultGeoidName</a>();
-<a name="l00043"></a>00043 <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">Geoid::convertflag</a> heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a677322ba74ea5494e67478c3dc1780d5">Geoid::NONE</a>;
-<a name="l00044"></a>00044 std::string istring, ifile, ofile;
-<a name="l00045"></a>00045 <span class="keywordtype">bool</span> northp = <span class="keyword">false</span>;
-<a name="l00046"></a>00046 <span class="keywordtype">int</span> zonenum = <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">UTMUPS::INVALID</a>;
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00049"></a>00049 std::string arg(argv[m]);
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-a"</span>) {
-<a name="l00051"></a>00051 cacheall = <span class="keyword">true</span>;
-<a name="l00052"></a>00052 cachearea = <span class="keyword">false</span>;
-<a name="l00053"></a>00053 }
-<a name="l00054"></a>00054 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
-<a name="l00055"></a>00055 <span class="keywordflow">if</span> (m + 4 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00056"></a>00056 cacheall = <span class="keyword">false</span>;
-<a name="l00057"></a>00057 cachearea = <span class="keyword">true</span>;
-<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
-<a name="l00059"></a>00059 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
-<a name="l00060"></a>00060 caches, cachew);
-<a name="l00061"></a>00061 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 3]), std::string(argv[m + 4]),
-<a name="l00062"></a>00062 cachen, cachee);
-<a name="l00063"></a>00063 }
-<a name="l00064"></a>00064 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00065"></a>00065 std::cerr << <span class="stringliteral">"Error decoding argument of -c: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00066"></a>00066 <span class="keywordflow">return</span> 1;
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068 m += 4;
-<a name="l00069"></a>00069 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--msltohae"</span>)
-<a name="l00070"></a>00070 heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">Geoid::GEOIDTOELLIPSOID</a>;
-<a name="l00071"></a>00071 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--haetomsl"</span>)
-<a name="l00072"></a>00072 heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a4a1db06e9dcfa1ebb345c616151ab70d">Geoid::ELLIPSOIDTOGEOID</a>;
-<a name="l00073"></a>00073 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-z"</span>) {
-<a name="l00074"></a>00074 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00075"></a>00075 std::string zone = argv[m];
-<a name="l00076"></a>00076 <span class="keywordflow">try</span> {
-<a name="l00077"></a>00077 <a class="code" href="classGeographicLib_1_1UTMUPS.html#ad74d52d7ebeff195019745f791f30562">UTMUPS::DecodeZone</a>(zone, zonenum, northp);
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00080"></a>00080 std::cerr << <span class="stringliteral">"Error decoding zone: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00081"></a>00081 <span class="keywordflow">return</span> 1;
-<a name="l00082"></a>00082 }
-<a name="l00083"></a>00083 <span class="keywordflow">if</span> (!(zonenum >= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7af91adc987ae7295bfb6d3786b23c58e1">UTMUPS::MINZONE</a> && zonenum <= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a12dabceb6da15aa0fc94b9406aca921a">UTMUPS::MAXZONE</a>)) {
-<a name="l00084"></a>00084 std::cerr << <span class="stringliteral">"Illegal zone "</span> << zone << <span class="stringliteral">"\n"</span>;
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> 1;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00089"></a>00089 geoid = argv[m];
-<a name="l00090"></a>00090 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
-<a name="l00091"></a>00091 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00092"></a>00092 dir = argv[m];
-<a name="l00093"></a>00093 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00094"></a>00094 cubic = <span class="keyword">false</span>;
-<a name="l00095"></a>00095 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
-<a name="l00096"></a>00096 verbose = <span class="keyword">true</span>;
-<a name="l00097"></a>00097 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00098"></a>00098 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00099"></a>00099 istring = argv[m];
-<a name="l00100"></a>00100 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00101"></a>00101 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00102"></a>00102 ifile = argv[m];
-<a name="l00103"></a>00103 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00104"></a>00104 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00105"></a>00105 ofile = argv[m];
-<a name="l00106"></a>00106 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00107"></a>00107 std::cout
-<a name="l00108"></a>00108 << argv[0]
-<a name="l00109"></a>00109 << <span class="stringliteral">": $Id: c241b424ccc91f1fa7e7f9cc74ef5f157023bc56 $\n"</span>
-<a name="l00110"></a>00110 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00111"></a>00111 <span class="keywordflow">return</span> 0;
-<a name="l00112"></a>00112 } <span class="keywordflow">else</span> {
-<a name="l00113"></a>00113 <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
-<a name="l00115"></a>00115 std::cout<< <span class="stringliteral">"\nDefault geoid path = \""</span> << <a class="code" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">Geoid::DefaultGeoidPath</a>()
-<a name="l00116"></a>00116 << <span class="stringliteral">"\"\nDefault geoid name = \""</span> << <a class="code" href="classGeographicLib_1_1Geoid.html#a048865342b2b12ed2272e547209381fd">Geoid::DefaultGeoidName</a>()
-<a name="l00117"></a>00117 << <span class="stringliteral">"\"\n"</span>;
-<a name="l00118"></a>00118 <span class="keywordflow">return</span> retval;
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120 }
-<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00123"></a>00123 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00124"></a>00124 <span class="keywordflow">return</span> 1;
-<a name="l00125"></a>00125 }
-<a name="l00126"></a>00126 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00127"></a>00127 std::ifstream infile;
-<a name="l00128"></a>00128 std::istringstream instring;
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00130"></a>00130 infile.open(ifile.c_str());
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00132"></a>00132 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00133"></a>00133 <span class="keywordflow">return</span> 1;
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00136"></a>00136 std::string::size_type m = 0;
-<a name="l00137"></a>00137 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00138"></a>00138 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00139"></a>00139 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00140"></a>00140 <span class="keywordflow">break</span>;
-<a name="l00141"></a>00141 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143 instring.str(istring);
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00146"></a>00146 (!istring.empty() ? &instring : &std::cin);
-<a name="l00147"></a>00147
-<a name="l00148"></a>00148 std::ofstream outfile;
-<a name="l00149"></a>00149 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00150"></a>00150 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00151"></a>00151 outfile.open(ofile.c_str());
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00153"></a>00153 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00154"></a>00154 <span class="keywordflow">return</span> 1;
-<a name="l00155"></a>00155 }
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
-<a name="l00158"></a>00158
-<a name="l00159"></a>00159 <span class="keywordtype">int</span> retval = 0;
-<a name="l00160"></a>00160 <span class="keywordflow">try</span> {
-<a name="l00161"></a>00161 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a> g(geoid, dir, cubic);
-<a name="l00162"></a>00162 <span class="keywordflow">try</span> {
-<a name="l00163"></a>00163 <span class="keywordflow">if</span> (cacheall)
-<a name="l00164"></a>00164 g.<a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>();
-<a name="l00165"></a>00165 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cachearea)
-<a name="l00166"></a>00166 g.<a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">CacheArea</a>(caches, cachew, cachen, cachee);
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00169"></a>00169 std::cerr << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\nProceeding without a cache\n"</span>;
-<a name="l00170"></a>00170 }
-<a name="l00171"></a>00171 <span class="keywordflow">if</span> (verbose) {
-<a name="l00172"></a>00172 std::cerr << <span class="stringliteral">"Geoid file: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">GeoidFile</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00173"></a>00173 << <span class="stringliteral">"Description: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">Description</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00174"></a>00174 << <span class="stringliteral">"Interpolation: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">Interpolation</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00175"></a>00175 << <span class="stringliteral">"Date & Time: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">DateTime</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00176"></a>00176 << <span class="stringliteral">"Offset (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">Offset</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00177"></a>00177 << <span class="stringliteral">"Scale (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00178"></a>00178 << <span class="stringliteral">"Max error (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00179"></a>00179 << <span class="stringliteral">"RMS error (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">RMSError</a>() << <span class="stringliteral">"\n"</span>;
-<a name="l00180"></a>00180 <span class="keywordflow">if</span> (g.<a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">Cache</a>())
-<a name="l00181"></a>00181 std::cerr<< <span class="stringliteral">"Caching:"</span>
-<a name="l00182"></a>00182 << <span class="stringliteral">"\n SW Corner: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a>() << <span class="stringliteral">" "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">CacheWest</a>()
-<a name="l00183"></a>00183 << <span class="stringliteral">"\n NE Corner: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">CacheNorth</a>() << <span class="stringliteral">" "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">CacheEast</a>()
-<a name="l00184"></a>00184 << <span class="stringliteral">"\n"</span>;
-<a name="l00185"></a>00185 }
-<a name="l00186"></a>00186
-<a name="l00187"></a>00187 <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
-<a name="l00188"></a>00188 std::string s, suff;
-<a name="l00189"></a>00189 <span class="keyword">const</span> <span class="keywordtype">char</span>* spaces = <span class="stringliteral">" \t\n\v\f\r,"</span>; <span class="comment">// Include comma as space</span>
-<a name="l00190"></a>00190 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00191"></a>00191 <span class="keywordflow">try</span> {
-<a name="l00192"></a>00192 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> height = 0;
-<a name="l00193"></a>00193 <span class="keywordflow">if</span> (zonenum != <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">UTMUPS::INVALID</a>) {
-<a name="l00194"></a>00194 <span class="comment">// Expect "easting northing" if heightmult == 0, or</span>
-<a name="l00195"></a>00195 <span class="comment">// "easting northing height" if heightmult != 0.</span>
-<a name="l00196"></a>00196 std::string::size_type pa = 0, pb = 0;
-<a name="l00197"></a>00197 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting = 0, northing = 0;
-<a name="l00198"></a>00198 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < (heightmult ? 3 : 2); ++i) {
-<a name="l00199"></a>00199 <span class="keywordflow">if</span> (pb == std::string::npos)
-<a name="l00200"></a>00200 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00201"></a>00201 <span class="comment">// Start of i'th token</span>
-<a name="l00202"></a>00202 pa = s.find_first_not_of(spaces, pb);
-<a name="l00203"></a>00203 <span class="keywordflow">if</span> (pa == std::string::npos)
-<a name="l00204"></a>00204 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00205"></a>00205 <span class="comment">// End of i'th token</span>
-<a name="l00206"></a>00206 pb = s.find_first_of(spaces, pa);
-<a name="l00207"></a>00207 (i == 2 ? height : (i == 0 ? easting : northing)) =
-<a name="l00208"></a>00208 Utility::num<real>(s.substr(pa, (pb == std::string::npos ?
-<a name="l00209"></a>00209 pb : pb - pa)));
-<a name="l00210"></a>00210 }
-<a name="l00211"></a>00211 p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(zonenum, northp, easting, northing);
-<a name="l00212"></a>00212 <span class="keywordflow">if</span> (heightmult) {
-<a name="l00213"></a>00213 suff = pb == std::string::npos ? <span class="stringliteral">""</span> : s.substr(pb);
-<a name="l00214"></a>00214 s = s.substr(0, pa);
-<a name="l00215"></a>00215 }
-<a name="l00216"></a>00216 } <span class="keywordflow">else</span> {
-<a name="l00217"></a>00217 <span class="keywordflow">if</span> (heightmult) {
-<a name="l00218"></a>00218 <span class="comment">// Treat last token as height</span>
-<a name="l00219"></a>00219 <span class="comment">// pb = last char of last token</span>
-<a name="l00220"></a>00220 <span class="comment">// pa = last char preceding white space</span>
-<a name="l00221"></a>00221 <span class="comment">// px = last char of 2nd last token</span>
-<a name="l00222"></a>00222 std::string::size_type pb = s.find_last_not_of(spaces);
-<a name="l00223"></a>00223 std::string::size_type pa = s.find_last_of(spaces, pb);
-<a name="l00224"></a>00224 <span class="keywordflow">if</span> (pa == std::string::npos || pb == std::string::npos)
-<a name="l00225"></a>00225 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00226"></a>00226 height = Utility::num<real>(s.substr(pa + 1, pb - pa));
-<a name="l00227"></a>00227 s = s.substr(0, pa + 1);
-<a name="l00228"></a>00228 }
-<a name="l00229"></a>00229 p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(s);
-<a name="l00230"></a>00230 }
-<a name="l00231"></a>00231 <span class="keywordflow">if</span> (heightmult) {
-<a name="l00232"></a>00232 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>());
-<a name="l00233"></a>00233 *output << s
-<a name="l00234"></a>00234 << Utility::str<real>(height + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(heightmult) * h, 4)
-<a name="l00235"></a>00235 << suff << <span class="stringliteral">"\n"</span>;
-<a name="l00236"></a>00236 } <span class="keywordflow">else</span> {
-<a name="l00237"></a>00237 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gradn, grade;
-<a name="l00238"></a>00238 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>(), gradn, grade);
-<a name="l00239"></a>00239 *output << Utility::str<real>(h, 4) << <span class="stringliteral">" "</span>
-<a name="l00240"></a>00240 << Utility::str<real>(gradn * 1e6, 2)
-<a name="l00241"></a>00241 << (<a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(gradn) ? <span class="stringliteral">" "</span> : <span class="stringliteral">"e-6 "</span>)
-<a name="l00242"></a>00242 << Utility::str<real>(grade * 1e6, 2)
-<a name="l00243"></a>00243 << (<a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(grade) ? <span class="stringliteral">"\n"</span> : <span class="stringliteral">"e-6\n"</span>);
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245 }
-<a name="l00246"></a>00246 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00247"></a>00247 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00248"></a>00248 retval = 1;
-<a name="l00249"></a>00249 }
-<a name="l00250"></a>00250 }
-<a name="l00251"></a>00251 }
-<a name="l00252"></a>00252 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00253"></a>00253 std::cerr << <span class="stringliteral">"Error reading "</span> << geoid << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00254"></a>00254 retval = 1;
-<a name="l00255"></a>00255 }
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> retval;
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00259"></a>00259 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00260"></a>00260 <span class="keywordflow">return</span> 1;
-<a name="l00261"></a>00261 }
-<a name="l00262"></a>00262 <span class="keywordflow">catch</span> (...) {
-<a name="l00263"></a>00263 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00264"></a>00264 <span class="keywordflow">return</span> 1;
-<a name="l00265"></a>00265 }
-<a name="l00266"></a>00266 }
+<a name="l00038"></a>00038 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00039"></a>00039 <span class="keywordtype">bool</span> cacheall = <span class="keyword">false</span>, cachearea = <span class="keyword">false</span>, verbose = <span class="keyword">false</span>,
+<a name="l00040"></a>00040 cubic = <span class="keyword">true</span>, gradp = <span class="keyword">false</span>;
+<a name="l00041"></a>00041 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> caches, cachew, cachen, cachee;
+<a name="l00042"></a>00042 std::string dir;
+<a name="l00043"></a>00043 std::string geoid = <a class="code" href="classGeographicLib_1_1Geoid.html#a048865342b2b12ed2272e547209381fd">Geoid::DefaultGeoidName</a>();
+<a name="l00044"></a>00044 <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>::convertflag heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>::NONE;
+<a name="l00045"></a>00045 std::string istring, ifile, ofile, cdelim;
+<a name="l00046"></a>00046 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00047"></a>00047 <span class="keywordtype">bool</span> northp = <span class="keyword">false</span>;
+<a name="l00048"></a>00048 <span class="keywordtype">int</span> zonenum = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::INVALID;
+<a name="l00049"></a>00049
+<a name="l00050"></a>00050 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00051"></a>00051 std::string arg(argv[m]);
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-a"</span>) {
+<a name="l00053"></a>00053 cacheall = <span class="keyword">true</span>;
+<a name="l00054"></a>00054 cachearea = <span class="keyword">false</span>;
+<a name="l00055"></a>00055 }
+<a name="l00056"></a>00056 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (m + 4 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00058"></a>00058 cacheall = <span class="keyword">false</span>;
+<a name="l00059"></a>00059 cachearea = <span class="keyword">true</span>;
+<a name="l00060"></a>00060 <span class="keywordflow">try</span> {
+<a name="l00061"></a>00061 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 1]), std::string(argv[m + 2]),
+<a name="l00062"></a>00062 caches, cachew);
+<a name="l00063"></a>00063 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(std::string(argv[m + 3]), std::string(argv[m + 4]),
+<a name="l00064"></a>00064 cachen, cachee);
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00067"></a>00067 std::cerr << <span class="stringliteral">"Error decoding argument of -c: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00068"></a>00068 <span class="keywordflow">return</span> 1;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 m += 4;
+<a name="l00071"></a>00071 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--msltohae"</span>)
+<a name="l00072"></a>00072 heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>::GEOIDTOELLIPSOID;
+<a name="l00073"></a>00073 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--haetomsl"</span>)
+<a name="l00074"></a>00074 heightmult = <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>::ELLIPSOIDTOGEOID;
+<a name="l00075"></a>00075 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-z"</span>) {
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00077"></a>00077 std::string zone = argv[m];
+<a name="l00078"></a>00078 <span class="keywordflow">try</span> {
+<a name="l00079"></a>00079 <a class="code" href="classGeographicLib_1_1UTMUPS.html#ad74d52d7ebeff195019745f791f30562">UTMUPS::DecodeZone</a>(zone, zonenum, northp);
+<a name="l00080"></a>00080 }
+<a name="l00081"></a>00081 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00082"></a>00082 std::cerr << <span class="stringliteral">"Error decoding zone: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00083"></a>00083 <span class="keywordflow">return</span> 1;
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085 <span class="keywordflow">if</span> (!(zonenum >= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7af91adc987ae7295bfb6d3786b23c58e1">UTMUPS::MINZONE</a> && zonenum <= <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a12dabceb6da15aa0fc94b9406aca921a">UTMUPS::MAXZONE</a>)) {
+<a name="l00086"></a>00086 std::cerr << <span class="stringliteral">"Illegal zone "</span> << zone << <span class="stringliteral">"\n"</span>;
+<a name="l00087"></a>00087 <span class="keywordflow">return</span> 1;
+<a name="l00088"></a>00088 }
+<a name="l00089"></a>00089 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
+<a name="l00090"></a>00090 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00091"></a>00091 geoid = argv[m];
+<a name="l00092"></a>00092 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00093"></a>00093 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00094"></a>00094 dir = argv[m];
+<a name="l00095"></a>00095 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>)
+<a name="l00096"></a>00096 cubic = <span class="keyword">false</span>;
+<a name="l00097"></a>00097 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-g"</span>)
+<a name="l00098"></a>00098 gradp = <span class="keyword">true</span>;
+<a name="l00099"></a>00099 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
+<a name="l00100"></a>00100 verbose = <span class="keyword">true</span>;
+<a name="l00101"></a>00101 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00102"></a>00102 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00103"></a>00103 istring = argv[m];
+<a name="l00104"></a>00104 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00106"></a>00106 ifile = argv[m];
+<a name="l00107"></a>00107 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00108"></a>00108 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00109"></a>00109 ofile = argv[m];
+<a name="l00110"></a>00110 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00111"></a>00111 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00112"></a>00112 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00113"></a>00113 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00114"></a>00114 <span class="keywordflow">return</span> 1;
+<a name="l00115"></a>00115 }
+<a name="l00116"></a>00116 lsep = argv[m][0];
+<a name="l00117"></a>00117 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00118"></a>00118 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00119"></a>00119 cdelim = argv[m];
+<a name="l00120"></a>00120 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00121"></a>00121 std::cout
+<a name="l00122"></a>00122 << argv[0]
+<a name="l00123"></a>00123 << <span class="stringliteral">": $Id: 6db1ff0b8309a39d0d9b0250dd73be964c5efb7c $\n"</span>
+<a name="l00124"></a>00124 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00125"></a>00125 <span class="keywordflow">return</span> 0;
+<a name="l00126"></a>00126 } <span class="keywordflow">else</span> {
+<a name="l00127"></a>00127 <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
+<a name="l00129"></a>00129 std::cout<< <span class="stringliteral">"\nDefault geoid path = \""</span> << <a class="code" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">Geoid::DefaultGeoidPath</a>()
+<a name="l00130"></a>00130 << <span class="stringliteral">"\"\nDefault geoid name = \""</span> << <a class="code" href="classGeographicLib_1_1Geoid.html#a048865342b2b12ed2272e547209381fd">Geoid::DefaultGeoidName</a>()
+<a name="l00131"></a>00131 << <span class="stringliteral">"\"\n"</span>;
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> retval;
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00137"></a>00137 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> 1;
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00141"></a>00141 std::ifstream infile;
+<a name="l00142"></a>00142 std::istringstream instring;
+<a name="l00143"></a>00143 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00144"></a>00144 infile.open(ifile.c_str());
+<a name="l00145"></a>00145 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00146"></a>00146 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00147"></a>00147 <span class="keywordflow">return</span> 1;
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00150"></a>00150 std::string::size_type m = 0;
+<a name="l00151"></a>00151 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00152"></a>00152 m = istring.find(lsep, m);
+<a name="l00153"></a>00153 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00154"></a>00154 <span class="keywordflow">break</span>;
+<a name="l00155"></a>00155 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 instring.str(istring);
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00160"></a>00160 (!istring.empty() ? &instring : &std::cin);
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 std::ofstream outfile;
+<a name="l00163"></a>00163 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00164"></a>00164 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00165"></a>00165 outfile.open(ofile.c_str());
+<a name="l00166"></a>00166 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00167"></a>00167 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00168"></a>00168 <span class="keywordflow">return</span> 1;
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keywordtype">int</span> retval = 0;
+<a name="l00174"></a>00174 <span class="keywordflow">try</span> {
+<a name="l00175"></a>00175 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a> g(geoid, dir, cubic);
+<a name="l00176"></a>00176 <span class="keywordflow">try</span> {
+<a name="l00177"></a>00177 <span class="keywordflow">if</span> (cacheall)
+<a name="l00178"></a>00178 g.<a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>();
+<a name="l00179"></a>00179 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cachearea)
+<a name="l00180"></a>00180 g.<a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">CacheArea</a>(caches, cachew, cachen, cachee);
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00183"></a>00183 std::cerr << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\nProceeding without a cache\n"</span>;
+<a name="l00184"></a>00184 }
+<a name="l00185"></a>00185 <span class="keywordflow">if</span> (verbose) {
+<a name="l00186"></a>00186 std::cerr << <span class="stringliteral">"Geoid file: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">GeoidFile</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00187"></a>00187 << <span class="stringliteral">"Description: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">Description</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00188"></a>00188 << <span class="stringliteral">"Interpolation: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">Interpolation</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00189"></a>00189 << <span class="stringliteral">"Date & Time: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">DateTime</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00190"></a>00190 << <span class="stringliteral">"Offset (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">Offset</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00191"></a>00191 << <span class="stringliteral">"Scale (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00192"></a>00192 << <span class="stringliteral">"Max error (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00193"></a>00193 << <span class="stringliteral">"RMS error (m): "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">RMSError</a>() << <span class="stringliteral">"\n"</span>;
+<a name="l00194"></a>00194 <span class="keywordflow">if</span> (g.<a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">Cache</a>())
+<a name="l00195"></a>00195 std::cerr<< <span class="stringliteral">"Caching:"</span>
+<a name="l00196"></a>00196 << <span class="stringliteral">"\n SW Corner: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a>() << <span class="stringliteral">" "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">CacheWest</a>()
+<a name="l00197"></a>00197 << <span class="stringliteral">"\n NE Corner: "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">CacheNorth</a>() << <span class="stringliteral">" "</span> << g.<a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">CacheEast</a>()
+<a name="l00198"></a>00198 << <span class="stringliteral">"\n"</span>;
+<a name="l00199"></a>00199 }
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
+<a name="l00202"></a>00202 std::string s, suff;
+<a name="l00203"></a>00203 <span class="keyword">const</span> <span class="keywordtype">char</span>* spaces = <span class="stringliteral">" \t\n\v\f\r,"</span>; <span class="comment">// Include comma as space</span>
+<a name="l00204"></a>00204 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00205"></a>00205 <span class="keywordflow">try</span> {
+<a name="l00206"></a>00206 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00207"></a>00207 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00208"></a>00208 std::string::size_type m = s.find(cdelim);
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00210"></a>00210 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00211"></a>00211 std::string::size_type m1 =
+<a name="l00212"></a>00212 m > 0 ? s.find_last_not_of(spaces, m - 1) : std::string::npos;
+<a name="l00213"></a>00213 s = s.substr(0, m1 != std::string::npos ? m1 + 1 : m);
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> height = 0;
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (zonenum != <a class="code" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">UTMUPS::INVALID</a>) {
+<a name="l00218"></a>00218 <span class="comment">// Expect "easting northing" if heightmult == 0, or</span>
+<a name="l00219"></a>00219 <span class="comment">// "easting northing height" if heightmult != 0.</span>
+<a name="l00220"></a>00220 std::string::size_type pa = 0, pb = 0;
+<a name="l00221"></a>00221 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> easting = 0, northing = 0;
+<a name="l00222"></a>00222 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < (heightmult ? 3 : 2); ++i) {
+<a name="l00223"></a>00223 <span class="keywordflow">if</span> (pb == std::string::npos)
+<a name="l00224"></a>00224 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00225"></a>00225 <span class="comment">// Start of i'th token</span>
+<a name="l00226"></a>00226 pa = s.find_first_not_of(spaces, pb);
+<a name="l00227"></a>00227 <span class="keywordflow">if</span> (pa == std::string::npos)
+<a name="l00228"></a>00228 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00229"></a>00229 <span class="comment">// End of i'th token</span>
+<a name="l00230"></a>00230 pb = s.find_first_of(spaces, pa);
+<a name="l00231"></a>00231 (i == 2 ? height : (i == 0 ? easting : northing)) =
+<a name="l00232"></a>00232 <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(s.substr(pa, (pb == std::string::npos ?
+<a name="l00233"></a>00233 pb : pb - pa)));
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(zonenum, northp, easting, northing);
+<a name="l00236"></a>00236 <span class="keywordflow">if</span> (heightmult) {
+<a name="l00237"></a>00237 suff = pb == std::string::npos ? <span class="stringliteral">""</span> : s.substr(pb);
+<a name="l00238"></a>00238 s = s.substr(0, pa);
+<a name="l00239"></a>00239 }
+<a name="l00240"></a>00240 } <span class="keywordflow">else</span> {
+<a name="l00241"></a>00241 <span class="keywordflow">if</span> (heightmult) {
+<a name="l00242"></a>00242 <span class="comment">// Treat last token as height</span>
+<a name="l00243"></a>00243 <span class="comment">// pb = last char of last token</span>
+<a name="l00244"></a>00244 <span class="comment">// pa = last char preceding white space</span>
+<a name="l00245"></a>00245 <span class="comment">// px = last char of 2nd last token</span>
+<a name="l00246"></a>00246 std::string::size_type pb = s.find_last_not_of(spaces);
+<a name="l00247"></a>00247 std::string::size_type pa = s.find_last_of(spaces, pb);
+<a name="l00248"></a>00248 <span class="keywordflow">if</span> (pa == std::string::npos || pb == std::string::npos)
+<a name="l00249"></a>00249 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00250"></a>00250 height = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(s.substr(pa + 1, pb - pa));
+<a name="l00251"></a>00251 s = s.substr(0, pa + 1);
+<a name="l00252"></a>00252 }
+<a name="l00253"></a>00253 p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(s);
+<a name="l00254"></a>00254 }
+<a name="l00255"></a>00255 <span class="keywordflow">if</span> (heightmult) {
+<a name="l00256"></a>00256 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>());
+<a name="l00257"></a>00257 *output << s
+<a name="l00258"></a>00258 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(height + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(heightmult) * h, 4)
+<a name="l00259"></a>00259 << suff << eol;
+<a name="l00260"></a>00260 } <span class="keywordflow">else</span> {
+<a name="l00261"></a>00261 <span class="keywordflow">if</span> (gradp) {
+<a name="l00262"></a>00262 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gradn, grade;
+<a name="l00263"></a>00263 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>(), gradn, grade);
+<a name="l00264"></a>00264 *output << Utility::str<real>(h, 4) << <span class="stringliteral">" "</span>
+<a name="l00265"></a>00265 << Utility::str<real>(gradn * 1e6, 2)
+<a name="l00266"></a>00266 << (<a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(gradn) ? <span class="stringliteral">" "</span> : <span class="stringliteral">"e-6 "</span>)
+<a name="l00267"></a>00267 << Utility::str<real>(grade * 1e6, 2)
+<a name="l00268"></a>00268 << (<a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(grade) ? <span class="stringliteral">""</span> : <span class="stringliteral">"e-6"</span>)
+<a name="l00269"></a>00269 << eol;
+<a name="l00270"></a>00270 } <span class="keywordflow">else</span> {
+<a name="l00271"></a>00271 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = g(p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>(), p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>());
+<a name="l00272"></a>00272 *output << Utility::str<real>(h, 4) << eol;
+<a name="l00273"></a>00273 }
+<a name="l00274"></a>00274 }
+<a name="l00275"></a>00275 }
+<a name="l00276"></a>00276 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00277"></a>00277 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00278"></a>00278 retval = 1;
+<a name="l00279"></a>00279 }
+<a name="l00280"></a>00280 }
+<a name="l00281"></a>00281 }
+<a name="l00282"></a>00282 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00283"></a>00283 std::cerr << <span class="stringliteral">"Error reading "</span> << geoid << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00284"></a>00284 retval = 1;
+<a name="l00285"></a>00285 }
+<a name="l00286"></a>00286 <span class="keywordflow">return</span> retval;
+<a name="l00287"></a>00287 }
+<a name="l00288"></a>00288 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00289"></a>00289 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00290"></a>00290 <span class="keywordflow">return</span> 1;
+<a name="l00291"></a>00291 }
+<a name="l00292"></a>00292 <span class="keywordflow">catch</span> (...) {
+<a name="l00293"></a>00293 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00294"></a>00294 <span class="keywordflow">return</span> 1;
+<a name="l00295"></a>00295 }
+<a name="l00296"></a>00296 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geoid_8cpp.html b/doc/html/Geoid_8cpp.html
index 2c73fe1..239905b 100644
--- a/doc/html/Geoid_8cpp.html
+++ b/doc/html/Geoid_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geoid.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,25 +72,24 @@
<code>#include <sstream></code><br/>
<code>#include <cstdlib></code><br/>
<code>#include <algorithm></code><br/>
+<code>#include <<a class="el" href="Utility_8hpp_source.html">GeographicLib/Utility.hpp</a>></code><br/>
</div>
<p><a href="Geoid_8cpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">GEOGRAPHICLIB_GEOID_CPP</a> "$Id: e09552b0e1b520b1adda6ab58b3f5602d8e2311e $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">GEOGRAPHICLIB_GEOID_CPP</a> "$Id: 5c3c23dd877485af9c9e298ddb28c5aac12b5e6a $"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html#a45687ef771d809c1c369daea074cc109">GEOGRAPHICLIB_DATA</a> "/usr/local/share/GeographicLib"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html#a2999d90c0556a04490ea239ddcb052b8">GEOID_DEFAULT_NAME</a> "egm96-5"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -84,13 +98,13 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEOID_CPP "$Id: e09552b0e1b520b1adda6ab58b3f5602d8e2311e $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEOID_CPP "$Id: 5c3c23dd877485af9c9e298ddb28c5aac12b5e6a $"</td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00015">15</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00016">16</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
</div>
</div>
@@ -105,7 +119,7 @@ Defines</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00026">26</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00027">27</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00529">GeographicLib::Geoid::DefaultGeoidPath()</a>.</p>
@@ -122,15 +136,20 @@ Defines</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00031">31</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00032">32</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00542">GeographicLib::Geoid::DefaultGeoidName()</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geoid_8cpp_source.html b/doc/html/Geoid_8cpp_source.html
index 2ef9b19..01a967b 100644
--- a/doc/html/Geoid_8cpp_source.html
+++ b/doc/html/Geoid_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geoid.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Geoid.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::Geoid class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
@@ -60,512 +75,512 @@
<a name="l00011"></a>00011 <span class="preprocessor">#include <sstream></span>
<a name="l00012"></a>00012 <span class="preprocessor">#include <cstdlib></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include <algorithm></span>
-<a name="l00014"></a>00014
-<a name="l00015"></a><a class="code" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">00015</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEOID_CPP \</span>
-<a name="l00016"></a>00016 <span class="preprocessor"> "$Id: e09552b0e1b520b1adda6ab58b3f5602d8e2311e $"</span>
-<a name="l00017"></a>00017 <span class="preprocessor"></span>
-<a name="l00018"></a>00018 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">GEOGRAPHICLIB_GEOID_CPP</a>)
-<a name="l00019"></a>00019 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">GEOGRAPHICLIB_GEOID_HPP</a>)
-<a name="l00020"></a>00020
-<a name="l00021"></a>00021 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_DATA)</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor"># if defined(_MSC_VER)</span>
-<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># define GEOGRAPHICLIB_DATA \</span>
-<a name="l00024"></a>00024 <span class="preprocessor"> "C:/Documents and Settings/All Users/Application Data/GeographicLib"</span>
-<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor"># else</span>
-<a name="l00026"></a><a class="code" href="Geoid_8cpp.html#a45687ef771d809c1c369daea074cc109">00026</a> <span class="preprocessor"></span><span class="preprocessor"># define GEOGRAPHICLIB_DATA "/usr/local/share/GeographicLib"</span>
-<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
-<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00029"></a>00029 <span class="preprocessor"></span>
-<a name="l00030"></a>00030 <span class="preprocessor">#if !defined(GEOID_DEFAULT_NAME)</span>
-<a name="l00031"></a><a class="code" href="Geoid_8cpp.html#a2999d90c0556a04490ea239ddcb052b8">00031</a> <span class="preprocessor"></span><span class="preprocessor"># define GEOID_DEFAULT_NAME "egm96-5"</span>
-<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00033"></a>00033 <span class="preprocessor"></span>
-<a name="l00034"></a>00034 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00035"></a>00035 <span class="preprocessor"></span><span class="comment">// Squelch warnings about unsafe use of getenv</span>
-<a name="l00036"></a>00036 <span class="preprocessor">#pragma warning (disable: 4996)</span>
-<a name="l00037"></a>00037 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00038"></a>00038 <span class="preprocessor"></span>
-<a name="l00039"></a>00039 <span class="keyword">namespace </span>GeographicLib {
-<a name="l00040"></a>00040
-<a name="l00041"></a>00041 <span class="keyword">using namespace </span>std;
-<a name="l00042"></a>00042
-<a name="l00043"></a>00043 <span class="comment">// This is the transfer matrix for a 3rd order fit with a 12-point stencil</span>
-<a name="l00044"></a>00044 <span class="comment">// with weights</span>
-<a name="l00045"></a>00045 <span class="comment">//</span>
-<a name="l00046"></a>00046 <span class="comment">// \x -1 0 1 2</span>
-<a name="l00047"></a>00047 <span class="comment">// y</span>
-<a name="l00048"></a>00048 <span class="comment">// -1 . 1 1 .</span>
-<a name="l00049"></a>00049 <span class="comment">// 0 1 2 2 1</span>
-<a name="l00050"></a>00050 <span class="comment">// 1 1 2 2 1</span>
-<a name="l00051"></a>00051 <span class="comment">// 2 . 1 1 .</span>
-<a name="l00052"></a>00052 <span class="comment">//</span>
-<a name="l00053"></a>00053 <span class="comment">// A algorithm for n-dimensional polynomial fits is described in</span>
-<a name="l00054"></a>00054 <span class="comment">// F. H. Lesh,</span>
-<a name="l00055"></a>00055 <span class="comment">// Multi-dimensional least-squares polynomial curve fitting,</span>
-<a name="l00056"></a>00056 <span class="comment">// CACM 2, 29-30 (1959).</span>
-<a name="l00057"></a>00057 <span class="comment">//</span>
-<a name="l00058"></a>00058 <span class="comment">// Here's the Maxima code to generate this matrix:</span>
-<a name="l00059"></a>00059 <span class="comment">//</span>
-<a name="l00060"></a>00060 <span class="comment">// /* The stencil and the weights */</span>
-<a name="l00061"></a>00061 <span class="comment">// xarr:[</span>
-<a name="l00062"></a>00062 <span class="comment">// 0, 1,</span>
-<a name="l00063"></a>00063 <span class="comment">// -1, 0, 1, 2,</span>
+<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
+<a name="l00015"></a>00015
+<a name="l00016"></a><a class="code" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">00016</a> <span class="preprocessor">#define GEOGRAPHICLIB_GEOID_CPP \</span>
+<a name="l00017"></a>00017 <span class="preprocessor"> "$Id: 5c3c23dd877485af9c9e298ddb28c5aac12b5e6a $"</span>
+<a name="l00018"></a>00018 <span class="preprocessor"></span>
+<a name="l00019"></a>00019 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geoid_8cpp.html#ad2cadd66a2a8fe0322579f4a1922a907">GEOGRAPHICLIB_GEOID_CPP</a>)
+<a name="l00020"></a>00020 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">GEOGRAPHICLIB_GEOID_HPP</a>)
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_DATA)</span>
+<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># if defined(_MSC_VER)</span>
+<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="preprocessor"># define GEOGRAPHICLIB_DATA \</span>
+<a name="l00025"></a>00025 <span class="preprocessor"> "C:/Documents and Settings/All Users/Application Data/GeographicLib"</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor"># else</span>
+<a name="l00027"></a><a class="code" href="Geoid_8cpp.html#a45687ef771d809c1c369daea074cc109">00027</a> <span class="preprocessor"></span><span class="preprocessor"># define GEOGRAPHICLIB_DATA "/usr/local/share/GeographicLib"</span>
+<a name="l00028"></a>00028 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00030"></a>00030 <span class="preprocessor"></span>
+<a name="l00031"></a>00031 <span class="preprocessor">#if !defined(GEOID_DEFAULT_NAME)</span>
+<a name="l00032"></a><a class="code" href="Geoid_8cpp.html#a2999d90c0556a04490ea239ddcb052b8">00032</a> <span class="preprocessor"></span><span class="preprocessor"># define GEOID_DEFAULT_NAME "egm96-5"</span>
+<a name="l00033"></a>00033 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span>
+<a name="l00035"></a>00035 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="comment">// Squelch warnings about unsafe use of getenv</span>
+<a name="l00037"></a>00037 <span class="preprocessor">#pragma warning (disable: 4996)</span>
+<a name="l00038"></a>00038 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00039"></a>00039 <span class="preprocessor"></span>
+<a name="l00040"></a>00040 <span class="keyword">namespace </span>GeographicLib {
+<a name="l00041"></a>00041
+<a name="l00042"></a>00042 <span class="keyword">using namespace </span>std;
+<a name="l00043"></a>00043
+<a name="l00044"></a>00044 <span class="comment">// This is the transfer matrix for a 3rd order fit with a 12-point stencil</span>
+<a name="l00045"></a>00045 <span class="comment">// with weights</span>
+<a name="l00046"></a>00046 <span class="comment">//</span>
+<a name="l00047"></a>00047 <span class="comment">// \x -1 0 1 2</span>
+<a name="l00048"></a>00048 <span class="comment">// y</span>
+<a name="l00049"></a>00049 <span class="comment">// -1 . 1 1 .</span>
+<a name="l00050"></a>00050 <span class="comment">// 0 1 2 2 1</span>
+<a name="l00051"></a>00051 <span class="comment">// 1 1 2 2 1</span>
+<a name="l00052"></a>00052 <span class="comment">// 2 . 1 1 .</span>
+<a name="l00053"></a>00053 <span class="comment">//</span>
+<a name="l00054"></a>00054 <span class="comment">// A algorithm for n-dimensional polynomial fits is described in</span>
+<a name="l00055"></a>00055 <span class="comment">// F. H. Lesh,</span>
+<a name="l00056"></a>00056 <span class="comment">// Multi-dimensional least-squares polynomial curve fitting,</span>
+<a name="l00057"></a>00057 <span class="comment">// CACM 2, 29-30 (1959).</span>
+<a name="l00058"></a>00058 <span class="comment">//</span>
+<a name="l00059"></a>00059 <span class="comment">// Here's the Maxima code to generate this matrix:</span>
+<a name="l00060"></a>00060 <span class="comment">//</span>
+<a name="l00061"></a>00061 <span class="comment">// /* The stencil and the weights */</span>
+<a name="l00062"></a>00062 <span class="comment">// xarr:[</span>
+<a name="l00063"></a>00063 <span class="comment">// 0, 1,</span>
<a name="l00064"></a>00064 <span class="comment">// -1, 0, 1, 2,</span>
-<a name="l00065"></a>00065 <span class="comment">// 0, 1]$</span>
-<a name="l00066"></a>00066 <span class="comment">// yarr:[</span>
-<a name="l00067"></a>00067 <span class="comment">// -1,-1,</span>
-<a name="l00068"></a>00068 <span class="comment">// 0, 0, 0, 0,</span>
-<a name="l00069"></a>00069 <span class="comment">// 1, 1, 1, 1,</span>
-<a name="l00070"></a>00070 <span class="comment">// 2, 2]$</span>
-<a name="l00071"></a>00071 <span class="comment">// warr:[</span>
-<a name="l00072"></a>00072 <span class="comment">// 1, 1,</span>
-<a name="l00073"></a>00073 <span class="comment">// 1, 2, 2, 1,</span>
+<a name="l00065"></a>00065 <span class="comment">// -1, 0, 1, 2,</span>
+<a name="l00066"></a>00066 <span class="comment">// 0, 1]$</span>
+<a name="l00067"></a>00067 <span class="comment">// yarr:[</span>
+<a name="l00068"></a>00068 <span class="comment">// -1,-1,</span>
+<a name="l00069"></a>00069 <span class="comment">// 0, 0, 0, 0,</span>
+<a name="l00070"></a>00070 <span class="comment">// 1, 1, 1, 1,</span>
+<a name="l00071"></a>00071 <span class="comment">// 2, 2]$</span>
+<a name="l00072"></a>00072 <span class="comment">// warr:[</span>
+<a name="l00073"></a>00073 <span class="comment">// 1, 1,</span>
<a name="l00074"></a>00074 <span class="comment">// 1, 2, 2, 1,</span>
-<a name="l00075"></a>00075 <span class="comment">// 1, 1]$</span>
-<a name="l00076"></a>00076 <span class="comment">//</span>
-<a name="l00077"></a>00077 <span class="comment">// /* [x exponent, y exponent] for cubic fit */</span>
-<a name="l00078"></a>00078 <span class="comment">// pows:[</span>
-<a name="l00079"></a>00079 <span class="comment">// [0,0],</span>
-<a name="l00080"></a>00080 <span class="comment">// [1,0],[0,1],</span>
-<a name="l00081"></a>00081 <span class="comment">// [2,0],[1,1],[0,2],</span>
-<a name="l00082"></a>00082 <span class="comment">// [3,0],[2,1],[1,2],[0,3]]$</span>
-<a name="l00083"></a>00083 <span class="comment">//</span>
-<a name="l00084"></a>00084 <span class="comment">// basisvec(x,y,pows):=map(lambda([ex],(if ex[1]=0 then 1 else x^ex[1])*</span>
-<a name="l00085"></a>00085 <span class="comment">// (if ex[2]=0 then 1 else y^ex[2])),pows)$</span>
-<a name="l00086"></a>00086 <span class="comment">// addterm(x,y,f,w,pows):=block([a,b,bb:basisvec(x,y,pows)],</span>
-<a name="l00087"></a>00087 <span class="comment">// a:w*(transpose(bb).bb),</span>
-<a name="l00088"></a>00088 <span class="comment">// b:(w*f) * bb,</span>
-<a name="l00089"></a>00089 <span class="comment">// [a,b])$</span>
-<a name="l00090"></a>00090 <span class="comment">//</span>
-<a name="l00091"></a>00091 <span class="comment">// c3row(k):=block([a,b,c,pows:pows,n],</span>
-<a name="l00092"></a>00092 <span class="comment">// n:length(pows),</span>
-<a name="l00093"></a>00093 <span class="comment">// a:zeromatrix(n,n),</span>
-<a name="l00094"></a>00094 <span class="comment">// b:copylist(part(a,1)),</span>
-<a name="l00095"></a>00095 <span class="comment">// c:[a,b],</span>
-<a name="l00096"></a>00096 <span class="comment">// for i:1 thru length(xarr) do</span>
-<a name="l00097"></a>00097 <span class="comment">// c:c+addterm(xarr[i],yarr[i],if i=k then 1 else 0,warr[i],pows),</span>
-<a name="l00098"></a>00098 <span class="comment">// a:c[1],b:c[2],</span>
-<a name="l00099"></a>00099 <span class="comment">// part(transpose( a^^-1 . transpose(b)),1))$</span>
-<a name="l00100"></a>00100 <span class="comment">// c3:[]$</span>
-<a name="l00101"></a>00101 <span class="comment">// for k:1 thru length(warr) do c3:endcons(c3row(k),c3)$</span>
-<a name="l00102"></a>00102 <span class="comment">// c3:apply(matrix,c3)$</span>
-<a name="l00103"></a>00103 <span class="comment">// c0:part(ratsimp(</span>
-<a name="l00104"></a>00104 <span class="comment">// genmatrix(yc,1,length(warr)).abs(c3).genmatrix(yd,length(pows),1)),2)$</span>
-<a name="l00105"></a>00105 <span class="comment">// c3:c0*c3$</span>
-<a name="l00106"></a>00106
-<a name="l00107"></a>00107 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c0_ = 240; <span class="comment">// Common denominator</span>
-<a name="l00108"></a>00108 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c3_[stencilsize_ * nterms_] = {
-<a name="l00109"></a>00109 9, -18, -88, 0, 96, 90, 0, 0, -60, -20,
-<a name="l00110"></a>00110 -9, 18, 8, 0, -96, 30, 0, 0, 60, -20,
-<a name="l00111"></a>00111 9, -88, -18, 90, 96, 0, -20, -60, 0, 0,
-<a name="l00112"></a>00112 186, -42, -42, -150, -96, -150, 60, 60, 60, 60,
-<a name="l00113"></a>00113 54, 162, -78, 30, -24, -90, -60, 60, -60, 60,
-<a name="l00114"></a>00114 -9, -32, 18, 30, 24, 0, 20, -60, 0, 0,
-<a name="l00115"></a>00115 -9, 8, 18, 30, -96, 0, -20, 60, 0, 0,
-<a name="l00116"></a>00116 54, -78, 162, -90, -24, 30, 60, -60, 60, -60,
-<a name="l00117"></a>00117 -54, 78, 78, 90, 144, 90, -60, -60, -60, -60,
-<a name="l00118"></a>00118 9, -8, -18, -30, -24, 0, 20, 60, 0, 0,
-<a name="l00119"></a>00119 -9, 18, -32, 0, 24, 30, 0, 0, -60, 20,
-<a name="l00120"></a>00120 9, -18, -8, 0, -24, -30, 0, 0, 60, 20,
-<a name="l00121"></a>00121 };
-<a name="l00122"></a>00122
-<a name="l00123"></a>00123 <span class="comment">// Like c3, but with the coeffs of x, x^2, and x^3 constrained to be zero.</span>
-<a name="l00124"></a>00124 <span class="comment">// Use this at the N pole so that the height in independent of the longitude</span>
-<a name="l00125"></a>00125 <span class="comment">// there.</span>
-<a name="l00126"></a>00126 <span class="comment">//</span>
-<a name="l00127"></a>00127 <span class="comment">// Here's the Maxima code to generate this matrix (continued from above).</span>
-<a name="l00128"></a>00128 <span class="comment">//</span>
-<a name="l00129"></a>00129 <span class="comment">// /* figure which terms to exclude so that fit is indep of x at y=0 */</span>
-<a name="l00130"></a>00130 <span class="comment">// mask:part(zeromatrix(1,length(pows)),1)+1$</span>
-<a name="l00131"></a>00131 <span class="comment">// for i:1 thru length(pows) do</span>
-<a name="l00132"></a>00132 <span class="comment">// if pows[i][1]>0 and pows[i][2]=0 then mask[i]:0$</span>
-<a name="l00133"></a>00133 <span class="comment">//</span>
-<a name="l00134"></a>00134 <span class="comment">// /* Same as c3row but with masked pows. */</span>
-<a name="l00135"></a>00135 <span class="comment">// c3nrow(k):=block([a,b,c,powsa:[],n,d,e],</span>
-<a name="l00136"></a>00136 <span class="comment">// for i:1 thru length(mask) do if mask[i]>0 then</span>
-<a name="l00137"></a>00137 <span class="comment">// powsa:endcons(pows[i],powsa),</span>
-<a name="l00138"></a>00138 <span class="comment">// n:length(powsa),</span>
-<a name="l00139"></a>00139 <span class="comment">// a:zeromatrix(n,n),</span>
-<a name="l00140"></a>00140 <span class="comment">// b:copylist(part(a,1)),</span>
-<a name="l00141"></a>00141 <span class="comment">// c:[a,b],</span>
-<a name="l00142"></a>00142 <span class="comment">// for i:1 thru length(xarr) do</span>
-<a name="l00143"></a>00143 <span class="comment">// c:c+addterm(xarr[i],yarr[i],if i=k then 1 else 0,warr[i],powsa),</span>
-<a name="l00144"></a>00144 <span class="comment">// a:c[1],b:c[2],</span>
-<a name="l00145"></a>00145 <span class="comment">// d:part(transpose( a^^-1 . transpose(b)),1),</span>
-<a name="l00146"></a>00146 <span class="comment">// e:[],</span>
-<a name="l00147"></a>00147 <span class="comment">// for i:1 thru length(mask) do</span>
-<a name="l00148"></a>00148 <span class="comment">// if mask[i]>0 then (e:endcons(first(d),e),d:rest(d)) else e:endcons(0,e),</span>
-<a name="l00149"></a>00149 <span class="comment">// e)$</span>
-<a name="l00150"></a>00150 <span class="comment">// c3n:[]$</span>
-<a name="l00151"></a>00151 <span class="comment">// for k:1 thru length(warr) do c3n:endcons(c3nrow(k),c3n)$</span>
-<a name="l00152"></a>00152 <span class="comment">// c3n:apply(matrix,c3n)$</span>
-<a name="l00153"></a>00153 <span class="comment">// c0n:part(ratsimp(</span>
-<a name="l00154"></a>00154 <span class="comment">// genmatrix(yc,1,length(warr)).abs(c3n).genmatrix(yd,length(pows),1)),2)$</span>
-<a name="l00155"></a>00155 <span class="comment">// c3n:c0n*c3n$</span>
-<a name="l00156"></a>00156
-<a name="l00157"></a>00157 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c0n_ = 372; <span class="comment">// Common denominator</span>
-<a name="l00158"></a>00158 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c3n_[stencilsize_ * nterms_] = {
-<a name="l00159"></a>00159 0, 0, -131, 0, 138, 144, 0, 0, -102, -31,
-<a name="l00160"></a>00160 0, 0, 7, 0, -138, 42, 0, 0, 102, -31,
-<a name="l00161"></a>00161 62, 0, -31, 0, 0, -62, 0, 0, 0, 31,
-<a name="l00162"></a>00162 124, 0, -62, 0, 0, -124, 0, 0, 0, 62,
+<a name="l00075"></a>00075 <span class="comment">// 1, 2, 2, 1,</span>
+<a name="l00076"></a>00076 <span class="comment">// 1, 1]$</span>
+<a name="l00077"></a>00077 <span class="comment">//</span>
+<a name="l00078"></a>00078 <span class="comment">// /* [x exponent, y exponent] for cubic fit */</span>
+<a name="l00079"></a>00079 <span class="comment">// pows:[</span>
+<a name="l00080"></a>00080 <span class="comment">// [0,0],</span>
+<a name="l00081"></a>00081 <span class="comment">// [1,0],[0,1],</span>
+<a name="l00082"></a>00082 <span class="comment">// [2,0],[1,1],[0,2],</span>
+<a name="l00083"></a>00083 <span class="comment">// [3,0],[2,1],[1,2],[0,3]]$</span>
+<a name="l00084"></a>00084 <span class="comment">//</span>
+<a name="l00085"></a>00085 <span class="comment">// basisvec(x,y,pows):=map(lambda([ex],(if ex[1]=0 then 1 else x^ex[1])*</span>
+<a name="l00086"></a>00086 <span class="comment">// (if ex[2]=0 then 1 else y^ex[2])),pows)$</span>
+<a name="l00087"></a>00087 <span class="comment">// addterm(x,y,f,w,pows):=block([a,b,bb:basisvec(x,y,pows)],</span>
+<a name="l00088"></a>00088 <span class="comment">// a:w*(transpose(bb).bb),</span>
+<a name="l00089"></a>00089 <span class="comment">// b:(w*f) * bb,</span>
+<a name="l00090"></a>00090 <span class="comment">// [a,b])$</span>
+<a name="l00091"></a>00091 <span class="comment">//</span>
+<a name="l00092"></a>00092 <span class="comment">// c3row(k):=block([a,b,c,pows:pows,n],</span>
+<a name="l00093"></a>00093 <span class="comment">// n:length(pows),</span>
+<a name="l00094"></a>00094 <span class="comment">// a:zeromatrix(n,n),</span>
+<a name="l00095"></a>00095 <span class="comment">// b:copylist(part(a,1)),</span>
+<a name="l00096"></a>00096 <span class="comment">// c:[a,b],</span>
+<a name="l00097"></a>00097 <span class="comment">// for i:1 thru length(xarr) do</span>
+<a name="l00098"></a>00098 <span class="comment">// c:c+addterm(xarr[i],yarr[i],if i=k then 1 else 0,warr[i],pows),</span>
+<a name="l00099"></a>00099 <span class="comment">// a:c[1],b:c[2],</span>
+<a name="l00100"></a>00100 <span class="comment">// part(transpose( a^^-1 . transpose(b)),1))$</span>
+<a name="l00101"></a>00101 <span class="comment">// c3:[]$</span>
+<a name="l00102"></a>00102 <span class="comment">// for k:1 thru length(warr) do c3:endcons(c3row(k),c3)$</span>
+<a name="l00103"></a>00103 <span class="comment">// c3:apply(matrix,c3)$</span>
+<a name="l00104"></a>00104 <span class="comment">// c0:part(ratsimp(</span>
+<a name="l00105"></a>00105 <span class="comment">// genmatrix(yc,1,length(warr)).abs(c3).genmatrix(yd,length(pows),1)),2)$</span>
+<a name="l00106"></a>00106 <span class="comment">// c3:c0*c3$</span>
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c0_ = 240; <span class="comment">// Common denominator</span>
+<a name="l00109"></a>00109 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c3_[stencilsize_ * nterms_] = {
+<a name="l00110"></a>00110 9, -18, -88, 0, 96, 90, 0, 0, -60, -20,
+<a name="l00111"></a>00111 -9, 18, 8, 0, -96, 30, 0, 0, 60, -20,
+<a name="l00112"></a>00112 9, -88, -18, 90, 96, 0, -20, -60, 0, 0,
+<a name="l00113"></a>00113 186, -42, -42, -150, -96, -150, 60, 60, 60, 60,
+<a name="l00114"></a>00114 54, 162, -78, 30, -24, -90, -60, 60, -60, 60,
+<a name="l00115"></a>00115 -9, -32, 18, 30, 24, 0, 20, -60, 0, 0,
+<a name="l00116"></a>00116 -9, 8, 18, 30, -96, 0, -20, 60, 0, 0,
+<a name="l00117"></a>00117 54, -78, 162, -90, -24, 30, 60, -60, 60, -60,
+<a name="l00118"></a>00118 -54, 78, 78, 90, 144, 90, -60, -60, -60, -60,
+<a name="l00119"></a>00119 9, -8, -18, -30, -24, 0, 20, 60, 0, 0,
+<a name="l00120"></a>00120 -9, 18, -32, 0, 24, 30, 0, 0, -60, 20,
+<a name="l00121"></a>00121 9, -18, -8, 0, -24, -30, 0, 0, 60, 20,
+<a name="l00122"></a>00122 };
+<a name="l00123"></a>00123
+<a name="l00124"></a>00124 <span class="comment">// Like c3, but with the coeffs of x, x^2, and x^3 constrained to be zero.</span>
+<a name="l00125"></a>00125 <span class="comment">// Use this at the N pole so that the height in independent of the longitude</span>
+<a name="l00126"></a>00126 <span class="comment">// there.</span>
+<a name="l00127"></a>00127 <span class="comment">//</span>
+<a name="l00128"></a>00128 <span class="comment">// Here's the Maxima code to generate this matrix (continued from above).</span>
+<a name="l00129"></a>00129 <span class="comment">//</span>
+<a name="l00130"></a>00130 <span class="comment">// /* figure which terms to exclude so that fit is indep of x at y=0 */</span>
+<a name="l00131"></a>00131 <span class="comment">// mask:part(zeromatrix(1,length(pows)),1)+1$</span>
+<a name="l00132"></a>00132 <span class="comment">// for i:1 thru length(pows) do</span>
+<a name="l00133"></a>00133 <span class="comment">// if pows[i][1]>0 and pows[i][2]=0 then mask[i]:0$</span>
+<a name="l00134"></a>00134 <span class="comment">//</span>
+<a name="l00135"></a>00135 <span class="comment">// /* Same as c3row but with masked pows. */</span>
+<a name="l00136"></a>00136 <span class="comment">// c3nrow(k):=block([a,b,c,powsa:[],n,d,e],</span>
+<a name="l00137"></a>00137 <span class="comment">// for i:1 thru length(mask) do if mask[i]>0 then</span>
+<a name="l00138"></a>00138 <span class="comment">// powsa:endcons(pows[i],powsa),</span>
+<a name="l00139"></a>00139 <span class="comment">// n:length(powsa),</span>
+<a name="l00140"></a>00140 <span class="comment">// a:zeromatrix(n,n),</span>
+<a name="l00141"></a>00141 <span class="comment">// b:copylist(part(a,1)),</span>
+<a name="l00142"></a>00142 <span class="comment">// c:[a,b],</span>
+<a name="l00143"></a>00143 <span class="comment">// for i:1 thru length(xarr) do</span>
+<a name="l00144"></a>00144 <span class="comment">// c:c+addterm(xarr[i],yarr[i],if i=k then 1 else 0,warr[i],powsa),</span>
+<a name="l00145"></a>00145 <span class="comment">// a:c[1],b:c[2],</span>
+<a name="l00146"></a>00146 <span class="comment">// d:part(transpose( a^^-1 . transpose(b)),1),</span>
+<a name="l00147"></a>00147 <span class="comment">// e:[],</span>
+<a name="l00148"></a>00148 <span class="comment">// for i:1 thru length(mask) do</span>
+<a name="l00149"></a>00149 <span class="comment">// if mask[i]>0 then (e:endcons(first(d),e),d:rest(d)) else e:endcons(0,e),</span>
+<a name="l00150"></a>00150 <span class="comment">// e)$</span>
+<a name="l00151"></a>00151 <span class="comment">// c3n:[]$</span>
+<a name="l00152"></a>00152 <span class="comment">// for k:1 thru length(warr) do c3n:endcons(c3nrow(k),c3n)$</span>
+<a name="l00153"></a>00153 <span class="comment">// c3n:apply(matrix,c3n)$</span>
+<a name="l00154"></a>00154 <span class="comment">// c0n:part(ratsimp(</span>
+<a name="l00155"></a>00155 <span class="comment">// genmatrix(yc,1,length(warr)).abs(c3n).genmatrix(yd,length(pows),1)),2)$</span>
+<a name="l00156"></a>00156 <span class="comment">// c3n:c0n*c3n$</span>
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c0n_ = 372; <span class="comment">// Common denominator</span>
+<a name="l00159"></a>00159 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c3n_[stencilsize_ * nterms_] = {
+<a name="l00160"></a>00160 0, 0, -131, 0, 138, 144, 0, 0, -102, -31,
+<a name="l00161"></a>00161 0, 0, 7, 0, -138, 42, 0, 0, 102, -31,
+<a name="l00162"></a>00162 62, 0, -31, 0, 0, -62, 0, 0, 0, 31,
<a name="l00163"></a>00163 124, 0, -62, 0, 0, -124, 0, 0, 0, 62,
-<a name="l00164"></a>00164 62, 0, -31, 0, 0, -62, 0, 0, 0, 31,
-<a name="l00165"></a>00165 0, 0, 45, 0, -183, -9, 0, 93, 18, 0,
-<a name="l00166"></a>00166 0, 0, 216, 0, 33, 87, 0, -93, 12, -93,
-<a name="l00167"></a>00167 0, 0, 156, 0, 153, 99, 0, -93, -12, -93,
-<a name="l00168"></a>00168 0, 0, -45, 0, -3, 9, 0, 93, -18, 0,
-<a name="l00169"></a>00169 0, 0, -55, 0, 48, 42, 0, 0, -84, 31,
-<a name="l00170"></a>00170 0, 0, -7, 0, -48, -42, 0, 0, 84, 31,
-<a name="l00171"></a>00171 };
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 <span class="comment">// Like c3n, but y -> 1-y so that h is independent of x at y = 1. Use this</span>
-<a name="l00174"></a>00174 <span class="comment">// at the S pole so that the height in independent of the longitude there.</span>
-<a name="l00175"></a>00175 <span class="comment">//</span>
-<a name="l00176"></a>00176 <span class="comment">// Here's the Maxima code to generate this matrix (continued from above).</span>
-<a name="l00177"></a>00177 <span class="comment">//</span>
-<a name="l00178"></a>00178 <span class="comment">// /* Transform c3n to c3s by transforming y -> 1-y */</span>
-<a name="l00179"></a>00179 <span class="comment">// vv:[</span>
-<a name="l00180"></a>00180 <span class="comment">// v[11],v[12],</span>
-<a name="l00181"></a>00181 <span class="comment">// v[7],v[8],v[9],v[10],</span>
-<a name="l00182"></a>00182 <span class="comment">// v[3],v[4],v[5],v[6],</span>
-<a name="l00183"></a>00183 <span class="comment">// v[1],v[2]]$</span>
-<a name="l00184"></a>00184 <span class="comment">// poly:expand(vv.(c3n/c0n).transpose(basisvec(x,1-y,pows)))$</span>
-<a name="l00185"></a>00185 <span class="comment">// c3sf[i,j]:=coeff(coeff(coeff(poly,v[i]),x,pows[j][1]),y,pows[j][2])$</span>
-<a name="l00186"></a>00186 <span class="comment">// c3s:genmatrix(c3sf,length(vv),length(pows))$</span>
-<a name="l00187"></a>00187 <span class="comment">// c0s:part(ratsimp(</span>
-<a name="l00188"></a>00188 <span class="comment">// genmatrix(yc,1,length(warr)).abs(c3s).genmatrix(yd,length(pows),1)),2)$</span>
-<a name="l00189"></a>00189 <span class="comment">// c3s:c0s*c3s$</span>
-<a name="l00190"></a>00190
-<a name="l00191"></a>00191 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c0s_ = 372; <span class="comment">// Common denominator</span>
-<a name="l00192"></a>00192 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::c3s_[stencilsize_ * nterms_] = {
-<a name="l00193"></a>00193 18, -36, -122, 0, 120, 135, 0, 0, -84, -31,
-<a name="l00194"></a>00194 -18, 36, -2, 0, -120, 51, 0, 0, 84, -31,
-<a name="l00195"></a>00195 36, -165, -27, 93, 147, -9, 0, -93, 18, 0,
-<a name="l00196"></a>00196 210, 45, -111, -93, -57, -192, 0, 93, 12, 93,
-<a name="l00197"></a>00197 162, 141, -75, -93, -129, -180, 0, 93, -12, 93,
-<a name="l00198"></a>00198 -36, -21, 27, 93, 39, 9, 0, -93, -18, 0,
-<a name="l00199"></a>00199 0, 0, 62, 0, 0, 31, 0, 0, 0, -31,
-<a name="l00200"></a>00200 0, 0, 124, 0, 0, 62, 0, 0, 0, -62,
+<a name="l00164"></a>00164 124, 0, -62, 0, 0, -124, 0, 0, 0, 62,
+<a name="l00165"></a>00165 62, 0, -31, 0, 0, -62, 0, 0, 0, 31,
+<a name="l00166"></a>00166 0, 0, 45, 0, -183, -9, 0, 93, 18, 0,
+<a name="l00167"></a>00167 0, 0, 216, 0, 33, 87, 0, -93, 12, -93,
+<a name="l00168"></a>00168 0, 0, 156, 0, 153, 99, 0, -93, -12, -93,
+<a name="l00169"></a>00169 0, 0, -45, 0, -3, 9, 0, 93, -18, 0,
+<a name="l00170"></a>00170 0, 0, -55, 0, 48, 42, 0, 0, -84, 31,
+<a name="l00171"></a>00171 0, 0, -7, 0, -48, -42, 0, 0, 84, 31,
+<a name="l00172"></a>00172 };
+<a name="l00173"></a>00173
+<a name="l00174"></a>00174 <span class="comment">// Like c3n, but y -> 1-y so that h is independent of x at y = 1. Use this</span>
+<a name="l00175"></a>00175 <span class="comment">// at the S pole so that the height in independent of the longitude there.</span>
+<a name="l00176"></a>00176 <span class="comment">//</span>
+<a name="l00177"></a>00177 <span class="comment">// Here's the Maxima code to generate this matrix (continued from above).</span>
+<a name="l00178"></a>00178 <span class="comment">//</span>
+<a name="l00179"></a>00179 <span class="comment">// /* Transform c3n to c3s by transforming y -> 1-y */</span>
+<a name="l00180"></a>00180 <span class="comment">// vv:[</span>
+<a name="l00181"></a>00181 <span class="comment">// v[11],v[12],</span>
+<a name="l00182"></a>00182 <span class="comment">// v[7],v[8],v[9],v[10],</span>
+<a name="l00183"></a>00183 <span class="comment">// v[3],v[4],v[5],v[6],</span>
+<a name="l00184"></a>00184 <span class="comment">// v[1],v[2]]$</span>
+<a name="l00185"></a>00185 <span class="comment">// poly:expand(vv.(c3n/c0n).transpose(basisvec(x,1-y,pows)))$</span>
+<a name="l00186"></a>00186 <span class="comment">// c3sf[i,j]:=coeff(coeff(coeff(poly,v[i]),x,pows[j][1]),y,pows[j][2])$</span>
+<a name="l00187"></a>00187 <span class="comment">// c3s:genmatrix(c3sf,length(vv),length(pows))$</span>
+<a name="l00188"></a>00188 <span class="comment">// c0s:part(ratsimp(</span>
+<a name="l00189"></a>00189 <span class="comment">// genmatrix(yc,1,length(warr)).abs(c3s).genmatrix(yd,length(pows),1)),2)$</span>
+<a name="l00190"></a>00190 <span class="comment">// c3s:c0s*c3s$</span>
+<a name="l00191"></a>00191
+<a name="l00192"></a>00192 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c0s_ = 372; <span class="comment">// Common denominator</span>
+<a name="l00193"></a>00193 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::c3s_[stencilsize_ * nterms_] = {
+<a name="l00194"></a>00194 18, -36, -122, 0, 120, 135, 0, 0, -84, -31,
+<a name="l00195"></a>00195 -18, 36, -2, 0, -120, 51, 0, 0, 84, -31,
+<a name="l00196"></a>00196 36, -165, -27, 93, 147, -9, 0, -93, 18, 0,
+<a name="l00197"></a>00197 210, 45, -111, -93, -57, -192, 0, 93, 12, 93,
+<a name="l00198"></a>00198 162, 141, -75, -93, -129, -180, 0, 93, -12, 93,
+<a name="l00199"></a>00199 -36, -21, 27, 93, 39, 9, 0, -93, -18, 0,
+<a name="l00200"></a>00200 0, 0, 62, 0, 0, 31, 0, 0, 0, -31,
<a name="l00201"></a>00201 0, 0, 124, 0, 0, 62, 0, 0, 0, -62,
-<a name="l00202"></a>00202 0, 0, 62, 0, 0, 31, 0, 0, 0, -31,
-<a name="l00203"></a>00203 -18, 36, -64, 0, 66, 51, 0, 0, -102, 31,
-<a name="l00204"></a>00204 18, -36, 2, 0, -66, -51, 0, 0, 102, 31,
-<a name="l00205"></a>00205 };
-<a name="l00206"></a>00206
-<a name="l00207"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ac3556c755dad0d43c3be0913df08b395">00207</a> Geoid::Geoid(<span class="keyword">const</span> std::string& name, <span class="keyword">const</span> std::string& path, <span class="keywordtype">bool</span> cubic,
-<a name="l00208"></a>00208 <span class="keywordtype">bool</span> threadsafe)
-<a name="l00209"></a>00209 : _name(name)
-<a name="l00210"></a>00210 , _dir(path)
-<a name="l00211"></a>00211 , _cubic(cubic)
-<a name="l00212"></a>00212 , _a( <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>() )
-<a name="l00213"></a>00213 , _e2( (2 - <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>()) * <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>() )
-<a name="l00214"></a>00214 , _degree( <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() )
-<a name="l00215"></a>00215 , _eps( sqrt(numeric_limits<real>::epsilon()) )
-<a name="l00216"></a>00216 , _threadsafe(false) <span class="comment">// Set after cache is read</span>
-<a name="l00217"></a>00217 {
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> (_dir.empty())
-<a name="l00219"></a>00219 _dir = <a class="code" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">DefaultGeoidPath</a>();
-<a name="l00220"></a>00220 _filename = _dir + <span class="stringliteral">"/"</span> + _name + <span class="stringliteral">".pgm"</span>;
-<a name="l00221"></a>00221 _file.open(_filename.c_str(), ios::binary);
-<a name="l00222"></a>00222 <span class="keywordflow">if</span> (!(_file.good()))
-<a name="l00223"></a>00223 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File not readable "</span> + _filename);
-<a name="l00224"></a>00224 <span class="keywordtype">string</span> s;
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (!(getline(_file, s) && s == <span class="stringliteral">"P5"</span>))
-<a name="l00226"></a>00226 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File not in PGM format "</span> + _filename);
-<a name="l00227"></a>00227 _offset = numeric_limits<real>::max();
-<a name="l00228"></a>00228 _scale = 0;
-<a name="l00229"></a>00229 _maxerror = _rmserror = -1;
-<a name="l00230"></a>00230 _description = <span class="stringliteral">"NONE"</span>;
-<a name="l00231"></a>00231 _datetime = <span class="stringliteral">"UNKNOWN"</span>;
-<a name="l00232"></a>00232 <span class="keywordflow">while</span> (getline(_file, s)) {
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (s.empty())
-<a name="l00234"></a>00234 <span class="keywordflow">continue</span>;
-<a name="l00235"></a>00235 <span class="keywordflow">if</span> (s[0] == <span class="charliteral">'#'</span>) {
-<a name="l00236"></a>00236 istringstream is(s);
-<a name="l00237"></a>00237 <span class="keywordtype">string</span> commentid, key;
-<a name="l00238"></a>00238 <span class="keywordflow">if</span> (!(is >> commentid >> key) || commentid != <span class="stringliteral">"#"</span>)
-<a name="l00239"></a>00239 <span class="keywordflow">continue</span>;
-<a name="l00240"></a>00240 <span class="keywordflow">if</span> (key == <span class="stringliteral">"Description"</span> || key ==<span class="stringliteral">"DateTime"</span>) {
-<a name="l00241"></a>00241 string::size_type p =
-<a name="l00242"></a>00242 s.find_first_not_of(<span class="stringliteral">" \t"</span>, <span class="keywordtype">unsigned</span>(is.tellg()));
-<a name="l00243"></a>00243 <span class="keywordflow">if</span> (p != string::npos)
-<a name="l00244"></a>00244 (key == <span class="stringliteral">"Description"</span> ? _description : _datetime) = s.substr(p);
-<a name="l00245"></a>00245 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Offset"</span>) {
-<a name="l00246"></a>00246 <span class="keywordflow">if</span> (!(is >> _offset))
-<a name="l00247"></a>00247 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading offset "</span> + _filename);
-<a name="l00248"></a>00248 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Scale"</span>) {
-<a name="l00249"></a>00249 <span class="keywordflow">if</span> (!(is >> _scale))
-<a name="l00250"></a>00250 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading scale "</span> + _filename);
-<a name="l00251"></a>00251 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == (_cubic ? <span class="stringliteral">"MaxCubicError"</span> : <span class="stringliteral">"MaxBilinearError"</span>)) {
-<a name="l00252"></a>00252 <span class="comment">// It's not an error if the error can't be read</span>
-<a name="l00253"></a>00253 is >> _maxerror;
-<a name="l00254"></a>00254 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == (_cubic ? <span class="stringliteral">"RMSCubicError"</span> : <span class="stringliteral">"RMSBilinearError"</span>)) {
-<a name="l00255"></a>00255 <span class="comment">// It's not an error if the error can't be read</span>
-<a name="l00256"></a>00256 is >> _rmserror;
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258 } <span class="keywordflow">else</span> {
-<a name="l00259"></a>00259 istringstream is(s);
-<a name="l00260"></a>00260 <span class="keywordflow">if</span> (!(is >> _width >> _height))
-<a name="l00261"></a>00261 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading raster size "</span> + _filename);
-<a name="l00262"></a>00262 <span class="keywordflow">break</span>;
-<a name="l00263"></a>00263 }
-<a name="l00264"></a>00264 }
-<a name="l00265"></a>00265 {
-<a name="l00266"></a>00266 <span class="keywordtype">unsigned</span> maxval;
-<a name="l00267"></a>00267 <span class="keywordflow">if</span> (!(_file >> maxval))
-<a name="l00268"></a>00268 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading maxval "</span> + _filename);
-<a name="l00269"></a>00269 <span class="keywordflow">if</span> (maxval != 0xffffu)
-<a name="l00270"></a>00270 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Maxval not equal to 2^16-1 "</span> + _filename);
-<a name="l00271"></a>00271 <span class="comment">// Add 1 for whitespace after maxval</span>
-<a name="l00272"></a>00272 _datastart = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_file.tellg()) + 1ULL;
-<a name="l00273"></a>00273 _swidth = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_width);
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275 <span class="keywordflow">if</span> (_offset == numeric_limits<real>::max())
-<a name="l00276"></a>00276 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Offset not set "</span> + _filename);
-<a name="l00277"></a>00277 <span class="keywordflow">if</span> (_scale == 0)
-<a name="l00278"></a>00278 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale not set "</span> + _filename);
-<a name="l00279"></a>00279 <span class="keywordflow">if</span> (_scale < 0)
-<a name="l00280"></a>00280 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale must be positive "</span> + _filename);
-<a name="l00281"></a>00281 <span class="keywordflow">if</span> (_height < 2 || _width < 2)
-<a name="l00282"></a>00282 <span class="comment">// Coarsest grid spacing is 180deg.</span>
-<a name="l00283"></a>00283 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster size too small "</span> + _filename);
-<a name="l00284"></a>00284 <span class="keywordflow">if</span> (_width & 1)
-<a name="l00285"></a>00285 <span class="comment">// This is so that longitude grids can be extended thru the poles.</span>
-<a name="l00286"></a>00286 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster width is odd "</span> + _filename);
-<a name="l00287"></a>00287 <span class="keywordflow">if</span> (!(_height & 1))
-<a name="l00288"></a>00288 <span class="comment">// This is so that latitude grid includes the equator.</span>
-<a name="l00289"></a>00289 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster height is even "</span> + _filename);
-<a name="l00290"></a>00290 _file.seekg(0, ios::end);
-<a name="l00291"></a>00291 <span class="keywordflow">if</span> (!_file.good() ||
-<a name="l00292"></a>00292 _datastart + 2ULL * _swidth * (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_height) !=
-<a name="l00293"></a>00293 (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_file.tellg()))
-<a name="l00294"></a>00294 <span class="comment">// Possibly this test should be "<" because the file contains, e.g., a</span>
-<a name="l00295"></a>00295 <span class="comment">// second image. However, for now we are more strict.</span>
-<a name="l00296"></a>00296 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File has the wrong length "</span> + _filename);
-<a name="l00297"></a>00297 _rlonres = _width / real(360);
-<a name="l00298"></a>00298 _rlatres = (_height - 1) / real(180);
-<a name="l00299"></a>00299 _cache = <span class="keyword">false</span>;
-<a name="l00300"></a>00300 _ix = _width;
-<a name="l00301"></a>00301 _iy = _height;
-<a name="l00302"></a>00302 <span class="comment">// Ensure that file errors throw exceptions</span>
-<a name="l00303"></a>00303 _file.exceptions(ifstream::eofbit | ifstream::failbit | ifstream::badbit);
-<a name="l00304"></a>00304 <span class="keywordflow">if</span> (threadsafe) {
-<a name="l00305"></a>00305 <a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>();
-<a name="l00306"></a>00306 _file.close();
-<a name="l00307"></a>00307 _threadsafe = <span class="keyword">true</span>;
-<a name="l00308"></a>00308 }
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310
-<a name="l00311"></a>00311 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Geoid::height(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> gradp,
-<a name="l00312"></a>00312 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grade)<span class="keyword"> const </span>{
-<a name="l00313"></a>00313 <span class="keywordflow">if</span> (<a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(lat) || <a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(lon)) {
-<a name="l00314"></a>00314 <span class="keywordflow">if</span> (gradp) gradn = grade = Math::NaN<real>();
-<a name="l00315"></a>00315 <span class="keywordflow">return</span> Math::NaN<real>();
-<a name="l00316"></a>00316 }
-<a name="l00317"></a>00317 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00318"></a>00318 fx = lon * _rlonres,
-<a name="l00319"></a>00319 fy = -lat * _rlatres;
-<a name="l00320"></a>00320 <span class="keywordtype">int</span>
-<a name="l00321"></a>00321 ix = int(floor(fx)),
-<a name="l00322"></a>00322 iy = min((_height - 1)/2 - 1, <span class="keywordtype">int</span>(floor(fy)));
-<a name="l00323"></a>00323 fx -= ix;
-<a name="l00324"></a>00324 fy -= iy;
-<a name="l00325"></a>00325 iy += (_height - 1)/2;
-<a name="l00326"></a>00326 ix += ix < 0 ? _width : (ix >= _width ? -_width : 0);
-<a name="l00327"></a>00327 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v00 = 0, v01 = 0, v10 = 0, v11 = 0;
-<a name="l00328"></a>00328 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t[nterms_];
-<a name="l00329"></a>00329
-<a name="l00330"></a>00330 <span class="keywordflow">if</span> (_threadsafe || !(ix == _ix && iy == _iy)) {
-<a name="l00331"></a>00331 <span class="keywordflow">if</span> (!_cubic) {
-<a name="l00332"></a>00332 v00 = rawval(ix , iy );
-<a name="l00333"></a>00333 v01 = rawval(ix + 1, iy );
-<a name="l00334"></a>00334 v10 = rawval(ix , iy + 1);
-<a name="l00335"></a>00335 v11 = rawval(ix + 1, iy + 1);
-<a name="l00336"></a>00336 } <span class="keywordflow">else</span> {
-<a name="l00337"></a>00337 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v[stencilsize_];
-<a name="l00338"></a>00338 <span class="keywordtype">int</span> k = 0;
-<a name="l00339"></a>00339 v[k++] = rawval(ix , iy - 1);
-<a name="l00340"></a>00340 v[k++] = rawval(ix + 1, iy - 1);
-<a name="l00341"></a>00341 v[k++] = rawval(ix - 1, iy );
-<a name="l00342"></a>00342 v[k++] = rawval(ix , iy );
-<a name="l00343"></a>00343 v[k++] = rawval(ix + 1, iy );
-<a name="l00344"></a>00344 v[k++] = rawval(ix + 2, iy );
-<a name="l00345"></a>00345 v[k++] = rawval(ix - 1, iy + 1);
-<a name="l00346"></a>00346 v[k++] = rawval(ix , iy + 1);
-<a name="l00347"></a>00347 v[k++] = rawval(ix + 1, iy + 1);
-<a name="l00348"></a>00348 v[k++] = rawval(ix + 2, iy + 1);
-<a name="l00349"></a>00349 v[k++] = rawval(ix , iy + 2);
-<a name="l00350"></a>00350 v[k++] = rawval(ix + 1, iy + 2);
-<a name="l00351"></a>00351
-<a name="l00352"></a>00352 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>* c3x = iy == 0 ? c3n_ : (iy == _height - 2 ? c3s_ : c3_);
-<a name="l00353"></a>00353 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0x = iy == 0 ? c0n_ : (iy == _height - 2 ? c0s_ : c0_);
-<a name="l00354"></a>00354 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < nterms_; ++i) {
-<a name="l00355"></a>00355 t[i] = 0;
-<a name="l00356"></a>00356 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j < stencilsize_; ++j)
-<a name="l00357"></a>00357 t[i] += v[j] * c3x[nterms_ * j + i];
-<a name="l00358"></a>00358 t[i] /= c0x;
-<a name="l00359"></a>00359 }
-<a name="l00360"></a>00360 }
-<a name="l00361"></a>00361 } <span class="keywordflow">else</span> { <span class="comment">// same cell; used cached coefficients</span>
-<a name="l00362"></a>00362 <span class="keywordflow">if</span> (!_cubic) {
-<a name="l00363"></a>00363 v00 = _v00;
-<a name="l00364"></a>00364 v01 = _v01;
-<a name="l00365"></a>00365 v10 = _v10;
-<a name="l00366"></a>00366 v11 = _v11;
-<a name="l00367"></a>00367 } <span class="keywordflow">else</span>
-<a name="l00368"></a>00368 copy(_t, _t + nterms_, t);
-<a name="l00369"></a>00369 }
-<a name="l00370"></a>00370 <span class="keywordflow">if</span> (!_cubic) {
-<a name="l00371"></a>00371 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00372"></a>00372 a = (1 - fx) * v00 + fx * v01,
-<a name="l00373"></a>00373 b = (1 - fx) * v10 + fx * v11,
-<a name="l00374"></a>00374 c = (1 - fy) * a + fy * b,
-<a name="l00375"></a>00375 h = _offset + _scale * c;
-<a name="l00376"></a>00376 <span class="keywordflow">if</span> (gradp) {
-<a name="l00377"></a>00377 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00378"></a>00378 phi = lat * _degree,
-<a name="l00379"></a>00379 cosphi = cos(phi),
-<a name="l00380"></a>00380 sinphi = sin(phi),
-<a name="l00381"></a>00381 n = 1/sqrt(1 - _e2 * sinphi * sinphi);
-<a name="l00382"></a>00382 gradn = ((1 - fx) * (v00 - v10) + fx * (v01 - v11)) *
-<a name="l00383"></a>00383 _rlatres / (_degree * _a * (1 - _e2) * n * n * n);
-<a name="l00384"></a>00384 grade = (cosphi > _eps ?
-<a name="l00385"></a>00385 ((1 - fy) * (v01 - v00) + fy * (v11 - v10)) / cosphi :
-<a name="l00386"></a>00386 (sinphi > 0 ? v11 - v10 : v01 - v00) *
-<a name="l00387"></a>00387 _rlatres / _degree ) *
-<a name="l00388"></a>00388 _rlonres / (_degree * _a * n);
-<a name="l00389"></a>00389 gradn *= _scale;
-<a name="l00390"></a>00390 grade *= _scale;
-<a name="l00391"></a>00391 }
-<a name="l00392"></a>00392 <span class="keywordflow">if</span> (!_threadsafe) {
-<a name="l00393"></a>00393 _ix = ix;
-<a name="l00394"></a>00394 _iy = iy;
-<a name="l00395"></a>00395 _v00 = v00;
-<a name="l00396"></a>00396 _v01 = v01;
-<a name="l00397"></a>00397 _v10 = v10;
-<a name="l00398"></a>00398 _v11 = v11;
-<a name="l00399"></a>00399 }
-<a name="l00400"></a>00400 <span class="keywordflow">return</span> h;
-<a name="l00401"></a>00401 } <span class="keywordflow">else</span> {
-<a name="l00402"></a>00402 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = t[0] + fx * (t[1] + fx * (t[3] + fx * t[6])) +
-<a name="l00403"></a>00403 fy * (t[2] + fx * (t[4] + fx * t[7]) +
-<a name="l00404"></a>00404 fy * (t[5] + fx * t[8] + fy * t[9]));
-<a name="l00405"></a>00405 h = _offset + _scale * h;
-<a name="l00406"></a>00406 <span class="keywordflow">if</span> (gradp) {
-<a name="l00407"></a>00407 <span class="comment">// Avoid 0/0 at the poles by backing off 1/100 of a cell size</span>
-<a name="l00408"></a>00408 lat = min(lat, 90 - 1/(100 * _rlatres));
-<a name="l00409"></a>00409 lat = max(lat, -90 + 1/(100 * _rlatres));
-<a name="l00410"></a>00410 fy = (90 - lat) * _rlatres;
-<a name="l00411"></a>00411 fy -= int(fy);
-<a name="l00412"></a>00412 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00413"></a>00413 phi = lat * _degree,
-<a name="l00414"></a>00414 cosphi = cos(phi),
-<a name="l00415"></a>00415 sinphi = sin(phi),
-<a name="l00416"></a>00416 n = 1/sqrt(1 - _e2 * sinphi * sinphi);
-<a name="l00417"></a>00417 gradn = t[2] + fx * (t[4] + fx * t[7]) +
-<a name="l00418"></a>00418 fy * (2 * t[5] + fx * 2 * t[8] + 3 * fy * t[9]);
-<a name="l00419"></a>00419 grade = t[1] + fx * (2 * t[3] + fx * 3 * t[6]) +
-<a name="l00420"></a>00420 fy * (t[4] + fx * 2 * t[7] + fy * t[8]);
-<a name="l00421"></a>00421 gradn *= - _rlatres / (_degree * _a * (1 - _e2) * n * n * n) * _scale;
-<a name="l00422"></a>00422 grade *= _rlonres / (_degree * _a * n * cosphi) * _scale;
-<a name="l00423"></a>00423 }
-<a name="l00424"></a>00424 <span class="keywordflow">if</span> (!_threadsafe) {
-<a name="l00425"></a>00425 _ix = ix;
-<a name="l00426"></a>00426 _iy = iy;
-<a name="l00427"></a>00427 copy(t, t + nterms_, _t);
-<a name="l00428"></a>00428 }
-<a name="l00429"></a>00429 <span class="keywordflow">return</span> h;
-<a name="l00430"></a>00430 }
-<a name="l00431"></a>00431 }
-<a name="l00432"></a>00432
-<a name="l00433"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">00433</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">Geoid::CacheClear</a>() <span class="keyword">const</span> throw() {
-<a name="l00434"></a>00434 <span class="keywordflow">if</span> (!_threadsafe) {
-<a name="l00435"></a>00435 _cache = <span class="keyword">false</span>;
-<a name="l00436"></a>00436 <span class="keywordflow">try</span> {
-<a name="l00437"></a>00437 _data.clear();
-<a name="l00438"></a>00438 <span class="comment">// Use swap to release memory back to system</span>
-<a name="l00439"></a>00439 vector< vector<unsigned short> >().swap(_data);
-<a name="l00440"></a>00440 }
-<a name="l00441"></a>00441 <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception&) {
+<a name="l00202"></a>00202 0, 0, 124, 0, 0, 62, 0, 0, 0, -62,
+<a name="l00203"></a>00203 0, 0, 62, 0, 0, 31, 0, 0, 0, -31,
+<a name="l00204"></a>00204 -18, 36, -64, 0, 66, 51, 0, 0, -102, 31,
+<a name="l00205"></a>00205 18, -36, 2, 0, -66, -51, 0, 0, 102, 31,
+<a name="l00206"></a>00206 };
+<a name="l00207"></a>00207
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ac3556c755dad0d43c3be0913df08b395">00208</a> Geoid::Geoid(<span class="keyword">const</span> std::string& name, <span class="keyword">const</span> std::string& path, <span class="keywordtype">bool</span> cubic,
+<a name="l00209"></a>00209 <span class="keywordtype">bool</span> threadsafe)
+<a name="l00210"></a>00210 : _name(name)
+<a name="l00211"></a>00211 , _dir(path)
+<a name="l00212"></a>00212 , _cubic(cubic)
+<a name="l00213"></a>00213 , _a( <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>() )
+<a name="l00214"></a>00214 , _e2( (2 - <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>()) * <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>() )
+<a name="l00215"></a>00215 , _degree( <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() )
+<a name="l00216"></a>00216 , _eps( sqrt(numeric_limits<real>::epsilon()) )
+<a name="l00217"></a>00217 , _threadsafe(false) <span class="comment">// Set after cache is read</span>
+<a name="l00218"></a>00218 {
+<a name="l00219"></a>00219 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(pixel_t) == pixel_size_, <span class="stringliteral">"pixel_t has the wrong size"</span>);
+<a name="l00220"></a>00220 <span class="keywordflow">if</span> (_dir.empty())
+<a name="l00221"></a>00221 _dir = <a class="code" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">DefaultGeoidPath</a>();
+<a name="l00222"></a>00222 _filename = _dir + <span class="stringliteral">"/"</span> + _name + (pixel_size_ != 4 ? <span class="stringliteral">".pgm"</span> : <span class="stringliteral">".pgm4"</span>);
+<a name="l00223"></a>00223 _file.open(_filename.c_str(), ios::binary);
+<a name="l00224"></a>00224 <span class="keywordflow">if</span> (!(_file.good()))
+<a name="l00225"></a>00225 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File not readable "</span> + _filename);
+<a name="l00226"></a>00226 <span class="keywordtype">string</span> s;
+<a name="l00227"></a>00227 <span class="keywordflow">if</span> (!(getline(_file, s) && s == <span class="stringliteral">"P5"</span>))
+<a name="l00228"></a>00228 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File not in PGM format "</span> + _filename);
+<a name="l00229"></a>00229 _offset = numeric_limits<real>::max();
+<a name="l00230"></a>00230 _scale = 0;
+<a name="l00231"></a>00231 _maxerror = _rmserror = -1;
+<a name="l00232"></a>00232 _description = <span class="stringliteral">"NONE"</span>;
+<a name="l00233"></a>00233 _datetime = <span class="stringliteral">"UNKNOWN"</span>;
+<a name="l00234"></a>00234 <span class="keywordflow">while</span> (getline(_file, s)) {
+<a name="l00235"></a>00235 <span class="keywordflow">if</span> (s.empty())
+<a name="l00236"></a>00236 <span class="keywordflow">continue</span>;
+<a name="l00237"></a>00237 <span class="keywordflow">if</span> (s[0] == <span class="charliteral">'#'</span>) {
+<a name="l00238"></a>00238 istringstream is(s);
+<a name="l00239"></a>00239 <span class="keywordtype">string</span> commentid, key;
+<a name="l00240"></a>00240 <span class="keywordflow">if</span> (!(is >> commentid >> key) || commentid != <span class="stringliteral">"#"</span>)
+<a name="l00241"></a>00241 <span class="keywordflow">continue</span>;
+<a name="l00242"></a>00242 <span class="keywordflow">if</span> (key == <span class="stringliteral">"Description"</span> || key ==<span class="stringliteral">"DateTime"</span>) {
+<a name="l00243"></a>00243 <span class="keywordtype">string</span>::size_type p =
+<a name="l00244"></a>00244 s.find_first_not_of(<span class="stringliteral">" \t"</span>, <span class="keywordtype">unsigned</span>(is.tellg()));
+<a name="l00245"></a>00245 <span class="keywordflow">if</span> (p != string::npos)
+<a name="l00246"></a>00246 (key == <span class="stringliteral">"Description"</span> ? _description : _datetime) = s.substr(p);
+<a name="l00247"></a>00247 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Offset"</span>) {
+<a name="l00248"></a>00248 <span class="keywordflow">if</span> (!(is >> _offset))
+<a name="l00249"></a>00249 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading offset "</span> + _filename);
+<a name="l00250"></a>00250 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Scale"</span>) {
+<a name="l00251"></a>00251 <span class="keywordflow">if</span> (!(is >> _scale))
+<a name="l00252"></a>00252 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading scale "</span> + _filename);
+<a name="l00253"></a>00253 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == (_cubic ? <span class="stringliteral">"MaxCubicError"</span> : <span class="stringliteral">"MaxBilinearError"</span>)) {
+<a name="l00254"></a>00254 <span class="comment">// It's not an error if the error can't be read</span>
+<a name="l00255"></a>00255 is >> _maxerror;
+<a name="l00256"></a>00256 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == (_cubic ? <span class="stringliteral">"RMSCubicError"</span> : <span class="stringliteral">"RMSBilinearError"</span>)) {
+<a name="l00257"></a>00257 <span class="comment">// It's not an error if the error can't be read</span>
+<a name="l00258"></a>00258 is >> _rmserror;
+<a name="l00259"></a>00259 }
+<a name="l00260"></a>00260 } <span class="keywordflow">else</span> {
+<a name="l00261"></a>00261 istringstream is(s);
+<a name="l00262"></a>00262 <span class="keywordflow">if</span> (!(is >> _width >> _height))
+<a name="l00263"></a>00263 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading raster size "</span> + _filename);
+<a name="l00264"></a>00264 <span class="keywordflow">break</span>;
+<a name="l00265"></a>00265 }
+<a name="l00266"></a>00266 }
+<a name="l00267"></a>00267 {
+<a name="l00268"></a>00268 <span class="keywordtype">unsigned</span> maxval;
+<a name="l00269"></a>00269 <span class="keywordflow">if</span> (!(_file >> maxval))
+<a name="l00270"></a>00270 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Error reading maxval "</span> + _filename);
+<a name="l00271"></a>00271 <span class="keywordflow">if</span> (maxval != pixel_max_)
+<a name="l00272"></a>00272 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incorrect value of maxval "</span> + _filename);
+<a name="l00273"></a>00273 <span class="comment">// Add 1 for whitespace after maxval</span>
+<a name="l00274"></a>00274 _datastart = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_file.tellg()) + 1ULL;
+<a name="l00275"></a>00275 _swidth = (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_width);
+<a name="l00276"></a>00276 }
+<a name="l00277"></a>00277 <span class="keywordflow">if</span> (_offset == numeric_limits<real>::max())
+<a name="l00278"></a>00278 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Offset not set "</span> + _filename);
+<a name="l00279"></a>00279 <span class="keywordflow">if</span> (_scale == 0)
+<a name="l00280"></a>00280 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale not set "</span> + _filename);
+<a name="l00281"></a>00281 <span class="keywordflow">if</span> (_scale < 0)
+<a name="l00282"></a>00282 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale must be positive "</span> + _filename);
+<a name="l00283"></a>00283 <span class="keywordflow">if</span> (_height < 2 || _width < 2)
+<a name="l00284"></a>00284 <span class="comment">// Coarsest grid spacing is 180deg.</span>
+<a name="l00285"></a>00285 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster size too small "</span> + _filename);
+<a name="l00286"></a>00286 <span class="keywordflow">if</span> (_width & 1)
+<a name="l00287"></a>00287 <span class="comment">// This is so that longitude grids can be extended thru the poles.</span>
+<a name="l00288"></a>00288 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster width is odd "</span> + _filename);
+<a name="l00289"></a>00289 <span class="keywordflow">if</span> (!(_height & 1))
+<a name="l00290"></a>00290 <span class="comment">// This is so that latitude grid includes the equator.</span>
+<a name="l00291"></a>00291 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Raster height is even "</span> + _filename);
+<a name="l00292"></a>00292 _file.seekg(0, ios::end);
+<a name="l00293"></a>00293 <span class="keywordflow">if</span> (!_file.good() ||
+<a name="l00294"></a>00294 _datastart + pixel_size_ * _swidth * (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_height) !=
+<a name="l00295"></a>00295 (<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> long)(_file.tellg()))
+<a name="l00296"></a>00296 <span class="comment">// Possibly this test should be "<" because the file contains, e.g., a</span>
+<a name="l00297"></a>00297 <span class="comment">// second image. However, for now we are more strict.</span>
+<a name="l00298"></a>00298 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"File has the wrong length "</span> + _filename);
+<a name="l00299"></a>00299 _rlonres = _width / real(360);
+<a name="l00300"></a>00300 _rlatres = (_height - 1) / real(180);
+<a name="l00301"></a>00301 _cache = <span class="keyword">false</span>;
+<a name="l00302"></a>00302 _ix = _width;
+<a name="l00303"></a>00303 _iy = _height;
+<a name="l00304"></a>00304 <span class="comment">// Ensure that file errors throw exceptions</span>
+<a name="l00305"></a>00305 _file.exceptions(ifstream::eofbit | ifstream::failbit | ifstream::badbit);
+<a name="l00306"></a>00306 <span class="keywordflow">if</span> (threadsafe) {
+<a name="l00307"></a>00307 <a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>();
+<a name="l00308"></a>00308 _file.close();
+<a name="l00309"></a>00309 _threadsafe = <span class="keyword">true</span>;
+<a name="l00310"></a>00310 }
+<a name="l00311"></a>00311 }
+<a name="l00312"></a>00312
+<a name="l00313"></a>00313 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Geoid::height(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> gradp,
+<a name="l00314"></a>00314 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradn, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grade)<span class="keyword"> const </span>{
+<a name="l00315"></a>00315 <span class="keywordflow">if</span> (<a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(lat) || <a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(lon)) {
+<a name="l00316"></a>00316 <span class="keywordflow">if</span> (gradp) gradn = grade = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00317"></a>00317 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
+<a name="l00318"></a>00318 }
+<a name="l00319"></a>00319 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00320"></a>00320 fx = lon * _rlonres,
+<a name="l00321"></a>00321 fy = -lat * _rlatres;
+<a name="l00322"></a>00322 <span class="keywordtype">int</span>
+<a name="l00323"></a>00323 ix = int(floor(fx)),
+<a name="l00324"></a>00324 iy = min((_height - 1)/2 - 1, <span class="keywordtype">int</span>(floor(fy)));
+<a name="l00325"></a>00325 fx -= ix;
+<a name="l00326"></a>00326 fy -= iy;
+<a name="l00327"></a>00327 iy += (_height - 1)/2;
+<a name="l00328"></a>00328 ix += ix < 0 ? _width : (ix >= _width ? -_width : 0);
+<a name="l00329"></a>00329 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v00 = 0, v01 = 0, v10 = 0, v11 = 0;
+<a name="l00330"></a>00330 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t[nterms_];
+<a name="l00331"></a>00331
+<a name="l00332"></a>00332 <span class="keywordflow">if</span> (_threadsafe || !(ix == _ix && iy == _iy)) {
+<a name="l00333"></a>00333 <span class="keywordflow">if</span> (!_cubic) {
+<a name="l00334"></a>00334 v00 = rawval(ix , iy );
+<a name="l00335"></a>00335 v01 = rawval(ix + 1, iy );
+<a name="l00336"></a>00336 v10 = rawval(ix , iy + 1);
+<a name="l00337"></a>00337 v11 = rawval(ix + 1, iy + 1);
+<a name="l00338"></a>00338 } <span class="keywordflow">else</span> {
+<a name="l00339"></a>00339 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v[stencilsize_];
+<a name="l00340"></a>00340 <span class="keywordtype">int</span> k = 0;
+<a name="l00341"></a>00341 v[k++] = rawval(ix , iy - 1);
+<a name="l00342"></a>00342 v[k++] = rawval(ix + 1, iy - 1);
+<a name="l00343"></a>00343 v[k++] = rawval(ix - 1, iy );
+<a name="l00344"></a>00344 v[k++] = rawval(ix , iy );
+<a name="l00345"></a>00345 v[k++] = rawval(ix + 1, iy );
+<a name="l00346"></a>00346 v[k++] = rawval(ix + 2, iy );
+<a name="l00347"></a>00347 v[k++] = rawval(ix - 1, iy + 1);
+<a name="l00348"></a>00348 v[k++] = rawval(ix , iy + 1);
+<a name="l00349"></a>00349 v[k++] = rawval(ix + 1, iy + 1);
+<a name="l00350"></a>00350 v[k++] = rawval(ix + 2, iy + 1);
+<a name="l00351"></a>00351 v[k++] = rawval(ix , iy + 2);
+<a name="l00352"></a>00352 v[k++] = rawval(ix + 1, iy + 2);
+<a name="l00353"></a>00353
+<a name="l00354"></a>00354 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>* c3x = iy == 0 ? c3n_ : (iy == _height - 2 ? c3s_ : c3_);
+<a name="l00355"></a>00355 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0x = iy == 0 ? c0n_ : (iy == _height - 2 ? c0s_ : c0_);
+<a name="l00356"></a>00356 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < nterms_; ++i) {
+<a name="l00357"></a>00357 t[i] = 0;
+<a name="l00358"></a>00358 <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> j = 0; j < stencilsize_; ++j)
+<a name="l00359"></a>00359 t[i] += v[j] * c3x[nterms_ * j + i];
+<a name="l00360"></a>00360 t[i] /= c0x;
+<a name="l00361"></a>00361 }
+<a name="l00362"></a>00362 }
+<a name="l00363"></a>00363 } <span class="keywordflow">else</span> { <span class="comment">// same cell; used cached coefficients</span>
+<a name="l00364"></a>00364 <span class="keywordflow">if</span> (!_cubic) {
+<a name="l00365"></a>00365 v00 = _v00;
+<a name="l00366"></a>00366 v01 = _v01;
+<a name="l00367"></a>00367 v10 = _v10;
+<a name="l00368"></a>00368 v11 = _v11;
+<a name="l00369"></a>00369 } <span class="keywordflow">else</span>
+<a name="l00370"></a>00370 copy(_t, _t + nterms_, t);
+<a name="l00371"></a>00371 }
+<a name="l00372"></a>00372 <span class="keywordflow">if</span> (!_cubic) {
+<a name="l00373"></a>00373 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00374"></a>00374 a = (1 - fx) * v00 + fx * v01,
+<a name="l00375"></a>00375 b = (1 - fx) * v10 + fx * v11,
+<a name="l00376"></a>00376 c = (1 - fy) * a + fy * b,
+<a name="l00377"></a>00377 h = _offset + _scale * c;
+<a name="l00378"></a>00378 <span class="keywordflow">if</span> (gradp) {
+<a name="l00379"></a>00379 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00380"></a>00380 phi = lat * _degree,
+<a name="l00381"></a>00381 cosphi = cos(phi),
+<a name="l00382"></a>00382 sinphi = sin(phi),
+<a name="l00383"></a>00383 n = 1/sqrt(1 - _e2 * sinphi * sinphi);
+<a name="l00384"></a>00384 gradn = ((1 - fx) * (v00 - v10) + fx * (v01 - v11)) *
+<a name="l00385"></a>00385 _rlatres / (_degree * _a * (1 - _e2) * n * n * n);
+<a name="l00386"></a>00386 grade = (cosphi > _eps ?
+<a name="l00387"></a>00387 ((1 - fy) * (v01 - v00) + fy * (v11 - v10)) / cosphi :
+<a name="l00388"></a>00388 (sinphi > 0 ? v11 - v10 : v01 - v00) *
+<a name="l00389"></a>00389 _rlatres / _degree ) *
+<a name="l00390"></a>00390 _rlonres / (_degree * _a * n);
+<a name="l00391"></a>00391 gradn *= _scale;
+<a name="l00392"></a>00392 grade *= _scale;
+<a name="l00393"></a>00393 }
+<a name="l00394"></a>00394 <span class="keywordflow">if</span> (!_threadsafe) {
+<a name="l00395"></a>00395 _ix = ix;
+<a name="l00396"></a>00396 _iy = iy;
+<a name="l00397"></a>00397 _v00 = v00;
+<a name="l00398"></a>00398 _v01 = v01;
+<a name="l00399"></a>00399 _v10 = v10;
+<a name="l00400"></a>00400 _v11 = v11;
+<a name="l00401"></a>00401 }
+<a name="l00402"></a>00402 <span class="keywordflow">return</span> h;
+<a name="l00403"></a>00403 } <span class="keywordflow">else</span> {
+<a name="l00404"></a>00404 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h = t[0] + fx * (t[1] + fx * (t[3] + fx * t[6])) +
+<a name="l00405"></a>00405 fy * (t[2] + fx * (t[4] + fx * t[7]) +
+<a name="l00406"></a>00406 fy * (t[5] + fx * t[8] + fy * t[9]));
+<a name="l00407"></a>00407 h = _offset + _scale * h;
+<a name="l00408"></a>00408 <span class="keywordflow">if</span> (gradp) {
+<a name="l00409"></a>00409 <span class="comment">// Avoid 0/0 at the poles by backing off 1/100 of a cell size</span>
+<a name="l00410"></a>00410 lat = min(lat, 90 - 1/(100 * _rlatres));
+<a name="l00411"></a>00411 lat = max(lat, -90 + 1/(100 * _rlatres));
+<a name="l00412"></a>00412 fy = (90 - lat) * _rlatres;
+<a name="l00413"></a>00413 fy -= int(fy);
+<a name="l00414"></a>00414 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
+<a name="l00415"></a>00415 phi = lat * _degree,
+<a name="l00416"></a>00416 cosphi = cos(phi),
+<a name="l00417"></a>00417 sinphi = sin(phi),
+<a name="l00418"></a>00418 n = 1/sqrt(1 - _e2 * sinphi * sinphi);
+<a name="l00419"></a>00419 gradn = t[2] + fx * (t[4] + fx * t[7]) +
+<a name="l00420"></a>00420 fy * (2 * t[5] + fx * 2 * t[8] + 3 * fy * t[9]);
+<a name="l00421"></a>00421 grade = t[1] + fx * (2 * t[3] + fx * 3 * t[6]) +
+<a name="l00422"></a>00422 fy * (t[4] + fx * 2 * t[7] + fy * t[8]);
+<a name="l00423"></a>00423 gradn *= - _rlatres / (_degree * _a * (1 - _e2) * n * n * n) * _scale;
+<a name="l00424"></a>00424 grade *= _rlonres / (_degree * _a * n * cosphi) * _scale;
+<a name="l00425"></a>00425 }
+<a name="l00426"></a>00426 <span class="keywordflow">if</span> (!_threadsafe) {
+<a name="l00427"></a>00427 _ix = ix;
+<a name="l00428"></a>00428 _iy = iy;
+<a name="l00429"></a>00429 copy(t, t + nterms_, _t);
+<a name="l00430"></a>00430 }
+<a name="l00431"></a>00431 <span class="keywordflow">return</span> h;
+<a name="l00432"></a>00432 }
+<a name="l00433"></a>00433 }
+<a name="l00434"></a>00434
+<a name="l00435"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">00435</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">Geoid::CacheClear</a>() <span class="keyword">const</span> throw() {
+<a name="l00436"></a>00436 <span class="keywordflow">if</span> (!_threadsafe) {
+<a name="l00437"></a>00437 _cache = <span class="keyword">false</span>;
+<a name="l00438"></a>00438 <span class="keywordflow">try</span> {
+<a name="l00439"></a>00439 _data.clear();
+<a name="l00440"></a>00440 <span class="comment">// Use swap to release memory back to system</span>
+<a name="l00441"></a>00441 vector< vector<pixel_t> >().swap(_data);
<a name="l00442"></a>00442 }
-<a name="l00443"></a>00443 }
-<a name="l00444"></a>00444 }
-<a name="l00445"></a>00445
-<a name="l00446"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">00446</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">Geoid::CacheArea</a>(real south, real west, real north, real east)<span class="keyword"> const </span>{
-<a name="l00447"></a>00447 <span class="keywordflow">if</span> (_threadsafe)
-<a name="l00448"></a>00448 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Attempt to change cache of threadsafe Geoid"</span>);
-<a name="l00449"></a>00449 <span class="keywordflow">if</span> (south > north) {
-<a name="l00450"></a>00450 <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">CacheClear</a>();
-<a name="l00451"></a>00451 <span class="keywordflow">return</span>;
-<a name="l00452"></a>00452 }
-<a name="l00453"></a>00453 <span class="keywordflow">if</span> (west >= 180)
-<a name="l00454"></a>00454 west -= 360; <span class="comment">// west in [-180, 180)</span>
-<a name="l00455"></a>00455 <span class="keywordflow">if</span> (east >= 180)
-<a name="l00456"></a>00456 east -= 360;
-<a name="l00457"></a>00457 <span class="keywordflow">if</span> (east <= west)
-<a name="l00458"></a>00458 east += 360; <span class="comment">// east - west in (0, 360]</span>
-<a name="l00459"></a>00459 <span class="keywordtype">int</span>
-<a name="l00460"></a>00460 iw = int(floor(west * _rlonres)),
-<a name="l00461"></a>00461 ie = int(floor(east * _rlonres)),
-<a name="l00462"></a>00462 in = int(floor(-north * _rlatres)) + (_height - 1)/2,
-<a name="l00463"></a>00463 is = <span class="keywordtype">int</span>(floor(-south * _rlatres)) + (_height - 1)/2;
-<a name="l00464"></a>00464 in = max(0, min(_height - 2, in));
-<a name="l00465"></a>00465 is = max(0, min(_height - 2, is));
-<a name="l00466"></a>00466 is += 1;
-<a name="l00467"></a>00467 ie += 1;
-<a name="l00468"></a>00468 <span class="keywordflow">if</span> (_cubic) {
-<a name="l00469"></a>00469 in -= 1;
-<a name="l00470"></a>00470 is += 1;
-<a name="l00471"></a>00471 iw -= 1;
-<a name="l00472"></a>00472 ie += 1;
-<a name="l00473"></a>00473 }
-<a name="l00474"></a>00474 <span class="keywordflow">if</span> (ie - iw >= _width - 1) {
-<a name="l00475"></a>00475 <span class="comment">// Include entire longitude range</span>
-<a name="l00476"></a>00476 iw = 0;
-<a name="l00477"></a>00477 ie = _width - 1;
-<a name="l00478"></a>00478 } <span class="keywordflow">else</span> {
-<a name="l00479"></a>00479 ie += iw < 0 ? _width : (iw >= _width ? -_width : 0);
-<a name="l00480"></a>00480 iw += iw < 0 ? _width : (iw >= _width ? -_width : 0);
-<a name="l00481"></a>00481 }
-<a name="l00482"></a>00482 <span class="keywordtype">int</span> oysize = int(_data.size());
-<a name="l00483"></a>00483 _xsize = ie - iw + 1;
-<a name="l00484"></a>00484 _ysize = is - in + 1;
-<a name="l00485"></a>00485 _xoffset = iw;
-<a name="l00486"></a>00486 _yoffset = in;
-<a name="l00487"></a>00487
-<a name="l00488"></a>00488 <span class="keywordflow">try</span> {
-<a name="l00489"></a>00489 _data.resize(_ysize, vector<unsigned short>(_xsize));
-<a name="l00490"></a>00490 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iy = min(oysize, _ysize); iy--;)
-<a name="l00491"></a>00491 _data[iy].resize(_xsize);
-<a name="l00492"></a>00492 }
-<a name="l00493"></a>00493 <span class="keywordflow">catch</span> (<span class="keyword">const</span> bad_alloc&) {
-<a name="l00494"></a>00494 <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">CacheClear</a>();
-<a name="l00495"></a>00495 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Insufficient memory for caching "</span> + _filename);
-<a name="l00496"></a>00496 }
-<a name="l00497"></a>00497
-<a name="l00498"></a>00498 <span class="keywordflow">try</span> {
-<a name="l00499"></a>00499 vector<char> buf(2 * _xsize);
-<a name="l00500"></a>00500 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iy = in; iy <= is; ++iy) {
-<a name="l00501"></a>00501 <span class="keywordtype">int</span> iy1 = iy, iw1 = iw;
-<a name="l00502"></a>00502 <span class="keywordflow">if</span> (iy < 0 || iy >= _height) {
-<a name="l00503"></a>00503 iy1 = iy1 < 0 ? -iy1 : 2 * (_height - 1) - iy1;
-<a name="l00504"></a>00504 iw1 += _width/2;
-<a name="l00505"></a>00505 <span class="keywordflow">if</span> (iw1 >= _width)
-<a name="l00506"></a>00506 iw1 -= _width;
-<a name="l00507"></a>00507 }
-<a name="l00508"></a>00508 <span class="keywordtype">int</span> xs1 = min(_width - iw1, _xsize);
-<a name="l00509"></a>00509 filepos(iw1, iy1);
-<a name="l00510"></a>00510 _file.read(&(buf[0]), 2 * xs1);
-<a name="l00511"></a>00511 <span class="keywordflow">if</span> (xs1 < _xsize) {
-<a name="l00512"></a>00512 <span class="comment">// Wrap around longitude = 0</span>
-<a name="l00513"></a>00513 filepos(0, iy1);
-<a name="l00514"></a>00514 _file.read(&(buf[2 * xs1]), 2 * (_xsize - xs1));
-<a name="l00515"></a>00515 }
-<a name="l00516"></a>00516 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ix = 0; ix < _xsize; ++ix)
-<a name="l00517"></a>00517 _data[iy - in][ix] =
-<a name="l00518"></a>00518 (<span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>)((<span class="keywordtype">unsigned</span> char)buf[2 * ix] * 256u +
-<a name="l00519"></a>00519 (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)buf[2 * ix + 1]);
+<a name="l00443"></a>00443 <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception&) {
+<a name="l00444"></a>00444 }
+<a name="l00445"></a>00445 }
+<a name="l00446"></a>00446 }
+<a name="l00447"></a>00447
+<a name="l00448"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">00448</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046aaeb8765e4a9c0f">Geoid::CacheArea</a>(real south, real west, real north, real east)<span class="keyword"> const </span>{
+<a name="l00449"></a>00449 <span class="keywordflow">if</span> (_threadsafe)
+<a name="l00450"></a>00450 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Attempt to change cache of threadsafe Geoid"</span>);
+<a name="l00451"></a>00451 <span class="keywordflow">if</span> (south > north) {
+<a name="l00452"></a>00452 <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">CacheClear</a>();
+<a name="l00453"></a>00453 <span class="keywordflow">return</span>;
+<a name="l00454"></a>00454 }
+<a name="l00455"></a>00455 <span class="keywordflow">if</span> (west >= 180)
+<a name="l00456"></a>00456 west -= 360; <span class="comment">// west in [-180, 180)</span>
+<a name="l00457"></a>00457 <span class="keywordflow">if</span> (east >= 180)
+<a name="l00458"></a>00458 east -= 360;
+<a name="l00459"></a>00459 <span class="keywordflow">if</span> (east <= west)
+<a name="l00460"></a>00460 east += 360; <span class="comment">// east - west in (0, 360]</span>
+<a name="l00461"></a>00461 <span class="keywordtype">int</span>
+<a name="l00462"></a>00462 iw = int(floor(west * _rlonres)),
+<a name="l00463"></a>00463 ie = int(floor(east * _rlonres)),
+<a name="l00464"></a>00464 in = int(floor(-north * _rlatres)) + (_height - 1)/2,
+<a name="l00465"></a>00465 is = <span class="keywordtype">int</span>(floor(-south * _rlatres)) + (_height - 1)/2;
+<a name="l00466"></a>00466 in = max(0, min(_height - 2, in));
+<a name="l00467"></a>00467 is = max(0, min(_height - 2, is));
+<a name="l00468"></a>00468 is += 1;
+<a name="l00469"></a>00469 ie += 1;
+<a name="l00470"></a>00470 <span class="keywordflow">if</span> (_cubic) {
+<a name="l00471"></a>00471 in -= 1;
+<a name="l00472"></a>00472 is += 1;
+<a name="l00473"></a>00473 iw -= 1;
+<a name="l00474"></a>00474 ie += 1;
+<a name="l00475"></a>00475 }
+<a name="l00476"></a>00476 <span class="keywordflow">if</span> (ie - iw >= _width - 1) {
+<a name="l00477"></a>00477 <span class="comment">// Include entire longitude range</span>
+<a name="l00478"></a>00478 iw = 0;
+<a name="l00479"></a>00479 ie = _width - 1;
+<a name="l00480"></a>00480 } <span class="keywordflow">else</span> {
+<a name="l00481"></a>00481 ie += iw < 0 ? _width : (iw >= _width ? -_width : 0);
+<a name="l00482"></a>00482 iw += iw < 0 ? _width : (iw >= _width ? -_width : 0);
+<a name="l00483"></a>00483 }
+<a name="l00484"></a>00484 <span class="keywordtype">int</span> oysize = int(_data.size());
+<a name="l00485"></a>00485 _xsize = ie - iw + 1;
+<a name="l00486"></a>00486 _ysize = is - in + 1;
+<a name="l00487"></a>00487 _xoffset = iw;
+<a name="l00488"></a>00488 _yoffset = in;
+<a name="l00489"></a>00489
+<a name="l00490"></a>00490 <span class="keywordflow">try</span> {
+<a name="l00491"></a>00491 _data.resize(_ysize, vector<pixel_t>(_xsize));
+<a name="l00492"></a>00492 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iy = min(oysize, _ysize); iy--;)
+<a name="l00493"></a>00493 _data[iy].resize(_xsize);
+<a name="l00494"></a>00494 }
+<a name="l00495"></a>00495 <span class="keywordflow">catch</span> (<span class="keyword">const</span> bad_alloc&) {
+<a name="l00496"></a>00496 <a class="code" href="classGeographicLib_1_1Geoid.html#ad948f48545c9c40f1705f2892887cdab">CacheClear</a>();
+<a name="l00497"></a>00497 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Insufficient memory for caching "</span> + _filename);
+<a name="l00498"></a>00498 }
+<a name="l00499"></a>00499
+<a name="l00500"></a>00500 <span class="keywordflow">try</span> {
+<a name="l00501"></a>00501 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> iy = in; iy <= is; ++iy) {
+<a name="l00502"></a>00502 <span class="keywordtype">int</span> iy1 = iy, iw1 = iw;
+<a name="l00503"></a>00503 <span class="keywordflow">if</span> (iy < 0 || iy >= _height) {
+<a name="l00504"></a>00504 <span class="comment">// Allow points "beyond" the poles to support interpolation</span>
+<a name="l00505"></a>00505 iy1 = iy1 < 0 ? -iy1 : 2 * (_height - 1) - iy1;
+<a name="l00506"></a>00506 iw1 += _width/2;
+<a name="l00507"></a>00507 <span class="keywordflow">if</span> (iw1 >= _width)
+<a name="l00508"></a>00508 iw1 -= _width;
+<a name="l00509"></a>00509 }
+<a name="l00510"></a>00510 <span class="keywordtype">int</span> xs1 = min(_width - iw1, _xsize);
+<a name="l00511"></a>00511 filepos(iw1, iy1);
+<a name="l00512"></a>00512 <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<pixel_t, pixel_t, true>
+<a name="l00513"></a>00513 (_file, &(_data[iy - in][0]), xs1);
+<a name="l00514"></a>00514 <span class="keywordflow">if</span> (xs1 < _xsize) {
+<a name="l00515"></a>00515 <span class="comment">// Wrap around longitude = 0</span>
+<a name="l00516"></a>00516 filepos(0, iy1);
+<a name="l00517"></a>00517 <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<pixel_t, pixel_t, true>
+<a name="l00518"></a>00518 (_file, &(_data[iy - in][xs1]), _xsize - xs1);
+<a name="l00519"></a>00519 }
<a name="l00520"></a>00520 }
<a name="l00521"></a>00521 _cache = <span class="keyword">true</span>;
<a name="l00522"></a>00522 }
@@ -599,8 +614,13 @@
<a name="l00550"></a>00550 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geoid_8hpp.html b/doc/html/Geoid_8hpp.html
index b2a21de..6d68216 100644
--- a/doc/html/Geoid_8hpp.html
+++ b/doc/html/Geoid_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geoid.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,17 +84,16 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">GEOGRAPHICLIB_GEOID_HPP</a> "$Id: 8bb7b98423fb36c6e078363bf2b5fc851bd8b1fc $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">GEOGRAPHICLIB_GEOID_HPP</a> "$Id: 4e4eb5941d16ad00416798703d246a6f7ef5fe46 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8hpp.html#aa34d236045b829973cbc0d958d3ed139">PGM_PIXEL_WIDTH</a> 2</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
-<p>Copyright (c) Charles Karney (2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2009-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -88,7 +102,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GEOID_HPP "$Id: 8bb7b98423fb36c6e078363bf2b5fc851bd8b1fc $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GEOID_HPP "$Id: 4e4eb5941d16ad00416798703d246a6f7ef5fe46 $"</td>
</tr>
</table>
</div>
@@ -98,9 +112,30 @@ Defines</h2></td></tr>
</div>
</div>
+<a class="anchor" id="aa34d236045b829973cbc0d958d3ed139"></a><!-- doxytag: member="Geoid.hpp::PGM_PIXEL_WIDTH" ref="aa34d236045b829973cbc0d958d3ed139" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define PGM_PIXEL_WIDTH 2</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>The size of the pixel data in the pgm data files for the geoids. 2 is the standard size corresponding to a maxval 2^16-1. Setting it to 4 uses a maxval of 2^32-1 and changes the extension for the data files from .pgm to .pgm4. Note that the format of these pgm4 files is a non-standard extension of the pgm format. </p>
+
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00033">33</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+</div>
+</div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Geoid_8hpp_source.html b/doc/html/Geoid_8hpp_source.html
index 8eed34d..879543d 100644
--- a/doc/html/Geoid_8hpp_source.html
+++ b/doc/html/Geoid_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geoid.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Geoid.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Geoid class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GEOID_HPP)</span>
<a name="l00011"></a><a class="code" href="Geoid_8hpp.html#a81966978f2fe7fad1effabc667a99820">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GEOID_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 8bb7b98423fb36c6e078363bf2b5fc851bd8b1fc $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 4e4eb5941d16ad00416798703d246a6f7ef5fe46 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <vector></span>
@@ -72,453 +87,495 @@
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (disable: 4251)</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span>
-<a name="l00025"></a>00025 <span class="keyword">namespace </span>GeographicLib {
-<a name="l00026"></a>00026 <span class="comment"></span>
-<a name="l00027"></a>00027 <span class="comment"> /**</span>
-<a name="l00028"></a>00028 <span class="comment"> * \brief Looking up the height of the geoid</span>
-<a name="l00029"></a>00029 <span class="comment"> *</span>
-<a name="l00030"></a>00030 <span class="comment"> * This class evaluated the height of one of the standard geoids, EGM84,</span>
-<a name="l00031"></a>00031 <span class="comment"> * EGM96, or EGM2008 by bilinear or cubic interpolation into a rectangular</span>
-<a name="l00032"></a>00032 <span class="comment"> * grid of data. These geoid models are documented in</span>
-<a name="l00033"></a>00033 <span class="comment"> * - EGM84:</span>
-<a name="l00034"></a>00034 <span class="comment"> * http://earth-info.nga.mil/GandG/wgs84/gravitymod/wgs84_180/wgs84_180.html</span>
-<a name="l00035"></a>00035 <span class="comment"> * - EGM96:</span>
-<a name="l00036"></a>00036 <span class="comment"> * http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html</span>
-<a name="l00037"></a>00037 <span class="comment"> * - EGM2008:</span>
-<a name="l00038"></a>00038 <span class="comment"> * http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008</span>
-<a name="l00039"></a>00039 <span class="comment"> *</span>
-<a name="l00040"></a>00040 <span class="comment"> * The geoids are defined in terms of spherical harmonics. However in order</span>
-<a name="l00041"></a>00041 <span class="comment"> * to provide a quick and flexible method of evaluating the geoid heights,</span>
-<a name="l00042"></a>00042 <span class="comment"> * this class evaluates the height by interpolation into a grid of</span>
-<a name="l00043"></a>00043 <span class="comment"> * precomputed values.</span>
-<a name="l00044"></a>00044 <span class="comment"> *</span>
-<a name="l00045"></a>00045 <span class="comment"> * See \ref geoid for details of how to install the data sets, the data</span>
-<a name="l00046"></a>00046 <span class="comment"> * format, estimates of the interpolation errors, and how to use caching.</span>
-<a name="l00047"></a>00047 <span class="comment"> *</span>
-<a name="l00048"></a>00048 <span class="comment"> * In addition to returning the geoid height, the gradient of the geoid can</span>
-<a name="l00049"></a>00049 <span class="comment"> * be calculated. The gradient is defined as the rate of change of the geoid</span>
-<a name="l00050"></a>00050 <span class="comment"> * as a function of position on the ellipsoid. This uses the parameters for</span>
-<a name="l00051"></a>00051 <span class="comment"> * the WGS84 ellipsoid. The gradient defined in terms of the interpolated</span>
-<a name="l00052"></a>00052 <span class="comment"> * heights. As a result of the way that the geoid data is stored, the</span>
-<a name="l00053"></a>00053 <span class="comment"> * calculation of gradients can result in large quantization errors. This is</span>
-<a name="l00054"></a>00054 <span class="comment"> * particularly acute for fine grids, at high latitudes, and for the easterly</span>
-<a name="l00055"></a>00055 <span class="comment"> * gradient.</span>
-<a name="l00056"></a>00056 <span class="comment"> *</span>
-<a name="l00057"></a>00057 <span class="comment"> * This class is typically \e not thread safe in that a single instantiation</span>
-<a name="l00058"></a>00058 <span class="comment"> * cannot be safely used by multiple threads because of the way the object</span>
-<a name="l00059"></a>00059 <span class="comment"> * reads the data set and because it maintains a single-cell cache. If</span>
-<a name="l00060"></a>00060 <span class="comment"> * multiple threads need to calculate geoid heights they should all construct</span>
-<a name="l00061"></a>00061 <span class="comment"> * thread-local instantiations. Alternatively, set the optional \e</span>
-<a name="l00062"></a>00062 <span class="comment"> * threadsafe parameter to true in the constructor. This causes the</span>
-<a name="l00063"></a>00063 <span class="comment"> * constructor to read all the data into memory and to turn off the</span>
-<a name="l00064"></a>00064 <span class="comment"> * single-cell caching which results in a Geoid object which \e is thread</span>
-<a name="l00065"></a>00065 <span class="comment"> * safe.</span>
-<a name="l00066"></a>00066 <span class="comment"> *</span>
-<a name="l00067"></a>00067 <span class="comment"> * Example of use:</span>
-<a name="l00068"></a>00068 <span class="comment"> * \include example-Geoid.cpp</span>
-<a name="l00069"></a>00069 <span class="comment"> **********************************************************************/</span>
-<a name="l00070"></a>00070
-<a name="l00071"></a><a class="code" href="classGeographicLib_1_1Geoid.html">00071</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a> {
-<a name="l00072"></a>00072 <span class="keyword">private</span>:
-<a name="l00073"></a>00073 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> stencilsize_ = 12;
-<a name="l00075"></a>00075 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> nterms_ = ((3 + 1) * (3 + 2))/2; <span class="comment">// for a cubic fit</span>
-<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">const</span> real c0_;
-<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keyword">const</span> real c0n_;
-<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keyword">const</span> real c0s_;
-<a name="l00079"></a>00079 <span class="keyword">static</span> <span class="keyword">const</span> real c3_[stencilsize_ * nterms_];
-<a name="l00080"></a>00080 <span class="keyword">static</span> <span class="keyword">const</span> real c3n_[stencilsize_ * nterms_];
-<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keyword">const</span> real c3s_[stencilsize_ * nterms_];
-<a name="l00082"></a>00082
-<a name="l00083"></a>00083 std::string _name, _dir, _filename;
-<a name="l00084"></a>00084 <span class="keyword">const</span> <span class="keywordtype">bool</span> _cubic;
-<a name="l00085"></a>00085 <span class="keyword">const</span> real _a, _e2, _degree, _eps;
-<a name="l00086"></a>00086 <span class="keyword">mutable</span> std::ifstream _file;
-<a name="l00087"></a>00087 real _rlonres, _rlatres;
-<a name="l00088"></a>00088 std::string _description, _datetime;
-<a name="l00089"></a>00089 real _offset, _scale, _maxerror, _rmserror;
-<a name="l00090"></a>00090 <span class="keywordtype">int</span> _width, _height;
-<a name="l00091"></a>00091 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> _datastart, _swidth;
-<a name="l00092"></a>00092 <span class="keywordtype">bool</span> _threadsafe;
-<a name="l00093"></a>00093 <span class="comment">// Area cache</span>
-<a name="l00094"></a>00094 <span class="keyword">mutable</span> std::vector< std::vector<unsigned short> > _data;
-<a name="l00095"></a>00095 <span class="keyword">mutable</span> <span class="keywordtype">bool</span> _cache;
-<a name="l00096"></a>00096 <span class="comment">// NE corner and extent of cache</span>
-<a name="l00097"></a>00097 <span class="keyword">mutable</span> <span class="keywordtype">int</span> _xoffset, _yoffset, _xsize, _ysize;
-<a name="l00098"></a>00098 <span class="comment">// Cell cache</span>
-<a name="l00099"></a>00099 <span class="keyword">mutable</span> <span class="keywordtype">int</span> _ix, _iy;
-<a name="l00100"></a>00100 <span class="keyword">mutable</span> real _v00, _v01, _v10, _v11;
-<a name="l00101"></a>00101 <span class="keyword">mutable</span> real _t[nterms_];
-<a name="l00102"></a>00102 <span class="keywordtype">void</span> filepos(<span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> iy)<span class="keyword"> const </span>{
-<a name="l00103"></a>00103 _file.seekg(
-<a name="l00104"></a>00104 #<span class="keywordflow">if</span> !(defined(__GNUC__) && __GNUC__ < 4)
-<a name="l00105"></a>00105 <span class="comment">// g++ 3.x doesn't know about the cast to streamoff.</span>
-<a name="l00106"></a>00106 std::ios::streamoff
-<a name="l00107"></a>00107 #endif
-<a name="l00108"></a>00108 (_datastart + 2ULL * (<span class="keywordtype">unsigned</span>(iy)*_swidth + <span class="keywordtype">unsigned</span>(ix))));
-<a name="l00109"></a>00109 }
-<a name="l00110"></a>00110 real rawval(<span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> iy)<span class="keyword"> const </span>{
-<a name="l00111"></a>00111 <span class="keywordflow">if</span> (ix < 0)
-<a name="l00112"></a>00112 ix += _width;
-<a name="l00113"></a>00113 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ix >= _width)
-<a name="l00114"></a>00114 ix -= _width;
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (_cache && iy >= _yoffset && iy < _yoffset + _ysize &&
-<a name="l00116"></a>00116 ((ix >= _xoffset && ix < _xoffset + _xsize) ||
-<a name="l00117"></a>00117 (ix + _width >= _xoffset && ix + _width < _xoffset + _xsize))) {
-<a name="l00118"></a>00118 <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(_data[iy - _yoffset]
-<a name="l00119"></a>00119 [ix >= _xoffset ? ix - _xoffset : ix + _width - _xoffset]);
-<a name="l00120"></a>00120 } <span class="keywordflow">else</span> {
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (iy < 0 || iy >= _height) {
-<a name="l00122"></a>00122 iy = iy < 0 ? -iy : 2 * (_height - 1) - iy;
-<a name="l00123"></a>00123 ix += (ix < _width/2 ? 1 : -1) * _width/2;
-<a name="l00124"></a>00124 }
-<a name="l00125"></a>00125 <span class="keywordflow">try</span> {
-<a name="l00126"></a>00126 filepos(ix, iy);
-<a name="l00127"></a>00127 <span class="keywordtype">char</span> a, b;
-<a name="l00128"></a>00128 _file.get(a);
-<a name="l00129"></a>00129 _file.get(b);
-<a name="l00130"></a>00130 <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(a) * 256u + (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(b));
-<a name="l00131"></a>00131 }
-<a name="l00132"></a>00132 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00133"></a>00133 <span class="comment">// throw GeographicErr("Error reading " + _filename + ": "</span>
-<a name="l00134"></a>00134 <span class="comment">// + e.what());</span>
-<a name="l00135"></a>00135 <span class="comment">// triggers complaints about the "binary '+'" under Visual Studio.</span>
-<a name="l00136"></a>00136 <span class="comment">// So use '+=' instead.</span>
-<a name="l00137"></a>00137 std::string err(<span class="stringliteral">"Error reading "</span>);
-<a name="l00138"></a>00138 err += _filename;
-<a name="l00139"></a>00139 err += <span class="stringliteral">": "</span>;
-<a name="l00140"></a>00140 err += e.what();
-<a name="l00141"></a>00141 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(err);
-<a name="l00142"></a>00142 }
-<a name="l00143"></a>00143 }
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145 real height(real lat, real lon, <span class="keywordtype">bool</span> gradp,
-<a name="l00146"></a>00146 real& grade, real& gradn) <span class="keyword">const</span>;
-<a name="l00147"></a>00147 <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>&); <span class="comment">// copy constructor not allowed</span>
-<a name="l00148"></a>00148 <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>& operator=(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>&); <span class="comment">// copy assignment not allowed</span>
-<a name="l00149"></a>00149 <span class="keyword">public</span>:
-<a name="l00150"></a>00150 <span class="comment"></span>
-<a name="l00151"></a>00151 <span class="comment"> /**</span>
-<a name="l00152"></a>00152 <span class="comment"> * Flags indicating conversions between heights above the geoid and heights</span>
-<a name="l00153"></a>00153 <span class="comment"> * above the ellipsoid.</span>
-<a name="l00154"></a>00154 <span class="comment"> **********************************************************************/</span>
-<a name="l00155"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">00155</a> <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">convertflag</a> {<span class="comment"></span>
-<a name="l00156"></a>00156 <span class="comment"> /**</span>
-<a name="l00157"></a>00157 <span class="comment"> * The multiplier for converting from heights above the geoid to heights</span>
-<a name="l00158"></a>00158 <span class="comment"> * above the ellipsoid.</span>
-<a name="l00159"></a>00159 <span class="comment"> **********************************************************************/</span>
-<a name="l00160"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a4a1db06e9dcfa1ebb345c616151ab70d">00160</a> ELLIPSOIDTOGEOID = -1,<span class="comment"></span>
-<a name="l00161"></a>00161 <span class="comment"> /**</span>
-<a name="l00162"></a>00162 <span class="comment"> * No conversion.</span>
-<a name="l00163"></a>00163 <span class="comment"> **********************************************************************/</span>
-<a name="l00164"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a677322ba74ea5494e67478c3dc1780d5">00164</a> NONE = 0,<span class="comment"></span>
-<a name="l00165"></a>00165 <span class="comment"> /**</span>
-<a name="l00166"></a>00166 <span class="comment"> * The multiplier for converting from heights above the ellipsoid to</span>
-<a name="l00167"></a>00167 <span class="comment"> * heights above the geoid.</span>
-<a name="l00168"></a>00168 <span class="comment"> **********************************************************************/</span>
-<a name="l00169"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">00169</a> GEOIDTOELLIPSOID = 1,
-<a name="l00170"></a>00170 };
-<a name="l00171"></a>00171 <span class="comment"></span>
-<a name="l00172"></a>00172 <span class="comment"> /** \name Setting up the geoid</span>
-<a name="l00173"></a>00173 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00174"></a>00174 <span class="comment"> ///@{</span>
-<a name="l00175"></a>00175 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00176"></a>00176 <span class="comment"> * Construct a geoid.</span>
-<a name="l00177"></a>00177 <span class="comment"> *</span>
-<a name="l00178"></a>00178 <span class="comment"> * @param[in] name the name of the geoid.</span>
-<a name="l00179"></a>00179 <span class="comment"> * @param[in] path (optional) directory for data file.</span>
-<a name="l00180"></a>00180 <span class="comment"> * @param[in] cubic (optional) interpolation method; false means bilinear,</span>
-<a name="l00181"></a>00181 <span class="comment"> * true (the default) means cubic.</span>
-<a name="l00182"></a>00182 <span class="comment"> * @param[in] threadsafe (optional), if true, construct a thread safe</span>
-<a name="l00183"></a>00183 <span class="comment"> * object. The default is false</span>
-<a name="l00184"></a>00184 <span class="comment"> *</span>
-<a name="l00185"></a>00185 <span class="comment"> * The data file is formed by appending ".pgm" to the name. If \e path is</span>
-<a name="l00186"></a>00186 <span class="comment"> * specified (and is non-empty), then the file is loaded from directory, \e</span>
-<a name="l00187"></a>00187 <span class="comment"> * path. Otherwise the path is given by DefaultGeoidPath(). This may</span>
-<a name="l00188"></a>00188 <span class="comment"> * throw an exception because the file does not exist, is unreadable, or is</span>
-<a name="l00189"></a>00189 <span class="comment"> * corrupt. If the \e threadsafe parameter is true, the data set is read</span>
-<a name="l00190"></a>00190 <span class="comment"> * into memory (which this may also cause an exception to be thrown), the</span>
-<a name="l00191"></a>00191 <span class="comment"> * data file is closed, and single-cell caching is turned off; this results</span>
-<a name="l00192"></a>00192 <span class="comment"> * in a Geoid object which \e is thread safe.</span>
-<a name="l00193"></a>00193 <span class="comment"> **********************************************************************/</span>
-<a name="l00194"></a>00194 <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>(<span class="keyword">const</span> std::string& name, <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>,
-<a name="l00195"></a>00195 <span class="keywordtype">bool</span> cubic = <span class="keyword">true</span>, <span class="keywordtype">bool</span> threadsafe = <span class="keyword">false</span>);
-<a name="l00196"></a>00196 <span class="comment"></span>
-<a name="l00197"></a>00197 <span class="comment"> /**</span>
-<a name="l00198"></a>00198 <span class="comment"> * Set up a cache.</span>
-<a name="l00199"></a>00199 <span class="comment"> *</span>
-<a name="l00200"></a>00200 <span class="comment"> * @param[in] south latitude (degrees) of the south edge of the cached area.</span>
-<a name="l00201"></a>00201 <span class="comment"> * @param[in] west longitude (degrees) of the west edge of the cached area.</span>
-<a name="l00202"></a>00202 <span class="comment"> * @param[in] north latitude (degrees) of the north edge of the cached area.</span>
-<a name="l00203"></a>00203 <span class="comment"> * @param[in] east longitude (degrees) of the east edge of the cached area.</span>
-<a name="l00204"></a>00204 <span class="comment"> *</span>
-<a name="l00205"></a>00205 <span class="comment"> * Cache the data for the specified "rectangular" area bounded by the</span>
-<a name="l00206"></a>00206 <span class="comment"> * parallels \e south and \e north and the meridians \e west and \e east.</span>
-<a name="l00207"></a>00207 <span class="comment"> * \e east is always interpreted as being east of \e west, if necessary by</span>
-<a name="l00208"></a>00208 <span class="comment"> * adding 360<sup>o</sup> to its value. This may throw an error because of</span>
-<a name="l00209"></a>00209 <span class="comment"> * insufficient memory or because of an error reading the data from the</span>
-<a name="l00210"></a>00210 <span class="comment"> * file. In this case, you can catch the error and either do nothing (you</span>
-<a name="l00211"></a>00211 <span class="comment"> * will have no cache in this case) or try again with a smaller area. \e</span>
-<a name="l00212"></a>00212 <span class="comment"> * south and \e north should be in the range [-90, 90]; \e west and \e east</span>
-<a name="l00213"></a>00213 <span class="comment"> * should be in the range [-180, 360]. An exception is thrown if this</span>
-<a name="l00214"></a>00214 <span class="comment"> * routine is called on a thread safe Geoid.</span>
-<a name="l00215"></a>00215 <span class="comment"> **********************************************************************/</span>
-<a name="l00216"></a>00216 <span class="keywordtype">void</span> CacheArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> south, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> west, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> north, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> east) <span class="keyword">const</span>;
-<a name="l00217"></a>00217 <span class="comment"></span>
-<a name="l00218"></a>00218 <span class="comment"> /**</span>
-<a name="l00219"></a>00219 <span class="comment"> * Cache all the data. On most computers, this is fast for data sets with</span>
-<a name="l00220"></a>00220 <span class="comment"> * grid resolution of 5' or coarser. For a 1' grid, the required RAM is</span>
-<a name="l00221"></a>00221 <span class="comment"> * 450MB; a 2.5' grid needs 72MB; and a 5' grid needs 18MB. This may throw</span>
-<a name="l00222"></a>00222 <span class="comment"> * an error because of insufficient memory or because of an error reading</span>
-<a name="l00223"></a>00223 <span class="comment"> * the data from the file. In this case, you can catch the error and</span>
-<a name="l00224"></a>00224 <span class="comment"> * either do nothing (you will have no cache in this case) or try using</span>
-<a name="l00225"></a>00225 <span class="comment"> * Geoid::CacheArea on a specific area. An exception is thrown if this</span>
-<a name="l00226"></a>00226 <span class="comment"> * routine is called on a thread safe Geoid.</span>
-<a name="l00227"></a>00227 <span class="comment"> **********************************************************************/</span>
-<a name="l00228"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">00228</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>()<span class="keyword"> const </span>{ CacheArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(-90), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
-<a name="l00229"></a>00229 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(90), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(360)); }
-<a name="l00230"></a>00230 <span class="comment"></span>
-<a name="l00231"></a>00231 <span class="comment"> /**</span>
-<a name="l00232"></a>00232 <span class="comment"> * Clear the cache. This never throws an error. (This does nothing with a</span>
-<a name="l00233"></a>00233 <span class="comment"> * thread safe Geoid.)</span>
-<a name="l00234"></a>00234 <span class="comment"> **********************************************************************/</span>
-<a name="l00235"></a>00235 <span class="keywordtype">void</span> CacheClear() <span class="keyword">const</span> throw();
-<a name="l00236"></a>00236 <span class="comment"></span>
-<a name="l00237"></a>00237 <span class="comment"> ///@}</span>
-<a name="l00238"></a>00238 <span class="comment"></span><span class="comment"></span>
-<a name="l00239"></a>00239 <span class="comment"> /** \name Compute geoid heights</span>
-<a name="l00240"></a>00240 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00241"></a>00241 <span class="comment"> ///@{</span>
-<a name="l00242"></a>00242 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00243"></a>00243 <span class="comment"> * Compute the geoid height at a point</span>
-<a name="l00244"></a>00244 <span class="comment"> *</span>
-<a name="l00245"></a>00245 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00246"></a>00246 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00247"></a>00247 <span class="comment"> * @return geoid height (meters).</span>
-<a name="l00248"></a>00248 <span class="comment"> *</span>
-<a name="l00249"></a>00249 <span class="comment"> * The latitude should be in [-90, 90] and longitude should be in</span>
-<a name="l00250"></a>00250 <span class="comment"> * [-180,360]. This may throw an error because of an error reading data</span>
-<a name="l00251"></a>00251 <span class="comment"> * from disk. However, it will not throw if (\e lat, \e lon) is within a</span>
-<a name="l00252"></a>00252 <span class="comment"> * successfully cached area.</span>
-<a name="l00253"></a>00253 <span class="comment"> **********************************************************************/</span>
-<a name="l00254"></a><a class="code" href="classGeographicLib_1_1Geoid.html#accb63bfbbadae10af79b3a3028a3045a">00254</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real lat, real lon)<span class="keyword"> const </span>{
-<a name="l00255"></a>00255 real gradn, grade;
-<a name="l00256"></a>00256 <span class="keywordflow">return</span> height(lat, lon, <span class="keyword">false</span>, gradn, grade);
-<a name="l00257"></a>00257 }
-<a name="l00258"></a>00258 <span class="comment"></span>
-<a name="l00259"></a>00259 <span class="comment"> /**</span>
-<a name="l00260"></a>00260 <span class="comment"> * Compute the geoid height and gradient at a point</span>
-<a name="l00261"></a>00261 <span class="comment"> *</span>
-<a name="l00262"></a>00262 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00263"></a>00263 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00264"></a>00264 <span class="comment"> * @param[out] gradn northerly gradient (dimensionless).</span>
-<a name="l00265"></a>00265 <span class="comment"> * @param[out] grade easterly gradient (dimensionless).</span>
-<a name="l00266"></a>00266 <span class="comment"> * @return geoid height (meters).</span>
-<a name="l00267"></a>00267 <span class="comment"> *</span>
-<a name="l00268"></a>00268 <span class="comment"> * The latitude should be in [-90, 90] and longitude should be in [-180,</span>
-<a name="l00269"></a>00269 <span class="comment"> * 360]. This may throw an error because of an error reading data from</span>
-<a name="l00270"></a>00270 <span class="comment"> * disk. However, it will not throw if (\e lat, \e lon) is within a</span>
-<a name="l00271"></a>00271 <span class="comment"> * successfully cached area.</span>
-<a name="l00272"></a>00272 <span class="comment"> **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">00273</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">operator()</a>(real lat, real lon, real& gradn, real& grade)<span class="keyword"> const </span>{
-<a name="l00274"></a>00274 <span class="keywordflow">return</span> height(lat, lon, <span class="keyword">true</span>, gradn, grade);
-<a name="l00275"></a>00275 }
-<a name="l00276"></a>00276 <span class="comment"></span>
-<a name="l00277"></a>00277 <span class="comment"> /**</span>
-<a name="l00278"></a>00278 <span class="comment"> * Convert a height above the geoid to a height above the ellipsoid and</span>
-<a name="l00279"></a>00279 <span class="comment"> * vice versa.</span>
-<a name="l00280"></a>00280 <span class="comment"> *</span>
-<a name="l00281"></a>00281 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00282"></a>00282 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00283"></a>00283 <span class="comment"> * @param[in] h height of the point (degrees).</span>
-<a name="l00284"></a>00284 <span class="comment"> * @param[in] d a Geoid::convertflag specifying the direction of the</span>
-<a name="l00285"></a>00285 <span class="comment"> * conversion; Geoid::GEOIDTOELLIPSOID means convert a height above the</span>
-<a name="l00286"></a>00286 <span class="comment"> * geoid to a height above the ellipsoid; Geoid::ELLIPSOIDTOGEOID means</span>
-<a name="l00287"></a>00287 <span class="comment"> * convert a height above the ellipsoid to a height above the geoid.</span>
-<a name="l00288"></a>00288 <span class="comment"> * @return converted height (meters).</span>
-<a name="l00289"></a>00289 <span class="comment"> **********************************************************************/</span>
-<a name="l00290"></a><a class="code" href="classGeographicLib_1_1Geoid.html#adf98d0f0d881893a4f5ff711a3be0e04">00290</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> ConvertHeight(real lat, real lon, real h,
-<a name="l00291"></a>00291 <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">convertflag</a> d)<span class="keyword"> const </span>{
-<a name="l00292"></a>00292 real gradn, grade;
-<a name="l00293"></a>00293 <span class="keywordflow">return</span> h + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(d) * height(lat, lon, <span class="keyword">true</span>, gradn, grade);
-<a name="l00294"></a>00294 }
-<a name="l00295"></a>00295 <span class="comment"></span>
-<a name="l00296"></a>00296 <span class="comment"> ///@}</span>
-<a name="l00297"></a>00297 <span class="comment"></span><span class="comment"></span>
-<a name="l00298"></a>00298 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00299"></a>00299 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00300"></a>00300 <span class="comment"> ///@{</span>
-<a name="l00301"></a>00301 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00302"></a>00302 <span class="comment"> * @return geoid description, if available, in the data file; if</span>
-<a name="l00303"></a>00303 <span class="comment"> * absent, return "NONE".</span>
-<a name="l00304"></a>00304 <span class="comment"> **********************************************************************/</span>
-<a name="l00305"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">00305</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
-<a name="l00306"></a>00306 <span class="comment"></span>
-<a name="l00307"></a>00307 <span class="comment"> /**</span>
-<a name="l00308"></a>00308 <span class="comment"> * @return date of the data file; if absent, return "UNKNOWN".</span>
-<a name="l00309"></a>00309 <span class="comment"> **********************************************************************/</span>
-<a name="l00310"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">00310</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _datetime; }
+<a name="l00025"></a>00025 <span class="preprocessor">#if !defined(PGM_PIXEL_WIDTH)</span>
+<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="comment">/**</span>
+<a name="l00027"></a>00027 <span class="comment"> * The size of the pixel data in the pgm data files for the geoids. 2</span>
+<a name="l00028"></a>00028 <span class="comment"> * is the standard size corresponding to a maxval 2^16-1. Setting it</span>
+<a name="l00029"></a>00029 <span class="comment"> * to 4 uses a maxval of 2^32-1 and changes the extension for the data</span>
+<a name="l00030"></a>00030 <span class="comment"> * files from .pgm to .pgm4. Note that the format of these pgm4 files</span>
+<a name="l00031"></a>00031 <span class="comment"> * is a non-standard extension of the pgm format.</span>
+<a name="l00032"></a>00032 <span class="comment"> **********************************************************************/</span>
+<a name="l00033"></a><a class="code" href="Geoid_8hpp.html#aa34d236045b829973cbc0d958d3ed139">00033</a> <span class="preprocessor">#define PGM_PIXEL_WIDTH 2</span>
+<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00035"></a>00035 <span class="preprocessor"></span>
+<a name="l00036"></a>00036 <span class="keyword">namespace </span>GeographicLib {
+<a name="l00037"></a>00037 <span class="comment"></span>
+<a name="l00038"></a>00038 <span class="comment"> /**</span>
+<a name="l00039"></a>00039 <span class="comment"> * \brief Looking up the height of the geoid</span>
+<a name="l00040"></a>00040 <span class="comment"> *</span>
+<a name="l00041"></a>00041 <span class="comment"> * This class evaluated the height of one of the standard geoids, EGM84,</span>
+<a name="l00042"></a>00042 <span class="comment"> * EGM96, or EGM2008 by bilinear or cubic interpolation into a rectangular</span>
+<a name="l00043"></a>00043 <span class="comment"> * grid of data. These geoid models are documented in</span>
+<a name="l00044"></a>00044 <span class="comment"> * - EGM84:</span>
+<a name="l00045"></a>00045 <span class="comment"> * http://earth-info.nga.mil/GandG/wgs84/gravitymod/wgs84_180/wgs84_180.html</span>
+<a name="l00046"></a>00046 <span class="comment"> * - EGM96:</span>
+<a name="l00047"></a>00047 <span class="comment"> * http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html</span>
+<a name="l00048"></a>00048 <span class="comment"> * - EGM2008:</span>
+<a name="l00049"></a>00049 <span class="comment"> * http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008</span>
+<a name="l00050"></a>00050 <span class="comment"> *</span>
+<a name="l00051"></a>00051 <span class="comment"> * The geoids are defined in terms of spherical harmonics. However in order</span>
+<a name="l00052"></a>00052 <span class="comment"> * to provide a quick and flexible method of evaluating the geoid heights,</span>
+<a name="l00053"></a>00053 <span class="comment"> * this class evaluates the height by interpolation into a grid of</span>
+<a name="l00054"></a>00054 <span class="comment"> * precomputed values.</span>
+<a name="l00055"></a>00055 <span class="comment"> *</span>
+<a name="l00056"></a>00056 <span class="comment"> * See \ref geoid for details of how to install the data sets, the data</span>
+<a name="l00057"></a>00057 <span class="comment"> * format, estimates of the interpolation errors, and how to use caching.</span>
+<a name="l00058"></a>00058 <span class="comment"> *</span>
+<a name="l00059"></a>00059 <span class="comment"> * In addition to returning the geoid height, the gradient of the geoid can</span>
+<a name="l00060"></a>00060 <span class="comment"> * be calculated. The gradient is defined as the rate of change of the geoid</span>
+<a name="l00061"></a>00061 <span class="comment"> * as a function of position on the ellipsoid. This uses the parameters for</span>
+<a name="l00062"></a>00062 <span class="comment"> * the WGS84 ellipsoid. The gradient defined in terms of the interpolated</span>
+<a name="l00063"></a>00063 <span class="comment"> * heights. As a result of the way that the geoid data is stored, the</span>
+<a name="l00064"></a>00064 <span class="comment"> * calculation of gradients can result in large quantization errors. This is</span>
+<a name="l00065"></a>00065 <span class="comment"> * particularly acute for fine grids, at high latitudes, and for the easterly</span>
+<a name="l00066"></a>00066 <span class="comment"> * gradient.</span>
+<a name="l00067"></a>00067 <span class="comment"> *</span>
+<a name="l00068"></a>00068 <span class="comment"> * This class is typically \e not thread safe in that a single instantiation</span>
+<a name="l00069"></a>00069 <span class="comment"> * cannot be safely used by multiple threads because of the way the object</span>
+<a name="l00070"></a>00070 <span class="comment"> * reads the data set and because it maintains a single-cell cache. If</span>
+<a name="l00071"></a>00071 <span class="comment"> * multiple threads need to calculate geoid heights they should all construct</span>
+<a name="l00072"></a>00072 <span class="comment"> * thread-local instantiations. Alternatively, set the optional \e</span>
+<a name="l00073"></a>00073 <span class="comment"> * threadsafe parameter to true in the constructor. This causes the</span>
+<a name="l00074"></a>00074 <span class="comment"> * constructor to read all the data into memory and to turn off the</span>
+<a name="l00075"></a>00075 <span class="comment"> * single-cell caching which results in a Geoid object which \e is thread</span>
+<a name="l00076"></a>00076 <span class="comment"> * safe.</span>
+<a name="l00077"></a>00077 <span class="comment"> *</span>
+<a name="l00078"></a>00078 <span class="comment"> * Example of use:</span>
+<a name="l00079"></a>00079 <span class="comment"> * \include example-Geoid.cpp</span>
+<a name="l00080"></a>00080 <span class="comment"> *</span>
+<a name="l00081"></a>00081 <span class="comment"> * <a href="GeoidEval.1.html">GeoidEval</a> is a command-line utility</span>
+<a name="l00082"></a>00082 <span class="comment"> * providing access to the functionality of Geoid.</span>
+<a name="l00083"></a>00083 <span class="comment"> **********************************************************************/</span>
+<a name="l00084"></a>00084
+<a name="l00085"></a>00085 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Geoid {
+<a name="l00086"></a>00086 <span class="keyword">private</span>:
+<a name="l00087"></a>00087 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00088"></a>00088 <span class="preprocessor">#if PGM_PIXEL_WIDTH != 4</span>
+<a name="l00089"></a>00089 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> pixel_t;
+<a name="l00090"></a>00090 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> pixel_size_ = 2;
+<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> pixel_max_ = 0xffffu;
+<a name="l00092"></a>00092 <span class="preprocessor">#else</span>
+<a name="l00093"></a>00093 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> pixel_t;
+<a name="l00094"></a>00094 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> pixel_size_ = 4;
+<a name="l00095"></a>00095 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> pixel_max_ = 0xffffffffu;
+<a name="l00096"></a>00096 <span class="preprocessor">#endif</span>
+<a name="l00097"></a>00097 <span class="preprocessor"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> stencilsize_ = 12;
+<a name="l00098"></a>00098 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> nterms_ = ((3 + 1) * (3 + 2))/2; <span class="comment">// for a cubic fit</span>
+<a name="l00099"></a>00099 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0_;
+<a name="l00100"></a>00100 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0n_;
+<a name="l00101"></a>00101 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c0s_;
+<a name="l00102"></a>00102 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c3_[stencilsize_ * nterms_];
+<a name="l00103"></a>00103 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c3n_[stencilsize_ * nterms_];
+<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> c3s_[stencilsize_ * nterms_];
+<a name="l00105"></a>00105
+<a name="l00106"></a>00106 std::string _name, _dir, _filename;
+<a name="l00107"></a>00107 <span class="keyword">const</span> <span class="keywordtype">bool</span> _cubic;
+<a name="l00108"></a>00108 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _e2, _degree, _eps;
+<a name="l00109"></a>00109 <span class="keyword">mutable</span> std::ifstream _file;
+<a name="l00110"></a>00110 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _rlonres, _rlatres;
+<a name="l00111"></a>00111 std::string _description, _datetime;
+<a name="l00112"></a>00112 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _offset, _scale, _maxerror, _rmserror;
+<a name="l00113"></a>00113 <span class="keywordtype">int</span> _width, _height;
+<a name="l00114"></a>00114 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> _datastart, _swidth;
+<a name="l00115"></a>00115 <span class="keywordtype">bool</span> _threadsafe;
+<a name="l00116"></a>00116 <span class="comment">// Area cache</span>
+<a name="l00117"></a>00117 <span class="keyword">mutable</span> std::vector< std::vector<pixel_t> > _data;
+<a name="l00118"></a>00118 <span class="keyword">mutable</span> <span class="keywordtype">bool</span> _cache;
+<a name="l00119"></a>00119 <span class="comment">// NE corner and extent of cache</span>
+<a name="l00120"></a>00120 <span class="keyword">mutable</span> <span class="keywordtype">int</span> _xoffset, _yoffset, _xsize, _ysize;
+<a name="l00121"></a>00121 <span class="comment">// Cell cache</span>
+<a name="l00122"></a>00122 <span class="keyword">mutable</span> <span class="keywordtype">int</span> _ix, _iy;
+<a name="l00123"></a>00123 <span class="keyword">mutable</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _v00, _v01, _v10, _v11;
+<a name="l00124"></a>00124 <span class="keyword">mutable</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _t[nterms_];
+<a name="l00125"></a>00125 <span class="keywordtype">void</span> filepos(<span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> iy)<span class="keyword"> const </span>{
+<a name="l00126"></a>00126 _file.seekg(
+<a name="l00127"></a>00127 #<span class="keywordflow">if</span> !(defined(__GNUC__) && __GNUC__ < 4)
+<a name="l00128"></a>00128 <span class="comment">// g++ 3.x doesn't know about the cast to streamoff.</span>
+<a name="l00129"></a>00129 std::ios::streamoff
+<a name="l00130"></a>00130 #endif
+<a name="l00131"></a>00131 (_datastart +
+<a name="l00132"></a>00132 pixel_size_ * (<span class="keywordtype">unsigned</span>(iy)*_swidth + <span class="keywordtype">unsigned</span>(ix))));
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> rawval(<span class="keywordtype">int</span> ix, <span class="keywordtype">int</span> iy)<span class="keyword"> const </span>{
+<a name="l00135"></a>00135 <span class="keywordflow">if</span> (ix < 0)
+<a name="l00136"></a>00136 ix += _width;
+<a name="l00137"></a>00137 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ix >= _width)
+<a name="l00138"></a>00138 ix -= _width;
+<a name="l00139"></a>00139 <span class="keywordflow">if</span> (_cache && iy >= _yoffset && iy < _yoffset + _ysize &&
+<a name="l00140"></a>00140 ((ix >= _xoffset && ix < _xoffset + _xsize) ||
+<a name="l00141"></a>00141 (ix + _width >= _xoffset && ix + _width < _xoffset + _xsize))) {
+<a name="l00142"></a>00142 <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(_data[iy - _yoffset]
+<a name="l00143"></a>00143 [ix >= _xoffset ? ix - _xoffset : ix + _width - _xoffset]);
+<a name="l00144"></a>00144 } <span class="keywordflow">else</span> {
+<a name="l00145"></a>00145 <span class="keywordflow">if</span> (iy < 0 || iy >= _height) {
+<a name="l00146"></a>00146 iy = iy < 0 ? -iy : 2 * (_height - 1) - iy;
+<a name="l00147"></a>00147 ix += (ix < _width/2 ? 1 : -1) * _width/2;
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 <span class="keywordflow">try</span> {
+<a name="l00150"></a>00150 filepos(ix, iy);
+<a name="l00151"></a>00151 <span class="keywordtype">char</span> a, b;
+<a name="l00152"></a>00152 _file.get(a);
+<a name="l00153"></a>00153 _file.get(b);
+<a name="l00154"></a>00154 <span class="keywordtype">unsigned</span> r = ((<span class="keywordtype">unsigned</span> char)(a) << 8) | (<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(b);
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (pixel_size_ == 4) {
+<a name="l00156"></a>00156 _file.get(a);
+<a name="l00157"></a>00157 _file.get(b);
+<a name="l00158"></a>00158 r = (r << 16) | ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>)(a) << 8) | (<span class="keywordtype">unsigned</span> char)(b);
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(r);
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00163"></a>00163 <span class="comment">// throw GeographicErr("Error reading " + _filename + ": "</span>
+<a name="l00164"></a>00164 <span class="comment">// + e.what());</span>
+<a name="l00165"></a>00165 <span class="comment">// triggers complaints about the "binary '+'" under Visual Studio.</span>
+<a name="l00166"></a>00166 <span class="comment">// So use '+=' instead.</span>
+<a name="l00167"></a>00167 std::string err(<span class="stringliteral">"Error reading "</span>);
+<a name="l00168"></a>00168 err += _filename;
+<a name="l00169"></a>00169 err += <span class="stringliteral">": "</span>;
+<a name="l00170"></a>00170 err += e.what();
+<a name="l00171"></a>00171 <span class="keywordflow">throw</span> GeographicErr(err);
+<a name="l00172"></a>00172 }
+<a name="l00173"></a>00173 }
+<a name="l00174"></a>00174 }
+<a name="l00175"></a>00175 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> height(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> gradp,
+<a name="l00176"></a>00176 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grade, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradn) <span class="keyword">const</span>;
+<a name="l00177"></a>00177 Geoid(<span class="keyword">const</span> Geoid&); <span class="comment">// copy constructor not allowed</span>
+<a name="l00178"></a>00178 Geoid& operator=(<span class="keyword">const</span> Geoid&); <span class="comment">// copy assignment not allowed</span>
+<a name="l00179"></a>00179 <span class="keyword">public</span>:
+<a name="l00180"></a>00180 <span class="comment"></span>
+<a name="l00181"></a>00181 <span class="comment"> /**</span>
+<a name="l00182"></a>00182 <span class="comment"> * Flags indicating conversions between heights above the geoid and heights</span>
+<a name="l00183"></a>00183 <span class="comment"> * above the ellipsoid.</span>
+<a name="l00184"></a>00184 <span class="comment"> **********************************************************************/</span>
+<a name="l00185"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">00185</a> <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">convertflag</a> {<span class="comment"></span>
+<a name="l00186"></a>00186 <span class="comment"> /**</span>
+<a name="l00187"></a>00187 <span class="comment"> * The multiplier for converting from heights above the geoid to heights</span>
+<a name="l00188"></a>00188 <span class="comment"> * above the ellipsoid.</span>
+<a name="l00189"></a>00189 <span class="comment"> **********************************************************************/</span>
+<a name="l00190"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a4a1db06e9dcfa1ebb345c616151ab70d">00190</a> ELLIPSOIDTOGEOID = -1,<span class="comment"></span>
+<a name="l00191"></a>00191 <span class="comment"> /**</span>
+<a name="l00192"></a>00192 <span class="comment"> * No conversion.</span>
+<a name="l00193"></a>00193 <span class="comment"> **********************************************************************/</span>
+<a name="l00194"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a677322ba74ea5494e67478c3dc1780d5">00194</a> NONE = 0,<span class="comment"></span>
+<a name="l00195"></a>00195 <span class="comment"> /**</span>
+<a name="l00196"></a>00196 <span class="comment"> * The multiplier for converting from heights above the ellipsoid to</span>
+<a name="l00197"></a>00197 <span class="comment"> * heights above the geoid.</span>
+<a name="l00198"></a>00198 <span class="comment"> **********************************************************************/</span>
+<a name="l00199"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">00199</a> GEOIDTOELLIPSOID = 1,
+<a name="l00200"></a>00200 };
+<a name="l00201"></a>00201 <span class="comment"></span>
+<a name="l00202"></a>00202 <span class="comment"> /** \name Setting up the geoid</span>
+<a name="l00203"></a>00203 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00204"></a>00204 <span class="comment"> ///@{</span>
+<a name="l00205"></a>00205 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00206"></a>00206 <span class="comment"> * Construct a geoid.</span>
+<a name="l00207"></a>00207 <span class="comment"> *</span>
+<a name="l00208"></a>00208 <span class="comment"> * @param[in] name the name of the geoid.</span>
+<a name="l00209"></a>00209 <span class="comment"> * @param[in] path (optional) directory for data file.</span>
+<a name="l00210"></a>00210 <span class="comment"> * @param[in] cubic (optional) interpolation method; false means bilinear,</span>
+<a name="l00211"></a>00211 <span class="comment"> * true (the default) means cubic.</span>
+<a name="l00212"></a>00212 <span class="comment"> * @param[in] threadsafe (optional), if true, construct a thread safe</span>
+<a name="l00213"></a>00213 <span class="comment"> * object. The default is false</span>
+<a name="l00214"></a>00214 <span class="comment"> *</span>
+<a name="l00215"></a>00215 <span class="comment"> * The data file is formed by appending ".pgm" to the name. If \e path is</span>
+<a name="l00216"></a>00216 <span class="comment"> * specified (and is non-empty), then the file is loaded from directory, \e</span>
+<a name="l00217"></a>00217 <span class="comment"> * path. Otherwise the path is given by DefaultGeoidPath(). This may</span>
+<a name="l00218"></a>00218 <span class="comment"> * throw an exception because the file does not exist, is unreadable, or is</span>
+<a name="l00219"></a>00219 <span class="comment"> * corrupt. If the \e threadsafe parameter is true, the data set is read</span>
+<a name="l00220"></a>00220 <span class="comment"> * into memory (which this may also cause an exception to be thrown), the</span>
+<a name="l00221"></a>00221 <span class="comment"> * data file is closed, and single-cell caching is turned off; this results</span>
+<a name="l00222"></a>00222 <span class="comment"> * in a Geoid object which \e is thread safe.</span>
+<a name="l00223"></a>00223 <span class="comment"> **********************************************************************/</span>
+<a name="l00224"></a>00224 <span class="keyword">explicit</span> Geoid(<span class="keyword">const</span> std::string& name, <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>,
+<a name="l00225"></a>00225 <span class="keywordtype">bool</span> cubic = <span class="keyword">true</span>, <span class="keywordtype">bool</span> threadsafe = <span class="keyword">false</span>);
+<a name="l00226"></a>00226 <span class="comment"></span>
+<a name="l00227"></a>00227 <span class="comment"> /**</span>
+<a name="l00228"></a>00228 <span class="comment"> * Set up a cache.</span>
+<a name="l00229"></a>00229 <span class="comment"> *</span>
+<a name="l00230"></a>00230 <span class="comment"> * @param[in] south latitude (degrees) of the south edge of the cached area.</span>
+<a name="l00231"></a>00231 <span class="comment"> * @param[in] west longitude (degrees) of the west edge of the cached area.</span>
+<a name="l00232"></a>00232 <span class="comment"> * @param[in] north latitude (degrees) of the north edge of the cached area.</span>
+<a name="l00233"></a>00233 <span class="comment"> * @param[in] east longitude (degrees) of the east edge of the cached area.</span>
+<a name="l00234"></a>00234 <span class="comment"> *</span>
+<a name="l00235"></a>00235 <span class="comment"> * Cache the data for the specified "rectangular" area bounded by the</span>
+<a name="l00236"></a>00236 <span class="comment"> * parallels \e south and \e north and the meridians \e west and \e east.</span>
+<a name="l00237"></a>00237 <span class="comment"> * \e east is always interpreted as being east of \e west, if necessary by</span>
+<a name="l00238"></a>00238 <span class="comment"> * adding 360<sup>o</sup> to its value. This may throw an error because of</span>
+<a name="l00239"></a>00239 <span class="comment"> * insufficient memory or because of an error reading the data from the</span>
+<a name="l00240"></a>00240 <span class="comment"> * file. In this case, you can catch the error and either do nothing (you</span>
+<a name="l00241"></a>00241 <span class="comment"> * will have no cache in this case) or try again with a smaller area. \e</span>
+<a name="l00242"></a>00242 <span class="comment"> * south and \e north should be in the range [-90, 90]; \e west and \e east</span>
+<a name="l00243"></a>00243 <span class="comment"> * should be in the range [-180, 360]. An exception is thrown if this</span>
+<a name="l00244"></a>00244 <span class="comment"> * routine is called on a thread safe Geoid.</span>
+<a name="l00245"></a>00245 <span class="comment"> **********************************************************************/</span>
+<a name="l00246"></a>00246 <span class="keywordtype">void</span> CacheArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> south, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> west, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> north, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> east) <span class="keyword">const</span>;
+<a name="l00247"></a>00247 <span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment"> /**</span>
+<a name="l00249"></a>00249 <span class="comment"> * Cache all the data. On most computers, this is fast for data sets with</span>
+<a name="l00250"></a>00250 <span class="comment"> * grid resolution of 5' or coarser. For a 1' grid, the required RAM is</span>
+<a name="l00251"></a>00251 <span class="comment"> * 450MB; a 2.5' grid needs 72MB; and a 5' grid needs 18MB. This may throw</span>
+<a name="l00252"></a>00252 <span class="comment"> * an error because of insufficient memory or because of an error reading</span>
+<a name="l00253"></a>00253 <span class="comment"> * the data from the file. In this case, you can catch the error and</span>
+<a name="l00254"></a>00254 <span class="comment"> * either do nothing (you will have no cache in this case) or try using</span>
+<a name="l00255"></a>00255 <span class="comment"> * Geoid::CacheArea on a specific area. An exception is thrown if this</span>
+<a name="l00256"></a>00256 <span class="comment"> * routine is called on a thread safe Geoid.</span>
+<a name="l00257"></a>00257 <span class="comment"> **********************************************************************/</span>
+<a name="l00258"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">00258</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a482c6482d5ab4c5d661210327848170e">CacheAll</a>()<span class="keyword"> const </span>{ CacheArea(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(-90), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
+<a name="l00259"></a>00259 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(90), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(360)); }
+<a name="l00260"></a>00260 <span class="comment"></span>
+<a name="l00261"></a>00261 <span class="comment"> /**</span>
+<a name="l00262"></a>00262 <span class="comment"> * Clear the cache. This never throws an error. (This does nothing with a</span>
+<a name="l00263"></a>00263 <span class="comment"> * thread safe Geoid.)</span>
+<a name="l00264"></a>00264 <span class="comment"> **********************************************************************/</span>
+<a name="l00265"></a>00265 <span class="keywordtype">void</span> CacheClear() <span class="keyword">const</span> throw();
+<a name="l00266"></a>00266 <span class="comment"></span>
+<a name="l00267"></a>00267 <span class="comment"> ///@}</span>
+<a name="l00268"></a>00268 <span class="comment"></span><span class="comment"></span>
+<a name="l00269"></a>00269 <span class="comment"> /** \name Compute geoid heights</span>
+<a name="l00270"></a>00270 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00271"></a>00271 <span class="comment"> ///@{</span>
+<a name="l00272"></a>00272 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00273"></a>00273 <span class="comment"> * Compute the geoid height at a point</span>
+<a name="l00274"></a>00274 <span class="comment"> *</span>
+<a name="l00275"></a>00275 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00276"></a>00276 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00277"></a>00277 <span class="comment"> * @return geoid height (meters).</span>
+<a name="l00278"></a>00278 <span class="comment"> *</span>
+<a name="l00279"></a>00279 <span class="comment"> * The latitude should be in [-90, 90] and longitude should be in</span>
+<a name="l00280"></a>00280 <span class="comment"> * [-180,360]. This may throw an error because of an error reading data</span>
+<a name="l00281"></a>00281 <span class="comment"> * from disk. However, it will not throw if (\e lat, \e lon) is within a</span>
+<a name="l00282"></a>00282 <span class="comment"> * successfully cached area.</span>
+<a name="l00283"></a>00283 <span class="comment"> **********************************************************************/</span>
+<a name="l00284"></a><a class="code" href="classGeographicLib_1_1Geoid.html#accb63bfbbadae10af79b3a3028a3045a">00284</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real lat, real lon)<span class="keyword"> const </span>{
+<a name="l00285"></a>00285 real gradn, grade;
+<a name="l00286"></a>00286 <span class="keywordflow">return</span> height(lat, lon, <span class="keyword">false</span>, gradn, grade);
+<a name="l00287"></a>00287 }
+<a name="l00288"></a>00288 <span class="comment"></span>
+<a name="l00289"></a>00289 <span class="comment"> /**</span>
+<a name="l00290"></a>00290 <span class="comment"> * Compute the geoid height and gradient at a point</span>
+<a name="l00291"></a>00291 <span class="comment"> *</span>
+<a name="l00292"></a>00292 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00293"></a>00293 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00294"></a>00294 <span class="comment"> * @param[out] gradn northerly gradient (dimensionless).</span>
+<a name="l00295"></a>00295 <span class="comment"> * @param[out] grade easterly gradient (dimensionless).</span>
+<a name="l00296"></a>00296 <span class="comment"> * @return geoid height (meters).</span>
+<a name="l00297"></a>00297 <span class="comment"> *</span>
+<a name="l00298"></a>00298 <span class="comment"> * The latitude should be in [-90, 90] and longitude should be in [-180,</span>
+<a name="l00299"></a>00299 <span class="comment"> * 360]. This may throw an error because of an error reading data from</span>
+<a name="l00300"></a>00300 <span class="comment"> * disk. However, it will not throw if (\e lat, \e lon) is within a</span>
+<a name="l00301"></a>00301 <span class="comment"> * successfully cached area. As a result of the way that the geoid data is</span>
+<a name="l00302"></a>00302 <span class="comment"> * stored, the calculation of gradients can result in large quantization</span>
+<a name="l00303"></a>00303 <span class="comment"> * errors. This is particularly acute for fine grids, at high latitudes,</span>
+<a name="l00304"></a>00304 <span class="comment"> * and for the easterly gradient. If you need to compute the direction of</span>
+<a name="l00305"></a>00305 <span class="comment"> * the acceleration due to gravity accurately, you should use</span>
+<a name="l00306"></a>00306 <span class="comment"> * GravityModel::Gravity.</span>
+<a name="l00307"></a>00307 <span class="comment"> **********************************************************************/</span>
+<a name="l00308"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">00308</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">operator()</a>(real lat, real lon, real& gradn, real& grade)<span class="keyword"> const </span>{
+<a name="l00309"></a>00309 <span class="keywordflow">return</span> height(lat, lon, <span class="keyword">true</span>, gradn, grade);
+<a name="l00310"></a>00310 }
<a name="l00311"></a>00311 <span class="comment"></span>
<a name="l00312"></a>00312 <span class="comment"> /**</span>
-<a name="l00313"></a>00313 <span class="comment"> * @return full file name used to load the geoid data.</span>
-<a name="l00314"></a>00314 <span class="comment"> **********************************************************************/</span>
-<a name="l00315"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">00315</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">GeoidFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
-<a name="l00316"></a>00316 <span class="comment"></span>
-<a name="l00317"></a>00317 <span class="comment"> /**</span>
-<a name="l00318"></a>00318 <span class="comment"> * @return "name" used to load the geoid data (from the first argument of</span>
-<a name="l00319"></a>00319 <span class="comment"> * the constructor).</span>
-<a name="l00320"></a>00320 <span class="comment"> **********************************************************************/</span>
-<a name="l00321"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">00321</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">GeoidName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
-<a name="l00322"></a>00322 <span class="comment"></span>
-<a name="l00323"></a>00323 <span class="comment"> /**</span>
-<a name="l00324"></a>00324 <span class="comment"> * @return directory used to load the geoid data.</span>
-<a name="l00325"></a>00325 <span class="comment"> **********************************************************************/</span>
-<a name="l00326"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a83b17b17045c49984bcdd032e637155e">00326</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a83b17b17045c49984bcdd032e637155e">GeoidDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
-<a name="l00327"></a>00327 <span class="comment"></span>
-<a name="l00328"></a>00328 <span class="comment"> /**</span>
-<a name="l00329"></a>00329 <span class="comment"> * @return interpolation method ("cubic" or "bilinear").</span>
-<a name="l00330"></a>00330 <span class="comment"> **********************************************************************/</span>
-<a name="l00331"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">00331</a> <span class="keyword">const</span> std::string Interpolation()<span class="keyword"> const</span>
-<a name="l00332"></a>00332 <span class="keyword"> </span>{ <span class="keywordflow">return</span> std::string(_cubic ? <span class="stringliteral">"cubic"</span> : <span class="stringliteral">"bilinear"</span>); }
-<a name="l00333"></a>00333 <span class="comment"></span>
-<a name="l00334"></a>00334 <span class="comment"> /**</span>
-<a name="l00335"></a>00335 <span class="comment"> * @return estimate of the maximum interpolation and quantization error</span>
-<a name="l00336"></a>00336 <span class="comment"> * (meters).</span>
-<a name="l00337"></a>00337 <span class="comment"> *</span>
-<a name="l00338"></a>00338 <span class="comment"> * This relies on the value being stored in the data file. If the value is</span>
-<a name="l00339"></a>00339 <span class="comment"> * absent, return -1.</span>
-<a name="l00340"></a>00340 <span class="comment"> **********************************************************************/</span>
-<a name="l00341"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">00341</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _maxerror; }
-<a name="l00342"></a>00342 <span class="comment"></span>
-<a name="l00343"></a>00343 <span class="comment"> /**</span>
-<a name="l00344"></a>00344 <span class="comment"> * @return estimate of the RMS interpolation and quantization error</span>
-<a name="l00345"></a>00345 <span class="comment"> * (meters).</span>
-<a name="l00346"></a>00346 <span class="comment"> *</span>
-<a name="l00347"></a>00347 <span class="comment"> * This relies on the value being stored in the data file. If the value is</span>
-<a name="l00348"></a>00348 <span class="comment"> * absent, return -1.</span>
+<a name="l00313"></a>00313 <span class="comment"> * Convert a height above the geoid to a height above the ellipsoid and</span>
+<a name="l00314"></a>00314 <span class="comment"> * vice versa.</span>
+<a name="l00315"></a>00315 <span class="comment"> *</span>
+<a name="l00316"></a>00316 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00317"></a>00317 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00318"></a>00318 <span class="comment"> * @param[in] h height of the point (degrees).</span>
+<a name="l00319"></a>00319 <span class="comment"> * @param[in] d a Geoid::convertflag specifying the direction of the</span>
+<a name="l00320"></a>00320 <span class="comment"> * conversion; Geoid::GEOIDTOELLIPSOID means convert a height above the</span>
+<a name="l00321"></a>00321 <span class="comment"> * geoid to a height above the ellipsoid; Geoid::ELLIPSOIDTOGEOID means</span>
+<a name="l00322"></a>00322 <span class="comment"> * convert a height above the ellipsoid to a height above the geoid.</span>
+<a name="l00323"></a>00323 <span class="comment"> * @return converted height (meters).</span>
+<a name="l00324"></a>00324 <span class="comment"> **********************************************************************/</span>
+<a name="l00325"></a><a class="code" href="classGeographicLib_1_1Geoid.html#adf98d0f0d881893a4f5ff711a3be0e04">00325</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real ConvertHeight(real lat, real lon, real h,
+<a name="l00326"></a>00326 <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96">convertflag</a> d)<span class="keyword"> const </span>{
+<a name="l00327"></a>00327 real gradn, grade;
+<a name="l00328"></a>00328 <span class="keywordflow">return</span> h + <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(d) * height(lat, lon, <span class="keyword">true</span>, gradn, grade);
+<a name="l00329"></a>00329 }
+<a name="l00330"></a>00330 <span class="comment"></span>
+<a name="l00331"></a>00331 <span class="comment"> ///@}</span>
+<a name="l00332"></a>00332 <span class="comment"></span><span class="comment"></span>
+<a name="l00333"></a>00333 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00334"></a>00334 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00335"></a>00335 <span class="comment"> ///@{</span>
+<a name="l00336"></a>00336 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00337"></a>00337 <span class="comment"> * @return geoid description, if available, in the data file; if</span>
+<a name="l00338"></a>00338 <span class="comment"> * absent, return "NONE".</span>
+<a name="l00339"></a>00339 <span class="comment"> **********************************************************************/</span>
+<a name="l00340"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">00340</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
+<a name="l00341"></a>00341 <span class="comment"></span>
+<a name="l00342"></a>00342 <span class="comment"> /**</span>
+<a name="l00343"></a>00343 <span class="comment"> * @return date of the data file; if absent, return "UNKNOWN".</span>
+<a name="l00344"></a>00344 <span class="comment"> **********************************************************************/</span>
+<a name="l00345"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">00345</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a9cd7304b5df37001f4ad3c91cdbc56f4">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _datetime; }
+<a name="l00346"></a>00346 <span class="comment"></span>
+<a name="l00347"></a>00347 <span class="comment"> /**</span>
+<a name="l00348"></a>00348 <span class="comment"> * @return full file name used to load the geoid data.</span>
<a name="l00349"></a>00349 <span class="comment"> **********************************************************************/</span>
-<a name="l00350"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">00350</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">RMSError</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _rmserror; }
+<a name="l00350"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">00350</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a07e5f704f2684ce5acf824b7e0b17d30">GeoidFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
<a name="l00351"></a>00351 <span class="comment"></span>
<a name="l00352"></a>00352 <span class="comment"> /**</span>
-<a name="l00353"></a>00353 <span class="comment"> * @return offset (meters).</span>
-<a name="l00354"></a>00354 <span class="comment"> *</span>
-<a name="l00355"></a>00355 <span class="comment"> * This in used in converting from the pixel values in the data file to</span>
-<a name="l00356"></a>00356 <span class="comment"> * geoid heights.</span>
-<a name="l00357"></a>00357 <span class="comment"> **********************************************************************/</span>
-<a name="l00358"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">00358</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">Offset</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _offset; }
-<a name="l00359"></a>00359 <span class="comment"></span>
-<a name="l00360"></a>00360 <span class="comment"> /**</span>
-<a name="l00361"></a>00361 <span class="comment"> * @return scale (meters).</span>
-<a name="l00362"></a>00362 <span class="comment"> *</span>
-<a name="l00363"></a>00363 <span class="comment"> * This in used in converting from the pixel values in the data file to</span>
-<a name="l00364"></a>00364 <span class="comment"> * geoid heights.</span>
+<a name="l00353"></a>00353 <span class="comment"> * @return "name" used to load the geoid data (from the first argument of</span>
+<a name="l00354"></a>00354 <span class="comment"> * the constructor).</span>
+<a name="l00355"></a>00355 <span class="comment"> **********************************************************************/</span>
+<a name="l00356"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">00356</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">GeoidName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
+<a name="l00357"></a>00357 <span class="comment"></span>
+<a name="l00358"></a>00358 <span class="comment"> /**</span>
+<a name="l00359"></a>00359 <span class="comment"> * @return directory used to load the geoid data.</span>
+<a name="l00360"></a>00360 <span class="comment"> **********************************************************************/</span>
+<a name="l00361"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a83b17b17045c49984bcdd032e637155e">00361</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1Geoid.html#a83b17b17045c49984bcdd032e637155e">GeoidDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
+<a name="l00362"></a>00362 <span class="comment"></span>
+<a name="l00363"></a>00363 <span class="comment"> /**</span>
+<a name="l00364"></a>00364 <span class="comment"> * @return interpolation method ("cubic" or "bilinear").</span>
<a name="l00365"></a>00365 <span class="comment"> **********************************************************************/</span>
-<a name="l00366"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">00366</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _scale; }
-<a name="l00367"></a>00367 <span class="comment"></span>
-<a name="l00368"></a>00368 <span class="comment"> /**</span>
-<a name="l00369"></a>00369 <span class="comment"> * @return true if the object is constructed to be thread safe.</span>
-<a name="l00370"></a>00370 <span class="comment"> **********************************************************************/</span>
-<a name="l00371"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">00371</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">ThreadSafe</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _threadsafe; }
-<a name="l00372"></a>00372 <span class="comment"></span>
-<a name="l00373"></a>00373 <span class="comment"> /**</span>
-<a name="l00374"></a>00374 <span class="comment"> * @return true if a data cache is active.</span>
+<a name="l00366"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">00366</a> <span class="keyword">const</span> std::string Interpolation()<span class="keyword"> const</span>
+<a name="l00367"></a>00367 <span class="keyword"> </span>{ <span class="keywordflow">return</span> std::string(_cubic ? <span class="stringliteral">"cubic"</span> : <span class="stringliteral">"bilinear"</span>); }
+<a name="l00368"></a>00368 <span class="comment"></span>
+<a name="l00369"></a>00369 <span class="comment"> /**</span>
+<a name="l00370"></a>00370 <span class="comment"> * @return estimate of the maximum interpolation and quantization error</span>
+<a name="l00371"></a>00371 <span class="comment"> * (meters).</span>
+<a name="l00372"></a>00372 <span class="comment"> *</span>
+<a name="l00373"></a>00373 <span class="comment"> * This relies on the value being stored in the data file. If the value is</span>
+<a name="l00374"></a>00374 <span class="comment"> * absent, return -1.</span>
<a name="l00375"></a>00375 <span class="comment"> **********************************************************************/</span>
-<a name="l00376"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">00376</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">Cache</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _cache; }
+<a name="l00376"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">00376</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _maxerror; }
<a name="l00377"></a>00377 <span class="comment"></span>
<a name="l00378"></a>00378 <span class="comment"> /**</span>
-<a name="l00379"></a>00379 <span class="comment"> * @return west edge of the cached area; the cache includes this edge.</span>
-<a name="l00380"></a>00380 <span class="comment"> **********************************************************************/</span>
-<a name="l00381"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">00381</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">CacheWest</a>() <span class="keyword">const</span> throw() {
-<a name="l00382"></a>00382 <span class="keywordflow">return</span> _cache ? ((_xoffset + (_xsize == _width ? 0 : _cubic)
-<a name="l00383"></a>00383 + _width/2) % _width - _width/2) / _rlonres :
-<a name="l00384"></a>00384 0;
-<a name="l00385"></a>00385 }
+<a name="l00379"></a>00379 <span class="comment"> * @return estimate of the RMS interpolation and quantization error</span>
+<a name="l00380"></a>00380 <span class="comment"> * (meters).</span>
+<a name="l00381"></a>00381 <span class="comment"> *</span>
+<a name="l00382"></a>00382 <span class="comment"> * This relies on the value being stored in the data file. If the value is</span>
+<a name="l00383"></a>00383 <span class="comment"> * absent, return -1.</span>
+<a name="l00384"></a>00384 <span class="comment"> **********************************************************************/</span>
+<a name="l00385"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">00385</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#a207f98316d20a5b9d47846e559c5e2a2">RMSError</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _rmserror; }
<a name="l00386"></a>00386 <span class="comment"></span>
<a name="l00387"></a>00387 <span class="comment"> /**</span>
-<a name="l00388"></a>00388 <span class="comment"> * @return east edge of the cached area; the cache excludes this edge.</span>
-<a name="l00389"></a>00389 <span class="comment"> **********************************************************************/</span>
-<a name="l00390"></a><a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">00390</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">CacheEast</a>() <span class="keyword">const</span> throw() {
-<a name="l00391"></a>00391 <span class="keywordflow">return</span> _cache ?
-<a name="l00392"></a>00392 CacheWest() +
-<a name="l00393"></a>00393 (_xsize - (_xsize == _width ? 0 : 1 + 2 * _cubic)) / _rlonres :
-<a name="l00394"></a>00394 0;
-<a name="l00395"></a>00395 }
-<a name="l00396"></a>00396 <span class="comment"></span>
-<a name="l00397"></a>00397 <span class="comment"> /**</span>
-<a name="l00398"></a>00398 <span class="comment"> * @return north edge of the cached area; the cache includes this edge.</span>
-<a name="l00399"></a>00399 <span class="comment"> **********************************************************************/</span>
-<a name="l00400"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">00400</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">CacheNorth</a>() <span class="keyword">const</span> throw() {
-<a name="l00401"></a>00401 <span class="keywordflow">return</span> _cache ? 90 - (_yoffset + _cubic) / _rlatres : 0;
-<a name="l00402"></a>00402 }
-<a name="l00403"></a>00403 <span class="comment"></span>
-<a name="l00404"></a>00404 <span class="comment"> /**</span>
-<a name="l00405"></a>00405 <span class="comment"> * @return south edge of the cached area; the cache excludes this edge</span>
-<a name="l00406"></a>00406 <span class="comment"> * unless it's the south pole.</span>
-<a name="l00407"></a>00407 <span class="comment"> **********************************************************************/</span>
-<a name="l00408"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">00408</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a>() <span class="keyword">const</span> throw() {
-<a name="l00409"></a>00409 <span class="keywordflow">return</span> _cache ? 90 - ( _yoffset + _ysize - 1 - _cubic) / _rlatres : 0;
-<a name="l00410"></a>00410 }
-<a name="l00411"></a>00411 <span class="comment"></span>
-<a name="l00412"></a>00412 <span class="comment"> /**</span>
-<a name="l00413"></a>00413 <span class="comment"> * @return \e a the equatorial radius of the WGS84 ellipsoid (meters).</span>
-<a name="l00414"></a>00414 <span class="comment"> *</span>
-<a name="l00415"></a>00415 <span class="comment"> * (The WGS84 value is returned because the supported geoid models are all</span>
-<a name="l00416"></a>00416 <span class="comment"> * based on this ellipsoid.)</span>
-<a name="l00417"></a>00417 <span class="comment"> **********************************************************************/</span>
-<a name="l00418"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aada99465d9ddfc1b34ccf2ef3d86dbd7">00418</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00419"></a>00419 { <span class="keywordflow">return</span> Constants::WGS84_a<real>(); }
-<a name="l00420"></a>00420 <span class="comment"></span>
-<a name="l00421"></a>00421 <span class="comment"> /**</span>
-<a name="l00422"></a>00422 <span class="comment"> * @return \e f the flattening of the WGS84 ellipsoid.</span>
-<a name="l00423"></a>00423 <span class="comment"> *</span>
-<a name="l00424"></a>00424 <span class="comment"> * (The WGS84 value is returned because the supported geoid models are all</span>
-<a name="l00425"></a>00425 <span class="comment"> * based on this ellipsoid.)</span>
-<a name="l00426"></a>00426 <span class="comment"> **********************************************************************/</span>
-<a name="l00427"></a><a class="code" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">00427</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> Constants::WGS84_f<real>(); }
-<a name="l00428"></a>00428 <span class="comment"></span>
-<a name="l00429"></a>00429 <span class="comment"> /**</span>
-<a name="l00430"></a>00430 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00431"></a>00431 <span class="comment"> * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
-<a name="l00432"></a>00432 <span class="comment"> **********************************************************************/</span>
-<a name="l00433"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">00433</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00434"></a>00434 { <span class="keywordflow">return</span> 1/Constants::WGS84_f<real>(); }<span class="comment"></span>
-<a name="l00435"></a>00435 <span class="comment"> ///@}</span>
-<a name="l00436"></a>00436 <span class="comment"></span><span class="comment"></span>
-<a name="l00437"></a>00437 <span class="comment"> /**</span>
-<a name="l00438"></a>00438 <span class="comment"> * @return the default path for geoid data files.</span>
-<a name="l00439"></a>00439 <span class="comment"> *</span>
-<a name="l00440"></a>00440 <span class="comment"> * This is the value of the environment variable GEOID_PATH, if set;</span>
-<a name="l00441"></a>00441 <span class="comment"> * otherwise, it is $GEOGRAPHICLIB_DATA/geoids if the environment variable</span>
-<a name="l00442"></a>00442 <span class="comment"> * GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time default</span>
-<a name="l00443"></a>00443 <span class="comment"> * (/usr/local/share/GeographicLib/geoids on non-Windows systems and</span>
-<a name="l00444"></a>00444 <span class="comment"> * C:/Documents and Settings/All Users/Application</span>
-<a name="l00445"></a>00445 <span class="comment"> * Data/GeographicLib/geoids on Windows systems).</span>
-<a name="l00446"></a>00446 <span class="comment"> **********************************************************************/</span>
-<a name="l00447"></a>00447 <span class="keyword">static</span> std::string DefaultGeoidPath();
-<a name="l00448"></a>00448 <span class="comment"></span>
-<a name="l00449"></a>00449 <span class="comment"> /**</span>
-<a name="l00450"></a>00450 <span class="comment"> * @return the default name for the geoid.</span>
-<a name="l00451"></a>00451 <span class="comment"> *</span>
-<a name="l00452"></a>00452 <span class="comment"> * This is the value of the environment variable GEOID_NAME, if set,</span>
-<a name="l00453"></a>00453 <span class="comment"> * otherwise, it is "egm96-5". The Geoid class does not use this function;</span>
-<a name="l00454"></a>00454 <span class="comment"> * it is just provided as a convenience for a calling program when</span>
-<a name="l00455"></a>00455 <span class="comment"> * constructing a Geoid object.</span>
-<a name="l00456"></a>00456 <span class="comment"> **********************************************************************/</span>
-<a name="l00457"></a>00457 <span class="keyword">static</span> std::string DefaultGeoidName();
-<a name="l00458"></a>00458
-<a name="l00459"></a>00459 };
-<a name="l00460"></a>00460
-<a name="l00461"></a>00461 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00462"></a>00462
-<a name="l00463"></a>00463 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00464"></a>00464 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00465"></a>00465 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00466"></a>00466 <span class="preprocessor"></span>
-<a name="l00467"></a>00467 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEOID_HPP</span>
+<a name="l00388"></a>00388 <span class="comment"> * @return offset (meters).</span>
+<a name="l00389"></a>00389 <span class="comment"> *</span>
+<a name="l00390"></a>00390 <span class="comment"> * This in used in converting from the pixel values in the data file to</span>
+<a name="l00391"></a>00391 <span class="comment"> * geoid heights.</span>
+<a name="l00392"></a>00392 <span class="comment"> **********************************************************************/</span>
+<a name="l00393"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">00393</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">Offset</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _offset; }
+<a name="l00394"></a>00394 <span class="comment"></span>
+<a name="l00395"></a>00395 <span class="comment"> /**</span>
+<a name="l00396"></a>00396 <span class="comment"> * @return scale (meters).</span>
+<a name="l00397"></a>00397 <span class="comment"> *</span>
+<a name="l00398"></a>00398 <span class="comment"> * This in used in converting from the pixel values in the data file to</span>
+<a name="l00399"></a>00399 <span class="comment"> * geoid heights.</span>
+<a name="l00400"></a>00400 <span class="comment"> **********************************************************************/</span>
+<a name="l00401"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">00401</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _scale; }
+<a name="l00402"></a>00402 <span class="comment"></span>
+<a name="l00403"></a>00403 <span class="comment"> /**</span>
+<a name="l00404"></a>00404 <span class="comment"> * @return true if the object is constructed to be thread safe.</span>
+<a name="l00405"></a>00405 <span class="comment"> **********************************************************************/</span>
+<a name="l00406"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">00406</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">ThreadSafe</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _threadsafe; }
+<a name="l00407"></a>00407 <span class="comment"></span>
+<a name="l00408"></a>00408 <span class="comment"> /**</span>
+<a name="l00409"></a>00409 <span class="comment"> * @return true if a data cache is active.</span>
+<a name="l00410"></a>00410 <span class="comment"> **********************************************************************/</span>
+<a name="l00411"></a><a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">00411</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Geoid.html#ade5715c0d1428a409383b1acd2cbe9be">Cache</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _cache; }
+<a name="l00412"></a>00412 <span class="comment"></span>
+<a name="l00413"></a>00413 <span class="comment"> /**</span>
+<a name="l00414"></a>00414 <span class="comment"> * @return west edge of the cached area; the cache includes this edge.</span>
+<a name="l00415"></a>00415 <span class="comment"> **********************************************************************/</span>
+<a name="l00416"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">00416</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#aa0d2e119f089ee4182987ddd3faaf62a">CacheWest</a>() <span class="keyword">const</span> throw() {
+<a name="l00417"></a>00417 <span class="keywordflow">return</span> _cache ? ((_xoffset + (_xsize == _width ? 0 : _cubic)
+<a name="l00418"></a>00418 + _width/2) % _width - _width/2) / _rlonres :
+<a name="l00419"></a>00419 0;
+<a name="l00420"></a>00420 }
+<a name="l00421"></a>00421 <span class="comment"></span>
+<a name="l00422"></a>00422 <span class="comment"> /**</span>
+<a name="l00423"></a>00423 <span class="comment"> * @return east edge of the cached area; the cache excludes this edge.</span>
+<a name="l00424"></a>00424 <span class="comment"> **********************************************************************/</span>
+<a name="l00425"></a><a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">00425</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#acb34cfbcfb8be2794b16a3d18209dbbe">CacheEast</a>() <span class="keyword">const</span> throw() {
+<a name="l00426"></a>00426 <span class="keywordflow">return</span> _cache ?
+<a name="l00427"></a>00427 CacheWest() +
+<a name="l00428"></a>00428 (_xsize - (_xsize == _width ? 0 : 1 + 2 * _cubic)) / _rlonres :
+<a name="l00429"></a>00429 0;
+<a name="l00430"></a>00430 }
+<a name="l00431"></a>00431 <span class="comment"></span>
+<a name="l00432"></a>00432 <span class="comment"> /**</span>
+<a name="l00433"></a>00433 <span class="comment"> * @return north edge of the cached area; the cache includes this edge.</span>
+<a name="l00434"></a>00434 <span class="comment"> **********************************************************************/</span>
+<a name="l00435"></a><a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">00435</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#a26742332938bb8f22be23c979ffb02a1">CacheNorth</a>() <span class="keyword">const</span> throw() {
+<a name="l00436"></a>00436 <span class="keywordflow">return</span> _cache ? 90 - (_yoffset + _cubic) / _rlatres : 0;
+<a name="l00437"></a>00437 }
+<a name="l00438"></a>00438 <span class="comment"></span>
+<a name="l00439"></a>00439 <span class="comment"> /**</span>
+<a name="l00440"></a>00440 <span class="comment"> * @return south edge of the cached area; the cache excludes this edge</span>
+<a name="l00441"></a>00441 <span class="comment"> * unless it's the south pole.</span>
+<a name="l00442"></a>00442 <span class="comment"> **********************************************************************/</span>
+<a name="l00443"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">00443</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a>() <span class="keyword">const</span> throw() {
+<a name="l00444"></a>00444 <span class="keywordflow">return</span> _cache ? 90 - ( _yoffset + _ysize - 1 - _cubic) / _rlatres : 0;
+<a name="l00445"></a>00445 }
+<a name="l00446"></a>00446 <span class="comment"></span>
+<a name="l00447"></a>00447 <span class="comment"> /**</span>
+<a name="l00448"></a>00448 <span class="comment"> * @return \e a the equatorial radius of the WGS84 ellipsoid (meters).</span>
+<a name="l00449"></a>00449 <span class="comment"> *</span>
+<a name="l00450"></a>00450 <span class="comment"> * (The WGS84 value is returned because the supported geoid models are all</span>
+<a name="l00451"></a>00451 <span class="comment"> * based on this ellipsoid.)</span>
+<a name="l00452"></a>00452 <span class="comment"> **********************************************************************/</span>
+<a name="l00453"></a><a class="code" href="classGeographicLib_1_1Geoid.html#aada99465d9ddfc1b34ccf2ef3d86dbd7">00453</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00454"></a>00454 { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(); }
+<a name="l00455"></a>00455 <span class="comment"></span>
+<a name="l00456"></a>00456 <span class="comment"> /**</span>
+<a name="l00457"></a>00457 <span class="comment"> * @return \e f the flattening of the WGS84 ellipsoid.</span>
+<a name="l00458"></a>00458 <span class="comment"> *</span>
+<a name="l00459"></a>00459 <span class="comment"> * (The WGS84 value is returned because the supported geoid models are all</span>
+<a name="l00460"></a>00460 <span class="comment"> * based on this ellipsoid.)</span>
+<a name="l00461"></a>00461 <span class="comment"> **********************************************************************/</span>
+<a name="l00462"></a><a class="code" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">00462</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Const [...]
+<a name="l00463"></a>00463 <span class="comment"> ///@}</span>
+<a name="l00464"></a>00464 <span class="comment"></span><span class="comment"></span>
+<a name="l00465"></a>00465 <span class="comment"> /// \cond SKIP</span>
+<a name="l00466"></a>00466 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00467"></a>00467 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00468"></a>00468 <span class="comment"> * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
+<a name="l00469"></a>00469 <span class="comment"> **********************************************************************/</span>
+<a name="l00470"></a>00470 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00471"></a>00471 { <span class="keywordflow">return</span> 1/<a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>(); }<span class="comment"></span>
+<a name="l00472"></a>00472 <span class="comment"> /// \endcond</span>
+<a name="l00473"></a>00473 <span class="comment"></span><span class="comment"></span>
+<a name="l00474"></a>00474 <span class="comment"> /**</span>
+<a name="l00475"></a>00475 <span class="comment"> * @return the default path for geoid data files.</span>
+<a name="l00476"></a>00476 <span class="comment"> *</span>
+<a name="l00477"></a>00477 <span class="comment"> * This is the value of the environment variable GEOID_PATH, if set;</span>
+<a name="l00478"></a>00478 <span class="comment"> * otherwise, it is $GEOGRAPHICLIB_DATA/geoids if the environment variable</span>
+<a name="l00479"></a>00479 <span class="comment"> * GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time default</span>
+<a name="l00480"></a>00480 <span class="comment"> * (/usr/local/share/GeographicLib/geoids on non-Windows systems and</span>
+<a name="l00481"></a>00481 <span class="comment"> * C:/Documents and Settings/All Users/Application</span>
+<a name="l00482"></a>00482 <span class="comment"> * Data/GeographicLib/geoids on Windows systems).</span>
+<a name="l00483"></a>00483 <span class="comment"> **********************************************************************/</span>
+<a name="l00484"></a>00484 <span class="keyword">static</span> std::string DefaultGeoidPath();
+<a name="l00485"></a>00485 <span class="comment"></span>
+<a name="l00486"></a>00486 <span class="comment"> /**</span>
+<a name="l00487"></a>00487 <span class="comment"> * @return the default name for the geoid.</span>
+<a name="l00488"></a>00488 <span class="comment"> *</span>
+<a name="l00489"></a>00489 <span class="comment"> * This is the value of the environment variable GEOID_NAME, if set,</span>
+<a name="l00490"></a>00490 <span class="comment"> * otherwise, it is "egm96-5". The Geoid class does not use this function;</span>
+<a name="l00491"></a>00491 <span class="comment"> * it is just provided as a convenience for a calling program when</span>
+<a name="l00492"></a>00492 <span class="comment"> * constructing a Geoid object.</span>
+<a name="l00493"></a>00493 <span class="comment"> **********************************************************************/</span>
+<a name="l00494"></a>00494 <span class="keyword">static</span> std::string DefaultGeoidName();
+<a name="l00495"></a>00495
+<a name="l00496"></a>00496 };
+<a name="l00497"></a>00497
+<a name="l00498"></a>00498 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00499"></a>00499
+<a name="l00500"></a>00500 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00501"></a>00501 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00502"></a>00502 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00503"></a>00503 <span class="preprocessor"></span>
+<a name="l00504"></a>00504 <span class="preprocessor">#endif // GEOGRAPHICLIB_GEOID_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Gnomonic_8cpp.html b/doc/html/Gnomonic_8cpp.html
index 7a7d510..097ca39 100644
--- a/doc/html/Gnomonic_8cpp.html
+++ b/doc/html/Gnomonic_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Gnomonic.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,10 +75,8 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8cpp.html#ad62c02d3264b4069476f2f1aa21f223e">GEOGRAPHICLIB_GNOMONIC_CPP</a> "$Id: 1abf2f2ebdc8a805d0d205051120809f0c0e6071 $"</td></tr>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Gnomonic_8cpp_source.html b/doc/html/Gnomonic_8cpp_source.html
index b9461b3..1e406ae 100644
--- a/doc/html/Gnomonic_8cpp_source.html
+++ b/doc/html/Gnomonic_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Gnomonic.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,8 +83,8 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">using namespace </span>std;
<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Gnomonic::eps0_ = numeric_limits<real>::epsilon();
-<a name="l00023"></a>00023 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> Gnomonic::eps_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) * sqrt(eps0_);
+<a name="l00022"></a>00022 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gnomonic::eps0_ = numeric_limits<real>::epsilon();
+<a name="l00023"></a>00023 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gnomonic::eps_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.01) * sqrt(eps0_);
<a name="l00024"></a>00024
<a name="l00025"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">00025</a> <span class="keywordtype">void</span> Gnomonic::Forward(real lat0, real lon0, real lat, real lon,
<a name="l00026"></a>00026 real& x, real& y, real& azi, real& rk)
@@ -81,10 +96,10 @@
<a name="l00032"></a>00032 t, azi0, azi, m, M, t, t);
<a name="l00033"></a>00033 rk = M;
<a name="l00034"></a>00034 <span class="keywordflow">if</span> (M <= 0)
-<a name="l00035"></a>00035 x = y = Math::NaN<real>();
+<a name="l00035"></a>00035 x = y = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00036"></a>00036 <span class="keywordflow">else</span> {
<a name="l00037"></a>00037 real rho = m/M;
-<a name="l00038"></a>00038 azi0 *= Math::degree<real>();
+<a name="l00038"></a>00038 azi0 *= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00039"></a>00039 x = rho * sin(azi0);
<a name="l00040"></a>00040 y = rho * cos(azi0);
<a name="l00041"></a>00041 }
@@ -94,7 +109,7 @@
<a name="l00045"></a>00045 real& lat, real& lon, real& azi, real& rk)
<a name="l00046"></a>00046 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00047"></a>00047 real
-<a name="l00048"></a>00048 azi0 = atan2(x, y) / Math::degree<real>(),
+<a name="l00048"></a>00048 azi0 = atan2(x, y) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00049"></a>00049 rho = Math::hypot(x, y),
<a name="l00050"></a>00050 s = _a * atan(rho/_a);
<a name="l00051"></a>00051 <span class="keywordtype">bool</span> little = rho <= _a;
@@ -122,15 +137,20 @@
<a name="l00073"></a>00073 <span class="keywordflow">if</span> (trip) {
<a name="l00074"></a>00074 lat = lat1; lon = lon1; azi = azi1; rk = M;
<a name="l00075"></a>00075 } <span class="keywordflow">else</span>
-<a name="l00076"></a>00076 lat = lon = azi = rk = Math::NaN<real>();
+<a name="l00076"></a>00076 lat = lon = azi = rk = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00077"></a>00077 <span class="keywordflow">return</span>;
<a name="l00078"></a>00078 }
<a name="l00079"></a>00079
<a name="l00080"></a>00080 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Gnomonic_8hpp.html b/doc/html/Gnomonic_8hpp.html
index f9fe7b0..1625eda 100644
--- a/doc/html/Gnomonic_8hpp.html
+++ b/doc/html/Gnomonic_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Gnomonic.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,13 +83,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8hpp.html#af85f3f443620d568666f526ee193308a">GEOGRAPHICLIB_GNOMONIC_HPP</a> "$Id: 93b8247cb467dd7cbafbe10acd6b7c85f7aaf7d1 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8hpp.html#af85f3f443620d568666f526ee193308a">GEOGRAPHICLIB_GNOMONIC_HPP</a> "$Id: f2e7e429e56165c314a518fada607c225132b945 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GNOMONIC_HPP "$Id: 93b8247cb467dd7cbafbe10acd6b7c85f7aaf7d1 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GNOMONIC_HPP "$Id: f2e7e429e56165c314a518fada607c225132b945 $"</td>
</tr>
</table>
</div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Gnomonic_8hpp_source.html b/doc/html/Gnomonic_8hpp_source.html
index 1955842..7634c07 100644
--- a/doc/html/Gnomonic_8hpp_source.html
+++ b/doc/html/Gnomonic_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Gnomonic.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GNOMONIC_HPP)</span>
<a name="l00011"></a><a class="code" href="Gnomonic_8hpp.html#af85f3f443620d568666f526ee193308a">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GNOMONIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 93b8247cb467dd7cbafbe10acd6b7c85f7aaf7d1 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: f2e7e429e56165c314a518fada607c225132b945 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="GeodesicLine_8hpp.html" title="Header for GeographicLib::GeodesicLine class.">GeographicLib/GeodesicLine.hpp</a>></span>
@@ -148,131 +163,142 @@
<a name="l00098"></a>00098 <span class="comment"> *</span>
<a name="l00099"></a>00099 <span class="comment"> * Example of use:</span>
<a name="l00100"></a>00100 <span class="comment"> * \include example-Gnomonic.cpp</span>
-<a name="l00101"></a>00101 <span class="comment"> **********************************************************************/</span>
-<a name="l00102"></a>00102
-<a name="l00103"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html">00103</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a> {
-<a name="l00104"></a>00104 <span class="keyword">private</span>:
-<a name="l00105"></a>00105 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00106"></a>00106 <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> _earth;
-<a name="l00107"></a>00107 real _a, _f;
-<a name="l00108"></a>00108 <span class="keyword">static</span> <span class="keyword">const</span> real eps0_;
-<a name="l00109"></a>00109 <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
-<a name="l00110"></a>00110 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
-<a name="l00111"></a>00111 <span class="keyword">public</span>:
-<a name="l00112"></a>00112 <span class="comment"></span>
-<a name="l00113"></a>00113 <span class="comment"> /**</span>
-<a name="l00114"></a>00114 <span class="comment"> * Constructor for Gnomonic.</span>
-<a name="l00115"></a>00115 <span class="comment"> *</span>
-<a name="l00116"></a>00116 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00117"></a>00117 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
-<a name="l00118"></a>00118 <span class="comment"> **********************************************************************/</span>
-<a name="l00119"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a2ac973ebbd7aaf18c451b152cd92db99">00119</a> <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba3 [...]
-<a name="l00120"></a>00120 throw()
-<a name="l00121"></a>00121 : _earth(earth)
-<a name="l00122"></a>00122 , _a(_earth.MajorRadius())
-<a name="l00123"></a>00123 , _f(_earth.Flattening())
-<a name="l00124"></a>00124 {}
-<a name="l00125"></a>00125 <span class="comment"></span>
-<a name="l00126"></a>00126 <span class="comment"> /**</span>
-<a name="l00127"></a>00127 <span class="comment"> * Forward projection, from geographic to gnomonic.</span>
-<a name="l00128"></a>00128 <span class="comment"> *</span>
-<a name="l00129"></a>00129 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00130"></a>00130 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00131"></a>00131 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00132"></a>00132 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00133"></a>00133 <span class="comment"> * @param[out] x easting of point (meters).</span>
-<a name="l00134"></a>00134 <span class="comment"> * @param[out] y northing of point (meters).</span>
-<a name="l00135"></a>00135 <span class="comment"> * @param[out] azi azimuth of geodesic at point (degrees).</span>
-<a name="l00136"></a>00136 <span class="comment"> * @param[out] rk reciprocal of azimuthal scale at point.</span>
-<a name="l00137"></a>00137 <span class="comment"> *</span>
-<a name="l00138"></a>00138 <span class="comment"> * \e lat0 and \e lat should be in the range [-90, 90] and \e lon0 and \e</span>
-<a name="l00139"></a>00139 <span class="comment"> * lon should be in the range [-180, 360]. The scale of the projection is</span>
-<a name="l00140"></a>00140 <span class="comment"> * 1/<i>rk</i><sup>2</sup> in the "radial" direction, \e azi clockwise from</span>
-<a name="l00141"></a>00141 <span class="comment"> * true north, and is 1/\e rk in the direction perpendicular to this. If</span>
-<a name="l00142"></a>00142 <span class="comment"> * the point lies "over the horizon", i.e., if \e rk <= 0, then NaNs are</span>
-<a name="l00143"></a>00143 <span class="comment"> * returned for \e x and \e y (the correct values are returned for \e azi</span>
-<a name="l00144"></a>00144 <span class="comment"> * and \e rk). A call to Forward followed by a call to Reverse will return</span>
-<a name="l00145"></a>00145 <span class="comment"> * the original (\e lat, \e lon) (to within roundoff) provided the point in</span>
-<a name="l00146"></a>00146 <span class="comment"> * not over the horizon.</span>
-<a name="l00147"></a>00147 <span class="comment"> **********************************************************************/</span>
-<a name="l00148"></a>00148 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
-<a name="l00149"></a>00149 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00150"></a>00150 <span class="comment"></span>
-<a name="l00151"></a>00151 <span class="comment"> /**</span>
-<a name="l00152"></a>00152 <span class="comment"> * Reverse projection, from gnomonic to geographic.</span>
-<a name="l00153"></a>00153 <span class="comment"> *</span>
-<a name="l00154"></a>00154 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
-<a name="l00155"></a>00155 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
-<a name="l00156"></a>00156 <span class="comment"> * @param[in] x easting of point (meters).</span>
-<a name="l00157"></a>00157 <span class="comment"> * @param[in] y northing of point (meters).</span>
-<a name="l00158"></a>00158 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00159"></a>00159 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00160"></a>00160 <span class="comment"> * @param[out] azi azimuth of geodesic at point (degrees).</span>
-<a name="l00161"></a>00161 <span class="comment"> * @param[out] rk reciprocal of azimuthal scale at point.</span>
-<a name="l00162"></a>00162 <span class="comment"> *</span>
-<a name="l00163"></a>00163 <span class="comment"> * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
-<a name="l00164"></a>00164 <span class="comment"> * range [-180, 360]. \e lat will be in the range [-90, 90] and \e lon</span>
-<a name="l00165"></a>00165 <span class="comment"> * will be in the range [-180, 180). The scale of the projection is 1/\e</span>
-<a name="l00166"></a>00166 <span class="comment"> * rk<sup>2</sup> in the "radial" direction, \e azi clockwise from true</span>
-<a name="l00167"></a>00167 <span class="comment"> * north, and is 1/\e rk in the direction perpendicular to this. Even</span>
-<a name="l00168"></a>00168 <span class="comment"> * though all inputs should return a valid \e lat and \e lon, it's possible</span>
-<a name="l00169"></a>00169 <span class="comment"> * that the procedure fails to converge for very large \e x or \e y; in</span>
-<a name="l00170"></a>00170 <span class="comment"> * this case NaNs are returned for all the output arguments. A call to</span>
-<a name="l00171"></a>00171 <span class="comment"> * Reverse followed by a call to Forward will return the original (\e x, \e</span>
-<a name="l00172"></a>00172 <span class="comment"> * y) (to roundoff).</span>
-<a name="l00173"></a>00173 <span class="comment"> **********************************************************************/</span>
-<a name="l00174"></a>00174 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
-<a name="l00175"></a>00175 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00176"></a>00176 <span class="comment"></span>
-<a name="l00177"></a>00177 <span class="comment"> /**</span>
-<a name="l00178"></a>00178 <span class="comment"> * Gnomonic::Forward without returning the azimuth and scale.</span>
-<a name="l00179"></a>00179 <span class="comment"> **********************************************************************/</span>
-<a name="l00180"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a2c08cf2bad190ee9ab88f7d877223208">00180</a> <span class="keywordtype">void</span> Forward(real lat0, real lon0, real lat, real lon,
-<a name="l00181"></a>00181 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00182"></a>00182 real azi, rk;
-<a name="l00183"></a>00183 Forward(lat0, lon0, lat, lon, x, y, azi, rk);
-<a name="l00184"></a>00184 }
-<a name="l00185"></a>00185 <span class="comment"></span>
-<a name="l00186"></a>00186 <span class="comment"> /**</span>
-<a name="l00187"></a>00187 <span class="comment"> * Gnomonic::Reverse without returning the azimuth and scale.</span>
-<a name="l00188"></a>00188 <span class="comment"> **********************************************************************/</span>
-<a name="l00189"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a8700d59a1e244f8dd211e344587dfed3">00189</a> <span class="keywordtype">void</span> Reverse(real lat0, real lon0, real x, real y,
-<a name="l00190"></a>00190 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00191"></a>00191 real azi, rk;
-<a name="l00192"></a>00192 Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
-<a name="l00193"></a>00193 }
-<a name="l00194"></a>00194 <span class="comment"></span>
-<a name="l00195"></a>00195 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00196"></a>00196 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00197"></a>00197 <span class="comment"> ///@{</span>
-<a name="l00198"></a>00198 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00199"></a>00199 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00200"></a>00200 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00201"></a>00201 <span class="comment"> **********************************************************************/</span>
-<a name="l00202"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">00202</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00203"></a>00203 <span class="comment"></span>
-<a name="l00204"></a>00204 <span class="comment"> /**</span>
-<a name="l00205"></a>00205 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00206"></a>00206 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
-<a name="l00207"></a>00207 <span class="comment"> **********************************************************************/</span>
-<a name="l00208"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">00208</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }
-<a name="l00209"></a>00209 <span class="comment"></span>
-<a name="l00210"></a>00210 <span class="comment"> /**</span>
-<a name="l00211"></a>00211 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00212"></a>00212 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00213"></a>00213 <span class="comment"> **********************************************************************/</span>
-<a name="l00214"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">00214</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00215"></a>00215 { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
-<a name="l00216"></a>00216 <span class="comment"> ///@}</span>
-<a name="l00217"></a>00217 <span class="comment"></span> };
-<a name="l00218"></a>00218
-<a name="l00219"></a>00219 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00220"></a>00220
-<a name="l00221"></a>00221 <span class="preprocessor">#endif // GEOGRAPHICLIB_GNOMONIC_HPP</span>
+<a name="l00101"></a>00101 <span class="comment"> *</span>
+<a name="l00102"></a>00102 <span class="comment"> * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility</span>
+<a name="l00103"></a>00103 <span class="comment"> * providing access to the functionality of AzimuthalEquidistant, Gnomonic,</span>
+<a name="l00104"></a>00104 <span class="comment"> * and CassiniSoldner.</span>
+<a name="l00105"></a>00105 <span class="comment"> **********************************************************************/</span>
+<a name="l00106"></a>00106
+<a name="l00107"></a>00107 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Gnomonic {
+<a name="l00108"></a>00108 <span class="keyword">private</span>:
+<a name="l00109"></a>00109 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00110"></a>00110 Geodesic _earth;
+<a name="l00111"></a>00111 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f;
+<a name="l00112"></a>00112 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps0_;
+<a name="l00113"></a>00113 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
+<a name="l00114"></a>00114 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
+<a name="l00115"></a>00115 <span class="keyword">public</span>:
+<a name="l00116"></a>00116 <span class="comment"></span>
+<a name="l00117"></a>00117 <span class="comment"> /**</span>
+<a name="l00118"></a>00118 <span class="comment"> * Constructor for Gnomonic.</span>
+<a name="l00119"></a>00119 <span class="comment"> *</span>
+<a name="l00120"></a>00120 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00121"></a>00121 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
+<a name="l00122"></a>00122 <span class="comment"> **********************************************************************/</span>
+<a name="l00123"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a2ac973ebbd7aaf18c451b152cd92db99">00123</a> <span class="keyword">explicit</span> Gnomonic(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth = <a class="code" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>)
+<a name="l00124"></a>00124 throw()
+<a name="l00125"></a>00125 : _earth(earth)
+<a name="l00126"></a>00126 , _a(_earth.MajorRadius())
+<a name="l00127"></a>00127 , _f(_earth.Flattening())
+<a name="l00128"></a>00128 {}
+<a name="l00129"></a>00129 <span class="comment"></span>
+<a name="l00130"></a>00130 <span class="comment"> /**</span>
+<a name="l00131"></a>00131 <span class="comment"> * Forward projection, from geographic to gnomonic.</span>
+<a name="l00132"></a>00132 <span class="comment"> *</span>
+<a name="l00133"></a>00133 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00134"></a>00134 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00135"></a>00135 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00136"></a>00136 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00137"></a>00137 <span class="comment"> * @param[out] x easting of point (meters).</span>
+<a name="l00138"></a>00138 <span class="comment"> * @param[out] y northing of point (meters).</span>
+<a name="l00139"></a>00139 <span class="comment"> * @param[out] azi azimuth of geodesic at point (degrees).</span>
+<a name="l00140"></a>00140 <span class="comment"> * @param[out] rk reciprocal of azimuthal scale at point.</span>
+<a name="l00141"></a>00141 <span class="comment"> *</span>
+<a name="l00142"></a>00142 <span class="comment"> * \e lat0 and \e lat should be in the range [-90, 90] and \e lon0 and \e</span>
+<a name="l00143"></a>00143 <span class="comment"> * lon should be in the range [-180, 360]. The scale of the projection is</span>
+<a name="l00144"></a>00144 <span class="comment"> * 1/<i>rk</i><sup>2</sup> in the "radial" direction, \e azi clockwise from</span>
+<a name="l00145"></a>00145 <span class="comment"> * true north, and is 1/\e rk in the direction perpendicular to this. If</span>
+<a name="l00146"></a>00146 <span class="comment"> * the point lies "over the horizon", i.e., if \e rk <= 0, then NaNs are</span>
+<a name="l00147"></a>00147 <span class="comment"> * returned for \e x and \e y (the correct values are returned for \e azi</span>
+<a name="l00148"></a>00148 <span class="comment"> * and \e rk). A call to Forward followed by a call to Reverse will return</span>
+<a name="l00149"></a>00149 <span class="comment"> * the original (\e lat, \e lon) (to within roundoff) provided the point in</span>
+<a name="l00150"></a>00150 <span class="comment"> * not over the horizon.</span>
+<a name="l00151"></a>00151 <span class="comment"> **********************************************************************/</span>
+<a name="l00152"></a>00152 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00153"></a>00153 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00154"></a>00154 <span class="comment"></span>
+<a name="l00155"></a>00155 <span class="comment"> /**</span>
+<a name="l00156"></a>00156 <span class="comment"> * Reverse projection, from gnomonic to geographic.</span>
+<a name="l00157"></a>00157 <span class="comment"> *</span>
+<a name="l00158"></a>00158 <span class="comment"> * @param[in] lat0 latitude of center point of projection (degrees).</span>
+<a name="l00159"></a>00159 <span class="comment"> * @param[in] lon0 longitude of center point of projection (degrees).</span>
+<a name="l00160"></a>00160 <span class="comment"> * @param[in] x easting of point (meters).</span>
+<a name="l00161"></a>00161 <span class="comment"> * @param[in] y northing of point (meters).</span>
+<a name="l00162"></a>00162 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00163"></a>00163 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00164"></a>00164 <span class="comment"> * @param[out] azi azimuth of geodesic at point (degrees).</span>
+<a name="l00165"></a>00165 <span class="comment"> * @param[out] rk reciprocal of azimuthal scale at point.</span>
+<a name="l00166"></a>00166 <span class="comment"> *</span>
+<a name="l00167"></a>00167 <span class="comment"> * \e lat0 should be in the range [-90, 90] and \e lon0 should be in the</span>
+<a name="l00168"></a>00168 <span class="comment"> * range [-180, 360]. \e lat will be in the range [-90, 90] and \e lon</span>
+<a name="l00169"></a>00169 <span class="comment"> * will be in the range [-180, 180). The scale of the projection is 1/\e</span>
+<a name="l00170"></a>00170 <span class="comment"> * rk<sup>2</sup> in the "radial" direction, \e azi clockwise from true</span>
+<a name="l00171"></a>00171 <span class="comment"> * north, and is 1/\e rk in the direction perpendicular to this. Even</span>
+<a name="l00172"></a>00172 <span class="comment"> * though all inputs should return a valid \e lat and \e lon, it's possible</span>
+<a name="l00173"></a>00173 <span class="comment"> * that the procedure fails to converge for very large \e x or \e y; in</span>
+<a name="l00174"></a>00174 <span class="comment"> * this case NaNs are returned for all the output arguments. A call to</span>
+<a name="l00175"></a>00175 <span class="comment"> * Reverse followed by a call to Forward will return the original (\e x, \e</span>
+<a name="l00176"></a>00176 <span class="comment"> * y) (to roundoff).</span>
+<a name="l00177"></a>00177 <span class="comment"> **********************************************************************/</span>
+<a name="l00178"></a>00178 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00179"></a>00179 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& azi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& rk) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00180"></a>00180 <span class="comment"></span>
+<a name="l00181"></a>00181 <span class="comment"> /**</span>
+<a name="l00182"></a>00182 <span class="comment"> * Gnomonic::Forward without returning the azimuth and scale.</span>
+<a name="l00183"></a>00183 <span class="comment"> **********************************************************************/</span>
+<a name="l00184"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a2c08cf2bad190ee9ab88f7d877223208">00184</a> <span class="keywordtype">void</span> Forward(real lat0, real lon0, real lat, real lon,
+<a name="l00185"></a>00185 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00186"></a>00186 real azi, rk;
+<a name="l00187"></a>00187 Forward(lat0, lon0, lat, lon, x, y, azi, rk);
+<a name="l00188"></a>00188 }
+<a name="l00189"></a>00189 <span class="comment"></span>
+<a name="l00190"></a>00190 <span class="comment"> /**</span>
+<a name="l00191"></a>00191 <span class="comment"> * Gnomonic::Reverse without returning the azimuth and scale.</span>
+<a name="l00192"></a>00192 <span class="comment"> **********************************************************************/</span>
+<a name="l00193"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a8700d59a1e244f8dd211e344587dfed3">00193</a> <span class="keywordtype">void</span> Reverse(real lat0, real lon0, real x, real y,
+<a name="l00194"></a>00194 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00195"></a>00195 real azi, rk;
+<a name="l00196"></a>00196 Reverse(lat0, lon0, x, y, lat, lon, azi, rk);
+<a name="l00197"></a>00197 }
+<a name="l00198"></a>00198 <span class="comment"></span>
+<a name="l00199"></a>00199 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00200"></a>00200 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00201"></a>00201 <span class="comment"> ///@{</span>
+<a name="l00202"></a>00202 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00203"></a>00203 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00204"></a>00204 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00205"></a>00205 <span class="comment"> **********************************************************************/</span>
+<a name="l00206"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">00206</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00207"></a>00207 <span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment"> /**</span>
+<a name="l00209"></a>00209 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00210"></a>00210 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
+<a name="l00211"></a>00211 <span class="comment"> **********************************************************************/</span>
+<a name="l00212"></a><a class="code" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">00212</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="comment" [...]
+<a name="l00213"></a>00213 <span class="comment"> ///@}</span>
+<a name="l00214"></a>00214 <span class="comment"></span><span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment"> /// \cond SKIP</span>
+<a name="l00216"></a>00216 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00217"></a>00217 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00218"></a>00218 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00219"></a>00219 <span class="comment"> **********************************************************************/</span>
+<a name="l00220"></a>00220 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00221"></a>00221 { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
+<a name="l00222"></a>00222 <span class="comment"> /// \endcond</span>
+<a name="l00223"></a>00223 <span class="comment"></span> };
+<a name="l00224"></a>00224
+<a name="l00225"></a>00225 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00226"></a>00226
+<a name="l00227"></a>00227 <span class="preprocessor">#endif // GEOGRAPHICLIB_GNOMONIC_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Gravity.1.html b/doc/html/Gravity.1.html
index c052100..d929096 100644
--- a/doc/html/Gravity.1.html
+++ b/doc/html/Gravity.1.html
@@ -48,8 +48,11 @@
<p><strong>Gravity</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ]
[ <strong>-G</strong> | <strong>-D</strong> | <strong>-A</strong> | <strong>-H</strong> ] [ <strong>-c</strong> <em>lat</em> <em>h</em> ]
[ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -150,6 +153,15 @@ and 4 for the geoid height.</p>
<p>print information about the gravity model on standard error before
processing the input.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -175,8 +187,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -257,7 +275,7 @@ terminate; following lines will be converted.</p>
<h1><a name="examples">EXAMPLES</a></h1>
<p>The gravity field from EGM2008 at the top of Mount Everest</p>
<pre>
- echo "27d59'17N" "86d55'32E" 8820 | Gravity -n egm2008
+ echo 27:59:17N 86:55:32E 8820 | Gravity -n egm2008
=> -0.00001 0.00103 -9.76782</pre>
<p>
</p>
diff --git a/doc/html/GravityCircle_8cpp.html b/doc/html/GravityCircle_8cpp.html
index 2b0c81b..a65abf6 100644
--- a/doc/html/GravityCircle_8cpp.html
+++ b/doc/html/GravityCircle_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GravityCircle.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -63,10 +78,8 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8cpp.html#a57d7b0412922810faed5fb35173f561c">GEOGRAPHICLIB_GRAVITYCIRCLE_CPP</a> "$Id: 94c2bce8fa9f379b5e3d0e176c89b4989762ef3a $"</td></tr>
@@ -109,8 +122,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GravityCircle_8cpp_source.html b/doc/html/GravityCircle_8cpp_source.html
index 4b271ac..b80904b 100644
--- a/doc/html/GravityCircle_8cpp_source.html
+++ b/doc/html/GravityCircle_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GravityCircle.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,9 +88,9 @@
<a name="l00024"></a>00024
<a name="l00025"></a>00025 <span class="keyword">using namespace </span>std;
<a name="l00026"></a>00026
-<a name="l00027"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">00027</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">GravityCircle::Gravity</a>(real lon, real& gx, real& gy, real& gz)
+<a name="l00027"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">00027</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">GravityCircle::Gravity</a>(real lon, real& gx, real& gy, real& gz)
<a name="l00028"></a>00028 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00029"></a>00029 real clam, slam, M[Geocentric::dim2_];
+<a name="l00029"></a>00029 real clam, slam, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00030"></a>00030 CircularEngine::cossin(lon, clam, slam);
<a name="l00031"></a>00031 real Wres = W(clam, slam, gx, gy, gz);
<a name="l00032"></a>00032 Geocentric::Rotation(_sphi, _cphi, slam, clam, M);
@@ -83,9 +98,9 @@
<a name="l00034"></a>00034 <span class="keywordflow">return</span> Wres;
<a name="l00035"></a>00035 }
<a name="l00036"></a>00036
-<a name="l00037"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">00037</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">GravityCircle::Disturbance</a>(real lon, real& deltax, real& deltay,
+<a name="l00037"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">00037</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">GravityCircle::Disturbance</a>(real lon, real& deltax, real& deltay,
<a name="l00038"></a>00038 real& deltaz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00039"></a>00039 real clam, slam, M[Geocentric::dim2_];
+<a name="l00039"></a>00039 real clam, slam, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00040"></a>00040 CircularEngine::cossin(lon, clam, slam);
<a name="l00041"></a>00041 real Tres = InternalT(clam, slam, deltax, deltay, deltaz, <span class="keyword">true</span>, <span class="keyword">true</span>);
<a name="l00042"></a>00042 Geocentric::Rotation(_sphi, _cphi, slam, clam, M);
@@ -93,9 +108,9 @@
<a name="l00044"></a>00044 <span class="keywordflow">return</span> Tres;
<a name="l00045"></a>00045 }
<a name="l00046"></a>00046
-<a name="l00047"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d5a577c99cf4649d9286f1b4afacab5">00047</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d5a577c99cf4649d9286f1b4afacab5">GravityCircle::GeoidHeight</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00047"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d5a577c99cf4649d9286f1b4afacab5">00047</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a5d5a577c99cf4649d9286f1b4afacab5">GravityCircle::GeoidHeight</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00048"></a>00048 <span class="keywordflow">if</span> ((_caps & GEOID_HEIGHT) != GEOID_HEIGHT)
-<a name="l00049"></a>00049 <span class="keywordflow">return</span> Math::NaN<real>();
+<a name="l00049"></a>00049 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00050"></a>00050 real clam, slam, dummy;
<a name="l00051"></a>00051 CircularEngine::cossin(lon, clam, slam);
<a name="l00052"></a>00052 real T = InternalT(clam, slam, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">false</span>);
@@ -107,7 +122,7 @@
<a name="l00058"></a>00058 real& Dg01, real& xi, real& eta)
<a name="l00059"></a>00059 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00060"></a>00060 <span class="keywordflow">if</span> ((_caps & SPHERICAL_ANOMALY) != SPHERICAL_ANOMALY) {
-<a name="l00061"></a>00061 Dg01 = xi = eta = Math::NaN<real>();
+<a name="l00061"></a>00061 Dg01 = xi = eta = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00062"></a>00062 <span class="keywordflow">return</span>;
<a name="l00063"></a>00063 }
<a name="l00064"></a>00064 real clam, slam;
@@ -116,7 +131,7 @@
<a name="l00067"></a>00067 deltax, deltay, deltaz,
<a name="l00068"></a>00068 T = InternalT(clam, slam, deltax, deltay, deltaz, <span class="keyword">true</span>, <span class="keyword">false</span>);
<a name="l00069"></a>00069 <span class="comment">// Rotate cartesian into spherical coordinates</span>
-<a name="l00070"></a>00070 real MC[Geocentric::dim2_];
+<a name="l00070"></a>00070 real MC[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00071"></a>00071 Geocentric::Rotation(_spsi, _cpsi, slam, clam, MC);
<a name="l00072"></a>00072 Geocentric::Unrotate(MC, deltax, deltay, deltaz, deltax, deltay, deltaz);
<a name="l00073"></a>00073 <span class="comment">// H+M, Eq 2-151c</span>
@@ -125,7 +140,7 @@
<a name="l00076"></a>00076 eta = -(deltax/_gamma) / Math::degree<real>();
<a name="l00077"></a>00077 }
<a name="l00078"></a>00078
-<a name="l00079"></a>00079 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityCircle::W(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
+<a name="l00079"></a>00079 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GravityCircle::W(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
<a name="l00080"></a>00080 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00081"></a>00081 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Wres = V(clam, slam, gX, gY, gZ) + _frot * _P / 2;
<a name="l00082"></a>00082 gX += _frot * clam;
@@ -133,7 +148,7 @@
<a name="l00084"></a>00084 <span class="keywordflow">return</span> Wres;
<a name="l00085"></a>00085 }
<a name="l00086"></a>00086
-<a name="l00087"></a>00087 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityCircle::V(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
+<a name="l00087"></a>00087 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GravityCircle::V(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
<a name="l00088"></a>00088 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GZ)
<a name="l00089"></a>00089 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00090"></a>00090 <span class="keywordflow">if</span> ((_caps & GRAVITY) != GRAVITY) {
@@ -150,7 +165,7 @@
<a name="l00101"></a>00101 <span class="keywordflow">return</span> Vres;
<a name="l00102"></a>00102 }
<a name="l00103"></a>00103
-<a name="l00104"></a>00104 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityCircle::InternalT(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
+<a name="l00104"></a>00104 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GravityCircle::InternalT(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> clam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> slam,
<a name="l00105"></a>00105 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaZ,
<a name="l00106"></a>00106 <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00107"></a>00107 <span class="keywordflow">if</span> (gradp) {
@@ -186,8 +201,13 @@
<a name="l00137"></a>00137 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GravityCircle_8hpp.html b/doc/html/GravityCircle_8hpp.html
index 156b05d..a25f4b4 100644
--- a/doc/html/GravityCircle_8hpp.html
+++ b/doc/html/GravityCircle_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GravityCircle.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,13 +85,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8hpp.html#a07d4fadabf913f2115556a6de80f6115">GEOGRAPHICLIB_GRAVITYCIRCLE_HPP</a> "$Id: e7a230fffb6fcb413694f2b4ece36ae44627ef33 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8hpp.html#a07d4fadabf913f2115556a6de80f6115">GEOGRAPHICLIB_GRAVITYCIRCLE_HPP</a> "$Id: 6ae0869411185a48c9f55016e6d1fb14e69aaac1 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
@@ -89,7 +102,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GRAVITYCIRCLE_HPP "$Id: e7a230fffb6fcb413694f2b4ece36ae44627ef33 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GRAVITYCIRCLE_HPP "$Id: 6ae0869411185a48c9f55016e6d1fb14e69aaac1 $"</td>
</tr>
</table>
</div>
@@ -100,8 +113,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GravityCircle_8hpp_source.html b/doc/html/GravityCircle_8hpp_source.html
index 78be361..1683687 100644
--- a/doc/html/GravityCircle_8hpp_source.html
+++ b/doc/html/GravityCircle_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GravityCircle.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GRAVITYCIRCLE_HPP)</span>
<a name="l00011"></a><a class="code" href="GravityCircle_8hpp.html#a07d4fadabf913f2115556a6de80f6115">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GRAVITYCIRCLE_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: e7a230fffb6fcb413694f2b4ece36ae44627ef33 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 6ae0869411185a48c9f55016e6d1fb14e69aaac1 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <vector></span>
@@ -85,274 +100,282 @@
<a name="l00035"></a>00035 <span class="comment"> *</span>
<a name="l00036"></a>00036 <span class="comment"> * Example of use:</span>
<a name="l00037"></a>00037 <span class="comment"> * \include example-GravityCircle.cpp</span>
-<a name="l00038"></a>00038 <span class="comment"> **********************************************************************/</span>
-<a name="l00039"></a>00039
-<a name="l00040"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html">00040</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> {
-<a name="l00041"></a>00041 <span class="keyword">private</span>:
-<a name="l00042"></a>00042 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00043"></a>00043 <span class="keyword">enum</span> mask {
-<a name="l00044"></a>00044 NONE = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365add4ee1aa94e38a8283826704105dc2e1">GravityModel::NONE</a>,
-<a name="l00045"></a>00045 GRAVITY = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">GravityModel::GRAVITY</a>,
-<a name="l00046"></a>00046 DISTURBANCE = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a83daf366a2c7ab93495f0e6b4144d885">GravityModel::DISTURBANCE</a>,
-<a name="l00047"></a>00047 DISTURBING_POTENTIAL = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365abe1f6d891a721a4f544cd8a341abcb28">GravityModel::DISTURBING_POTENTIAL</a>,
-<a name="l00048"></a>00048 GEOID_HEIGHT = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a0ac768bffe3f104069c3fd5af1ddaa69">GravityModel::GEOID_HEIGHT</a>,
-<a name="l00049"></a>00049 SPHERICAL_ANOMALY = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ada02eebe918ebb3764a62b9323dceac9">GravityModel::SPHERICAL_ANOMALY</a>,
-<a name="l00050"></a>00050 ALL = <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a8e0e6b9a6d629d05f22f41996fe98068">GravityModel::ALL</a>,
-<a name="l00051"></a>00051 };
-<a name="l00052"></a>00052
-<a name="l00053"></a>00053 <span class="keywordtype">unsigned</span> _caps;
-<a name="l00054"></a>00054 real _a, _f, _lat, _h, _Z, _P, _invR, _cpsi, _spsi,
-<a name="l00055"></a>00055 _cphi, _sphi, _amodel, _GMmodel, _dzonal0,
-<a name="l00056"></a>00056 _corrmult, _gamma0, _gamma, _frot;
-<a name="l00057"></a>00057 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> _gravitational, _disturbing, _correction;
-<a name="l00058"></a>00058
-<a name="l00059"></a>00059 <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>(mask caps, real a, real f, real lat, real h,
-<a name="l00060"></a>00060 real Z, real P, real cphi, real sphi,
-<a name="l00061"></a>00061 real amodel, real GMmodel, real dzonal0, real corrmult,
-<a name="l00062"></a>00062 real gamma0, real gamma, real frot,
-<a name="l00063"></a>00063 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& gravitational,
-<a name="l00064"></a>00064 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& disturbing,
-<a name="l00065"></a>00065 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& correction)
-<a name="l00066"></a>00066 : _caps(caps)
-<a name="l00067"></a>00067 , _a(a)
-<a name="l00068"></a>00068 , _f(f)
-<a name="l00069"></a>00069 , _lat(lat)
-<a name="l00070"></a>00070 , _h(h)
-<a name="l00071"></a>00071 , _Z(Z)
-<a name="l00072"></a>00072 , _P(P)
-<a name="l00073"></a>00073 , _invR(<a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(_P, _Z))
-<a name="l00074"></a>00074 , _cpsi(_P * _invR)
-<a name="l00075"></a>00075 , _spsi(_Z * _invR)
-<a name="l00076"></a>00076 , _cphi(cphi)
-<a name="l00077"></a>00077 , _sphi(sphi)
-<a name="l00078"></a>00078 , _amodel(amodel)
-<a name="l00079"></a>00079 , _GMmodel(GMmodel)
-<a name="l00080"></a>00080 , _dzonal0(dzonal0)
-<a name="l00081"></a>00081 , _corrmult(corrmult)
-<a name="l00082"></a>00082 , _gamma0(gamma0)
-<a name="l00083"></a>00083 , _gamma(gamma)
-<a name="l00084"></a>00084 , _frot(frot)
-<a name="l00085"></a>00085 , _gravitational(gravitational)
-<a name="l00086"></a>00086 , _disturbing(disturbing)
-<a name="l00087"></a>00087 , _correction(correction)
-<a name="l00088"></a>00088 {}
-<a name="l00089"></a>00089
-<a name="l00090"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#ada1db1d9f480d8044753ed869c995519">00090</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>; <span class="comment">// GravityModel calls the private constructor</span>
-<a name="l00091"></a>00091 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> W(real clam, real slam,
-<a name="l00092"></a>00092 real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00093"></a>00093 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> V(real clam, real slam,
-<a name="l00094"></a>00094 real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00095"></a>00095 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InternalT(real clam, real slam,
-<a name="l00096"></a>00096 real& deltaX, real& deltaY, real& deltaZ,
-<a name="l00097"></a>00097 <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00098"></a>00098 <span class="keyword">public</span>:<span class="comment"></span>
-<a name="l00099"></a>00099 <span class="comment"> /**</span>
-<a name="l00100"></a>00100 <span class="comment"> * A default constructor for the normal gravity. This sets up an</span>
-<a name="l00101"></a>00101 <span class="comment"> * uninitialized object which can be later replaced by the</span>
-<a name="l00102"></a>00102 <span class="comment"> * GravityModel::Circle.</span>
-<a name="l00103"></a>00103 <span class="comment"> **********************************************************************/</span>
-<a name="l00104"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a4a000e07f0856a130ab11f1b26c933ed">00104</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a4a000e07f0856a130ab11f1b26c933ed">GravityCircle</a>() : _a(-1) {}
-<a name="l00105"></a>00105 <span class="comment"></span>
-<a name="l00106"></a>00106 <span class="comment"> /** \name Compute the gravitational field</span>
-<a name="l00107"></a>00107 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00108"></a>00108 <span class="comment"> ///@{</span>
-<a name="l00109"></a>00109 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00110"></a>00110 <span class="comment"> * Evaluate the gravity.</span>
-<a name="l00111"></a>00111 <span class="comment"> *</span>
-<a name="l00112"></a>00112 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00113"></a>00113 <span class="comment"> * @param[out] gx the easterly component of the acceleration</span>
-<a name="l00114"></a>00114 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00115"></a>00115 <span class="comment"> * @param[out] gy the northerly component of the acceleration</span>
-<a name="l00116"></a>00116 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00117"></a>00117 <span class="comment"> * @param[out] gz the upward component of the acceleration</span>
-<a name="l00118"></a>00118 <span class="comment"> * (m s<sup>-2</sup>); this is usually negative.</span>
-<a name="l00119"></a>00119 <span class="comment"> * @return \e W the sum of the gravitational and centrifugal potentials.</span>
-<a name="l00120"></a>00120 <span class="comment"> *</span>
-<a name="l00121"></a>00121 <span class="comment"> * The function includes the effects of the earth's rotation.</span>
-<a name="l00122"></a>00122 <span class="comment"> **********************************************************************/</span>
-<a name="l00123"></a>00123 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gy, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>&am [...]
-<a name="l00124"></a>00124 <span class="comment"></span>
-<a name="l00125"></a>00125 <span class="comment"> /**</span>
-<a name="l00126"></a>00126 <span class="comment"> * Evaluate the gravity disturbance vector.</span>
-<a name="l00127"></a>00127 <span class="comment"> *</span>
-<a name="l00128"></a>00128 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00129"></a>00129 <span class="comment"> * @param[out] deltax the easterly component of the disturbance vector</span>
-<a name="l00130"></a>00130 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00131"></a>00131 <span class="comment"> * @param[out] deltay the northerly component of the disturbance vector</span>
-<a name="l00132"></a>00132 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00133"></a>00133 <span class="comment"> * @param[out] deltaz the upward component of the disturbance vector</span>
-<a name="l00134"></a>00134 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00135"></a>00135 <span class="comment"> * @return \e T the corresponding disturbing potential.</span>
-<a name="l00136"></a>00136 <span class="comment"> **********************************************************************/</span>
-<a name="l00137"></a>00137 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Disturbance(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltax, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltay, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9" [...]
-<a name="l00138"></a>00138 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00139"></a>00139 <span class="comment"></span>
-<a name="l00140"></a>00140 <span class="comment"> /**</span>
-<a name="l00141"></a>00141 <span class="comment"> * Evaluate the geoid height.</span>
-<a name="l00142"></a>00142 <span class="comment"> *</span>
-<a name="l00143"></a>00143 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00144"></a>00144 <span class="comment"> * @return \e N the height of the geoid above the reference ellipsoid</span>
-<a name="l00145"></a>00145 <span class="comment"> * (meters).</span>
-<a name="l00146"></a>00146 <span class="comment"> *</span>
-<a name="l00147"></a>00147 <span class="comment"> * Some approximations are made in computing the geoid height so that the</span>
-<a name="l00148"></a>00148 <span class="comment"> * results of the NGA codes are reproduced accurately. Details are given</span>
-<a name="l00149"></a>00149 <span class="comment"> * in \ref gravitygeoid.</span>
-<a name="l00150"></a>00150 <span class="comment"> **********************************************************************/</span>
-<a name="l00151"></a>00151 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeoidHeight(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00152"></a>00152 <span class="comment"></span>
-<a name="l00153"></a>00153 <span class="comment"> /**</span>
-<a name="l00154"></a>00154 <span class="comment"> * Evaluate the components of the gravity anomaly vector using the</span>
-<a name="l00155"></a>00155 <span class="comment"> * spherical approximation.</span>
-<a name="l00156"></a>00156 <span class="comment"> *</span>
-<a name="l00157"></a>00157 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00158"></a>00158 <span class="comment"> * @param[out] Dg01 the gravity anomaly (m s<sup>-2</sup>).</span>
-<a name="l00159"></a>00159 <span class="comment"> * @param[out] xi the northerly component of the deflection of the vertical</span>
-<a name="l00160"></a>00160 <span class="comment"> * (degrees).</span>
-<a name="l00161"></a>00161 <span class="comment"> * @param[out] eta the easterly component of the deflection of the vertical</span>
-<a name="l00162"></a>00162 <span class="comment"> * (degrees).</span>
-<a name="l00163"></a>00163 <span class="comment"> *</span>
-<a name="l00164"></a>00164 <span class="comment"> * The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used</span>
-<a name="l00165"></a>00165 <span class="comment"> * so that the results of the NGA codes are reproduced accurately.</span>
-<a name="l00166"></a>00166 <span class="comment"> * approximations used here. Details are given in \ref gravitygeoid.</span>
-<a name="l00167"></a>00167 <span class="comment"> **********************************************************************/</span>
-<a name="l00168"></a>00168 <span class="keywordtype">void</span> SphericalAnomaly(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dg01, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta)
-<a name="l00169"></a>00169 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00170"></a>00170 <span class="comment"></span>
-<a name="l00171"></a>00171 <span class="comment"> /**</span>
-<a name="l00172"></a>00172 <span class="comment"> * Evaluate the components of the acceleration due to gravity and the</span>
-<a name="l00173"></a>00173 <span class="comment"> * centrifugal acceleration in geocentric coordinates.</span>
-<a name="l00174"></a>00174 <span class="comment"> *</span>
-<a name="l00175"></a>00175 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00176"></a>00176 <span class="comment"> * @param[out] gX the \e X component of the acceleration</span>
-<a name="l00177"></a>00177 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00178"></a>00178 <span class="comment"> * @param[out] gY the \e Y component of the acceleration</span>
-<a name="l00179"></a>00179 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00180"></a>00180 <span class="comment"> * @param[out] gZ the \e Z component of the acceleration</span>
-<a name="l00181"></a>00181 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00182"></a>00182 <span class="comment"> * @return \e W = \e V + \e Phi the sum of the gravitational and</span>
-<a name="l00183"></a>00183 <span class="comment"> * centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00184"></a>00184 <span class="comment"> **********************************************************************/</span>
-<a name="l00185"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">00185</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">W</a>(real lon, real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00186"></a>00186 real clam, slam;
-<a name="l00187"></a>00187 CircularEngine::cossin(lon, clam, slam);
-<a name="l00188"></a>00188 <span class="keywordflow">return</span> W(clam, slam, gX, gY, gZ);
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190 <span class="comment"></span>
-<a name="l00191"></a>00191 <span class="comment"> /**</span>
-<a name="l00192"></a>00192 <span class="comment"> * Evaluate the components of the acceleration due to gravity in geocentric</span>
-<a name="l00193"></a>00193 <span class="comment"> * coordinates.</span>
-<a name="l00194"></a>00194 <span class="comment"> *</span>
-<a name="l00195"></a>00195 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00196"></a>00196 <span class="comment"> * @param[out] GX the \e X component of the acceleration</span>
-<a name="l00197"></a>00197 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00198"></a>00198 <span class="comment"> * @param[out] GY the \e Y component of the acceleration</span>
-<a name="l00199"></a>00199 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00200"></a>00200 <span class="comment"> * @param[out] GZ the \e Z component of the acceleration</span>
-<a name="l00201"></a>00201 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00202"></a>00202 <span class="comment"> * @return \e V = \e W - \e Phi the gravitational potential</span>
-<a name="l00203"></a>00203 <span class="comment"> * (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00204"></a>00204 <span class="comment"> **********************************************************************/</span>
-<a name="l00205"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">00205</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">V</a>(real lon, real& GX, real& GY, real& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00206"></a>00206 real clam, slam;
-<a name="l00207"></a>00207 CircularEngine::cossin(lon, clam, slam);
-<a name="l00208"></a>00208 <span class="keywordflow">return</span> V(clam, slam, GX, GY, GZ);
-<a name="l00209"></a>00209 }
-<a name="l00210"></a>00210
-<a name="l00211"></a>00211 <span class="comment"></span>
-<a name="l00212"></a>00212 <span class="comment"> /**</span>
-<a name="l00213"></a>00213 <span class="comment"> * Evaluate the components of the gravity disturbance in geocentric</span>
-<a name="l00214"></a>00214 <span class="comment"> * coordinates.</span>
-<a name="l00215"></a>00215 <span class="comment"> *</span>
-<a name="l00216"></a>00216 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00217"></a>00217 <span class="comment"> * @param[out] deltaX the \e X component of the gravity disturbance</span>
-<a name="l00218"></a>00218 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00219"></a>00219 <span class="comment"> * @param[out] deltaY the \e Y component of the gravity disturbance</span>
-<a name="l00220"></a>00220 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00221"></a>00221 <span class="comment"> * @param[out] deltaZ the \e Z component of the gravity disturbance</span>
-<a name="l00222"></a>00222 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00223"></a>00223 <span class="comment"> * @return \e T = \e W - \e U the disturbing potential (also called the</span>
-<a name="l00224"></a>00224 <span class="comment"> * anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00225"></a>00225 <span class="comment"> **********************************************************************/</span>
-<a name="l00226"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#afae12e4bbf17809f1dd6c32b41dfde03">00226</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> T(real lon, real& deltaX, real& deltaY, real& deltaZ)
-<a name="l00227"></a>00227 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00228"></a>00228 real clam, slam;
-<a name="l00229"></a>00229 CircularEngine::cossin(lon, clam, slam);
-<a name="l00230"></a>00230 <span class="keywordflow">return</span> InternalT(clam, slam, deltaX, deltaY, deltaZ, <span class="keyword">true</span>, <span class="keyword">true</span>);
-<a name="l00231"></a>00231 }
-<a name="l00232"></a>00232 <span class="comment"></span>
-<a name="l00233"></a>00233 <span class="comment"> /**</span>
-<a name="l00234"></a>00234 <span class="comment"> * Evaluate disturbing potential in geocentric coordinates.</span>
-<a name="l00235"></a>00235 <span class="comment"> *</span>
-<a name="l00236"></a>00236 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00237"></a>00237 <span class="comment"> * @return \e T = \e W - \e U the disturbing potential (also called the</span>
-<a name="l00238"></a>00238 <span class="comment"> * anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00239"></a>00239 <span class="comment"> **********************************************************************/</span>
-<a name="l00240"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a408d52806d43fe61b53af3ffb306bec5">00240</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a408d52806d43fe61b53af3ffb306bec5">T</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00241"></a>00241 real clam, slam, dummy;
-<a name="l00242"></a>00242 CircularEngine::cossin(lon, clam, slam);
-<a name="l00243"></a>00243 <span class="keywordflow">return</span> InternalT(clam, slam, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">true</span>);
-<a name="l00244"></a>00244 }
-<a name="l00245"></a>00245 <span class="comment"></span>
-<a name="l00246"></a>00246 <span class="comment"> ///@}</span>
-<a name="l00247"></a>00247 <span class="comment"></span><span class="comment"></span>
-<a name="l00248"></a>00248 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00249"></a>00249 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00250"></a>00250 <span class="comment"> ///@{</span>
-<a name="l00251"></a>00251 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00252"></a>00252 <span class="comment"> * @return true if the object has been initialized.</span>
-<a name="l00253"></a>00253 <span class="comment"> **********************************************************************/</span>
-<a name="l00254"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#aee7b6c92dc9264345048a8ad7c230e4c">00254</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#aee7b6c92dc9264345048a8ad7c230e4c">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }
-<a name="l00255"></a>00255 <span class="comment"></span>
-<a name="l00256"></a>00256 <span class="comment"> /**</span>
-<a name="l00257"></a>00257 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00258"></a>00258 <span class="comment"> * the value inherited from the GravityModel object used in the</span>
-<a name="l00259"></a>00259 <span class="comment"> * constructor.</span>
-<a name="l00260"></a>00260 <span class="comment"> **********************************************************************/</span>
-<a name="l00261"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a19c5d003a9981cb3ece5b44ee836553a">00261</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00262"></a>00262 { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }
-<a name="l00263"></a>00263 <span class="comment"></span>
-<a name="l00264"></a>00264 <span class="comment"> /**</span>
-<a name="l00265"></a>00265 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00266"></a>00266 <span class="comment"> * inherited from the GravityModel object used in the constructor.</span>
-<a name="l00267"></a>00267 <span class="comment"> **********************************************************************/</span>
-<a name="l00268"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#ad9bfc60d802b662ffc1a41566882b743">00268</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00269"></a>00269 { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }
-<a name="l00270"></a>00270 <span class="comment"></span>
-<a name="l00271"></a>00271 <span class="comment"> /**</span>
-<a name="l00272"></a>00272 <span class="comment"> * @return the latitude of the circle (degrees).</span>
-<a name="l00273"></a>00273 <span class="comment"> **********************************************************************/</span>
-<a name="l00274"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a9628e97c53a2532959c5c8af75e1c14b">00274</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Latitude() <span class="keyword">const</span> throw()
-<a name="l00275"></a>00275 { <span class="keywordflow">return</span> Init() ? _lat : Math::NaN<real>(); }
-<a name="l00276"></a>00276 <span class="comment"></span>
-<a name="l00277"></a>00277 <span class="comment"> /**</span>
-<a name="l00278"></a>00278 <span class="comment"> * @return the height of the circle (meters).</span>
-<a name="l00279"></a>00279 <span class="comment"> **********************************************************************/</span>
-<a name="l00280"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a026b2b79ff3ae70b4fee5d9c4d1ffb70">00280</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Height() <span class="keyword">const</span> throw()
-<a name="l00281"></a>00281 { <span class="keywordflow">return</span> Init() ? _h : Math::NaN<real>(); }
-<a name="l00282"></a>00282 <span class="comment"></span>
-<a name="l00283"></a>00283 <span class="comment"> /**</span>
-<a name="l00284"></a>00284 <span class="comment"> * @return \e caps the computational capabilities that this object was</span>
-<a name="l00285"></a>00285 <span class="comment"> * constructed with.</span>
-<a name="l00286"></a>00286 <span class="comment"> **********************************************************************/</span>
-<a name="l00287"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a08ecc2b31ca7d0ddc2d25950a6bc247f">00287</a> <span class="keywordtype">unsigned</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a08ecc2b31ca7d0ddc2d25950a6bc247f">Capabilities</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps; }
-<a name="l00288"></a>00288 <span class="comment"></span>
-<a name="l00289"></a>00289 <span class="comment"> /**</span>
-<a name="l00290"></a>00290 <span class="comment"> * @param[in] testcaps a set of bitor'ed GeodesicLine::mask values.</span>
-<a name="l00291"></a>00291 <span class="comment"> * @return true if the GeodesicLine object has all these capabilities.</span>
-<a name="l00292"></a>00292 <span class="comment"> **********************************************************************/</span>
-<a name="l00293"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a2fa608c25be9b8caa087102c4c311768">00293</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a2fa608c25be9b8caa087102c4c311768">Capabilities</a>(<span class="keywordtype">unsigned</span> testcaps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00294"></a>00294 <span class="keywordflow">return</span> (_caps & testcaps) == testcaps;
-<a name="l00295"></a>00295 }<span class="comment"></span>
-<a name="l00296"></a>00296 <span class="comment"> ///@}</span>
-<a name="l00297"></a>00297 <span class="comment"></span> };
-<a name="l00298"></a>00298
-<a name="l00299"></a>00299 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00300"></a>00300
-<a name="l00301"></a>00301 <span class="preprocessor">#endif // GEOGRAPHICLIB_GRAVITYCIRCLE_HPP</span>
+<a name="l00038"></a>00038 <span class="comment"> *</span>
+<a name="l00039"></a>00039 <span class="comment"> * <a href="Gravity.1.html">Gravity</a> is a command-line utility providing</span>
+<a name="l00040"></a>00040 <span class="comment"> * access to the functionality of GravityModel and GravityCircle.</span>
+<a name="l00041"></a>00041 <span class="comment"> **********************************************************************/</span>
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> GravityCircle {
+<a name="l00044"></a>00044 <span class="keyword">private</span>:
+<a name="l00045"></a>00045 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00046"></a>00046 <span class="keyword">enum</span> mask {
+<a name="l00047"></a>00047 NONE = GravityModel::NONE,
+<a name="l00048"></a>00048 GRAVITY = GravityModel::GRAVITY,
+<a name="l00049"></a>00049 DISTURBANCE = GravityModel::DISTURBANCE,
+<a name="l00050"></a>00050 DISTURBING_POTENTIAL = GravityModel::DISTURBING_POTENTIAL,
+<a name="l00051"></a>00051 GEOID_HEIGHT = GravityModel::GEOID_HEIGHT,
+<a name="l00052"></a>00052 SPHERICAL_ANOMALY = GravityModel::SPHERICAL_ANOMALY,
+<a name="l00053"></a>00053 ALL = GravityModel::ALL,
+<a name="l00054"></a>00054 };
+<a name="l00055"></a>00055
+<a name="l00056"></a>00056 <span class="keywordtype">unsigned</span> _caps;
+<a name="l00057"></a>00057 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _lat, _h, _Z, _P, _invR, _cpsi, _spsi,
+<a name="l00058"></a>00058 _cphi, _sphi, _amodel, _GMmodel, _dzonal0,
+<a name="l00059"></a>00059 _corrmult, _gamma0, _gamma, _frot;
+<a name="l00060"></a>00060 CircularEngine _gravitational, _disturbing, _correction;
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 GravityCircle(mask caps, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
+<a name="l00063"></a>00063 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> P, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi,
+<a name="l00064"></a>00064 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> amodel, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> GMmodel, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dzonal0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> corrmult,
+<a name="l00065"></a>00065 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gamma0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> frot,
+<a name="l00066"></a>00066 <span class="keyword">const</span> CircularEngine& gravitational,
+<a name="l00067"></a>00067 <span class="keyword">const</span> CircularEngine& disturbing,
+<a name="l00068"></a>00068 <span class="keyword">const</span> CircularEngine& correction)
+<a name="l00069"></a>00069 : _caps(caps)
+<a name="l00070"></a>00070 , _a(a)
+<a name="l00071"></a>00071 , _f(f)
+<a name="l00072"></a>00072 , _lat(lat)
+<a name="l00073"></a>00073 , _h(h)
+<a name="l00074"></a>00074 , _Z(Z)
+<a name="l00075"></a>00075 , _P(P)
+<a name="l00076"></a>00076 , _invR(<a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(_P, _Z))
+<a name="l00077"></a>00077 , _cpsi(_P * _invR)
+<a name="l00078"></a>00078 , _spsi(_Z * _invR)
+<a name="l00079"></a>00079 , _cphi(cphi)
+<a name="l00080"></a>00080 , _sphi(sphi)
+<a name="l00081"></a>00081 , _amodel(amodel)
+<a name="l00082"></a>00082 , _GMmodel(GMmodel)
+<a name="l00083"></a>00083 , _dzonal0(dzonal0)
+<a name="l00084"></a>00084 , _corrmult(corrmult)
+<a name="l00085"></a>00085 , _gamma0(gamma0)
+<a name="l00086"></a>00086 , _gamma(gamma)
+<a name="l00087"></a>00087 , _frot(frot)
+<a name="l00088"></a>00088 , _gravitational(gravitational)
+<a name="l00089"></a>00089 , _disturbing(disturbing)
+<a name="l00090"></a>00090 , _correction(correction)
+<a name="l00091"></a>00091 {}
+<a name="l00092"></a>00092
+<a name="l00093"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#ada1db1d9f480d8044753ed869c995519">00093</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>; <span class="comment">// GravityModel calls the private constructor</span>
+<a name="l00094"></a>00094 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real W(real clam, real slam,
+<a name="l00095"></a>00095 real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00096"></a>00096 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real V(real clam, real slam,
+<a name="l00097"></a>00097 real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00098"></a>00098 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real InternalT(real clam, real slam,
+<a name="l00099"></a>00099 real& deltaX, real& deltaY, real& deltaZ,
+<a name="l00100"></a>00100 <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00101"></a>00101 <span class="keyword">public</span>:<span class="comment"></span>
+<a name="l00102"></a>00102 <span class="comment"> /**</span>
+<a name="l00103"></a>00103 <span class="comment"> * A default constructor for the normal gravity. This sets up an</span>
+<a name="l00104"></a>00104 <span class="comment"> * uninitialized object which can be later replaced by the</span>
+<a name="l00105"></a>00105 <span class="comment"> * GravityModel::Circle.</span>
+<a name="l00106"></a>00106 <span class="comment"> **********************************************************************/</span>
+<a name="l00107"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a4a000e07f0856a130ab11f1b26c933ed">00107</a> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a4a000e07f0856a130ab11f1b26c933ed">GravityCircle</a>() : _a(-1) {}
+<a name="l00108"></a>00108 <span class="comment"></span>
+<a name="l00109"></a>00109 <span class="comment"> /** \name Compute the gravitational field</span>
+<a name="l00110"></a>00110 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00111"></a>00111 <span class="comment"> ///@{</span>
+<a name="l00112"></a>00112 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00113"></a>00113 <span class="comment"> * Evaluate the gravity.</span>
+<a name="l00114"></a>00114 <span class="comment"> *</span>
+<a name="l00115"></a>00115 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00116"></a>00116 <span class="comment"> * @param[out] gx the easterly component of the acceleration</span>
+<a name="l00117"></a>00117 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00118"></a>00118 <span class="comment"> * @param[out] gy the northerly component of the acceleration</span>
+<a name="l00119"></a>00119 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00120"></a>00120 <span class="comment"> * @param[out] gz the upward component of the acceleration</span>
+<a name="l00121"></a>00121 <span class="comment"> * (m s<sup>-2</sup>); this is usually negative.</span>
+<a name="l00122"></a>00122 <span class="comment"> * @return \e W the sum of the gravitational and centrifugal potentials.</span>
+<a name="l00123"></a>00123 <span class="comment"> *</span>
+<a name="l00124"></a>00124 <span class="comment"> * The function includes the effects of the earth's rotation.</span>
+<a name="l00125"></a>00125 <span class="comment"> **********************************************************************/</span>
+<a name="l00126"></a>00126 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">rea [...]
+<a name="l00127"></a>00127 <span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment"> /**</span>
+<a name="l00129"></a>00129 <span class="comment"> * Evaluate the gravity disturbance vector.</span>
+<a name="l00130"></a>00130 <span class="comment"> *</span>
+<a name="l00131"></a>00131 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00132"></a>00132 <span class="comment"> * @param[out] deltax the easterly component of the disturbance vector</span>
+<a name="l00133"></a>00133 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00134"></a>00134 <span class="comment"> * @param[out] deltay the northerly component of the disturbance vector</span>
+<a name="l00135"></a>00135 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00136"></a>00136 <span class="comment"> * @param[out] deltaz the upward component of the disturbance vector</span>
+<a name="l00137"></a>00137 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00138"></a>00138 <span class="comment"> * @return \e T the corresponding disturbing potential.</span>
+<a name="l00139"></a>00139 <span class="comment"> **********************************************************************/</span>
+<a name="l00140"></a>00140 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Disturbance(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltax, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
+<a name="l00141"></a>00141 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00142"></a>00142 <span class="comment"></span>
+<a name="l00143"></a>00143 <span class="comment"> /**</span>
+<a name="l00144"></a>00144 <span class="comment"> * Evaluate the geoid height.</span>
+<a name="l00145"></a>00145 <span class="comment"> *</span>
+<a name="l00146"></a>00146 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00147"></a>00147 <span class="comment"> * @return \e N the height of the geoid above the reference ellipsoid</span>
+<a name="l00148"></a>00148 <span class="comment"> * (meters).</span>
+<a name="l00149"></a>00149 <span class="comment"> *</span>
+<a name="l00150"></a>00150 <span class="comment"> * Some approximations are made in computing the geoid height so that the</span>
+<a name="l00151"></a>00151 <span class="comment"> * results of the NGA codes are reproduced accurately. Details are given</span>
+<a name="l00152"></a>00152 <span class="comment"> * in \ref gravitygeoid.</span>
+<a name="l00153"></a>00153 <span class="comment"> **********************************************************************/</span>
+<a name="l00154"></a>00154 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GeoidHeight(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00155"></a>00155 <span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment"> /**</span>
+<a name="l00157"></a>00157 <span class="comment"> * Evaluate the components of the gravity anomaly vector using the</span>
+<a name="l00158"></a>00158 <span class="comment"> * spherical approximation.</span>
+<a name="l00159"></a>00159 <span class="comment"> *</span>
+<a name="l00160"></a>00160 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00161"></a>00161 <span class="comment"> * @param[out] Dg01 the gravity anomaly (m s<sup>-2</sup>).</span>
+<a name="l00162"></a>00162 <span class="comment"> * @param[out] xi the northerly component of the deflection of the vertical</span>
+<a name="l00163"></a>00163 <span class="comment"> * (degrees).</span>
+<a name="l00164"></a>00164 <span class="comment"> * @param[out] eta the easterly component of the deflection of the vertical</span>
+<a name="l00165"></a>00165 <span class="comment"> * (degrees).</span>
+<a name="l00166"></a>00166 <span class="comment"> *</span>
+<a name="l00167"></a>00167 <span class="comment"> * The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used</span>
+<a name="l00168"></a>00168 <span class="comment"> * so that the results of the NGA codes are reproduced accurately.</span>
+<a name="l00169"></a>00169 <span class="comment"> * approximations used here. Details are given in \ref gravitygeoid.</span>
+<a name="l00170"></a>00170 <span class="comment"> **********************************************************************/</span>
+<a name="l00171"></a>00171 <span class="keywordtype">void</span> SphericalAnomaly(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dg01, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta)
+<a name="l00172"></a>00172 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00173"></a>00173 <span class="comment"></span>
+<a name="l00174"></a>00174 <span class="comment"> /**</span>
+<a name="l00175"></a>00175 <span class="comment"> * Evaluate the components of the acceleration due to gravity and the</span>
+<a name="l00176"></a>00176 <span class="comment"> * centrifugal acceleration in geocentric coordinates.</span>
+<a name="l00177"></a>00177 <span class="comment"> *</span>
+<a name="l00178"></a>00178 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00179"></a>00179 <span class="comment"> * @param[out] gX the \e X component of the acceleration</span>
+<a name="l00180"></a>00180 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00181"></a>00181 <span class="comment"> * @param[out] gY the \e Y component of the acceleration</span>
+<a name="l00182"></a>00182 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00183"></a>00183 <span class="comment"> * @param[out] gZ the \e Z component of the acceleration</span>
+<a name="l00184"></a>00184 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00185"></a>00185 <span class="comment"> * @return \e W = \e V + \e Phi the sum of the gravitational and</span>
+<a name="l00186"></a>00186 <span class="comment"> * centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00187"></a>00187 <span class="comment"> **********************************************************************/</span>
+<a name="l00188"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">00188</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">W</a>(real lon, real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00189"></a>00189 real clam, slam;
+<a name="l00190"></a>00190 CircularEngine::cossin(lon, clam, slam);
+<a name="l00191"></a>00191 <span class="keywordflow">return</span> W(clam, slam, gX, gY, gZ);
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193 <span class="comment"></span>
+<a name="l00194"></a>00194 <span class="comment"> /**</span>
+<a name="l00195"></a>00195 <span class="comment"> * Evaluate the components of the acceleration due to gravity in geocentric</span>
+<a name="l00196"></a>00196 <span class="comment"> * coordinates.</span>
+<a name="l00197"></a>00197 <span class="comment"> *</span>
+<a name="l00198"></a>00198 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00199"></a>00199 <span class="comment"> * @param[out] GX the \e X component of the acceleration</span>
+<a name="l00200"></a>00200 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00201"></a>00201 <span class="comment"> * @param[out] GY the \e Y component of the acceleration</span>
+<a name="l00202"></a>00202 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00203"></a>00203 <span class="comment"> * @param[out] GZ the \e Z component of the acceleration</span>
+<a name="l00204"></a>00204 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00205"></a>00205 <span class="comment"> * @return \e V = \e W - \e Phi the gravitational potential</span>
+<a name="l00206"></a>00206 <span class="comment"> * (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00207"></a>00207 <span class="comment"> **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">00208</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">V</a>(real lon, real& GX, real& GY, real& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00209"></a>00209 real clam, slam;
+<a name="l00210"></a>00210 CircularEngine::cossin(lon, clam, slam);
+<a name="l00211"></a>00211 <span class="keywordflow">return</span> V(clam, slam, GX, GY, GZ);
+<a name="l00212"></a>00212 }
+<a name="l00213"></a>00213
+<a name="l00214"></a>00214 <span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment"> /**</span>
+<a name="l00216"></a>00216 <span class="comment"> * Evaluate the components of the gravity disturbance in geocentric</span>
+<a name="l00217"></a>00217 <span class="comment"> * coordinates.</span>
+<a name="l00218"></a>00218 <span class="comment"> *</span>
+<a name="l00219"></a>00219 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00220"></a>00220 <span class="comment"> * @param[out] deltaX the \e X component of the gravity disturbance</span>
+<a name="l00221"></a>00221 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00222"></a>00222 <span class="comment"> * @param[out] deltaY the \e Y component of the gravity disturbance</span>
+<a name="l00223"></a>00223 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00224"></a>00224 <span class="comment"> * @param[out] deltaZ the \e Z component of the gravity disturbance</span>
+<a name="l00225"></a>00225 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00226"></a>00226 <span class="comment"> * @return \e T = \e W - \e U the disturbing potential (also called the</span>
+<a name="l00227"></a>00227 <span class="comment"> * anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00228"></a>00228 <span class="comment"> **********************************************************************/</span>
+<a name="l00229"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#afae12e4bbf17809f1dd6c32b41dfde03">00229</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real T(real lon, real& deltaX, real& deltaY, real& deltaZ)
+<a name="l00230"></a>00230 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00231"></a>00231 real clam, slam;
+<a name="l00232"></a>00232 CircularEngine::cossin(lon, clam, slam);
+<a name="l00233"></a>00233 <span class="keywordflow">return</span> InternalT(clam, slam, deltaX, deltaY, deltaZ, <span class="keyword">true</span>, <span class="keyword">true</span>);
+<a name="l00234"></a>00234 }
+<a name="l00235"></a>00235 <span class="comment"></span>
+<a name="l00236"></a>00236 <span class="comment"> /**</span>
+<a name="l00237"></a>00237 <span class="comment"> * Evaluate disturbing potential in geocentric coordinates.</span>
+<a name="l00238"></a>00238 <span class="comment"> *</span>
+<a name="l00239"></a>00239 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00240"></a>00240 <span class="comment"> * @return \e T = \e W - \e U the disturbing potential (also called the</span>
+<a name="l00241"></a>00241 <span class="comment"> * anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00242"></a>00242 <span class="comment"> **********************************************************************/</span>
+<a name="l00243"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a408d52806d43fe61b53af3ffb306bec5">00243</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityCircle.html#a408d52806d43fe61b53af3ffb306bec5">T</a>(real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00244"></a>00244 real clam, slam, dummy;
+<a name="l00245"></a>00245 CircularEngine::cossin(lon, clam, slam);
+<a name="l00246"></a>00246 <span class="keywordflow">return</span> InternalT(clam, slam, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">true</span>);
+<a name="l00247"></a>00247 }
+<a name="l00248"></a>00248 <span class="comment"></span>
+<a name="l00249"></a>00249 <span class="comment"> ///@}</span>
+<a name="l00250"></a>00250 <span class="comment"></span><span class="comment"></span>
+<a name="l00251"></a>00251 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00252"></a>00252 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00253"></a>00253 <span class="comment"> ///@{</span>
+<a name="l00254"></a>00254 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00255"></a>00255 <span class="comment"> * @return true if the object has been initialized.</span>
+<a name="l00256"></a>00256 <span class="comment"> **********************************************************************/</span>
+<a name="l00257"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#aee7b6c92dc9264345048a8ad7c230e4c">00257</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#aee7b6c92dc9264345048a8ad7c230e4c">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }
+<a name="l00258"></a>00258 <span class="comment"></span>
+<a name="l00259"></a>00259 <span class="comment"> /**</span>
+<a name="l00260"></a>00260 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00261"></a>00261 <span class="comment"> * the value inherited from the GravityModel object used in the</span>
+<a name="l00262"></a>00262 <span class="comment"> * constructor.</span>
+<a name="l00263"></a>00263 <span class="comment"> **********************************************************************/</span>
+<a name="l00264"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a19c5d003a9981cb3ece5b44ee836553a">00264</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00265"></a>00265 { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00266"></a>00266 <span class="comment"></span>
+<a name="l00267"></a>00267 <span class="comment"> /**</span>
+<a name="l00268"></a>00268 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00269"></a>00269 <span class="comment"> * inherited from the GravityModel object used in the constructor.</span>
+<a name="l00270"></a>00270 <span class="comment"> **********************************************************************/</span>
+<a name="l00271"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#ad9bfc60d802b662ffc1a41566882b743">00271</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00272"></a>00272 { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00273"></a>00273 <span class="comment"></span>
+<a name="l00274"></a>00274 <span class="comment"> /**</span>
+<a name="l00275"></a>00275 <span class="comment"> * @return the latitude of the circle (degrees).</span>
+<a name="l00276"></a>00276 <span class="comment"> **********************************************************************/</span>
+<a name="l00277"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a9628e97c53a2532959c5c8af75e1c14b">00277</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Latitude() <span class="keyword">const</span> throw()
+<a name="l00278"></a>00278 { <span class="keywordflow">return</span> Init() ? _lat : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00279"></a>00279 <span class="comment"></span>
+<a name="l00280"></a>00280 <span class="comment"> /**</span>
+<a name="l00281"></a>00281 <span class="comment"> * @return the height of the circle (meters).</span>
+<a name="l00282"></a>00282 <span class="comment"> **********************************************************************/</span>
+<a name="l00283"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a026b2b79ff3ae70b4fee5d9c4d1ffb70">00283</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Height() <span class="keyword">const</span> throw()
+<a name="l00284"></a>00284 { <span class="keywordflow">return</span> Init() ? _h : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00285"></a>00285 <span class="comment"></span>
+<a name="l00286"></a>00286 <span class="comment"> /**</span>
+<a name="l00287"></a>00287 <span class="comment"> * @return \e caps the computational capabilities that this object was</span>
+<a name="l00288"></a>00288 <span class="comment"> * constructed with.</span>
+<a name="l00289"></a>00289 <span class="comment"> **********************************************************************/</span>
+<a name="l00290"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a08ecc2b31ca7d0ddc2d25950a6bc247f">00290</a> <span class="keywordtype">unsigned</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a08ecc2b31ca7d0ddc2d25950a6bc247f">Capabilities</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _caps; }
+<a name="l00291"></a>00291 <span class="comment"></span>
+<a name="l00292"></a>00292 <span class="comment"> /**</span>
+<a name="l00293"></a>00293 <span class="comment"> * @param[in] testcaps a set of bitor'ed GeodesicLine::mask values.</span>
+<a name="l00294"></a>00294 <span class="comment"> * @return true if the GeodesicLine object has all these capabilities.</span>
+<a name="l00295"></a>00295 <span class="comment"> **********************************************************************/</span>
+<a name="l00296"></a><a class="code" href="classGeographicLib_1_1GravityCircle.html#a2fa608c25be9b8caa087102c4c311768">00296</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html#a2fa608c25be9b8caa087102c4c311768">Capabilities</a>(<span class="keywordtype">unsigned</span> testcaps) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00297"></a>00297 <span class="keywordflow">return</span> (_caps & testcaps) == testcaps;
+<a name="l00298"></a>00298 }<span class="comment"></span>
+<a name="l00299"></a>00299 <span class="comment"> ///@}</span>
+<a name="l00300"></a>00300 <span class="comment"></span> };
+<a name="l00301"></a>00301
+<a name="l00302"></a>00302 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00303"></a>00303
+<a name="l00304"></a>00304 <span class="preprocessor">#endif // GEOGRAPHICLIB_GRAVITYCIRCLE_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GravityModel_8cpp.html b/doc/html/GravityModel_8cpp.html
index 71e0c51..5a327b6 100644
--- a/doc/html/GravityModel_8cpp.html
+++ b/doc/html/GravityModel_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GravityModel.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -64,19 +79,17 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html#a65e1bf85112eafa00622f95531afc180">GEOGRAPHICLIB_GRAVITYMODEL_CPP</a> "$Id: 981871c55dc74dcd22153d4eeb5c07f8ec1e9525 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html#a65e1bf85112eafa00622f95531afc180">GEOGRAPHICLIB_GRAVITYMODEL_CPP</a> "$Id: 1897d0d53c7339ecdf20b1348637340e9f687f30 $"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html#a45687ef771d809c1c369daea074cc109">GEOGRAPHICLIB_DATA</a> "/usr/local/share/GeographicLib"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html#a05d4f5b688275acf184933e85a0063bd">GRAVITY_DEFAULT_NAME</a> "egm96"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
-<p>Copyright (c) Charles Karney (2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="GravityModel_8cpp_source.html">GravityModel.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -85,7 +98,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GRAVITYMODEL_CPP "$Id: 981871c55dc74dcd22153d4eeb5c07f8ec1e9525 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GRAVITYMODEL_CPP "$Id: 1897d0d53c7339ecdf20b1348637340e9f687f30 $"</td>
</tr>
</table>
</div>
@@ -130,8 +143,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GravityModel_8cpp_source.html b/doc/html/GravityModel_8cpp_source.html
index de7326c..4f60780 100644
--- a/doc/html/GravityModel_8cpp_source.html
+++ b/doc/html/GravityModel_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GravityModel.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file GravityModel.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::GravityModel class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under</span>
-<a name="l00006"></a>00006 <span class="comment"> * the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
@@ -62,7 +77,7 @@
<a name="l00013"></a>00013 <span class="preprocessor">#include <<a class="code" href="GravityCircle_8hpp.html" title="Header for GeographicLib::GravityCircle class.">GeographicLib/GravityCircle.hpp</a>></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
<a name="l00015"></a><a class="code" href="GravityModel_8cpp.html#a65e1bf85112eafa00622f95531afc180">00015</a> <span class="preprocessor">#define GEOGRAPHICLIB_GRAVITYMODEL_CPP \</span>
-<a name="l00016"></a>00016 <span class="preprocessor"> "$Id: 981871c55dc74dcd22153d4eeb5c07f8ec1e9525 $"</span>
+<a name="l00016"></a>00016 <span class="preprocessor"> "$Id: 1897d0d53c7339ecdf20b1348637340e9f687f30 $"</span>
<a name="l00017"></a>00017 <span class="preprocessor"></span>
<a name="l00018"></a>00018 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GravityModel_8cpp.html#a65e1bf85112eafa00622f95531afc180">GEOGRAPHICLIB_GRAVITYMODEL_CPP</a>)
<a name="l00019"></a>00019 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="GravityModel_8hpp.html#ace85f3a4d35d4657064e289e2bf57dab">GEOGRAPHICLIB_GRAVITYMODEL_HPP</a>)
@@ -131,12 +146,12 @@
<a name="l00082"></a>00082 <span class="keywordtype">int</span> pos = int(coeffstr.tellg());
<a name="l00083"></a>00083 coeffstr.seekg(0, ios::end);
<a name="l00084"></a>00084 <span class="keywordflow">if</span> (pos != coeffstr.tellg())
-<a name="l00085"></a>00085 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra data in "</span> + coeff);
+<a name="l00085"></a>00085 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra data in "</span> + coeff);
<a name="l00086"></a>00086 }
<a name="l00087"></a>00087 <span class="keywordtype">int</span> nmx = _gravitational.<a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#ac8886de1d1400ecf6482f6441c76a8a0">Coefficients</a>().<a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a96467118f9c16c16259d4fbbed3917ff">nmx</a>();
<a name="l00088"></a>00088 <span class="comment">// Adjust the normalization of the normal potential to match the model.</span>
<a name="l00089"></a>00089 real mult = _earth._GM / _GMmodel;
-<a name="l00090"></a>00090 real amult = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_earth._a / _amodel);
+<a name="l00090"></a>00090 real amult = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_earth._a / _amodel);
<a name="l00091"></a>00091 <span class="comment">// The 0th term in _zonal should be is 1 + _dzonal0. Instead set it to 1</span>
<a name="l00092"></a>00092 <span class="comment">// to give exact cancellation with the (0,0) term in the model and account</span>
<a name="l00093"></a>00093 <span class="comment">// for _dzonal0 separately.</span>
@@ -179,14 +194,14 @@
<a name="l00130"></a>00130 getline(metastr, line);
<a name="l00131"></a>00131 <span class="keywordflow">if</span> (!(line.size() >= 6 && line.substr(0,5) == <span class="stringliteral">"EGMF-"</span>))
<a name="l00132"></a>00132 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(_filename + <span class="stringliteral">" does not contain EGMF-n signature"</span>);
-<a name="l00133"></a>00133 string::size_type n = line.find_first_of(spaces, 5);
+<a name="l00133"></a>00133 <span class="keywordtype">string</span>::size_type n = line.find_first_of(spaces, 5);
<a name="l00134"></a>00134 <span class="keywordflow">if</span> (n != string::npos)
<a name="l00135"></a>00135 n -= 5;
<a name="l00136"></a>00136 <span class="keywordtype">string</span> version = line.substr(5, n);
<a name="l00137"></a>00137 <span class="keywordflow">if</span> (version != <span class="stringliteral">"1"</span>)
<a name="l00138"></a>00138 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Unknown version in "</span> + _filename + <span class="stringliteral">": "</span> + version);
<a name="l00139"></a>00139 <span class="keywordtype">string</span> key, val;
-<a name="l00140"></a>00140 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a = Math::NaN<real>(), GM = a, omega = a, f = a, J2 = a;
+<a name="l00140"></a>00140 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(), GM = a, omega = a, f = a, J2 = a;
<a name="l00141"></a>00141 <span class="keywordflow">while</span> (getline(metastr, line)) {
<a name="l00142"></a>00142 <span class="keywordflow">if</span> (!<a class="code" href="classGeographicLib_1_1Utility.html#a96252f445a912b77517bff04d4d6ea74">Utility::ParseLine</a>(line, key, val))
<a name="l00143"></a>00143 <span class="keywordflow">continue</span>;
@@ -198,28 +213,28 @@
<a name="l00149"></a>00149 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ReleaseDate"</span>)
<a name="l00150"></a>00150 _date = val;
<a name="l00151"></a>00151 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ModelRadius"</span>)
-<a name="l00152"></a>00152 _amodel = Utility::num<real>(val);
+<a name="l00152"></a>00152 _amodel = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
<a name="l00153"></a>00153 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ModelMass"</span>)
-<a name="l00154"></a>00154 _GMmodel = Utility::num<real>(val);
+<a name="l00154"></a>00154 _GMmodel = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
<a name="l00155"></a>00155 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"AngularVelocity"</span>)
-<a name="l00156"></a>00156 omega = Utility::num<real>(val);
+<a name="l00156"></a>00156 omega = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
<a name="l00157"></a>00157 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ReferenceRadius"</span>)
-<a name="l00158"></a>00158 a = Utility::num<real>(val);
+<a name="l00158"></a>00158 a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
<a name="l00159"></a>00159 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ReferenceMass"</span>)
-<a name="l00160"></a>00160 GM = Utility::num<real>(val);
+<a name="l00160"></a>00160 GM = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
<a name="l00161"></a>00161 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Flattening"</span>)
-<a name="l00162"></a>00162 f = Utility::fract<real>(val);
+<a name="l00162"></a>00162 f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(val);
<a name="l00163"></a>00163 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"DynamicalFormFactor"</span>)
-<a name="l00164"></a>00164 J2 = Utility::fract<real>(val);
+<a name="l00164"></a>00164 J2 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(val);
<a name="l00165"></a>00165 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"HeightOffset"</span>)
-<a name="l00166"></a>00166 _zeta0 = Utility::fract<real>(val);
+<a name="l00166"></a>00166 _zeta0 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(val);
<a name="l00167"></a>00167 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"CorrectionMultiplier"</span>)
-<a name="l00168"></a>00168 _corrmult = Utility::fract<real>(val);
+<a name="l00168"></a>00168 _corrmult = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(val);
<a name="l00169"></a>00169 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Normalization"</span>) {
<a name="l00170"></a>00170 <span class="keywordflow">if</span> (val == <span class="stringliteral">"FULL"</span> || val == <span class="stringliteral">"Full"</span> || val == <span class="stringliteral">"full"</span>)
-<a name="l00171"></a>00171 _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">SphericalHarmonic::FULL</a>;
+<a name="l00171"></a>00171 _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>::FULL;
<a name="l00172"></a>00172 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val == <span class="stringliteral">"SCHMIDT"</span> || val == <span class="stringliteral">"Schmidt"</span> || val == <span class="stringliteral">"schmidt"</span>)
-<a name="l00173"></a>00173 _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eba014c2f3300abd50ff65ea8d73ef3c69e">SphericalHarmonic::SCHMIDT</a>;
+<a name="l00173"></a>00173 _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>::SCHMIDT;
<a name="l00174"></a>00174 <span class="keywordflow">else</span>
<a name="l00175"></a>00175 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Unknown normalization "</span> + val);
<a name="l00176"></a>00176 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ByteOrder"</span>) {
@@ -232,20 +247,20 @@
<a name="l00183"></a>00183 <span class="comment">// else unrecognized keywords are skipped</span>
<a name="l00184"></a>00184 }
<a name="l00185"></a>00185 <span class="comment">// Check values</span>
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_amodel) && _amodel > 0))
+<a name="l00186"></a>00186 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_amodel) && _amodel > 0))
<a name="l00187"></a>00187 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Model radius must be positive"</span>);
-<a name="l00188"></a>00188 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_GMmodel) && _GMmodel > 0))
+<a name="l00188"></a>00188 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_GMmodel) && _GMmodel > 0))
<a name="l00189"></a>00189 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Model mass constant must be positive"</span>);
-<a name="l00190"></a>00190 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_corrmult) && _corrmult > 0))
+<a name="l00190"></a>00190 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_corrmult) && _corrmult > 0))
<a name="l00191"></a>00191 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Correction multiplier must be positive"</span>);
-<a name="l00192"></a>00192 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_zeta0)))
+<a name="l00192"></a>00192 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_zeta0)))
<a name="l00193"></a>00193 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Height offset must be finite"</span>);
<a name="l00194"></a>00194 <span class="keywordflow">if</span> (<span class="keywordtype">int</span>(_id.size()) != idlength_)
<a name="l00195"></a>00195 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Invalid ID"</span>);
<a name="l00196"></a>00196 _earth = NormalGravity(a, GM, omega, f, J2);
<a name="l00197"></a>00197 }
<a name="l00198"></a>00198
-<a name="l00199"></a>00199 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityModel::InternalT(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00199"></a>00199 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GravityModel::InternalT(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
<a name="l00200"></a>00200 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaZ,
<a name="l00201"></a>00201 <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00202"></a>00202 <span class="comment">// If correct, then produce the correct T = W - U. Otherwise, neglect the</span>
@@ -255,7 +270,7 @@
<a name="l00206"></a>00206 <span class="comment">// No need to do the correction</span>
<a name="l00207"></a>00207 correct = <span class="keyword">false</span>;
<a name="l00208"></a>00208 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00209"></a>00209 invR = correct ? 1 / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y), Z) : 1,
+<a name="l00209"></a>00209 invR = correct ? 1 / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y), Z) : 1,
<a name="l00210"></a>00210 T = (gradp
<a name="l00211"></a>00211 ? _disturbing(-1, X, Y, Z, deltaX, deltaY, deltaZ)
<a name="l00212"></a>00212 : _disturbing(-1, X, Y, Z));
@@ -275,7 +290,7 @@
<a name="l00226"></a>00226 <span class="keywordflow">return</span> T;
<a name="l00227"></a>00227 }
<a name="l00228"></a>00228
-<a name="l00229"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">00229</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">GravityModel::V</a>(real X, real Y, real Z,
+<a name="l00229"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">00229</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">GravityModel::V</a>(real X, real Y, real Z,
<a name="l00230"></a>00230 real& GX, real& GY, real& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00231"></a>00231 real
<a name="l00232"></a>00232 Vres = _gravitational(X, Y, Z, GX, GY, GZ),
@@ -287,7 +302,7 @@
<a name="l00238"></a>00238 <span class="keywordflow">return</span> Vres;
<a name="l00239"></a>00239 }
<a name="l00240"></a>00240
-<a name="l00241"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">00241</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">GravityModel::W</a>(real X, real Y, real Z,
+<a name="l00241"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">00241</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">GravityModel::W</a>(real X, real Y, real Z,
<a name="l00242"></a>00242 real& gX, real& gY, real& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00243"></a>00243 real fX, fY,
<a name="l00244"></a>00244 Wres = V(X, Y, Z, gX, gY, gZ) + _earth.Phi(X, Y, fX, fY);
@@ -299,31 +314,31 @@
<a name="l00250"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aaf89eb4a9b7266f0aa2ef2c341fc264e">00250</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1GravityModel.html#aaf89eb4a9b7266f0aa2ef2c341fc264e">GravityModel::SphericalAnomaly</a>(real lat, real lon, real h,
<a name="l00251"></a>00251 real& Dg01, real& xi, real& eta)
<a name="l00252"></a>00252 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00253"></a>00253 real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00253"></a>00253 real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00254"></a>00254 _earth.Earth().IntForward(lat, lon, h, X, Y, Z, M);
<a name="l00255"></a>00255 real
<a name="l00256"></a>00256 deltax, deltay, deltaz,
<a name="l00257"></a>00257 T = InternalT(X, Y, Z, deltax, deltay, deltaz, <span class="keyword">true</span>, <span class="keyword">false</span>),
<a name="l00258"></a>00258 clam = M[3], slam = -M[0],
-<a name="l00259"></a>00259 P = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y),
-<a name="l00260"></a>00260 R = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(P, Z),
+<a name="l00259"></a>00259 P = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y),
+<a name="l00260"></a>00260 R = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(P, Z),
<a name="l00261"></a>00261 <span class="comment">// psi is geocentric latitude</span>
<a name="l00262"></a>00262 cpsi = R ? P / R : M[7],
<a name="l00263"></a>00263 spsi = R ? Z / R : M[8];
<a name="l00264"></a>00264 <span class="comment">// Rotate cartesian into spherical coordinates</span>
-<a name="l00265"></a>00265 real MC[Geocentric::dim2_];
+<a name="l00265"></a>00265 real MC[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00266"></a>00266 Geocentric::Rotation(spsi, cpsi, slam, clam, MC);
<a name="l00267"></a>00267 Geocentric::Unrotate(MC, deltax, deltay, deltaz, deltax, deltay, deltaz);
<a name="l00268"></a>00268 <span class="comment">// H+M, Eq 2-151c</span>
<a name="l00269"></a>00269 Dg01 = - deltaz - 2 * T / R;
<a name="l00270"></a>00270 real gammaX, gammaY, gammaZ;
<a name="l00271"></a>00271 _earth.U(X, Y, Z, gammaX, gammaY, gammaZ);
-<a name="l00272"></a>00272 real gamma = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>( <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(gammaX, gammaY), gammaZ);
+<a name="l00272"></a>00272 real gamma = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>( <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(gammaX, gammaY), gammaZ);
<a name="l00273"></a>00273 xi = -(deltay/gamma) / Math::degree<real>();
<a name="l00274"></a>00274 eta = -(deltax/gamma) / Math::degree<real>();
<a name="l00275"></a>00275 }
<a name="l00276"></a>00276
-<a name="l00277"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">00277</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">GravityModel::GeoidHeight</a>(real lat, real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
+<a name="l00277"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">00277</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">GravityModel::GeoidHeight</a>(real lat, real lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
<a name="l00278"></a>00278 {
<a name="l00279"></a>00279 real X, Y, Z;
<a name="l00280"></a>00280 _earth.Earth().IntForward(lat, lon, 0, X, Y, Z, NULL);
@@ -331,24 +346,24 @@
<a name="l00282"></a>00282 gamma0 = _earth.SurfaceGravity(lat),
<a name="l00283"></a>00283 dummy,
<a name="l00284"></a>00284 T = InternalT(X, Y, Z, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">false</span>),
-<a name="l00285"></a>00285 invR = 1 / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y), Z),
+<a name="l00285"></a>00285 invR = 1 / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y), Z),
<a name="l00286"></a>00286 correction = _corrmult * _correction(invR * X, invR * Y, invR * Z);
<a name="l00287"></a>00287 <span class="comment">// _zeta0 has been included in _correction</span>
<a name="l00288"></a>00288 <span class="keywordflow">return</span> T/gamma0 + correction;
<a name="l00289"></a>00289 }
<a name="l00290"></a>00290
-<a name="l00291"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">00291</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">GravityModel::Gravity</a>(real lat, real lon, real h,
+<a name="l00291"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">00291</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">GravityModel::Gravity</a>(real lat, real lon, real h,
<a name="l00292"></a>00292 real& gx, real& gy, real& gz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00293"></a>00293 real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00293"></a>00293 real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00294"></a>00294 _earth.Earth().IntForward(lat, lon, h, X, Y, Z, M);
<a name="l00295"></a>00295 real Wres = W(X, Y, Z, gx, gy, gz);
<a name="l00296"></a>00296 Geocentric::Unrotate(M, gx, gy, gz, gx, gy, gz);
<a name="l00297"></a>00297 <span class="keywordflow">return</span> Wres;
<a name="l00298"></a>00298 }
-<a name="l00299"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">00299</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">GravityModel::Disturbance</a>(real lat, real lon, real h,
+<a name="l00299"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">00299</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">GravityModel::Disturbance</a>(real lat, real lon, real h,
<a name="l00300"></a>00300 real& deltax, real& deltay, real& deltaz)
<a name="l00301"></a>00301 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00302"></a>00302 real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00302"></a>00302 real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00303"></a>00303 _earth.Earth().IntForward(lat, lon, h, X, Y, Z, M);
<a name="l00304"></a>00304 real Tres = InternalT(X, Y, Z, deltax, deltay, deltaz, <span class="keyword">true</span>, <span class="keyword">true</span>);
<a name="l00305"></a>00305 Geocentric::Unrotate(M, deltax, deltay, deltaz, deltax, deltay, deltaz);
@@ -359,19 +374,19 @@
<a name="l00310"></a>00310 <span class="keywordflow">if</span> (h != 0)
<a name="l00311"></a>00311 <span class="comment">// Disallow invoking GeoidHeight unless h is zero.</span>
<a name="l00312"></a>00312 caps &= ~(CAP_GAMMA0 | CAP_C);
-<a name="l00313"></a>00313 real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00313"></a>00313 real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00314"></a>00314 _earth.<a class="code" href="classGeographicLib_1_1NormalGravity.html#ab15ded1ab7ec9a30e8053fc330ed76ac">Earth</a>().IntForward(lat, 0, h, X, Y, Z, M);
<a name="l00315"></a>00315 <span class="comment">// Y = 0, cphi = M[7], sphi = M[8];</span>
<a name="l00316"></a>00316 real
-<a name="l00317"></a>00317 invR = 1 / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Z),
+<a name="l00317"></a>00317 invR = 1 / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Z),
<a name="l00318"></a>00318 gamma0 = (caps & CAP_GAMMA0 ?_earth.<a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">SurfaceGravity</a>(lat)
-<a name="l00319"></a>00319 : Math::NaN<real>()),
+<a name="l00319"></a>00319 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>()),
<a name="l00320"></a>00320 fx, fy, fz, gamma;
<a name="l00321"></a>00321 <span class="keywordflow">if</span> (caps & CAP_GAMMA) {
<a name="l00322"></a>00322 _earth.<a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">U</a>(X, Y, Z, fx, fy, fz); <span class="comment">// fy = 0</span>
-<a name="l00323"></a>00323 gamma = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(fx, fz);
+<a name="l00323"></a>00323 gamma = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(fx, fz);
<a name="l00324"></a>00324 } <span class="keywordflow">else</span>
-<a name="l00325"></a>00325 gamma = Math::NaN<real>();
+<a name="l00325"></a>00325 gamma = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00326"></a>00326 _earth.<a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">Phi</a>(X, Y, fx, fy);
<a name="l00327"></a>00327 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1GravityModel.html#a243c90a7f9bf3f7aa96877a4b0667a89">GravityCircle</a>(GravityCircle::mask(caps),
<a name="l00328"></a>00328 _earth._a, _earth._f, lat, h, Z, X, M[7], M[8],
@@ -413,8 +428,13 @@
<a name="l00364"></a>00364 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GravityModel_8hpp.html b/doc/html/GravityModel_8hpp.html
index 9b511df..cf0fe69 100644
--- a/doc/html/GravityModel_8hpp.html
+++ b/doc/html/GravityModel_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GravityModel.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,13 +87,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8hpp.html#ace85f3a4d35d4657064e289e2bf57dab">GEOGRAPHICLIB_GRAVITYMODEL_HPP</a> "$Id: e1cd05f6303c46250b29d12bc51c3497d06508ae $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8hpp.html#ace85f3a4d35d4657064e289e2bf57dab">GEOGRAPHICLIB_GRAVITYMODEL_HPP</a> "$Id: e1a573fb0148fa5bc408b2dbdb096d4cd3091bac $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
@@ -91,7 +104,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_GRAVITYMODEL_HPP "$Id: e1cd05f6303c46250b29d12bc51c3497d06508ae $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_GRAVITYMODEL_HPP "$Id: e1a573fb0148fa5bc408b2dbdb096d4cd3091bac $"</td>
</tr>
</table>
</div>
@@ -102,8 +115,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/GravityModel_8hpp_source.html b/doc/html/GravityModel_8hpp_source.html
index 464867a..df21718 100644
--- a/doc/html/GravityModel_8hpp_source.html
+++ b/doc/html/GravityModel_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GravityModel.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_GRAVITYMODEL_HPP)</span>
<a name="l00011"></a><a class="code" href="GravityModel_8hpp.html#ace85f3a4d35d4657064e289e2bf57dab">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_GRAVITYMODEL_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: e1cd05f6303c46250b29d12bc51c3497d06508ae $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: e1a573fb0148fa5bc408b2dbdb096d4cd3091bac $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <sstream></span>
@@ -129,440 +144,448 @@
<a name="l00079"></a>00079 <span class="comment"> *</span>
<a name="l00080"></a>00080 <span class="comment"> * Example of use:</span>
<a name="l00081"></a>00081 <span class="comment"> * \include example-GravityModel.cpp</span>
-<a name="l00082"></a>00082 <span class="comment"> **********************************************************************/</span>
-<a name="l00083"></a>00083
-<a name="l00084"></a><a class="code" href="classGeographicLib_1_1GravityModel.html">00084</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> {
-<a name="l00085"></a>00085 <span class="keyword">private</span>:
-<a name="l00086"></a>00086 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00087"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a243c90a7f9bf3f7aa96877a4b0667a89">00087</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>;
-<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> idlength_ = 8;
-<a name="l00089"></a>00089 std::string _name, _dir, _description, _date, _filename, _id;
-<a name="l00090"></a>00090 real _amodel, _GMmodel, _zeta0, _corrmult;
-<a name="l00091"></a>00091 <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eb">SphericalHarmonic::normalization</a> _norm;
-<a name="l00092"></a>00092 <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> _earth;
-<a name="l00093"></a>00093 std::vector<real> _C, _S, _CC, _CS, _zonal;
-<a name="l00094"></a>00094 real _dzonal0; <span class="comment">// A left over contribution to _zonal.</span>
-<a name="l00095"></a>00095 <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> _gravitational;
-<a name="l00096"></a>00096 <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a> _disturbing;
-<a name="l00097"></a>00097 <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> _correction;
-<a name="l00098"></a>00098 <span class="keywordtype">void</span> ReadMetadata(<span class="keyword">const</span> std::string& name);
-<a name="l00099"></a>00099 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InternalT(real X, real Y, real Z,
-<a name="l00100"></a>00100 real& deltaX, real& deltaY, real& deltaZ,
-<a name="l00101"></a>00101 <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00102"></a>00102 <span class="keyword">enum</span> captype {
-<a name="l00103"></a>00103 CAP_NONE = 0U,
-<a name="l00104"></a>00104 CAP_G = 1U<<0, <span class="comment">// implies potentials W and V</span>
-<a name="l00105"></a>00105 CAP_T = 1U<<1,
-<a name="l00106"></a>00106 CAP_DELTA = 1U<<2 | CAP_T, <span class="comment">// delta implies T?</span>
-<a name="l00107"></a>00107 CAP_C = 1U<<3,
-<a name="l00108"></a>00108 CAP_GAMMA0 = 1U<<4,
-<a name="l00109"></a>00109 CAP_GAMMA = 1U<<5,
-<a name="l00110"></a>00110 CAP_ALL = 0x3FU,
-<a name="l00111"></a>00111 };
-<a name="l00112"></a>00112
-<a name="l00113"></a>00113 <span class="keyword">public</span>:
-<a name="l00114"></a>00114 <span class="comment"></span>
-<a name="l00115"></a>00115 <span class="comment"> /**</span>
-<a name="l00116"></a>00116 <span class="comment"> * Bit masks for the capabilities to be given to the GravityCircle object</span>
-<a name="l00117"></a>00117 <span class="comment"> * produced by Circle.</span>
-<a name="l00118"></a>00118 <span class="comment"> **********************************************************************/</span>
-<a name="l00119"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365">00119</a> <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365">mask</a> {<span class="comment"></span>
-<a name="l00120"></a>00120 <span class="comment"> /**</span>
-<a name="l00121"></a>00121 <span class="comment"> * No capabilities.</span>
-<a name="l00122"></a>00122 <span class="comment"> * @hideinitializer</span>
-<a name="l00123"></a>00123 <span class="comment"> **********************************************************************/</span>
-<a name="l00124"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365add4ee1aa94e38a8283826704105dc2e1">00124</a> NONE = 0U,<span class="comment"></span>
-<a name="l00125"></a>00125 <span class="comment"> /**</span>
-<a name="l00126"></a>00126 <span class="comment"> * Allow calls to GravityCircle::Gravity, GravityCircle::W, and</span>
-<a name="l00127"></a>00127 <span class="comment"> * GravityCircle::V.</span>
-<a name="l00128"></a>00128 <span class="comment"> * @hideinitializer</span>
-<a name="l00129"></a>00129 <span class="comment"> **********************************************************************/</span>
-<a name="l00130"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">00130</a> GRAVITY = CAP_G,<span class="comment"></span>
-<a name="l00131"></a>00131 <span class="comment"> /**</span>
-<a name="l00132"></a>00132 <span class="comment"> * Allow calls to GravityCircle::Disturbance and GravityCircle::T.</span>
-<a name="l00133"></a>00133 <span class="comment"> * @hideinitializer</span>
-<a name="l00134"></a>00134 <span class="comment"> **********************************************************************/</span>
-<a name="l00135"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a83daf366a2c7ab93495f0e6b4144d885">00135</a> DISTURBANCE = CAP_DELTA,<span class="comment"></span>
-<a name="l00136"></a>00136 <span class="comment"> /**</span>
-<a name="l00137"></a>00137 <span class="comment"> * Allow calls to GravityCircle::T(real lon) (i.e., computing the</span>
-<a name="l00138"></a>00138 <span class="comment"> * disturbing potential and not the gravity disturbance vector).</span>
-<a name="l00139"></a>00139 <span class="comment"> * @hideinitializer</span>
-<a name="l00140"></a>00140 <span class="comment"> **********************************************************************/</span>
-<a name="l00141"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365abe1f6d891a721a4f544cd8a341abcb28">00141</a> DISTURBING_POTENTIAL = CAP_T,<span class="comment"></span>
-<a name="l00142"></a>00142 <span class="comment"> /**</span>
-<a name="l00143"></a>00143 <span class="comment"> * Allow calls to GravityCircle::SphericalAnomaly.</span>
-<a name="l00144"></a>00144 <span class="comment"> * @hideinitializer</span>
-<a name="l00145"></a>00145 <span class="comment"> **********************************************************************/</span>
-<a name="l00146"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ada02eebe918ebb3764a62b9323dceac9">00146</a> SPHERICAL_ANOMALY = CAP_DELTA | CAP_GAMMA,<span class="comment"></span>
-<a name="l00147"></a>00147 <span class="comment"> /**</span>
-<a name="l00148"></a>00148 <span class="comment"> * Allow calls to GravityCircle::GeoidHeight.</span>
-<a name="l00149"></a>00149 <span class="comment"> * @hideinitializer</span>
-<a name="l00150"></a>00150 <span class="comment"> **********************************************************************/</span>
-<a name="l00151"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a0ac768bffe3f104069c3fd5af1ddaa69">00151</a> GEOID_HEIGHT = CAP_T | CAP_C | CAP_GAMMA0,<span class="comment"></span>
-<a name="l00152"></a>00152 <span class="comment"> /**</span>
-<a name="l00153"></a>00153 <span class="comment"> * All capabilities.</span>
-<a name="l00154"></a>00154 <span class="comment"> * @hideinitializer</span>
-<a name="l00155"></a>00155 <span class="comment"> **********************************************************************/</span>
-<a name="l00156"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a8e0e6b9a6d629d05f22f41996fe98068">00156</a> ALL = CAP_ALL,
-<a name="l00157"></a>00157 };<span class="comment"></span>
-<a name="l00158"></a>00158 <span class="comment"> /** \name Setting up the gravity model</span>
-<a name="l00159"></a>00159 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00160"></a>00160 <span class="comment"> ///@{</span>
-<a name="l00161"></a>00161 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00162"></a>00162 <span class="comment"> * Construct a gravity model.</span>
-<a name="l00163"></a>00163 <span class="comment"> *</span>
-<a name="l00164"></a>00164 <span class="comment"> * @param[in] name the name of the model.</span>
-<a name="l00165"></a>00165 <span class="comment"> * @param[in] path (optional) directory for data file.</span>
+<a name="l00082"></a>00082 <span class="comment"> *</span>
+<a name="l00083"></a>00083 <span class="comment"> * <a href="Gravity.1.html">Gravity</a> is a command-line utility providing</span>
+<a name="l00084"></a>00084 <span class="comment"> * access to the functionality of GravityModel and GravityCircle.</span>
+<a name="l00085"></a>00085 <span class="comment"> **********************************************************************/</span>
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> GravityModel {
+<a name="l00088"></a>00088 <span class="keyword">private</span>:
+<a name="l00089"></a>00089 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00090"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a243c90a7f9bf3f7aa96877a4b0667a89">00090</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>;
+<a name="l00091"></a>00091 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> idlength_ = 8;
+<a name="l00092"></a>00092 std::string _name, _dir, _description, _date, _filename, _id;
+<a name="l00093"></a>00093 real _amodel, _GMmodel, _zeta0, _corrmult;
+<a name="l00094"></a>00094 <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>::normalization _norm;
+<a name="l00095"></a>00095 <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> _earth;
+<a name="l00096"></a>00096 std::vector<real> _C, _S, _CC, _CS, _zonal;
+<a name="l00097"></a>00097 real _dzonal0; <span class="comment">// A left over contribution to _zonal.</span>
+<a name="l00098"></a>00098 <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> _gravitational;
+<a name="l00099"></a>00099 <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a> _disturbing;
+<a name="l00100"></a>00100 <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> _correction;
+<a name="l00101"></a>00101 <span class="keywordtype">void</span> ReadMetadata(<span class="keyword">const</span> std::string& name);
+<a name="l00102"></a>00102 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real InternalT(real X, real Y, real Z,
+<a name="l00103"></a>00103 real& deltaX, real& deltaY, real& deltaZ,
+<a name="l00104"></a>00104 <span class="keywordtype">bool</span> gradp, <span class="keywordtype">bool</span> correct) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00105"></a>00105 <span class="keyword">enum</span> captype {
+<a name="l00106"></a>00106 CAP_NONE = 0U,
+<a name="l00107"></a>00107 CAP_G = 1U<<0, <span class="comment">// implies potentials W and V</span>
+<a name="l00108"></a>00108 CAP_T = 1U<<1,
+<a name="l00109"></a>00109 CAP_DELTA = 1U<<2 | CAP_T, <span class="comment">// delta implies T?</span>
+<a name="l00110"></a>00110 CAP_C = 1U<<3,
+<a name="l00111"></a>00111 CAP_GAMMA0 = 1U<<4,
+<a name="l00112"></a>00112 CAP_GAMMA = 1U<<5,
+<a name="l00113"></a>00113 CAP_ALL = 0x3FU,
+<a name="l00114"></a>00114 };
+<a name="l00115"></a>00115
+<a name="l00116"></a>00116 <span class="keyword">public</span>:
+<a name="l00117"></a>00117 <span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment"> /**</span>
+<a name="l00119"></a>00119 <span class="comment"> * Bit masks for the capabilities to be given to the GravityCircle object</span>
+<a name="l00120"></a>00120 <span class="comment"> * produced by Circle.</span>
+<a name="l00121"></a>00121 <span class="comment"> **********************************************************************/</span>
+<a name="l00122"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365">00122</a> <span class="keyword">enum</span> <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365">mask</a> {<span class="comment"></span>
+<a name="l00123"></a>00123 <span class="comment"> /**</span>
+<a name="l00124"></a>00124 <span class="comment"> * No capabilities.</span>
+<a name="l00125"></a>00125 <span class="comment"> * @hideinitializer</span>
+<a name="l00126"></a>00126 <span class="comment"> **********************************************************************/</span>
+<a name="l00127"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365add4ee1aa94e38a8283826704105dc2e1">00127</a> NONE = 0U,<span class="comment"></span>
+<a name="l00128"></a>00128 <span class="comment"> /**</span>
+<a name="l00129"></a>00129 <span class="comment"> * Allow calls to GravityCircle::Gravity, GravityCircle::W, and</span>
+<a name="l00130"></a>00130 <span class="comment"> * GravityCircle::V.</span>
+<a name="l00131"></a>00131 <span class="comment"> * @hideinitializer</span>
+<a name="l00132"></a>00132 <span class="comment"> **********************************************************************/</span>
+<a name="l00133"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">00133</a> GRAVITY = CAP_G,<span class="comment"></span>
+<a name="l00134"></a>00134 <span class="comment"> /**</span>
+<a name="l00135"></a>00135 <span class="comment"> * Allow calls to GravityCircle::Disturbance and GravityCircle::T.</span>
+<a name="l00136"></a>00136 <span class="comment"> * @hideinitializer</span>
+<a name="l00137"></a>00137 <span class="comment"> **********************************************************************/</span>
+<a name="l00138"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a83daf366a2c7ab93495f0e6b4144d885">00138</a> DISTURBANCE = CAP_DELTA,<span class="comment"></span>
+<a name="l00139"></a>00139 <span class="comment"> /**</span>
+<a name="l00140"></a>00140 <span class="comment"> * Allow calls to GravityCircle::T(real lon) (i.e., computing the</span>
+<a name="l00141"></a>00141 <span class="comment"> * disturbing potential and not the gravity disturbance vector).</span>
+<a name="l00142"></a>00142 <span class="comment"> * @hideinitializer</span>
+<a name="l00143"></a>00143 <span class="comment"> **********************************************************************/</span>
+<a name="l00144"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365abe1f6d891a721a4f544cd8a341abcb28">00144</a> DISTURBING_POTENTIAL = CAP_T,<span class="comment"></span>
+<a name="l00145"></a>00145 <span class="comment"> /**</span>
+<a name="l00146"></a>00146 <span class="comment"> * Allow calls to GravityCircle::SphericalAnomaly.</span>
+<a name="l00147"></a>00147 <span class="comment"> * @hideinitializer</span>
+<a name="l00148"></a>00148 <span class="comment"> **********************************************************************/</span>
+<a name="l00149"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ada02eebe918ebb3764a62b9323dceac9">00149</a> SPHERICAL_ANOMALY = CAP_DELTA | CAP_GAMMA,<span class="comment"></span>
+<a name="l00150"></a>00150 <span class="comment"> /**</span>
+<a name="l00151"></a>00151 <span class="comment"> * Allow calls to GravityCircle::GeoidHeight.</span>
+<a name="l00152"></a>00152 <span class="comment"> * @hideinitializer</span>
+<a name="l00153"></a>00153 <span class="comment"> **********************************************************************/</span>
+<a name="l00154"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a0ac768bffe3f104069c3fd5af1ddaa69">00154</a> GEOID_HEIGHT = CAP_T | CAP_C | CAP_GAMMA0,<span class="comment"></span>
+<a name="l00155"></a>00155 <span class="comment"> /**</span>
+<a name="l00156"></a>00156 <span class="comment"> * All capabilities.</span>
+<a name="l00157"></a>00157 <span class="comment"> * @hideinitializer</span>
+<a name="l00158"></a>00158 <span class="comment"> **********************************************************************/</span>
+<a name="l00159"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a8e0e6b9a6d629d05f22f41996fe98068">00159</a> ALL = CAP_ALL,
+<a name="l00160"></a>00160 };<span class="comment"></span>
+<a name="l00161"></a>00161 <span class="comment"> /** \name Setting up the gravity model</span>
+<a name="l00162"></a>00162 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00163"></a>00163 <span class="comment"> ///@{</span>
+<a name="l00164"></a>00164 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00165"></a>00165 <span class="comment"> * Construct a gravity model.</span>
<a name="l00166"></a>00166 <span class="comment"> *</span>
-<a name="l00167"></a>00167 <span class="comment"> * A filename is formed by appending ".egm" (World Gravity Model) to the</span>
-<a name="l00168"></a>00168 <span class="comment"> * name. If \e path is specified (and is non-empty), then the file is</span>
-<a name="l00169"></a>00169 <span class="comment"> * loaded from directory, \e path. Otherwise the path is given by</span>
-<a name="l00170"></a>00170 <span class="comment"> * DefaultGravityPath(). This may throw an exception because the file does</span>
-<a name="l00171"></a>00171 <span class="comment"> * not exist, is unreadable, or is corrupt.</span>
-<a name="l00172"></a>00172 <span class="comment"> *</span>
-<a name="l00173"></a>00173 <span class="comment"> * This file contains the metadata which specifies the properties of the</span>
-<a name="l00174"></a>00174 <span class="comment"> * model. The coefficients for the spherical harmonic sums are obtained</span>
-<a name="l00175"></a>00175 <span class="comment"> * from a file obtained by appending ".cof" to metadata file (so the</span>
-<a name="l00176"></a>00176 <span class="comment"> * filename ends in ".egm.cof").</span>
-<a name="l00177"></a>00177 <span class="comment"> **********************************************************************/</span>
-<a name="l00178"></a>00178 <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>(<span class="keyword">const</span> std::string& name,
-<a name="l00179"></a>00179 <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>);<span class="comment"></span>
-<a name="l00180"></a>00180 <span class="comment"> ///@}</span>
-<a name="l00181"></a>00181 <span class="comment"></span><span class="comment"></span>
-<a name="l00182"></a>00182 <span class="comment"> /** \name Compute gravity in geodetic coordinates</span>
-<a name="l00183"></a>00183 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00184"></a>00184 <span class="comment"> ///@{</span>
-<a name="l00185"></a>00185 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00186"></a>00186 <span class="comment"> * Evaluate the gravity at an arbitrary point above (or below) the</span>
-<a name="l00187"></a>00187 <span class="comment"> * ellipsoid.</span>
-<a name="l00188"></a>00188 <span class="comment"> *</span>
-<a name="l00189"></a>00189 <span class="comment"> * @param[in] lat the geographic latitude (degrees).</span>
-<a name="l00190"></a>00190 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00191"></a>00191 <span class="comment"> * @param[in] h the height above the ellipsoid (meters).</span>
-<a name="l00192"></a>00192 <span class="comment"> * @param[out] gx the easterly component of the acceleration</span>
-<a name="l00193"></a>00193 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00194"></a>00194 <span class="comment"> * @param[out] gy the northerly component of the acceleration</span>
-<a name="l00195"></a>00195 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00196"></a>00196 <span class="comment"> * @param[out] gz the upward component of the acceleration</span>
-<a name="l00197"></a>00197 <span class="comment"> * (m s<sup>-2</sup>); this is usually negative.</span>
-<a name="l00198"></a>00198 <span class="comment"> * @return \e W the sum of the gravitational and centrifugal potentials.</span>
-<a name="l00199"></a>00199 <span class="comment"> *</span>
-<a name="l00200"></a>00200 <span class="comment"> * The function includes the effects of the earth's rotation.</span>
-<a name="l00201"></a>00201 <span class="comment"> **********************************************************************/</span>
-<a name="l00202"></a>00202 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
-<a name="l00203"></a>00203 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gy, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gz) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00204"></a>00204 <span class="comment"></span>
-<a name="l00205"></a>00205 <span class="comment"> /**</span>
-<a name="l00206"></a>00206 <span class="comment"> * Evaluate the gravity disturbance vector at an arbitrary point above (or</span>
-<a name="l00207"></a>00207 <span class="comment"> * below) the ellipsoid.</span>
-<a name="l00208"></a>00208 <span class="comment"> *</span>
-<a name="l00209"></a>00209 <span class="comment"> * @param[in] lat the geographic latitude (degrees).</span>
-<a name="l00210"></a>00210 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00211"></a>00211 <span class="comment"> * @param[in] h the height above the ellipsoid (meters).</span>
-<a name="l00212"></a>00212 <span class="comment"> * @param[out] deltax the easterly component of the disturbance vector</span>
-<a name="l00213"></a>00213 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00214"></a>00214 <span class="comment"> * @param[out] deltay the northerly component of the disturbance vector</span>
-<a name="l00215"></a>00215 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00216"></a>00216 <span class="comment"> * @param[out] deltaz the upward component of the disturbance vector</span>
-<a name="l00217"></a>00217 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00218"></a>00218 <span class="comment"> * @return \e T the corresponding disturbing potential.</span>
-<a name="l00219"></a>00219 <span class="comment"> **********************************************************************/</span>
-<a name="l00220"></a>00220 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Disturbance(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
-<a name="l00221"></a>00221 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltax, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltay, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaz)
-<a name="l00222"></a>00222 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00223"></a>00223 <span class="comment"></span>
-<a name="l00224"></a>00224 <span class="comment"> /**</span>
-<a name="l00225"></a>00225 <span class="comment"> * Evaluate the geoid height.</span>
-<a name="l00226"></a>00226 <span class="comment"> *</span>
-<a name="l00227"></a>00227 <span class="comment"> * @param[in] lat the geographic latitude (degrees).</span>
-<a name="l00228"></a>00228 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00229"></a>00229 <span class="comment"> * @return \e N the height of the geoid above the ReferenceEllipsoid()</span>
-<a name="l00230"></a>00230 <span class="comment"> * (meters).</span>
-<a name="l00231"></a>00231 <span class="comment"> *</span>
-<a name="l00232"></a>00232 <span class="comment"> * This calls NormalGravity::U for ReferenceEllipsoid(). Some</span>
-<a name="l00233"></a>00233 <span class="comment"> * approximations are made in computing the geoid height so that the</span>
-<a name="l00234"></a>00234 <span class="comment"> * results of the NGA codes are reproduced accurately. Details are given</span>
-<a name="l00235"></a>00235 <span class="comment"> * in \ref gravitygeoid.</span>
-<a name="l00236"></a>00236 <span class="comment"> **********************************************************************/</span>
-<a name="l00237"></a>00237 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeoidHeight(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00238"></a>00238 <span class="comment"></span>
-<a name="l00239"></a>00239 <span class="comment"> /**</span>
-<a name="l00240"></a>00240 <span class="comment"> * Evaluate the components of the gravity anomaly vector using the</span>
-<a name="l00241"></a>00241 <span class="comment"> * spherical approximation.</span>
-<a name="l00242"></a>00242 <span class="comment"> *</span>
-<a name="l00243"></a>00243 <span class="comment"> * @param[in] lat the geographic latitude (degrees).</span>
-<a name="l00244"></a>00244 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
-<a name="l00245"></a>00245 <span class="comment"> * @param[in] h the height above the ellipsoid (meters).</span>
-<a name="l00246"></a>00246 <span class="comment"> * @param[out] Dg01 the gravity anomaly (m s<sup>-2</sup>).</span>
-<a name="l00247"></a>00247 <span class="comment"> * @param[out] xi the northerly component of the deflection of the vertical</span>
-<a name="l00248"></a>00248 <span class="comment"> * (degrees).</span>
-<a name="l00249"></a>00249 <span class="comment"> * @param[out] eta the easterly component of the deflection of the vertical</span>
-<a name="l00250"></a>00250 <span class="comment"> * (degrees).</span>
-<a name="l00251"></a>00251 <span class="comment"> *</span>
-<a name="l00252"></a>00252 <span class="comment"> * The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used</span>
-<a name="l00253"></a>00253 <span class="comment"> * so that the results of the NGA codes are reproduced accurately.</span>
-<a name="l00254"></a>00254 <span class="comment"> * approximations used here. Details are given in \ref gravitygeoid.</span>
-<a name="l00255"></a>00255 <span class="comment"> **********************************************************************/</span>
-<a name="l00256"></a>00256 <span class="keywordtype">void</span> SphericalAnomaly(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
-<a name="l00257"></a>00257 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dg01, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
-<a name="l00258"></a>00258 <span class="comment"> ///@}</span>
-<a name="l00259"></a>00259 <span class="comment"></span><span class="comment"></span>
-<a name="l00260"></a>00260 <span class="comment"> /** \name Compute gravity in geocentric coordinates</span>
-<a name="l00261"></a>00261 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00262"></a>00262 <span class="comment"> ///@{</span>
-<a name="l00263"></a>00263 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00264"></a>00264 <span class="comment"> * Evaluate the components of the acceleration due to gravity and the</span>
-<a name="l00265"></a>00265 <span class="comment"> * centrifugal acceleration in geocentric coordinates.</span>
-<a name="l00266"></a>00266 <span class="comment"> *</span>
-<a name="l00267"></a>00267 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00268"></a>00268 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00269"></a>00269 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00270"></a>00270 <span class="comment"> * @param[out] gX the \e X component of the acceleration</span>
-<a name="l00271"></a>00271 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00272"></a>00272 <span class="comment"> * @param[out] gY the \e Y component of the acceleration</span>
-<a name="l00273"></a>00273 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00274"></a>00274 <span class="comment"> * @param[out] gZ the \e Z component of the acceleration</span>
-<a name="l00275"></a>00275 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00276"></a>00276 <span class="comment"> * @return \e W = \e V + \e Phi the sum of the gravitational and</span>
-<a name="l00277"></a>00277 <span class="comment"> * centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00278"></a>00278 <span class="comment"> *</span>
-<a name="l00279"></a>00279 <span class="comment"> * This calls NormalGravity::U for ReferenceEllipsoid().</span>
-<a name="l00280"></a>00280 <span class="comment"> **********************************************************************/</span>
-<a name="l00281"></a>00281 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> W(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
-<a name="l00282"></a>00282 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00283"></a>00283 <span class="comment"></span>
-<a name="l00284"></a>00284 <span class="comment"> /**</span>
-<a name="l00285"></a>00285 <span class="comment"> * Evaluate the components of the acceleration due to gravity in geocentric</span>
-<a name="l00286"></a>00286 <span class="comment"> * coordinates.</span>
-<a name="l00287"></a>00287 <span class="comment"> *</span>
-<a name="l00288"></a>00288 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00289"></a>00289 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00290"></a>00290 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00291"></a>00291 <span class="comment"> * @param[out] GX the \e X component of the acceleration</span>
-<a name="l00292"></a>00292 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00293"></a>00293 <span class="comment"> * @param[out] GY the \e Y component of the acceleration</span>
-<a name="l00294"></a>00294 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00295"></a>00295 <span class="comment"> * @param[out] GZ the \e Z component of the acceleration</span>
-<a name="l00296"></a>00296 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00297"></a>00297 <span class="comment"> * @return \e V = \e W - \e Phi the gravitational potential</span>
-<a name="l00298"></a>00298 <span class="comment"> * (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00299"></a>00299 <span class="comment"> **********************************************************************/</span>
-<a name="l00300"></a>00300 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> V(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
-<a name="l00301"></a>00301 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00302"></a>00302 <span class="comment"></span>
-<a name="l00303"></a>00303 <span class="comment"> /**</span>
-<a name="l00304"></a>00304 <span class="comment"> * Evaluate the components of the gravity disturbance in geocentric</span>
-<a name="l00305"></a>00305 <span class="comment"> * coordinates.</span>
-<a name="l00306"></a>00306 <span class="comment"> *</span>
-<a name="l00307"></a>00307 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00308"></a>00308 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00309"></a>00309 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00310"></a>00310 <span class="comment"> * @param[out] deltaX the \e X component of the gravity disturbance</span>
-<a name="l00311"></a>00311 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00312"></a>00312 <span class="comment"> * @param[out] deltaY the \e Y component of the gravity disturbance</span>
-<a name="l00313"></a>00313 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00314"></a>00314 <span class="comment"> * @param[out] deltaZ the \e Z component of the gravity disturbance</span>
-<a name="l00315"></a>00315 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00316"></a>00316 <span class="comment"> * @return \e T = \e W - \e U the disturbing potential (also called the</span>
-<a name="l00317"></a>00317 <span class="comment"> * anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00318"></a>00318 <span class="comment"> **********************************************************************/</span>
-<a name="l00319"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a257022f1f125d88b0a6efdccfc5e7a41">00319</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> T(real X, real Y, real Z,
-<a name="l00320"></a>00320 real& deltaX, real& deltaY, real& deltaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00321"></a>00321 { <span class="keywordflow">return</span> InternalT(X, Y, Z, deltaX, deltaY, deltaZ, <span class="keyword">true</span>, <span class="keyword">true</span>); }
-<a name="l00322"></a>00322 <span class="comment"></span>
-<a name="l00323"></a>00323 <span class="comment"> /**</span>
-<a name="l00324"></a>00324 <span class="comment"> * Evaluate disturbing potential in geocentric coordinates.</span>
-<a name="l00325"></a>00325 <span class="comment"> *</span>
-<a name="l00326"></a>00326 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00327"></a>00327 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00328"></a>00328 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00329"></a>00329 <span class="comment"> * @return \e T = \e W - \e U the disturbing potential (also called the</span>
-<a name="l00330"></a>00330 <span class="comment"> * anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00331"></a>00331 <span class="comment"> **********************************************************************/</span>
-<a name="l00332"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a690657dedac8ccea22052eda2829fea3">00332</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a690657dedac8ccea22052eda2829fea3">T</a>(real X, real Y, real Z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00333"></a>00333 real dummy;
-<a name="l00334"></a>00334 <span class="keywordflow">return</span> InternalT(X, Y, Z, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">true</span>);
-<a name="l00335"></a>00335 }
-<a name="l00336"></a>00336 <span class="comment"></span>
-<a name="l00337"></a>00337 <span class="comment"> /**</span>
-<a name="l00338"></a>00338 <span class="comment"> * Evaluate the components of the acceleration due to normal gravity and the</span>
-<a name="l00339"></a>00339 <span class="comment"> * centrifugal acceleration in geocentric coordinates.</span>
-<a name="l00340"></a>00340 <span class="comment"> *</span>
-<a name="l00341"></a>00341 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00342"></a>00342 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00343"></a>00343 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
-<a name="l00344"></a>00344 <span class="comment"> * @param[out] gammaX the \e X component of the normal acceleration</span>
-<a name="l00345"></a>00345 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00346"></a>00346 <span class="comment"> * @param[out] gammaY the \e Y component of the normal acceleration</span>
-<a name="l00347"></a>00347 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00348"></a>00348 <span class="comment"> * @param[out] gammaZ the \e Z component of the normal acceleration</span>
-<a name="l00349"></a>00349 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00350"></a>00350 <span class="comment"> * @return \e U = <i>V</i><sub>0</sub> + \e Phi the sum of the</span>
-<a name="l00351"></a>00351 <span class="comment"> * normal gravitational and centrifugal potentials</span>
-<a name="l00352"></a>00352 <span class="comment"> * (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00353"></a>00353 <span class="comment"> *</span>
-<a name="l00354"></a>00354 <span class="comment"> * This calls NormalGravity::U for ReferenceEllipsoid().</span>
-<a name="l00355"></a>00355 <span class="comment"> **********************************************************************/</span>
-<a name="l00356"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af368d4f9015e076e5cc57ad87b8a185f">00356</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> U(real X, real Y, real Z,
-<a name="l00357"></a>00357 real& gammaX, real& gammaY, real& gammaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00358"></a>00358 { <span class="keywordflow">return</span> _earth.U(X, Y, Z, gammaX, gammaY, gammaZ); }
-<a name="l00359"></a>00359 <span class="comment"></span>
-<a name="l00360"></a>00360 <span class="comment"> /**</span>
-<a name="l00361"></a>00361 <span class="comment"> * Evaluate the centrifugal acceleration in geocentric coordinates.</span>
-<a name="l00362"></a>00362 <span class="comment"> *</span>
-<a name="l00363"></a>00363 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
-<a name="l00364"></a>00364 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
-<a name="l00365"></a>00365 <span class="comment"> * @param[out] fX the \e X component of the centrifugal acceleration</span>
-<a name="l00366"></a>00366 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00367"></a>00367 <span class="comment"> * @param[out] fY the \e Y component of the centrifugal acceleration</span>
-<a name="l00368"></a>00368 <span class="comment"> * (m s<sup>-2</sup>).</span>
-<a name="l00369"></a>00369 <span class="comment"> * @return \e Phi the centrifugal potential (m<sup>2</sup> s<sup>-2</sup>).</span>
-<a name="l00370"></a>00370 <span class="comment"> *</span>
-<a name="l00371"></a>00371 <span class="comment"> * This calls NormalGravity::Phi for ReferenceEllipsoid().</span>
-<a name="l00372"></a>00372 <span class="comment"> **********************************************************************/</span>
-<a name="l00373"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a80477ccafa1049964ee0cef40ae2eea6">00373</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Phi(real X, real Y, real& fX, real& fY) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
-<a name="l00374"></a>00374 { <span class="keywordflow">return</span> _earth.Phi(X, Y, fX, fY); }<span class="comment"></span>
-<a name="l00375"></a>00375 <span class="comment"> ///@}</span>
-<a name="l00376"></a>00376 <span class="comment"></span><span class="comment"></span>
-<a name="l00377"></a>00377 <span class="comment"> /** \name Compute gravity on a circle of constant latitude</span>
-<a name="l00378"></a>00378 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00379"></a>00379 <span class="comment"> ///@{</span>
-<a name="l00380"></a>00380 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00381"></a>00381 <span class="comment"> * Create a GravityCircle object to allow the gravity field at many points</span>
-<a name="l00382"></a>00382 <span class="comment"> * with constant \e lat and \e h and varying \e lon to be computed</span>
-<a name="l00383"></a>00383 <span class="comment"> * efficiently.</span>
-<a name="l00384"></a>00384 <span class="comment"> *</span>
-<a name="l00385"></a>00385 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00386"></a>00386 <span class="comment"> * @param[in] h the height of the point above the ellipsoid (meters).</span>
-<a name="l00387"></a>00387 <span class="comment"> * @param[in] caps bitor'ed combination of GravityModel::mask values</span>
-<a name="l00388"></a>00388 <span class="comment"> * specifying the capabilities of the resulting GravityCircle object.</span>
-<a name="l00389"></a>00389 <span class="comment"> * @return a GravityCircle object whose member functions computes the</span>
-<a name="l00390"></a>00390 <span class="comment"> * gravitational field at a particular values of \e lon.</span>
-<a name="l00391"></a>00391 <span class="comment"> *</span>
-<a name="l00392"></a>00392 <span class="comment"> * The GravityModel::mask values are</span>
-<a name="l00393"></a>00393 <span class="comment"> * - \e caps |= GravityModel::GRAVITY</span>
-<a name="l00394"></a>00394 <span class="comment"> * - \e caps |= GravityModel::DISTURBANCE</span>
-<a name="l00395"></a>00395 <span class="comment"> * - \e caps |= GravityModel::DISTURBING_POTENTIAL</span>
-<a name="l00396"></a>00396 <span class="comment"> * - \e caps |= GravityModel::SPHERICAL_ANOMALY</span>
-<a name="l00397"></a>00397 <span class="comment"> * - \e caps |= GravityModel::GEOID_HEIGHT</span>
-<a name="l00398"></a>00398 <span class="comment"> * .</span>
-<a name="l00399"></a>00399 <span class="comment"> * The default value of \e caps is GravityModel::ALL which turns on all the</span>
-<a name="l00400"></a>00400 <span class="comment"> * capabilities. If an unsupported function is invoked, it will return</span>
-<a name="l00401"></a>00401 <span class="comment"> * NaNs. Note that GravityModel::GEOID_HEIGHT will only be honored if \e h</span>
-<a name="l00402"></a>00402 <span class="comment"> * = 0.</span>
-<a name="l00403"></a>00403 <span class="comment"> *</span>
-<a name="l00404"></a>00404 <span class="comment"> * If the field at several points on a circle of latitude need to be</span>
-<a name="l00405"></a>00405 <span class="comment"> * calculated then creating a GravityCircle object and using its member</span>
-<a name="l00406"></a>00406 <span class="comment"> * functions will be substantially faster, especially for high-degree</span>
-<a name="l00407"></a>00407 <span class="comment"> * models. See \ref gravityparallel for an example of using GravityCircle</span>
-<a name="l00408"></a>00408 <span class="comment"> * (together with OpenMP) to speed up the computation of geoid heights.</span>
-<a name="l00409"></a>00409 <span class="comment"> **********************************************************************/</span>
-<a name="l00410"></a>00410 <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> Circle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <span class="keywordtype">unsigned</span> caps = ALL) <span class="keyword">const</span>;<span class="comment"></span>
-<a name="l00411"></a>00411 <span class="comment"> ///@}</span>
-<a name="l00412"></a>00412 <span class="comment"></span><span class="comment"></span>
-<a name="l00413"></a>00413 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00414"></a>00414 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00415"></a>00415 <span class="comment"> ///@{</span>
-<a name="l00416"></a>00416 <span class="comment"></span><span class="comment"></span>
-<a name="l00417"></a>00417 <span class="comment"> /**</span>
-<a name="l00418"></a>00418 <span class="comment"> * @return the NormalGravity object for the reference ellipsoid.</span>
-<a name="l00419"></a>00419 <span class="comment"> **********************************************************************/</span>
-<a name="l00420"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">00420</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>& <a class="code" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">retu [...]
-<a name="l00421"></a>00421 <span class="comment"></span>
-<a name="l00422"></a>00422 <span class="comment"> /**</span>
-<a name="l00423"></a>00423 <span class="comment"> * @return the description of the gravity model, if available, in the data</span>
-<a name="l00424"></a>00424 <span class="comment"> * file; if absent, return "NONE".</span>
-<a name="l00425"></a>00425 <span class="comment"> **********************************************************************/</span>
-<a name="l00426"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">00426</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
-<a name="l00427"></a>00427 <span class="comment"></span>
-<a name="l00428"></a>00428 <span class="comment"> /**</span>
-<a name="l00429"></a>00429 <span class="comment"> * @return date of the model; if absent, return "UNKNOWN".</span>
-<a name="l00430"></a>00430 <span class="comment"> **********************************************************************/</span>
-<a name="l00431"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">00431</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _date; }
-<a name="l00432"></a>00432 <span class="comment"></span>
-<a name="l00433"></a>00433 <span class="comment"> /**</span>
-<a name="l00434"></a>00434 <span class="comment"> * @return full file name used to load the gravity model.</span>
-<a name="l00435"></a>00435 <span class="comment"> **********************************************************************/</span>
-<a name="l00436"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">00436</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">GravityFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
-<a name="l00437"></a>00437 <span class="comment"></span>
-<a name="l00438"></a>00438 <span class="comment"> /**</span>
-<a name="l00439"></a>00439 <span class="comment"> * @return "name" used to load the gravity model (from the first argument</span>
-<a name="l00440"></a>00440 <span class="comment"> * of the constructor, but this may be overridden by the model file).</span>
-<a name="l00441"></a>00441 <span class="comment"> **********************************************************************/</span>
-<a name="l00442"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">00442</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">GravityModelName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
-<a name="l00443"></a>00443 <span class="comment"></span>
-<a name="l00444"></a>00444 <span class="comment"> /**</span>
-<a name="l00445"></a>00445 <span class="comment"> * @return directory used to load the gravity model.</span>
-<a name="l00446"></a>00446 <span class="comment"> **********************************************************************/</span>
-<a name="l00447"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a17f2da4cd5abbb5f38f1b90d75975898">00447</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a17f2da4cd5abbb5f38f1b90d75975898">GravityModelDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
-<a name="l00448"></a>00448 <span class="comment"></span>
-<a name="l00449"></a>00449 <span class="comment"> /**</span>
-<a name="l00450"></a>00450 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters).</span>
-<a name="l00451"></a>00451 <span class="comment"> **********************************************************************/</span>
-<a name="l00452"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a07f361e231e1725a4f8e3c37a06cf304">00452</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#a07f361e231e1725a4f8e3c37a06cf304">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00453"></a>00453 <span class="comment"></span>
-<a name="l00454"></a>00454 <span class="comment"> /**</span>
-<a name="l00455"></a>00455 <span class="comment"> * @return \e GM the mass constant of the model</span>
-<a name="l00456"></a>00456 <span class="comment"> * (m<sup>3</sup> s<sup>-2</sup>); this is the product of \e G the</span>
-<a name="l00457"></a>00457 <span class="comment"> * gravitational constant and \e M the mass of the earth (usually</span>
-<a name="l00458"></a>00458 <span class="comment"> * including the mass of the earth's atmosphere).</span>
-<a name="l00459"></a>00459 <span class="comment"> **********************************************************************/</span>
-<a name="l00460"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aa63d1c6e71abfa9455df695f4a3e6bdd">00460</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#aa63d1c6e71abfa9455df695f4a3e6bdd">MassConstant</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _GMmodel; }
-<a name="l00461"></a>00461 <span class="comment"></span>
-<a name="l00462"></a>00462 <span class="comment"> /**</span>
-<a name="l00463"></a>00463 <span class="comment"> * @return \e GM the mass constant of the ReferenceEllipsoid()</span>
-<a name="l00464"></a>00464 <span class="comment"> * (m<sup>3</sup> s<sup>-2</sup>).</span>
-<a name="l00465"></a>00465 <span class="comment"> **********************************************************************/</span>
-<a name="l00466"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a4e6b9d48f26544a45c5509a87eb334e7">00466</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> ReferenceMassConstant() <span class="keyword">const</span> throw()
-<a name="l00467"></a>00467 { <span class="keywordflow">return</span> _earth.MassConstant(); }
-<a name="l00468"></a>00468 <span class="comment"></span>
-<a name="l00469"></a>00469 <span class="comment"> /**</span>
-<a name="l00470"></a>00470 <span class="comment"> * @return \e omega the angular velocity of the model and the</span>
-<a name="l00471"></a>00471 <span class="comment"> * ReferenceEllipsoid() (rad s<sup>-1</sup>).</span>
-<a name="l00472"></a>00472 <span class="comment"> **********************************************************************/</span>
-<a name="l00473"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aeb3d751ba7719e57e0266b65ee7d63d8">00473</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AngularVelocity() <span class="keyword">const</span> throw()
-<a name="l00474"></a>00474 { <span class="keywordflow">return</span> _earth.AngularVelocity(); }
-<a name="l00475"></a>00475 <span class="comment"></span>
-<a name="l00476"></a>00476 <span class="comment"> /**</span>
-<a name="l00477"></a>00477 <span class="comment"> * @return \e f the flattening of the ellipsoid.</span>
-<a name="l00478"></a>00478 <span class="comment"> **********************************************************************/</span>
-<a name="l00479"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aa2316f6d328435417627d49046c45308">00479</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1GravityModel.html#aa2316f6d328435417627d49046c45308">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="comment"></span>
-<a name="l00480"></a>00480 <span class="comment"> ///@}</span>
-<a name="l00481"></a>00481 <span class="comment"></span><span class="comment"></span>
-<a name="l00482"></a>00482 <span class="comment"> /**</span>
-<a name="l00483"></a>00483 <span class="comment"> * @return the default path for gravity model data files.</span>
-<a name="l00484"></a>00484 <span class="comment"> *</span>
-<a name="l00485"></a>00485 <span class="comment"> * This is the value of the environment variable GRAVITY_PATH, if set;</span>
-<a name="l00486"></a>00486 <span class="comment"> * otherwise, it is $GEOGRAPHICLIB_DATA/gravity if the environment variable</span>
-<a name="l00487"></a>00487 <span class="comment"> * GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time default</span>
-<a name="l00488"></a>00488 <span class="comment"> * (/usr/local/share/GeographicLib/gravity on non-Windows systems and</span>
-<a name="l00489"></a>00489 <span class="comment"> * C:/Documents and Settings/All Users/Application</span>
-<a name="l00490"></a>00490 <span class="comment"> * Data/GeographicLib/gravity on Windows systems).</span>
-<a name="l00491"></a>00491 <span class="comment"> **********************************************************************/</span>
-<a name="l00492"></a>00492 <span class="keyword">static</span> std::string DefaultGravityPath();
-<a name="l00493"></a>00493 <span class="comment"></span>
-<a name="l00494"></a>00494 <span class="comment"> /**</span>
-<a name="l00495"></a>00495 <span class="comment"> * @return the default name for the gravity model.</span>
-<a name="l00496"></a>00496 <span class="comment"> *</span>
-<a name="l00497"></a>00497 <span class="comment"> * This is the value of the environment variable GRAVITY_NAME, if set,</span>
-<a name="l00498"></a>00498 <span class="comment"> * otherwise, it is "egm96". The GravityModel class does not use</span>
-<a name="l00499"></a>00499 <span class="comment"> * this function; it is just provided as a convenience for a calling</span>
-<a name="l00500"></a>00500 <span class="comment"> * program when constructing a GravityModel object.</span>
-<a name="l00501"></a>00501 <span class="comment"> **********************************************************************/</span>
-<a name="l00502"></a>00502 <span class="keyword">static</span> std::string DefaultGravityName();
-<a name="l00503"></a>00503 };
-<a name="l00504"></a>00504
-<a name="l00505"></a>00505 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00506"></a>00506
-<a name="l00507"></a>00507 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00508"></a>00508 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00509"></a>00509 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00510"></a>00510 <span class="preprocessor"></span>
-<a name="l00511"></a>00511 <span class="preprocessor">#endif // GEOGRAPHICLIB_GRAVITYMODEL_HPP</span>
+<a name="l00167"></a>00167 <span class="comment"> * @param[in] name the name of the model.</span>
+<a name="l00168"></a>00168 <span class="comment"> * @param[in] path (optional) directory for data file.</span>
+<a name="l00169"></a>00169 <span class="comment"> *</span>
+<a name="l00170"></a>00170 <span class="comment"> * A filename is formed by appending ".egm" (World Gravity Model) to the</span>
+<a name="l00171"></a>00171 <span class="comment"> * name. If \e path is specified (and is non-empty), then the file is</span>
+<a name="l00172"></a>00172 <span class="comment"> * loaded from directory, \e path. Otherwise the path is given by</span>
+<a name="l00173"></a>00173 <span class="comment"> * DefaultGravityPath(). This may throw an exception because the file does</span>
+<a name="l00174"></a>00174 <span class="comment"> * not exist, is unreadable, or is corrupt.</span>
+<a name="l00175"></a>00175 <span class="comment"> *</span>
+<a name="l00176"></a>00176 <span class="comment"> * This file contains the metadata which specifies the properties of the</span>
+<a name="l00177"></a>00177 <span class="comment"> * model. The coefficients for the spherical harmonic sums are obtained</span>
+<a name="l00178"></a>00178 <span class="comment"> * from a file obtained by appending ".cof" to metadata file (so the</span>
+<a name="l00179"></a>00179 <span class="comment"> * filename ends in ".egm.cof").</span>
+<a name="l00180"></a>00180 <span class="comment"> **********************************************************************/</span>
+<a name="l00181"></a>00181 <span class="keyword">explicit</span> GravityModel(<span class="keyword">const</span> std::string& name,
+<a name="l00182"></a>00182 <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>);<span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment"> ///@}</span>
+<a name="l00184"></a>00184 <span class="comment"></span><span class="comment"></span>
+<a name="l00185"></a>00185 <span class="comment"> /** \name Compute gravity in geodetic coordinates</span>
+<a name="l00186"></a>00186 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00187"></a>00187 <span class="comment"> ///@{</span>
+<a name="l00188"></a>00188 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00189"></a>00189 <span class="comment"> * Evaluate the gravity at an arbitrary point above (or below) the</span>
+<a name="l00190"></a>00190 <span class="comment"> * ellipsoid.</span>
+<a name="l00191"></a>00191 <span class="comment"> *</span>
+<a name="l00192"></a>00192 <span class="comment"> * @param[in] lat the geographic latitude (degrees).</span>
+<a name="l00193"></a>00193 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00194"></a>00194 <span class="comment"> * @param[in] h the height above the ellipsoid (meters).</span>
+<a name="l00195"></a>00195 <span class="comment"> * @param[out] gx the easterly component of the acceleration</span>
+<a name="l00196"></a>00196 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00197"></a>00197 <span class="comment"> * @param[out] gy the northerly component of the acceleration</span>
+<a name="l00198"></a>00198 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00199"></a>00199 <span class="comment"> * @param[out] gz the upward component of the acceleration</span>
+<a name="l00200"></a>00200 <span class="comment"> * (m s<sup>-2</sup>); this is usually negative.</span>
+<a name="l00201"></a>00201 <span class="comment"> * @return \e W the sum of the gravitational and centrifugal potentials.</span>
+<a name="l00202"></a>00202 <span class="comment"> *</span>
+<a name="l00203"></a>00203 <span class="comment"> * The function includes the effects of the earth's rotation.</span>
+<a name="l00204"></a>00204 <span class="comment"> **********************************************************************/</span>
+<a name="l00205"></a>00205 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
+<a name="l00206"></a>00206 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gy, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gz) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00207"></a>00207 <span class="comment"></span>
+<a name="l00208"></a>00208 <span class="comment"> /**</span>
+<a name="l00209"></a>00209 <span class="comment"> * Evaluate the gravity disturbance vector at an arbitrary point above (or</span>
+<a name="l00210"></a>00210 <span class="comment"> * below) the ellipsoid.</span>
+<a name="l00211"></a>00211 <span class="comment"> *</span>
+<a name="l00212"></a>00212 <span class="comment"> * @param[in] lat the geographic latitude (degrees).</span>
+<a name="l00213"></a>00213 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00214"></a>00214 <span class="comment"> * @param[in] h the height above the ellipsoid (meters).</span>
+<a name="l00215"></a>00215 <span class="comment"> * @param[out] deltax the easterly component of the disturbance vector</span>
+<a name="l00216"></a>00216 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00217"></a>00217 <span class="comment"> * @param[out] deltay the northerly component of the disturbance vector</span>
+<a name="l00218"></a>00218 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00219"></a>00219 <span class="comment"> * @param[out] deltaz the upward component of the disturbance vector</span>
+<a name="l00220"></a>00220 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00221"></a>00221 <span class="comment"> * @return \e T the corresponding disturbing potential.</span>
+<a name="l00222"></a>00222 <span class="comment"> **********************************************************************/</span>
+<a name="l00223"></a>00223 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Disturbance(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">rea [...]
+<a name="l00224"></a>00224 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltax, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltay, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& deltaz)
+<a name="l00225"></a>00225 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00226"></a>00226 <span class="comment"></span>
+<a name="l00227"></a>00227 <span class="comment"> /**</span>
+<a name="l00228"></a>00228 <span class="comment"> * Evaluate the geoid height.</span>
+<a name="l00229"></a>00229 <span class="comment"> *</span>
+<a name="l00230"></a>00230 <span class="comment"> * @param[in] lat the geographic latitude (degrees).</span>
+<a name="l00231"></a>00231 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00232"></a>00232 <span class="comment"> * @return \e N the height of the geoid above the ReferenceEllipsoid()</span>
+<a name="l00233"></a>00233 <span class="comment"> * (meters).</span>
+<a name="l00234"></a>00234 <span class="comment"> *</span>
+<a name="l00235"></a>00235 <span class="comment"> * This calls NormalGravity::U for ReferenceEllipsoid(). Some</span>
+<a name="l00236"></a>00236 <span class="comment"> * approximations are made in computing the geoid height so that the</span>
+<a name="l00237"></a>00237 <span class="comment"> * results of the NGA codes are reproduced accurately. Details are given</span>
+<a name="l00238"></a>00238 <span class="comment"> * in \ref gravitygeoid.</span>
+<a name="l00239"></a>00239 <span class="comment"> **********************************************************************/</span>
+<a name="l00240"></a>00240 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> GeoidHeight(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00241"></a>00241 <span class="comment"></span>
+<a name="l00242"></a>00242 <span class="comment"> /**</span>
+<a name="l00243"></a>00243 <span class="comment"> * Evaluate the components of the gravity anomaly vector using the</span>
+<a name="l00244"></a>00244 <span class="comment"> * spherical approximation.</span>
+<a name="l00245"></a>00245 <span class="comment"> *</span>
+<a name="l00246"></a>00246 <span class="comment"> * @param[in] lat the geographic latitude (degrees).</span>
+<a name="l00247"></a>00247 <span class="comment"> * @param[in] lon the geographic longitude (degrees).</span>
+<a name="l00248"></a>00248 <span class="comment"> * @param[in] h the height above the ellipsoid (meters).</span>
+<a name="l00249"></a>00249 <span class="comment"> * @param[out] Dg01 the gravity anomaly (m s<sup>-2</sup>).</span>
+<a name="l00250"></a>00250 <span class="comment"> * @param[out] xi the northerly component of the deflection of the vertical</span>
+<a name="l00251"></a>00251 <span class="comment"> * (degrees).</span>
+<a name="l00252"></a>00252 <span class="comment"> * @param[out] eta the easterly component of the deflection of the vertical</span>
+<a name="l00253"></a>00253 <span class="comment"> * (degrees).</span>
+<a name="l00254"></a>00254 <span class="comment"> *</span>
+<a name="l00255"></a>00255 <span class="comment"> * The spherical approximation (see Heiskanen and Moritz, Sec 2-14) is used</span>
+<a name="l00256"></a>00256 <span class="comment"> * so that the results of the NGA codes are reproduced accurately.</span>
+<a name="l00257"></a>00257 <span class="comment"> * approximations used here. Details are given in \ref gravitygeoid.</span>
+<a name="l00258"></a>00258 <span class="comment"> **********************************************************************/</span>
+<a name="l00259"></a>00259 <span class="keywordtype">void</span> SphericalAnomaly(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h,
+<a name="l00260"></a>00260 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dg01, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>();<span class="comment"></span>
+<a name="l00261"></a>00261 <span class="comment"> ///@}</span>
+<a name="l00262"></a>00262 <span class="comment"></span><span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment"> /** \name Compute gravity in geocentric coordinates</span>
+<a name="l00264"></a>00264 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00265"></a>00265 <span class="comment"> ///@{</span>
+<a name="l00266"></a>00266 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00267"></a>00267 <span class="comment"> * Evaluate the components of the acceleration due to gravity and the</span>
+<a name="l00268"></a>00268 <span class="comment"> * centrifugal acceleration in geocentric coordinates.</span>
+<a name="l00269"></a>00269 <span class="comment"> *</span>
+<a name="l00270"></a>00270 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00271"></a>00271 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00272"></a>00272 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00273"></a>00273 <span class="comment"> * @param[out] gX the \e X component of the acceleration</span>
+<a name="l00274"></a>00274 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00275"></a>00275 <span class="comment"> * @param[out] gY the \e Y component of the acceleration</span>
+<a name="l00276"></a>00276 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00277"></a>00277 <span class="comment"> * @param[out] gZ the \e Z component of the acceleration</span>
+<a name="l00278"></a>00278 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00279"></a>00279 <span class="comment"> * @return \e W = \e V + \e Phi the sum of the gravitational and</span>
+<a name="l00280"></a>00280 <span class="comment"> * centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00281"></a>00281 <span class="comment"> *</span>
+<a name="l00282"></a>00282 <span class="comment"> * This calls NormalGravity::U for ReferenceEllipsoid().</span>
+<a name="l00283"></a>00283 <span class="comment"> **********************************************************************/</span>
+<a name="l00284"></a>00284 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> W(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00285"></a>00285 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00286"></a>00286 <span class="comment"></span>
+<a name="l00287"></a>00287 <span class="comment"> /**</span>
+<a name="l00288"></a>00288 <span class="comment"> * Evaluate the components of the acceleration due to gravity in geocentric</span>
+<a name="l00289"></a>00289 <span class="comment"> * coordinates.</span>
+<a name="l00290"></a>00290 <span class="comment"> *</span>
+<a name="l00291"></a>00291 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00292"></a>00292 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00293"></a>00293 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00294"></a>00294 <span class="comment"> * @param[out] GX the \e X component of the acceleration</span>
+<a name="l00295"></a>00295 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00296"></a>00296 <span class="comment"> * @param[out] GY the \e Y component of the acceleration</span>
+<a name="l00297"></a>00297 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00298"></a>00298 <span class="comment"> * @param[out] GZ the \e Z component of the acceleration</span>
+<a name="l00299"></a>00299 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00300"></a>00300 <span class="comment"> * @return \e V = \e W - \e Phi the gravitational potential</span>
+<a name="l00301"></a>00301 <span class="comment"> * (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00302"></a>00302 <span class="comment"> **********************************************************************/</span>
+<a name="l00303"></a>00303 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> V(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00304"></a>00304 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00305"></a>00305 <span class="comment"></span>
+<a name="l00306"></a>00306 <span class="comment"> /**</span>
+<a name="l00307"></a>00307 <span class="comment"> * Evaluate the components of the gravity disturbance in geocentric</span>
+<a name="l00308"></a>00308 <span class="comment"> * coordinates.</span>
+<a name="l00309"></a>00309 <span class="comment"> *</span>
+<a name="l00310"></a>00310 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00311"></a>00311 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00312"></a>00312 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00313"></a>00313 <span class="comment"> * @param[out] deltaX the \e X component of the gravity disturbance</span>
+<a name="l00314"></a>00314 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00315"></a>00315 <span class="comment"> * @param[out] deltaY the \e Y component of the gravity disturbance</span>
+<a name="l00316"></a>00316 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00317"></a>00317 <span class="comment"> * @param[out] deltaZ the \e Z component of the gravity disturbance</span>
+<a name="l00318"></a>00318 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00319"></a>00319 <span class="comment"> * @return \e T = \e W - \e U the disturbing potential (also called the</span>
+<a name="l00320"></a>00320 <span class="comment"> * anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00321"></a>00321 <span class="comment"> **********************************************************************/</span>
+<a name="l00322"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a257022f1f125d88b0a6efdccfc5e7a41">00322</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real T(real X, real Y, real Z,
+<a name="l00323"></a>00323 real& deltaX, real& deltaY, real& deltaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
+<a name="l00324"></a>00324 { <span class="keywordflow">return</span> InternalT(X, Y, Z, deltaX, deltaY, deltaZ, <span class="keyword">true</span>, <span class="keyword">true</span>); }
+<a name="l00325"></a>00325 <span class="comment"></span>
+<a name="l00326"></a>00326 <span class="comment"> /**</span>
+<a name="l00327"></a>00327 <span class="comment"> * Evaluate disturbing potential in geocentric coordinates.</span>
+<a name="l00328"></a>00328 <span class="comment"> *</span>
+<a name="l00329"></a>00329 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00330"></a>00330 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00331"></a>00331 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00332"></a>00332 <span class="comment"> * @return \e T = \e W - \e U the disturbing potential (also called the</span>
+<a name="l00333"></a>00333 <span class="comment"> * anomalous potential) (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00334"></a>00334 <span class="comment"> **********************************************************************/</span>
+<a name="l00335"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a690657dedac8ccea22052eda2829fea3">00335</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a690657dedac8ccea22052eda2829fea3">T</a>(real X, real Y, real Z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00336"></a>00336 real dummy;
+<a name="l00337"></a>00337 <span class="keywordflow">return</span> InternalT(X, Y, Z, dummy, dummy, dummy, <span class="keyword">false</span>, <span class="keyword">true</span>);
+<a name="l00338"></a>00338 }
+<a name="l00339"></a>00339 <span class="comment"></span>
+<a name="l00340"></a>00340 <span class="comment"> /**</span>
+<a name="l00341"></a>00341 <span class="comment"> * Evaluate the components of the acceleration due to normal gravity and the</span>
+<a name="l00342"></a>00342 <span class="comment"> * centrifugal acceleration in geocentric coordinates.</span>
+<a name="l00343"></a>00343 <span class="comment"> *</span>
+<a name="l00344"></a>00344 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00345"></a>00345 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00346"></a>00346 <span class="comment"> * @param[in] Z geocentric coordinate of point (meters).</span>
+<a name="l00347"></a>00347 <span class="comment"> * @param[out] gammaX the \e X component of the normal acceleration</span>
+<a name="l00348"></a>00348 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00349"></a>00349 <span class="comment"> * @param[out] gammaY the \e Y component of the normal acceleration</span>
+<a name="l00350"></a>00350 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00351"></a>00351 <span class="comment"> * @param[out] gammaZ the \e Z component of the normal acceleration</span>
+<a name="l00352"></a>00352 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00353"></a>00353 <span class="comment"> * @return \e U = <i>V</i><sub>0</sub> + \e Phi the sum of the</span>
+<a name="l00354"></a>00354 <span class="comment"> * normal gravitational and centrifugal potentials</span>
+<a name="l00355"></a>00355 <span class="comment"> * (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00356"></a>00356 <span class="comment"> *</span>
+<a name="l00357"></a>00357 <span class="comment"> * This calls NormalGravity::U for ReferenceEllipsoid().</span>
+<a name="l00358"></a>00358 <span class="comment"> **********************************************************************/</span>
+<a name="l00359"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af368d4f9015e076e5cc57ad87b8a185f">00359</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real U(real X, real Y, real Z,
+<a name="l00360"></a>00360 real& gammaX, real& gammaY, real& gammaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
+<a name="l00361"></a>00361 { <span class="keywordflow">return</span> _earth.U(X, Y, Z, gammaX, gammaY, gammaZ); }
+<a name="l00362"></a>00362 <span class="comment"></span>
+<a name="l00363"></a>00363 <span class="comment"> /**</span>
+<a name="l00364"></a>00364 <span class="comment"> * Evaluate the centrifugal acceleration in geocentric coordinates.</span>
+<a name="l00365"></a>00365 <span class="comment"> *</span>
+<a name="l00366"></a>00366 <span class="comment"> * @param[in] X geocentric coordinate of point (meters).</span>
+<a name="l00367"></a>00367 <span class="comment"> * @param[in] Y geocentric coordinate of point (meters).</span>
+<a name="l00368"></a>00368 <span class="comment"> * @param[out] fX the \e X component of the centrifugal acceleration</span>
+<a name="l00369"></a>00369 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00370"></a>00370 <span class="comment"> * @param[out] fY the \e Y component of the centrifugal acceleration</span>
+<a name="l00371"></a>00371 <span class="comment"> * (m s<sup>-2</sup>).</span>
+<a name="l00372"></a>00372 <span class="comment"> * @return \e Phi the centrifugal potential (m<sup>2</sup> s<sup>-2</sup>).</span>
+<a name="l00373"></a>00373 <span class="comment"> *</span>
+<a name="l00374"></a>00374 <span class="comment"> * This calls NormalGravity::Phi for ReferenceEllipsoid().</span>
+<a name="l00375"></a>00375 <span class="comment"> **********************************************************************/</span>
+<a name="l00376"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a80477ccafa1049964ee0cef40ae2eea6">00376</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Phi(real X, real Y, real& fX, real& fY) <span class="keyword">const</span> <span class="keywordflow">throw</span>()
+<a name="l00377"></a>00377 { <span class="keywordflow">return</span> _earth.Phi(X, Y, fX, fY); }<span class="comment"></span>
+<a name="l00378"></a>00378 <span class="comment"> ///@}</span>
+<a name="l00379"></a>00379 <span class="comment"></span><span class="comment"></span>
+<a name="l00380"></a>00380 <span class="comment"> /** \name Compute gravity on a circle of constant latitude</span>
+<a name="l00381"></a>00381 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00382"></a>00382 <span class="comment"> ///@{</span>
+<a name="l00383"></a>00383 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00384"></a>00384 <span class="comment"> * Create a GravityCircle object to allow the gravity field at many points</span>
+<a name="l00385"></a>00385 <span class="comment"> * with constant \e lat and \e h and varying \e lon to be computed</span>
+<a name="l00386"></a>00386 <span class="comment"> * efficiently.</span>
+<a name="l00387"></a>00387 <span class="comment"> *</span>
+<a name="l00388"></a>00388 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00389"></a>00389 <span class="comment"> * @param[in] h the height of the point above the ellipsoid (meters).</span>
+<a name="l00390"></a>00390 <span class="comment"> * @param[in] caps bitor'ed combination of GravityModel::mask values</span>
+<a name="l00391"></a>00391 <span class="comment"> * specifying the capabilities of the resulting GravityCircle object.</span>
+<a name="l00392"></a>00392 <span class="comment"> * @return a GravityCircle object whose member functions computes the</span>
+<a name="l00393"></a>00393 <span class="comment"> * gravitational field at a particular values of \e lon.</span>
+<a name="l00394"></a>00394 <span class="comment"> *</span>
+<a name="l00395"></a>00395 <span class="comment"> * The GravityModel::mask values are</span>
+<a name="l00396"></a>00396 <span class="comment"> * - \e caps |= GravityModel::GRAVITY</span>
+<a name="l00397"></a>00397 <span class="comment"> * - \e caps |= GravityModel::DISTURBANCE</span>
+<a name="l00398"></a>00398 <span class="comment"> * - \e caps |= GravityModel::DISTURBING_POTENTIAL</span>
+<a name="l00399"></a>00399 <span class="comment"> * - \e caps |= GravityModel::SPHERICAL_ANOMALY</span>
+<a name="l00400"></a>00400 <span class="comment"> * - \e caps |= GravityModel::GEOID_HEIGHT</span>
+<a name="l00401"></a>00401 <span class="comment"> * .</span>
+<a name="l00402"></a>00402 <span class="comment"> * The default value of \e caps is GravityModel::ALL which turns on all the</span>
+<a name="l00403"></a>00403 <span class="comment"> * capabilities. If an unsupported function is invoked, it will return</span>
+<a name="l00404"></a>00404 <span class="comment"> * NaNs. Note that GravityModel::GEOID_HEIGHT will only be honored if \e h</span>
+<a name="l00405"></a>00405 <span class="comment"> * = 0.</span>
+<a name="l00406"></a>00406 <span class="comment"> *</span>
+<a name="l00407"></a>00407 <span class="comment"> * If the field at several points on a circle of latitude need to be</span>
+<a name="l00408"></a>00408 <span class="comment"> * calculated then creating a GravityCircle object and using its member</span>
+<a name="l00409"></a>00409 <span class="comment"> * functions will be substantially faster, especially for high-degree</span>
+<a name="l00410"></a>00410 <span class="comment"> * models. See \ref gravityparallel for an example of using GravityCircle</span>
+<a name="l00411"></a>00411 <span class="comment"> * (together with OpenMP) to speed up the computation of geoid heights.</span>
+<a name="l00412"></a>00412 <span class="comment"> **********************************************************************/</span>
+<a name="l00413"></a>00413 <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> Circle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <span class="keywordtype">unsigned</span> caps = ALL) <span class="keyword">const</span>;<span class="comment"></span>
+<a name="l00414"></a>00414 <span class="comment"> ///@}</span>
+<a name="l00415"></a>00415 <span class="comment"></span><span class="comment"></span>
+<a name="l00416"></a>00416 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00417"></a>00417 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00418"></a>00418 <span class="comment"> ///@{</span>
+<a name="l00419"></a>00419 <span class="comment"></span><span class="comment"></span>
+<a name="l00420"></a>00420 <span class="comment"> /**</span>
+<a name="l00421"></a>00421 <span class="comment"> * @return the NormalGravity object for the reference ellipsoid.</span>
+<a name="l00422"></a>00422 <span class="comment"> **********************************************************************/</span>
+<a name="l00423"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">00423</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>& <a class="code" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">retu [...]
+<a name="l00424"></a>00424 <span class="comment"></span>
+<a name="l00425"></a>00425 <span class="comment"> /**</span>
+<a name="l00426"></a>00426 <span class="comment"> * @return the description of the gravity model, if available, in the data</span>
+<a name="l00427"></a>00427 <span class="comment"> * file; if absent, return "NONE".</span>
+<a name="l00428"></a>00428 <span class="comment"> **********************************************************************/</span>
+<a name="l00429"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">00429</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
+<a name="l00430"></a>00430 <span class="comment"></span>
+<a name="l00431"></a>00431 <span class="comment"> /**</span>
+<a name="l00432"></a>00432 <span class="comment"> * @return date of the model; if absent, return "UNKNOWN".</span>
+<a name="l00433"></a>00433 <span class="comment"> **********************************************************************/</span>
+<a name="l00434"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">00434</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _date; }
+<a name="l00435"></a>00435 <span class="comment"></span>
+<a name="l00436"></a>00436 <span class="comment"> /**</span>
+<a name="l00437"></a>00437 <span class="comment"> * @return full file name used to load the gravity model.</span>
+<a name="l00438"></a>00438 <span class="comment"> **********************************************************************/</span>
+<a name="l00439"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">00439</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">GravityFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
+<a name="l00440"></a>00440 <span class="comment"></span>
+<a name="l00441"></a>00441 <span class="comment"> /**</span>
+<a name="l00442"></a>00442 <span class="comment"> * @return "name" used to load the gravity model (from the first argument</span>
+<a name="l00443"></a>00443 <span class="comment"> * of the constructor, but this may be overridden by the model file).</span>
+<a name="l00444"></a>00444 <span class="comment"> **********************************************************************/</span>
+<a name="l00445"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">00445</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">GravityModelName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
+<a name="l00446"></a>00446 <span class="comment"></span>
+<a name="l00447"></a>00447 <span class="comment"> /**</span>
+<a name="l00448"></a>00448 <span class="comment"> * @return directory used to load the gravity model.</span>
+<a name="l00449"></a>00449 <span class="comment"> **********************************************************************/</span>
+<a name="l00450"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a17f2da4cd5abbb5f38f1b90d75975898">00450</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1GravityModel.html#a17f2da4cd5abbb5f38f1b90d75975898">GravityModelDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
+<a name="l00451"></a>00451 <span class="comment"></span>
+<a name="l00452"></a>00452 <span class="comment"> /**</span>
+<a name="l00453"></a>00453 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters).</span>
+<a name="l00454"></a>00454 <span class="comment"> **********************************************************************/</span>
+<a name="l00455"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a07f361e231e1725a4f8e3c37a06cf304">00455</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#a07f361e231e1725a4f8e3c37a06cf304">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00456"></a>00456 <span class="comment"></span>
+<a name="l00457"></a>00457 <span class="comment"> /**</span>
+<a name="l00458"></a>00458 <span class="comment"> * @return \e GM the mass constant of the model</span>
+<a name="l00459"></a>00459 <span class="comment"> * (m<sup>3</sup> s<sup>-2</sup>); this is the product of \e G the</span>
+<a name="l00460"></a>00460 <span class="comment"> * gravitational constant and \e M the mass of the earth (usually</span>
+<a name="l00461"></a>00461 <span class="comment"> * including the mass of the earth's atmosphere).</span>
+<a name="l00462"></a>00462 <span class="comment"> **********************************************************************/</span>
+<a name="l00463"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aa63d1c6e71abfa9455df695f4a3e6bdd">00463</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#aa63d1c6e71abfa9455df695f4a3e6bdd">MassConstant</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _GMmodel; }
+<a name="l00464"></a>00464 <span class="comment"></span>
+<a name="l00465"></a>00465 <span class="comment"> /**</span>
+<a name="l00466"></a>00466 <span class="comment"> * @return \e GM the mass constant of the ReferenceEllipsoid()</span>
+<a name="l00467"></a>00467 <span class="comment"> * (m<sup>3</sup> s<sup>-2</sup>).</span>
+<a name="l00468"></a>00468 <span class="comment"> **********************************************************************/</span>
+<a name="l00469"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#a4e6b9d48f26544a45c5509a87eb334e7">00469</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real ReferenceMassConstant() <span class="keyword">const</span> throw()
+<a name="l00470"></a>00470 { <span class="keywordflow">return</span> _earth.MassConstant(); }
+<a name="l00471"></a>00471 <span class="comment"></span>
+<a name="l00472"></a>00472 <span class="comment"> /**</span>
+<a name="l00473"></a>00473 <span class="comment"> * @return \e omega the angular velocity of the model and the</span>
+<a name="l00474"></a>00474 <span class="comment"> * ReferenceEllipsoid() (rad s<sup>-1</sup>).</span>
+<a name="l00475"></a>00475 <span class="comment"> **********************************************************************/</span>
+<a name="l00476"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aeb3d751ba7719e57e0266b65ee7d63d8">00476</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real AngularVelocity() <span class="keyword">const</span> throw()
+<a name="l00477"></a>00477 { <span class="keywordflow">return</span> _earth.AngularVelocity(); }
+<a name="l00478"></a>00478 <span class="comment"></span>
+<a name="l00479"></a>00479 <span class="comment"> /**</span>
+<a name="l00480"></a>00480 <span class="comment"> * @return \e f the flattening of the ellipsoid.</span>
+<a name="l00481"></a>00481 <span class="comment"> **********************************************************************/</span>
+<a name="l00482"></a><a class="code" href="classGeographicLib_1_1GravityModel.html#aa2316f6d328435417627d49046c45308">00482</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1GravityModel.html#aa2316f6d328435417627d49046c45308">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class=" [...]
+<a name="l00483"></a>00483 <span class="comment"> ///@}</span>
+<a name="l00484"></a>00484 <span class="comment"></span><span class="comment"></span>
+<a name="l00485"></a>00485 <span class="comment"> /**</span>
+<a name="l00486"></a>00486 <span class="comment"> * @return the default path for gravity model data files.</span>
+<a name="l00487"></a>00487 <span class="comment"> *</span>
+<a name="l00488"></a>00488 <span class="comment"> * This is the value of the environment variable GRAVITY_PATH, if set;</span>
+<a name="l00489"></a>00489 <span class="comment"> * otherwise, it is $GEOGRAPHICLIB_DATA/gravity if the environment variable</span>
+<a name="l00490"></a>00490 <span class="comment"> * GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time default</span>
+<a name="l00491"></a>00491 <span class="comment"> * (/usr/local/share/GeographicLib/gravity on non-Windows systems and</span>
+<a name="l00492"></a>00492 <span class="comment"> * C:/Documents and Settings/All Users/Application</span>
+<a name="l00493"></a>00493 <span class="comment"> * Data/GeographicLib/gravity on Windows systems).</span>
+<a name="l00494"></a>00494 <span class="comment"> **********************************************************************/</span>
+<a name="l00495"></a>00495 <span class="keyword">static</span> std::string DefaultGravityPath();
+<a name="l00496"></a>00496 <span class="comment"></span>
+<a name="l00497"></a>00497 <span class="comment"> /**</span>
+<a name="l00498"></a>00498 <span class="comment"> * @return the default name for the gravity model.</span>
+<a name="l00499"></a>00499 <span class="comment"> *</span>
+<a name="l00500"></a>00500 <span class="comment"> * This is the value of the environment variable GRAVITY_NAME, if set,</span>
+<a name="l00501"></a>00501 <span class="comment"> * otherwise, it is "egm96". The GravityModel class does not use</span>
+<a name="l00502"></a>00502 <span class="comment"> * this function; it is just provided as a convenience for a calling</span>
+<a name="l00503"></a>00503 <span class="comment"> * program when constructing a GravityModel object.</span>
+<a name="l00504"></a>00504 <span class="comment"> **********************************************************************/</span>
+<a name="l00505"></a>00505 <span class="keyword">static</span> std::string DefaultGravityName();
+<a name="l00506"></a>00506 };
+<a name="l00507"></a>00507
+<a name="l00508"></a>00508 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00509"></a>00509
+<a name="l00510"></a>00510 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00511"></a>00511 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00512"></a>00512 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00513"></a>00513 <span class="preprocessor"></span>
+<a name="l00514"></a>00514 <span class="preprocessor">#endif // GEOGRAPHICLIB_GRAVITYMODEL_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Gravity_8cpp.html b/doc/html/Gravity_8cpp.html
index dbe490b..6e10611 100644
--- a/doc/html/Gravity_8cpp.html
+++ b/doc/html/Gravity_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Gravity.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for evaluating gravity fields. </p>
-<p>Copyright (c) Charles Karney (2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o Gravity \ <a class="el" href="Gravity_8cpp.html" title="Command line utility for evaluating gravity fields.">Gravity.cpp</a> \ ../src/CircularEngine.cpp \ ../src/DMS.cpp \ ../src/Geocentric.cpp \ ../src/GravityCircle.cpp \ ../src/GravityModel.cpp \ ../src/NormalGravity.cpp \ ../src/SphericalEngine.cpp \ ../src/Utility.cpp</p>
<p>See the <a href="Gravity.1.html">man page</a> for usage information. </p>
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="Gravity_8cpp_source.html#l00036">36</a> of file <a class="el" href="Gravity_8cpp_source.html">Gravity.cpp</a>.</p>
-<p>References <a class="el" href="GravityModel_8cpp_source.html#l00309">GeographicLib::GravityModel::Circle()</a>, <a class="el" href="GravityModel_8hpp_source.html#l00431">GeographicLib::GravityModel::DateTime()</a>, <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00356">GeographicLib::GravityModel::DefaultGravityN [...]
+<p>References <a class="el" href="GravityModel_8cpp_source.html#l00356">GeographicLib::GravityModel::DefaultGravityName()</a>, <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8hpp_source.html#l00078">GeographicLib::DMS::LONGITUDE</a>, <a class="el" href="GravityModel_8cpp_source.html#l00343">GeographicLib::GravityModel::DefaultGravityPath()</a>, <a class="el" href="GravityModel_8hpp_source.html#l00439">GeographicLib::GravityModel [...]
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Gravity_8cpp_source.html b/doc/html/Gravity_8cpp_source.html
index 1357d56..60ecfe3 100644
--- a/doc/html/Gravity_8cpp_source.html
+++ b/doc/html/Gravity_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Gravity.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Gravity.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for evaluating gravity fields</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under</span>
-<a name="l00006"></a>00006 <span class="comment"> * the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -85,265 +100,290 @@
<a name="l00036"></a><a class="code" href="Gravity_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00036</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00037"></a>00037 <span class="keywordflow">try</span> {
<a name="l00038"></a>00038 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00039"></a>00039 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00039"></a>00039 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00040"></a>00040 <span class="keywordtype">bool</span> verbose = <span class="keyword">false</span>;
<a name="l00041"></a>00041 std::string dir;
<a name="l00042"></a>00042 std::string model = <a class="code" href="classGeographicLib_1_1GravityModel.html#ad4a776d68b60e85275c0e580d3c7caba">GravityModel::DefaultGravityName</a>();
-<a name="l00043"></a>00043 std::string istring, ifile, ofile;
-<a name="l00044"></a>00044 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat = 0, h = 0;
-<a name="l00045"></a>00045 <span class="keywordtype">bool</span> circle = <span class="keyword">false</span>;
-<a name="l00046"></a>00046 <span class="keywordtype">int</span> prec = -1;
-<a name="l00047"></a>00047 <span class="keyword">enum</span> {
-<a name="l00048"></a>00048 GRAVITY = 0,
-<a name="l00049"></a>00049 DISTURBANCE = 1,
-<a name="l00050"></a>00050 ANOMALY = 2,
-<a name="l00051"></a>00051 UNDULATION = 3,
-<a name="l00052"></a>00052 };
-<a name="l00053"></a>00053 <span class="keywordtype">unsigned</span> mode = GRAVITY;
-<a name="l00054"></a>00054 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00055"></a>00055 std::string arg(argv[m]);
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
-<a name="l00057"></a>00057 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00058"></a>00058 model = argv[m];
-<a name="l00059"></a>00059 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
-<a name="l00060"></a>00060 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00061"></a>00061 dir = argv[m];
-<a name="l00062"></a>00062 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-G"</span>)
-<a name="l00063"></a>00063 mode = GRAVITY;
-<a name="l00064"></a>00064 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-D"</span>)
-<a name="l00065"></a>00065 mode = DISTURBANCE;
-<a name="l00066"></a>00066 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-A"</span>)
-<a name="l00067"></a>00067 mode = ANOMALY;
-<a name="l00068"></a>00068 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-H"</span>)
-<a name="l00069"></a>00069 mode = UNDULATION;
-<a name="l00070"></a>00070 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
-<a name="l00071"></a>00071 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00072"></a>00072 <span class="keywordflow">try</span> {
-<a name="l00073"></a>00073 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00074"></a>00074 lat = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
-<a name="l00076"></a>00076 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on latitude"</span>);
-<a name="l00077"></a>00077 <span class="keywordflow">if</span> (!(std::abs(lat) <= 90))
-<a name="l00078"></a>00078 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude not in [-90d, 90d]"</span>);
-<a name="l00079"></a>00079 h = Utility::num<real>(std::string(argv[++m]));
-<a name="l00080"></a>00080 circle = <span class="keyword">true</span>;
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00083"></a>00083 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00084"></a>00084 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> 1;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
-<a name="l00088"></a>00088 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00089"></a>00089 <span class="keywordflow">try</span> {
-<a name="l00090"></a>00090 prec = Utility::num<int>(std::string(argv[m]));
-<a name="l00091"></a>00091 }
-<a name="l00092"></a>00092 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00093"></a>00093 std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> 1;
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
-<a name="l00097"></a>00097 verbose = <span class="keyword">true</span>;
-<a name="l00098"></a>00098 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00100"></a>00100 istring = argv[m];
-<a name="l00101"></a>00101 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00103"></a>00103 ifile = argv[m];
-<a name="l00104"></a>00104 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00105"></a>00105 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00106"></a>00106 ofile = argv[m];
-<a name="l00107"></a>00107 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00108"></a>00108 std::cout
-<a name="l00109"></a>00109 << argv[0]
-<a name="l00110"></a>00110 << <span class="stringliteral">": $Id: fe8569b6e279ccef9b0576ef502dbc7537e82396 $\n"</span>
-<a name="l00111"></a>00111 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00112"></a>00112 <span class="keywordflow">return</span> 0;
-<a name="l00113"></a>00113 } <span class="keywordflow">else</span> {
-<a name="l00114"></a>00114 <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
-<a name="l00116"></a>00116 std::cout<< <span class="stringliteral">"\nDefault gravity path = \""</span>
-<a name="l00117"></a>00117 << <a class="code" href="classGeographicLib_1_1GravityModel.html#a0fdf62e41828ae7ae183d9e876f37954">GravityModel::DefaultGravityPath</a>()
-<a name="l00118"></a>00118 << <span class="stringliteral">"\"\nDefault gravity name = \""</span>
-<a name="l00119"></a>00119 << <a class="code" href="classGeographicLib_1_1GravityModel.html#ad4a776d68b60e85275c0e580d3c7caba">GravityModel::DefaultGravityName</a>()
-<a name="l00120"></a>00120 << <span class="stringliteral">"\"\n"</span>;
-<a name="l00121"></a>00121 <span class="keywordflow">return</span> retval;
-<a name="l00122"></a>00122 }
-<a name="l00123"></a>00123 }
-<a name="l00124"></a>00124
-<a name="l00125"></a>00125 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00126"></a>00126 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00127"></a>00127 <span class="keywordflow">return</span> 1;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00130"></a>00130 std::ifstream infile;
-<a name="l00131"></a>00131 std::istringstream instring;
-<a name="l00132"></a>00132 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00133"></a>00133 infile.open(ifile.c_str());
-<a name="l00134"></a>00134 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00135"></a>00135 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00136"></a>00136 <span class="keywordflow">return</span> 1;
-<a name="l00137"></a>00137 }
-<a name="l00138"></a>00138 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00139"></a>00139 std::string::size_type m = 0;
-<a name="l00140"></a>00140 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00141"></a>00141 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00142"></a>00142 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00143"></a>00143 <span class="keywordflow">break</span>;
-<a name="l00144"></a>00144 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146 instring.str(istring);
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00149"></a>00149 (!istring.empty() ? &instring : &std::cin);
-<a name="l00150"></a>00150
-<a name="l00151"></a>00151 std::ofstream outfile;
-<a name="l00152"></a>00152 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00153"></a>00153 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00154"></a>00154 outfile.open(ofile.c_str());
-<a name="l00155"></a>00155 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00156"></a>00156 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00157"></a>00157 <span class="keywordflow">return</span> 1;
-<a name="l00158"></a>00158 }
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00043"></a>00043 std::string istring, ifile, ofile, cdelim;
+<a name="l00044"></a>00044 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00045"></a>00045 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat = 0, h = 0;
+<a name="l00046"></a>00046 <span class="keywordtype">bool</span> circle = <span class="keyword">false</span>;
+<a name="l00047"></a>00047 <span class="keywordtype">int</span> prec = -1;
+<a name="l00048"></a>00048 <span class="keyword">enum</span> {
+<a name="l00049"></a>00049 GRAVITY = 0,
+<a name="l00050"></a>00050 DISTURBANCE = 1,
+<a name="l00051"></a>00051 ANOMALY = 2,
+<a name="l00052"></a>00052 UNDULATION = 3,
+<a name="l00053"></a>00053 };
+<a name="l00054"></a>00054 <span class="keywordtype">unsigned</span> mode = GRAVITY;
+<a name="l00055"></a>00055 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00056"></a>00056 std::string arg(argv[m]);
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00059"></a>00059 model = argv[m];
+<a name="l00060"></a>00060 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00062"></a>00062 dir = argv[m];
+<a name="l00063"></a>00063 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-G"</span>)
+<a name="l00064"></a>00064 mode = GRAVITY;
+<a name="l00065"></a>00065 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-D"</span>)
+<a name="l00066"></a>00066 mode = DISTURBANCE;
+<a name="l00067"></a>00067 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-A"</span>)
+<a name="l00068"></a>00068 mode = ANOMALY;
+<a name="l00069"></a>00069 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-H"</span>)
+<a name="l00070"></a>00070 mode = UNDULATION;
+<a name="l00071"></a>00071 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00073"></a>00073 <span class="keywordflow">try</span> {
+<a name="l00074"></a>00074 <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00075"></a>00075 lat = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
+<a name="l00077"></a>00077 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on latitude"</span>);
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (!(std::abs(lat) <= 90))
+<a name="l00079"></a>00079 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude not in [-90d, 90d]"</span>);
+<a name="l00080"></a>00080 h = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[++m]));
+<a name="l00081"></a>00081 circle = <span class="keyword">true</span>;
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00084"></a>00084 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00085"></a>00085 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> 1;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
+<a name="l00089"></a>00089 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00090"></a>00090 <span class="keywordflow">try</span> {
+<a name="l00091"></a>00091 prec = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(std::string(argv[m]));
+<a name="l00092"></a>00092 }
+<a name="l00093"></a>00093 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00094"></a>00094 std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
+<a name="l00095"></a>00095 <span class="keywordflow">return</span> 1;
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
+<a name="l00098"></a>00098 verbose = <span class="keyword">true</span>;
+<a name="l00099"></a>00099 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00101"></a>00101 istring = argv[m];
+<a name="l00102"></a>00102 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104 ifile = argv[m];
+<a name="l00105"></a>00105 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00107"></a>00107 ofile = argv[m];
+<a name="l00108"></a>00108 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00109"></a>00109 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00111"></a>00111 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00112"></a>00112 <span class="keywordflow">return</span> 1;
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 lsep = argv[m][0];
+<a name="l00115"></a>00115 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00116"></a>00116 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00117"></a>00117 cdelim = argv[m];
+<a name="l00118"></a>00118 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00119"></a>00119 std::cout
+<a name="l00120"></a>00120 << argv[0]
+<a name="l00121"></a>00121 << <span class="stringliteral">": $Id: c87c647c3e973929010cdb2fd5d1eaa6aa739eca $\n"</span>
+<a name="l00122"></a>00122 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00123"></a>00123 <span class="keywordflow">return</span> 0;
+<a name="l00124"></a>00124 } <span class="keywordflow">else</span> {
+<a name="l00125"></a>00125 <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00126"></a>00126 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
+<a name="l00127"></a>00127 std::cout<< <span class="stringliteral">"\nDefault gravity path = \""</span>
+<a name="l00128"></a>00128 << <a class="code" href="classGeographicLib_1_1GravityModel.html#a0fdf62e41828ae7ae183d9e876f37954">GravityModel::DefaultGravityPath</a>()
+<a name="l00129"></a>00129 << <span class="stringliteral">"\"\nDefault gravity name = \""</span>
+<a name="l00130"></a>00130 << <a class="code" href="classGeographicLib_1_1GravityModel.html#ad4a776d68b60e85275c0e580d3c7caba">GravityModel::DefaultGravityName</a>()
+<a name="l00131"></a>00131 << <span class="stringliteral">"\"\n"</span>;
+<a name="l00132"></a>00132 <span class="keywordflow">return</span> retval;
+<a name="l00133"></a>00133 }
+<a name="l00134"></a>00134 }
+<a name="l00135"></a>00135
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00137"></a>00137 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00138"></a>00138 <span class="keywordflow">return</span> 1;
+<a name="l00139"></a>00139 }
+<a name="l00140"></a>00140 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00141"></a>00141 std::ifstream infile;
+<a name="l00142"></a>00142 std::istringstream instring;
+<a name="l00143"></a>00143 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00144"></a>00144 infile.open(ifile.c_str());
+<a name="l00145"></a>00145 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00146"></a>00146 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00147"></a>00147 <span class="keywordflow">return</span> 1;
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00150"></a>00150 std::string::size_type m = 0;
+<a name="l00151"></a>00151 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00152"></a>00152 m = istring.find(lsep, m);
+<a name="l00153"></a>00153 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00154"></a>00154 <span class="keywordflow">break</span>;
+<a name="l00155"></a>00155 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157 instring.str(istring);
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00160"></a>00160 (!istring.empty() ? &instring : &std::cin);
<a name="l00161"></a>00161
-<a name="l00162"></a>00162 <span class="keywordflow">switch</span> (mode) {
-<a name="l00163"></a>00163 <span class="keywordflow">case</span> GRAVITY:
-<a name="l00164"></a>00164 prec = std::min(16, prec < 0 ? 5 : prec);
-<a name="l00165"></a>00165 <span class="keywordflow">break</span>;
-<a name="l00166"></a>00166 <span class="keywordflow">case</span> DISTURBANCE:
-<a name="l00167"></a>00167 <span class="keywordflow">case</span> ANOMALY:
-<a name="l00168"></a>00168 prec = std::min(14, prec < 0 ? 3 : prec);
-<a name="l00169"></a>00169 <span class="keywordflow">break</span>;
-<a name="l00170"></a>00170 <span class="keywordflow">case</span> UNDULATION:
-<a name="l00171"></a>00171 <span class="keywordflow">default</span>:
-<a name="l00172"></a>00172 prec = std::min(12, prec < 0 ? 4 : prec);
-<a name="l00173"></a>00173 <span class="keywordflow">break</span>;
-<a name="l00174"></a>00174 }
-<a name="l00175"></a>00175 <span class="keywordtype">int</span> retval = 0;
-<a name="l00176"></a>00176 <span class="keywordflow">try</span> {
-<a name="l00177"></a>00177 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> g(model, dir);
-<a name="l00178"></a>00178 <span class="keywordflow">if</span> (circle) {
-<a name="l00179"></a>00179 <span class="keywordflow">if</span> (!Math::isfinite<real>(h))
-<a name="l00180"></a>00180 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad height"</span>);
-<a name="l00181"></a>00181 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == UNDULATION && h != 0)
-<a name="l00182"></a>00182 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height should be zero for geoid undulations"</span>);
-<a name="l00183"></a>00183 }
-<a name="l00184"></a>00184 <span class="keywordflow">if</span> (verbose) {
-<a name="l00185"></a>00185 std::cerr << <span class="stringliteral">"Gravity file: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">GravityFile</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00186"></a>00186 << <span class="stringliteral">"Name: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">GravityModelName</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00187"></a>00187 << <span class="stringliteral">"Description: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">Description</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00188"></a>00188 << <span class="stringliteral">"Date & Time: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">DateTime</a>() << <span class="stringliteral">"\n"</span>;
-<a name="l00189"></a>00189 }
-<a name="l00190"></a>00190 <span class="keywordtype">unsigned</span> mask = (mode == GRAVITY ? <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">GravityModel::GRAVITY</a> :
-<a name="l00191"></a>00191 (mode == DISTURBANCE ? <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a83daf366a2c7ab93495f0e6b4144d885">GravityModel::DISTURBANCE</a> :
-<a name="l00192"></a>00192 (mode == ANOMALY ? <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ada02eebe918ebb3764a62b9323dceac9">GravityModel::SPHERICAL_ANOMALY</a> :
-<a name="l00193"></a>00193 <a class="code" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365a0ac768bffe3f104069c3fd5af1ddaa69">GravityModel::GEOID_HEIGHT</a>))); <span class="comment">// mode == UNDULATION</span>
-<a name="l00194"></a>00194 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> c(circle ? g.<a class="code" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">Circle</a>(lat, h, mask) : <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>());
-<a name="l00195"></a>00195 std::string s, stra, strb;
-<a name="l00196"></a>00196 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00197"></a>00197 <span class="keywordflow">try</span> {
-<a name="l00198"></a>00198 std::istringstream str(s);
-<a name="l00199"></a>00199 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon;
-<a name="l00200"></a>00200 <span class="keywordflow">if</span> (circle) {
-<a name="l00201"></a>00201 <span class="keywordflow">if</span> (!(str >> strb))
-<a name="l00202"></a>00202 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00203"></a>00203 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00204"></a>00204 lon = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb, ind);
-<a name="l00205"></a>00205 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
-<a name="l00206"></a>00206 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on "</span> + strb);
-<a name="l00207"></a>00207 <span class="keywordflow">if</span> (lon < -180 || lon > 360)
-<a name="l00208"></a>00208 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + strb + <span class="stringliteral">"not in [-180d, 360d]"</span>);
-<a name="l00209"></a>00209 } <span class="keywordflow">else</span> {
-<a name="l00210"></a>00210 <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00211"></a>00211 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00212"></a>00212 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00213"></a>00213 h = 0;
-<a name="l00214"></a>00214 <span class="keywordflow">if</span> (!(str >> h)) <span class="comment">// h is optional</span>
-<a name="l00215"></a>00215 str.clear();
-<a name="l00216"></a>00216 <span class="keywordflow">if</span> (mode == UNDULATION && h != 0)
-<a name="l00217"></a>00217 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height must be zero for geoid heights"</span>);
-<a name="l00218"></a>00218 }
-<a name="l00219"></a>00219 <span class="keywordflow">if</span> (str >> stra)
-<a name="l00220"></a>00220 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra junk in input: "</span> + s);
-<a name="l00221"></a>00221 <span class="keywordflow">switch</span> (mode) {
-<a name="l00222"></a>00222 <span class="keywordflow">case</span> GRAVITY:
-<a name="l00223"></a>00223 {
-<a name="l00224"></a>00224 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gx, gy, gz;
-<a name="l00225"></a>00225 <span class="keywordflow">if</span> (circle) {
-<a name="l00226"></a>00226 c.Gravity(lon, gx, gy, gz);
-<a name="l00227"></a>00227 } <span class="keywordflow">else</span> {
-<a name="l00228"></a>00228 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">Gravity</a>(lat, lon, h, gx, gy, gz);
-<a name="l00229"></a>00229 }
-<a name="l00230"></a>00230 *output << Utility::str<real>(gx, prec) << <span class="stringliteral">" "</span>
-<a name="l00231"></a>00231 << Utility::str<real>(gy, prec) << <span class="stringliteral">" "</span>
-<a name="l00232"></a>00232 << Utility::str<real>(gz, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234 <span class="keywordflow">break</span>;
-<a name="l00235"></a>00235 <span class="keywordflow">case</span> DISTURBANCE:
-<a name="l00236"></a>00236 {
-<a name="l00237"></a>00237 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> deltax, deltay, deltaz;
-<a name="l00238"></a>00238 <span class="keywordflow">if</span> (circle) {
-<a name="l00239"></a>00239 c.Disturbance(lon, deltax, deltay, deltaz);
-<a name="l00240"></a>00240 } <span class="keywordflow">else</span> {
-<a name="l00241"></a>00241 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">Disturbance</a>(lat, lon, h, deltax, deltay, deltaz);
-<a name="l00242"></a>00242 }
-<a name="l00243"></a>00243 <span class="comment">// Convert to mGals</span>
-<a name="l00244"></a>00244 *output << Utility::str<real>(deltax * 1e5, prec) << <span class="stringliteral">" "</span>
-<a name="l00245"></a>00245 << Utility::str<real>(deltay * 1e5, prec) << <span class="stringliteral">" "</span>
-<a name="l00246"></a>00246 << Utility::str<real>(deltaz * 1e5, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248 <span class="keywordflow">break</span>;
-<a name="l00249"></a>00249 <span class="keywordflow">case</span> ANOMALY:
-<a name="l00250"></a>00250 {
-<a name="l00251"></a>00251 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dg01, xi, eta;
-<a name="l00252"></a>00252 <span class="keywordflow">if</span> (circle)
-<a name="l00253"></a>00253 c.SphericalAnomaly(lon, Dg01, xi, eta);
-<a name="l00254"></a>00254 <span class="keywordflow">else</span>
-<a name="l00255"></a>00255 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#aaf89eb4a9b7266f0aa2ef2c341fc264e">SphericalAnomaly</a>(lat, lon, h, Dg01, xi, eta);
-<a name="l00256"></a>00256 Dg01 *= 1e5; <span class="comment">// Convert to mGals</span>
-<a name="l00257"></a>00257 xi *= 3600; <span class="comment">// Convert to arcsecs</span>
-<a name="l00258"></a>00258 eta *= 3600;
-<a name="l00259"></a>00259 *output << Utility::str<real>(Dg01, prec) << <span class="stringliteral">" "</span>
-<a name="l00260"></a>00260 << Utility::str<real>(xi, prec) << <span class="stringliteral">" "</span>
-<a name="l00261"></a>00261 << Utility::str<real>(eta, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263 <span class="keywordflow">break</span>;
-<a name="l00264"></a>00264 <span class="keywordflow">case</span> UNDULATION:
-<a name="l00265"></a>00265 <span class="keywordflow">default</span>:
-<a name="l00266"></a>00266 {
-<a name="l00267"></a>00267 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> N = circle ? c.GeoidHeight(lon) : g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">GeoidHeight</a>(lat, lon);
-<a name="l00268"></a>00268 *output << Utility::str<real>(N, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00269"></a>00269 }
-<a name="l00270"></a>00270 <span class="keywordflow">break</span>;
-<a name="l00271"></a>00271 }
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00274"></a>00274 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00275"></a>00275 retval = 1;
-<a name="l00276"></a>00276 }
-<a name="l00277"></a>00277 }
-<a name="l00278"></a>00278 }
-<a name="l00279"></a>00279 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00280"></a>00280 std::cerr << <span class="stringliteral">"Error reading "</span> << model << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00281"></a>00281 retval = 1;
-<a name="l00282"></a>00282 }
-<a name="l00283"></a>00283 <span class="keywordflow">return</span> retval;
-<a name="l00284"></a>00284 }
-<a name="l00285"></a>00285 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00286"></a>00286 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00287"></a>00287 <span class="keywordflow">return</span> 1;
-<a name="l00288"></a>00288 }
-<a name="l00289"></a>00289 <span class="keywordflow">catch</span> (...) {
-<a name="l00290"></a>00290 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00291"></a>00291 <span class="keywordflow">return</span> 1;
-<a name="l00292"></a>00292 }
-<a name="l00293"></a>00293 }
+<a name="l00162"></a>00162 std::ofstream outfile;
+<a name="l00163"></a>00163 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00164"></a>00164 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00165"></a>00165 outfile.open(ofile.c_str());
+<a name="l00166"></a>00166 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00167"></a>00167 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00168"></a>00168 <span class="keywordflow">return</span> 1;
+<a name="l00169"></a>00169 }
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00172"></a>00172
+<a name="l00173"></a>00173 <span class="keywordflow">switch</span> (mode) {
+<a name="l00174"></a>00174 <span class="keywordflow">case</span> GRAVITY:
+<a name="l00175"></a>00175 prec = std::min(16, prec < 0 ? 5 : prec);
+<a name="l00176"></a>00176 <span class="keywordflow">break</span>;
+<a name="l00177"></a>00177 <span class="keywordflow">case</span> DISTURBANCE:
+<a name="l00178"></a>00178 <span class="keywordflow">case</span> ANOMALY:
+<a name="l00179"></a>00179 prec = std::min(14, prec < 0 ? 3 : prec);
+<a name="l00180"></a>00180 <span class="keywordflow">break</span>;
+<a name="l00181"></a>00181 <span class="keywordflow">case</span> UNDULATION:
+<a name="l00182"></a>00182 <span class="keywordflow">default</span>:
+<a name="l00183"></a>00183 prec = std::min(12, prec < 0 ? 4 : prec);
+<a name="l00184"></a>00184 <span class="keywordflow">break</span>;
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186 <span class="keywordtype">int</span> retval = 0;
+<a name="l00187"></a>00187 <span class="keywordflow">try</span> {
+<a name="l00188"></a>00188 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> g(model, dir);
+<a name="l00189"></a>00189 <span class="keywordflow">if</span> (circle) {
+<a name="l00190"></a>00190 <span class="keywordflow">if</span> (!Math::isfinite<real>(h))
+<a name="l00191"></a>00191 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad height"</span>);
+<a name="l00192"></a>00192 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (mode == UNDULATION && h != 0)
+<a name="l00193"></a>00193 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height should be zero for geoid undulations"</span>);
+<a name="l00194"></a>00194 }
+<a name="l00195"></a>00195 <span class="keywordflow">if</span> (verbose) {
+<a name="l00196"></a>00196 std::cerr << <span class="stringliteral">"Gravity file: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a26a87d363713ba3d1aa1b16da2fc2f27">GravityFile</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00197"></a>00197 << <span class="stringliteral">"Name: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a9ca1191e449bf7c04595ebd8a299af78">GravityModelName</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00198"></a>00198 << <span class="stringliteral">"Description: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">Description</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00199"></a>00199 << <span class="stringliteral">"Date & Time: "</span> << g.<a class="code" href="classGeographicLib_1_1GravityModel.html#acbed448c2423cd45e800d03fab059500">DateTime</a>() << <span class="stringliteral">"\n"</span>;
+<a name="l00200"></a>00200 }
+<a name="l00201"></a>00201 <span class="keywordtype">unsigned</span> mask = (mode == GRAVITY ? <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>::GRAVITY :
+<a name="l00202"></a>00202 (mode == DISTURBANCE ? <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>::DISTURBANCE :
+<a name="l00203"></a>00203 (mode == ANOMALY ? <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>::SPHERICAL_ANOMALY :
+<a name="l00204"></a>00204 <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>::GEOID_HEIGHT))); <span class="comment">// mode == UNDULATION</span>
+<a name="l00205"></a>00205 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> c(circle ? g.<a class="code" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">Circle</a>(lat, h, mask) : <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>());
+<a name="l00206"></a>00206 std::string s, stra, strb;
+<a name="l00207"></a>00207 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00208"></a>00208 <span class="keywordflow">try</span> {
+<a name="l00209"></a>00209 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00210"></a>00210 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00211"></a>00211 std::string::size_type m = s.find(cdelim);
+<a name="l00212"></a>00212 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00213"></a>00213 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00214"></a>00214 s = s.substr(0, m);
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 }
+<a name="l00217"></a>00217 std::istringstream str(s);
+<a name="l00218"></a>00218 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon;
+<a name="l00219"></a>00219 <span class="keywordflow">if</span> (circle) {
+<a name="l00220"></a>00220 <span class="keywordflow">if</span> (!(str >> strb))
+<a name="l00221"></a>00221 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00222"></a>00222 <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00223"></a>00223 lon = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb, ind);
+<a name="l00224"></a>00224 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
+<a name="l00225"></a>00225 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on "</span> + strb);
+<a name="l00226"></a>00226 <span class="keywordflow">if</span> (lon < -180 || lon > 360)
+<a name="l00227"></a>00227 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + strb + <span class="stringliteral">"not in [-180d, 360d]"</span>);
+<a name="l00228"></a>00228 } <span class="keywordflow">else</span> {
+<a name="l00229"></a>00229 <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00230"></a>00230 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00231"></a>00231 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00232"></a>00232 h = 0;
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (!(str >> h)) <span class="comment">// h is optional</span>
+<a name="l00234"></a>00234 str.clear();
+<a name="l00235"></a>00235 <span class="keywordflow">if</span> (mode == UNDULATION && h != 0)
+<a name="l00236"></a>00236 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height must be zero for geoid heights"</span>);
+<a name="l00237"></a>00237 }
+<a name="l00238"></a>00238 <span class="keywordflow">if</span> (str >> stra)
+<a name="l00239"></a>00239 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra junk in input: "</span> + s);
+<a name="l00240"></a>00240 <span class="keywordflow">switch</span> (mode) {
+<a name="l00241"></a>00241 <span class="keywordflow">case</span> GRAVITY:
+<a name="l00242"></a>00242 {
+<a name="l00243"></a>00243 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gx, gy, gz;
+<a name="l00244"></a>00244 <span class="keywordflow">if</span> (circle) {
+<a name="l00245"></a>00245 c.Gravity(lon, gx, gy, gz);
+<a name="l00246"></a>00246 } <span class="keywordflow">else</span> {
+<a name="l00247"></a>00247 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">Gravity</a>(lat, lon, h, gx, gy, gz);
+<a name="l00248"></a>00248 }
+<a name="l00249"></a>00249 *output << Utility::str<real>(gx, prec) << <span class="stringliteral">" "</span>
+<a name="l00250"></a>00250 << Utility::str<real>(gy, prec) << <span class="stringliteral">" "</span>
+<a name="l00251"></a>00251 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gz, prec) << eol;
+<a name="l00252"></a>00252 }
+<a name="l00253"></a>00253 <span class="keywordflow">break</span>;
+<a name="l00254"></a>00254 <span class="keywordflow">case</span> DISTURBANCE:
+<a name="l00255"></a>00255 {
+<a name="l00256"></a>00256 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> deltax, deltay, deltaz;
+<a name="l00257"></a>00257 <span class="keywordflow">if</span> (circle) {
+<a name="l00258"></a>00258 c.Disturbance(lon, deltax, deltay, deltaz);
+<a name="l00259"></a>00259 } <span class="keywordflow">else</span> {
+<a name="l00260"></a>00260 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">Disturbance</a>(lat, lon, h, deltax, deltay, deltaz);
+<a name="l00261"></a>00261 }
+<a name="l00262"></a>00262 <span class="comment">// Convert to mGals</span>
+<a name="l00263"></a>00263 *output << Utility::str<real>(deltax * 1e5, prec) << <span class="stringliteral">" "</span>
+<a name="l00264"></a>00264 << Utility::str<real>(deltay * 1e5, prec) << <span class="stringliteral">" "</span>
+<a name="l00265"></a>00265 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(deltaz * 1e5, prec)
+<a name="l00266"></a>00266 << eol;
+<a name="l00267"></a>00267 }
+<a name="l00268"></a>00268 <span class="keywordflow">break</span>;
+<a name="l00269"></a>00269 <span class="keywordflow">case</span> ANOMALY:
+<a name="l00270"></a>00270 {
+<a name="l00271"></a>00271 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dg01, xi, eta;
+<a name="l00272"></a>00272 <span class="keywordflow">if</span> (circle)
+<a name="l00273"></a>00273 c.SphericalAnomaly(lon, Dg01, xi, eta);
+<a name="l00274"></a>00274 <span class="keywordflow">else</span>
+<a name="l00275"></a>00275 g.<a class="code" href="classGeographicLib_1_1GravityModel.html#aaf89eb4a9b7266f0aa2ef2c341fc264e">SphericalAnomaly</a>(lat, lon, h, Dg01, xi, eta);
+<a name="l00276"></a>00276 Dg01 *= 1e5; <span class="comment">// Convert to mGals</span>
+<a name="l00277"></a>00277 xi *= 3600; <span class="comment">// Convert to arcsecs</span>
+<a name="l00278"></a>00278 eta *= 3600;
+<a name="l00279"></a>00279 *output << Utility::str<real>(Dg01, prec) << <span class="stringliteral">" "</span>
+<a name="l00280"></a>00280 << Utility::str<real>(xi, prec) << <span class="stringliteral">" "</span>
+<a name="l00281"></a>00281 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(eta, prec) << eol;
+<a name="l00282"></a>00282 }
+<a name="l00283"></a>00283 <span class="keywordflow">break</span>;
+<a name="l00284"></a>00284 <span class="keywordflow">case</span> UNDULATION:
+<a name="l00285"></a>00285 <span class="keywordflow">default</span>:
+<a name="l00286"></a>00286 {
+<a name="l00287"></a>00287 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> N = circle ? c.GeoidHeight(lon) : g.<a class="code" href="classGeographicLib_1_1GravityModel.html#a7e75bdba6b9c8e64cc64403335a6fba4">GeoidHeight</a>(lat, lon);
+<a name="l00288"></a>00288 *output << Utility::str<real>(N, prec) << eol;
+<a name="l00289"></a>00289 }
+<a name="l00290"></a>00290 <span class="keywordflow">break</span>;
+<a name="l00291"></a>00291 }
+<a name="l00292"></a>00292 }
+<a name="l00293"></a>00293 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00294"></a>00294 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00295"></a>00295 retval = 1;
+<a name="l00296"></a>00296 }
+<a name="l00297"></a>00297 }
+<a name="l00298"></a>00298 }
+<a name="l00299"></a>00299 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00300"></a>00300 std::cerr << <span class="stringliteral">"Error reading "</span> << model << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00301"></a>00301 retval = 1;
+<a name="l00302"></a>00302 }
+<a name="l00303"></a>00303 <span class="keywordflow">return</span> retval;
+<a name="l00304"></a>00304 }
+<a name="l00305"></a>00305 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00306"></a>00306 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00307"></a>00307 <span class="keywordflow">return</span> 1;
+<a name="l00308"></a>00308 }
+<a name="l00309"></a>00309 <span class="keywordflow">catch</span> (...) {
+<a name="l00310"></a>00310 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00311"></a>00311 <span class="keywordflow">return</span> 1;
+<a name="l00312"></a>00312 }
+<a name="l00313"></a>00313 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/LICENSE.txt b/doc/html/LICENSE.txt
index e8bc663..692304c 100644
--- a/doc/html/LICENSE.txt
+++ b/doc/html/LICENSE.txt
@@ -1,6 +1,6 @@
This license applies to GeographicLib, versions 1.12 and later.
-Copyright (c) 2008-2011, Charles Karney
+Copyright (c) 2008-2012, Charles Karney
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
diff --git a/doc/html/LambertConformalConic_8cpp.html b/doc/html/LambertConformalConic_8cpp.html
index 7a2a082..278255a 100644
--- a/doc/html/LambertConformalConic_8cpp.html
+++ b/doc/html/LambertConformalConic_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: LambertConformalConic.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,13 +75,11 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8cpp.html#adf8d4ab2a5f0e2571915d27d31758930">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP</a> "$Id: 2f32109c0193635dd5808a59d477b90959901eb6 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8cpp.html#adf8d4ab2a5f0e2571915d27d31758930">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP</a> "$Id: da8f6ce89092006a26946d671edca1a7836e7ce6 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP "$Id: 2f32109c0193635dd5808a59d477b90959901eb6 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP "$Id: da8f6ce89092006a26946d671edca1a7836e7ce6 $"</td>
</tr>
</table>
</div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/LambertConformalConic_8cpp_source.html b/doc/html/LambertConformalConic_8cpp_source.html
index 8bbee41..5861534 100644
--- a/doc/html/LambertConformalConic_8cpp_source.html
+++ b/doc/html/LambertConformalConic_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: LambertConformalConic.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="LambertConformalConic_8hpp.html" title="Header for GeographicLib::LambertConformalConic class.">GeographicLib/LambertConformalConic.hpp</a>></span>
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="LambertConformalConic_8cpp.html#adf8d4ab2a5f0e2571915d27d31758930">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 2f32109c0193635dd5808a59d477b90959901eb6 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: da8f6ce89092006a26946d671edca1a7836e7ce6 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="LambertConformalConic_8cpp.html#adf8d4ab2a5f0e2571915d27d31758930">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="LambertConformalConic_8hpp.html#aac2fbd995d5b75016781c58b97093c67">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</a>)
@@ -68,11 +83,11 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">using namespace </span>std;
<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> LambertConformalConic::eps_ =
+<a name="l00022"></a>00022 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> LambertConformalConic::eps_ =
<a name="l00023"></a>00023 numeric_limits<real>::epsilon();
-<a name="l00024"></a>00024 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> LambertConformalConic::epsx_ = Math::sq(eps_);
-<a name="l00025"></a>00025 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> LambertConformalConic::tol_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * sqrt(eps_);
-<a name="l00026"></a>00026 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> LambertConformalConic::ahypover_ =
+<a name="l00024"></a>00024 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> LambertConformalConic::epsx_ = Math::sq(eps_);
+<a name="l00025"></a>00025 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> LambertConformalConic::tol_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * sqrt(eps_);
+<a name="l00026"></a>00026 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> LambertConformalConic::ahypover_ =
<a name="l00027"></a>00027 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::digits) * log(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::radix))
<a name="l00028"></a>00028 + 2;
<a name="l00029"></a>00029
@@ -85,16 +100,16 @@
<a name="l00036"></a>00036 , _e(sqrt(abs(_e2)))
<a name="l00037"></a>00037 , _e2m(1 - _e2)
<a name="l00038"></a>00038 {
-<a name="l00039"></a>00039 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00039"></a>00039 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00040"></a>00040 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00041"></a>00041 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00041"></a>00041 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00042"></a>00042 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00043"></a>00043 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k0) && k0 > 0))
+<a name="l00043"></a>00043 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k0) && k0 > 0))
<a name="l00044"></a>00044 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00045"></a>00045 <span class="keywordflow">if</span> (!(abs(stdlat) <= 90))
<a name="l00046"></a>00046 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude not in [-90, 90]"</span>);
<a name="l00047"></a>00047 real
-<a name="l00048"></a>00048 phi = stdlat * Math::degree<real>(),
+<a name="l00048"></a>00048 phi = stdlat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00049"></a>00049 sphi = sin(phi),
<a name="l00050"></a>00050 cphi = abs(stdlat) != 90 ? cos(phi) : 0;
<a name="l00051"></a>00051 Init(sphi, cphi, sphi, cphi, k0);
@@ -110,18 +125,18 @@
<a name="l00061"></a>00061 , _e(sqrt(abs(_e2)))
<a name="l00062"></a>00062 , _e2m(1 - _e2)
<a name="l00063"></a>00063 {
-<a name="l00064"></a>00064 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00064"></a>00064 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00065"></a>00065 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00066"></a>00066 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00066"></a>00066 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00067"></a>00067 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00068"></a>00068 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k1) && k1 > 0))
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k1) && k1 > 0))
<a name="l00069"></a>00069 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00070"></a>00070 <span class="keywordflow">if</span> (!(abs(stdlat1) <= 90))
<a name="l00071"></a>00071 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 1 not in [-90, 90]"</span>);
<a name="l00072"></a>00072 <span class="keywordflow">if</span> (!(abs(stdlat2) <= 90))
<a name="l00073"></a>00073 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 2 not in [-90, 90]"</span>);
<a name="l00074"></a>00074 real
-<a name="l00075"></a>00075 phi1 = stdlat1 * Math::degree<real>(),
+<a name="l00075"></a>00075 phi1 = stdlat1 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00076"></a>00076 phi2 = stdlat2 * Math::degree<real>();
<a name="l00077"></a>00077 Init(sin(phi1), abs(stdlat1) != 90 ? cos(phi1) : 0,
<a name="l00078"></a>00078 sin(phi2), abs(stdlat2) != 90 ? cos(phi2) : 0, k1);
@@ -138,11 +153,11 @@
<a name="l00089"></a>00089 , _e(sqrt(abs(_e2)))
<a name="l00090"></a>00090 , _e2m(1 - _e2)
<a name="l00091"></a>00091 {
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00092"></a>00092 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00093"></a>00093 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00095"></a>00095 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k1) && k1 > 0))
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k1) && k1 > 0))
<a name="l00097"></a>00097 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00098"></a>00098 <span class="keywordflow">if</span> (!(coslat1 >= 0))
<a name="l00099"></a>00099 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Standard latitude 1 not in [-90, 90]"</span>);
@@ -163,9 +178,9 @@
<a name="l00114"></a>00114 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1) <span class="keywordflow">throw</span>() {
<a name="l00115"></a>00115 {
<a name="l00116"></a>00116 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r;
-<a name="l00117"></a>00117 r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sphi1, cphi1);
+<a name="l00117"></a>00117 r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sphi1, cphi1);
<a name="l00118"></a>00118 sphi1 /= r; cphi1 /= r;
-<a name="l00119"></a>00119 r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(sphi2, cphi2);
+<a name="l00119"></a>00119 r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(sphi2, cphi2);
<a name="l00120"></a>00120 sphi2 /= r; cphi2 /= r;
<a name="l00121"></a>00121 }
<a name="l00122"></a>00122 <span class="keywordtype">bool</span> polar = (cphi1 == 0);
@@ -208,14 +223,14 @@
<a name="l00159"></a>00159 scphi2 = 1/cphi2,
<a name="l00160"></a>00160 xi2 = eatanhe(sphi2), shxi2 = sinh(xi2), chxi2 = hyp(shxi2),
<a name="l00161"></a>00161 tchi2 = chxi2 * tphi2 - shxi2 * scphi2, scchi2 = hyp(tchi2),
-<a name="l00162"></a>00162 psi1 = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(tchi1);
+<a name="l00162"></a>00162 psi1 = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(tchi1);
<a name="l00163"></a>00163 <span class="keywordflow">if</span> (tphi2 - tphi1 != 0) {
<a name="l00164"></a>00164 <span class="comment">// Db(tphi2, tphi1)</span>
-<a name="l00165"></a>00165 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> num = Dlog1p(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tbet2)/(1 + scbet2),
-<a name="l00166"></a>00166 <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tbet1)/(1 + scbet1))
+<a name="l00165"></a>00165 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> num = Dlog1p(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tbet2)/(1 + scbet2),
+<a name="l00166"></a>00166 <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tbet1)/(1 + scbet1))
<a name="l00167"></a>00167 * Dhyp(tbet2, tbet1, scbet2, scbet1) * _fm;
<a name="l00168"></a>00168 <span class="comment">// Dc(tphi2, tphi1)</span>
-<a name="l00169"></a>00169 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> den = Dasinh(tphi2, tphi1, scphi2, scphi1)
+<a name="l00169"></a>00169 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> den = Dasinh(tphi2, tphi1, scphi2, scphi1)
<a name="l00170"></a>00170 - Deatanhe(sphi2, sphi1) * Dsn(tphi2, tphi1, sphi2, sphi1);
<a name="l00171"></a>00171 _n = num/den;
<a name="l00172"></a>00172
@@ -243,9 +258,9 @@
<a name="l00194"></a>00194 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00195"></a>00195 <span class="comment">// s1 = (scbet1 - scchi1) * (scbet1 + scchi1)</span>
<a name="l00196"></a>00196 s1 = (tphi1 * (2 * shxi1 * chxi1 * scphi1 - _e2 * tphi1) -
-<a name="l00197"></a>00197 <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(shxi1) * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi1))),
+<a name="l00197"></a>00197 <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(shxi1) * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi1))),
<a name="l00198"></a>00198 s2 = (tphi2 * (2 * shxi2 * chxi2 * scphi2 - _e2 * tphi2) -
-<a name="l00199"></a>00199 <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(shxi2) * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi2))),
+<a name="l00199"></a>00199 <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(shxi2) * (1 + 2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi2))),
<a name="l00200"></a>00200 <span class="comment">// t1 = scbet1 - tchi1</span>
<a name="l00201"></a>00201 t1 = tchi1 < 0 ? scbet1 - tchi1 : (s1 + 1)/(scbet1 + tchi1),
<a name="l00202"></a>00202 t2 = tchi2 < 0 ? scbet2 - tchi2 : (s2 + 1)/(scbet2 + tchi2),
@@ -291,7 +306,7 @@
<a name="l00242"></a>00242 <span class="comment">// nu = scphi * (shxiZ - shxi) - tphi * (chxiZ - chxi)</span>
<a name="l00243"></a>00243 <span class="comment">// mu = - scphi * (chxiZ - chxi) + tphi * (shxiZ - shxi)</span>
<a name="l00244"></a>00244 <span class="comment">// then</span>
-<a name="l00245"></a>00245 <span class="comment">// dchi = ((mu2 + mu1) - D(nu2, nu1) * (scphi2 + scphi1)) /</span>
+<a name="l00245"></a>00245 <span class="comment">// dchi = ((mu2 + mu1) - D(nu2, nu1) * (scphi2 + scphi1)) /</span>
<a name="l00246"></a>00246 <span class="comment">// D(tchi2, tchi1)</span>
<a name="l00247"></a>00247 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00248"></a>00248 xiZ = eatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)), shxiZ = sinh(xiZ), chxiZ = hyp(shxiZ),
@@ -327,7 +342,7 @@
<a name="l00278"></a>00278 _nc = sqrt(max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), t) * (1 + _n));
<a name="l00279"></a>00279 }
<a name="l00280"></a>00280 {
-<a name="l00281"></a>00281 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(_n, _nc);
+<a name="l00281"></a>00281 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(_n, _nc);
<a name="l00282"></a>00282 _n /= r;
<a name="l00283"></a>00283 _nc /= r;
<a name="l00284"></a>00284 }
@@ -343,22 +358,22 @@
<a name="l00294"></a>00294 _scbet0 = hyp(_fm * tphi0);
<a name="l00295"></a>00295 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> shxi0 = sinh(eatanhe(_n));
<a name="l00296"></a>00296 _tchi0 = tphi0 * hyp(shxi0) - shxi0 * hyp(tphi0); _scchi0 = hyp(_tchi0);
-<a name="l00297"></a>00297 _psi0 = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(_tchi0);
+<a name="l00297"></a>00297 _psi0 = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(_tchi0);
<a name="l00298"></a>00298
<a name="l00299"></a>00299 _lat0 = atan(_sign * tphi0) / Math::degree<real>();
-<a name="l00300"></a>00300 _t0nm1 = <a class="code" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">Math::expm1</a>(- _n * _psi0); <span class="comment">// Snyder's t0^n - 1</span>
+<a name="l00300"></a>00300 _t0nm1 = <a class="code" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">Math::expm1</a>(- _n * _psi0); <span class="comment">// Snyder's t0^n - 1</span>
<a name="l00301"></a>00301 <span class="comment">// a * k1 * m1/t1^n = a * k1 * m2/t2^n = a * k1 * n * (Snyder's F)</span>
<a name="l00302"></a>00302 <span class="comment">// = a * k1 / (scbet1 * exp(-n * psi1))</span>
<a name="l00303"></a>00303 _scale = _a * k1 / scbet1 *
<a name="l00304"></a>00304 <span class="comment">// exp(n * psi1) = exp(- (1 - n) * psi1) * exp(psi1)</span>
<a name="l00305"></a>00305 <span class="comment">// with (1-n) = nc^2/(1+n) and exp(-psi1) = scchi1 + tchi1</span>
-<a name="l00306"></a>00306 exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n)) * psi1 )
+<a name="l00306"></a>00306 exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n)) * psi1 )
<a name="l00307"></a>00307 * (tchi1 >= 0 ? scchi1 + tchi1 : 1 / (scchi1 - tchi1));
<a name="l00308"></a>00308 <span class="comment">// Scale at phi0 = k0 = k1 * (scbet0*exp(-n*psi0))/(scbet1*exp(-n*psi1))</span>
<a name="l00309"></a>00309 <span class="comment">// = k1 * scbet0/scbet1 * exp(n * (psi1 - psi0))</span>
<a name="l00310"></a>00310 <span class="comment">// psi1 - psi0 = Dasinh(tchi1, tchi0) * (tchi1 - tchi0)</span>
<a name="l00311"></a>00311 _k0 = k1 * (_scbet0/scbet1) *
-<a name="l00312"></a>00312 exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n)) *
+<a name="l00312"></a>00312 exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n)) *
<a name="l00313"></a>00313 Dasinh(tchi1, _tchi0, scchi1, _scchi0) * (tchi1 - _tchi0))
<a name="l00314"></a>00314 * (tchi1 >= 0 ? scchi1 + tchi1 : 1 / (scchi1 - tchi1)) /
<a name="l00315"></a>00315 (_scchi0 + _tchi0);
@@ -391,30 +406,30 @@
<a name="l00342"></a>00342 <span class="comment">// where nrho0 = n * rho0, drho = rho - rho0</span>
<a name="l00343"></a>00343 <span class="comment">// and drho is evaluated with divided differences</span>
<a name="l00344"></a>00344 real
-<a name="l00345"></a>00345 lam = lon * Math::degree<real>(),
+<a name="l00345"></a>00345 lam = lon * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00346"></a>00346 phi = lat * Math::degree<real>(),
<a name="l00347"></a>00347 sphi = sin(phi), cphi = abs(lat) != 90 ? cos(phi) : epsx_,
<a name="l00348"></a>00348 tphi = sphi/cphi, tbet = _fm * tphi, scbet = hyp(tbet),
<a name="l00349"></a>00349 scphi = 1/cphi, shxi = sinh(eatanhe(sphi)),
<a name="l00350"></a>00350 tchi = hyp(shxi) * tphi - shxi * scphi, scchi = hyp(tchi),
-<a name="l00351"></a>00351 psi = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(tchi),
+<a name="l00351"></a>00351 psi = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(tchi),
<a name="l00352"></a>00352 theta = _n * lam, stheta = sin(theta), ctheta = cos(theta),
<a name="l00353"></a>00353 dpsi = Dasinh(tchi, _tchi0, scchi, _scchi0) * (tchi - _tchi0),
<a name="l00354"></a>00354 drho = - _scale * (2 * _nc < 1 && dpsi != 0 ?
-<a name="l00355"></a>00355 (exp(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n) * psi ) *
+<a name="l00355"></a>00355 (exp(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n) * psi ) *
<a name="l00356"></a>00356 (tchi > 0 ? 1/(scchi + tchi) : (scchi - tchi))
<a name="l00357"></a>00357 - (_t0nm1 + 1))/(-_n) :
<a name="l00358"></a>00358 Dexp(-_n * psi, -_n * _psi0) * dpsi);
<a name="l00359"></a>00359 x = (_nrho0 + _n * drho) * (_n != 0 ? stheta / _n : lam);
<a name="l00360"></a>00360 y = _nrho0 *
<a name="l00361"></a>00361 (_n != 0 ?
-<a name="l00362"></a>00362 (ctheta < 0 ? 1 - ctheta : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(stheta)/(1 + ctheta)) / _n : 0)
+<a name="l00362"></a>00362 (ctheta < 0 ? 1 - ctheta : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(stheta)/(1 + ctheta)) / _n : 0)
<a name="l00363"></a>00363 - drho * ctheta;
<a name="l00364"></a>00364 k = _k0 * (scbet/_scbet0) /
-<a name="l00365"></a>00365 (exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n)) * dpsi )
+<a name="l00365"></a>00365 (exp( - (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n)) * dpsi )
<a name="l00366"></a>00366 * (tchi >= 0 ? scchi + tchi : 1 / (scchi - tchi)) / (_scchi0 + _tchi0));
<a name="l00367"></a>00367 y *= _sign;
-<a name="l00368"></a>00368 gamma = _sign * theta / Math::degree<real>();
+<a name="l00368"></a>00368 gamma = _sign * theta / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00369"></a>00369 }
<a name="l00370"></a>00370
<a name="l00371"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a085d37693f5e95fd650b7f59f61ab744">00371</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a085d37693f5e95fd650b7f59f61ab744">LambertConformalConic::Reverse</a>(real lon0, real x, real y,
@@ -436,7 +451,7 @@
<a name="l00387"></a>00387 y *= _sign;
<a name="l00388"></a>00388 real
<a name="l00389"></a>00389 nx = _n * x, ny = _n * y, y1 = _nrho0 - ny,
-<a name="l00390"></a>00390 den = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(nx, y1) + _nrho0, <span class="comment">// 0 implies origin with polar aspect</span>
+<a name="l00390"></a>00390 den = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(nx, y1) + _nrho0, <span class="comment">// 0 implies origin with polar aspect</span>
<a name="l00391"></a>00391 drho = den != 0 ? (x*nx - 2*y*_nrho0 + y*ny) / den : 0,
<a name="l00392"></a>00392 tnm1 = _t0nm1 + _n * drho/_scale,
<a name="l00393"></a>00393 dpsi = (den == 0 ? 0 :
@@ -458,8 +473,8 @@
<a name="l00409"></a>00409 <span class="comment">// cosh(log(tn)) = (tn + 1/tn)/2; sinh(log(tn)) = (tn - 1/tn)/2</span>
<a name="l00410"></a>00410 real
<a name="l00411"></a>00411 tn = tnm1 + 1 == 0 ? epsx_ : tnm1 + 1,
-<a name="l00412"></a>00412 sh = sinh( -<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(_n * (1 + _n)) *
-<a name="l00413"></a>00413 (2 * tn > 1 ? <a class="code" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">Math::log1p</a>(tnm1) : log(tn)) );
+<a name="l00412"></a>00412 sh = sinh( -<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(_n * (1 + _n)) *
+<a name="l00413"></a>00413 (2 * tn > 1 ? <a class="code" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">Math::log1p</a>(tnm1) : log(tn)) );
<a name="l00414"></a>00414 tchi = sh * (tn + 1/tn)/2 - hyp(sh) * (tnm1 * (tn + 1)/tn)/2;
<a name="l00415"></a>00415 }
<a name="l00416"></a>00416
@@ -474,7 +489,7 @@
<a name="l00425"></a>00425 scphi = hyp(tphi),
<a name="l00426"></a>00426 shxi = sinh( eatanhe( tphi / scphi ) ),
<a name="l00427"></a>00427 tchia = hyp(shxi) * tphi - shxi * scphi,
-<a name="l00428"></a>00428 dtphi = (tchi - tchia) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tphi)) /
+<a name="l00428"></a>00428 dtphi = (tchi - tchia) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tphi)) /
<a name="l00429"></a>00429 ( _e2m * scphi * hyp(tchia) );
<a name="l00430"></a>00430 tphi += dtphi;
<a name="l00431"></a>00431 <span class="keywordflow">if</span> (!(abs(dtphi) >= stol))
@@ -486,8 +501,8 @@
<a name="l00437"></a>00437 phi = _sign * atan(tphi),
<a name="l00438"></a>00438 scbet = hyp(_fm * tphi), scchi = hyp(tchi),
<a name="l00439"></a>00439 lam = _n != 0 ? gamma / _n : x / y1;
-<a name="l00440"></a>00440 lat = phi / Math::degree<real>();
-<a name="l00441"></a>00441 lon = lam / Math::degree<real>();
+<a name="l00440"></a>00440 lat = phi / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00441"></a>00441 lon = lam / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00442"></a>00442 <span class="comment">// Avoid losing a bit of accuracy in lon (assuming lon0 is an integer)</span>
<a name="l00443"></a>00443 <span class="keywordflow">if</span> (lon + lon0 >= 180)
<a name="l00444"></a>00444 lon += lon0 - 360;
@@ -496,13 +511,13 @@
<a name="l00447"></a>00447 <span class="keywordflow">else</span>
<a name="l00448"></a>00448 lon += lon0;
<a name="l00449"></a>00449 k = _k0 * (scbet/_scbet0) /
-<a name="l00450"></a>00450 (exp(_nc != 0 ? - (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_nc)/(1 + _n)) * dpsi : 0)
+<a name="l00450"></a>00450 (exp(_nc != 0 ? - (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_nc)/(1 + _n)) * dpsi : 0)
<a name="l00451"></a>00451 * (tchi >= 0 ? scchi + tchi : 1 / (scchi - tchi)) / (_scchi0 + _tchi0));
-<a name="l00452"></a>00452 gamma /= _sign * Math::degree<real>();
+<a name="l00452"></a>00452 gamma /= _sign * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00453"></a>00453 }
<a name="l00454"></a>00454
<a name="l00455"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#aac6267f7f970b35043b17e12e4163ff2">00455</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#aac6267f7f970b35043b17e12e4163ff2">LambertConformalConic::SetScale</a>(real lat, real k) {
-<a name="l00456"></a>00456 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k) && k > 0))
+<a name="l00456"></a>00456 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k) && k > 0))
<a name="l00457"></a>00457 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00458"></a>00458 <span class="keywordflow">if</span> (!(abs(lat) <= 90))
<a name="l00459"></a>00459 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude for SetScale not in [-90, 90]"</span>);
@@ -518,8 +533,13 @@
<a name="l00469"></a>00469 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/LambertConformalConic_8hpp.html b/doc/html/LambertConformalConic_8hpp.html
index ffe30f1..9af9ad0 100644
--- a/doc/html/LambertConformalConic_8hpp.html
+++ b/doc/html/LambertConformalConic_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: LambertConformalConic.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,13 +82,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8hpp.html#aac2fbd995d5b75016781c58b97093c67">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</a> "$Id: fcf9176f0a356995138754581297173aa3491693 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8hpp.html#aac2fbd995d5b75016781c58b97093c67">GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</a> "$Id: 9aef04f77098543818681966f13ef97ea47dedb4 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP "$Id: fcf9176f0a356995138754581297173aa3491693 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP "$Id: 9aef04f77098543818681966f13ef97ea47dedb4 $"</td>
</tr>
</table>
</div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/LambertConformalConic_8hpp_source.html b/doc/html/LambertConformalConic_8hpp_source.html
index 7209e88..ac33fea 100644
--- a/doc/html/LambertConformalConic_8hpp_source.html
+++ b/doc/html/LambertConformalConic_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: LambertConformalConic.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP)</span>
<a name="l00011"></a><a class="code" href="LambertConformalConic_8hpp.html#aac2fbd995d5b75016781c58b97093c67">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: fcf9176f0a356995138754581297173aa3491693 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 9aef04f77098543818681966f13ef97ea47dedb4 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <algorithm></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -101,278 +116,289 @@
<a name="l00051"></a>00051 <span class="comment"> * system (<a href="http://www.spatialreference.org/ref/epsg/3364/"></span>
<a name="l00052"></a>00052 <span class="comment"> * EPSG:3364</a>) is obtained by:</span>
<a name="l00053"></a>00053 <span class="comment"> * \include example-LambertConformalConic.cpp</span>
-<a name="l00054"></a>00054 <span class="comment"> **********************************************************************/</span>
-<a name="l00055"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html">00055</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> {
-<a name="l00056"></a>00056 <span class="keyword">private</span>:
-<a name="l00057"></a>00057 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00058"></a>00058 real _a, _f, _fm, _e2, _e, _e2m;
-<a name="l00059"></a>00059 real _sign, _n, _nc, _t0nm1, _scale, _lat0, _k0;
-<a name="l00060"></a>00060 real _scbet0, _tchi0, _scchi0, _psi0, _nrho0;
-<a name="l00061"></a>00061 <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
-<a name="l00062"></a>00062 <span class="keyword">static</span> <span class="keyword">const</span> real epsx_;
-<a name="l00063"></a>00063 <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">const</span> real ahypover_;
-<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
-<a name="l00066"></a>00066 <span class="keyword">static</span> <span class="keyword">inline</span> real hyp(real x) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), x); }
-<a name="l00067"></a>00067 <span class="comment">// e * atanh(e * x) = log( ((1 + e*x)/(1 - e*x))^(e/2) ) if f >= 0</span>
-<a name="l00068"></a>00068 <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x) if f < 0</span>
-<a name="l00069"></a>00069 <span class="keyword">inline</span> real eatanhe(real x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00070"></a>00070 <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
-<a name="l00071"></a>00071 }
-<a name="l00072"></a>00072 <span class="comment">// Divided differences</span>
-<a name="l00073"></a>00073 <span class="comment">// Definition: Df(x,y) = (f(x)-f(y))/(x-y)</span>
-<a name="l00074"></a>00074 <span class="comment">// See: W. M. Kahan and R. J. Fateman,</span>
-<a name="l00075"></a>00075 <span class="comment">// Symbolic computation of divided differences,</span>
-<a name="l00076"></a>00076 <span class="comment">// SIGSAM Bull. 33(3), 7-28 (1999)</span>
-<a name="l00077"></a>00077 <span class="comment">// http://dx.doi.org/10.1145/334714.334716</span>
-<a name="l00078"></a>00078 <span class="comment">// http://www.cs.berkeley.edu/~fateman/papers/divdiff.pdf</span>
-<a name="l00079"></a>00079 <span class="comment">//</span>
-<a name="l00080"></a>00080 <span class="comment">// General rules</span>
-<a name="l00081"></a>00081 <span class="comment">// h(x) = f(g(x)): Dh(x,y) = Df(g(x),g(y))*Dg(x,y)</span>
-<a name="l00082"></a>00082 <span class="comment">// h(x) = f(x)*g(x):</span>
-<a name="l00083"></a>00083 <span class="comment">// Dh(x,y) = Df(x,y)*g(x) + Dg(x,y)*f(y)</span>
-<a name="l00084"></a>00084 <span class="comment">// = Df(x,y)*g(y) + Dg(x,y)*f(x)</span>
-<a name="l00085"></a>00085 <span class="comment">// = Df(x,y)*(g(x)+g(y))/2 + Dg(x,y)*(f(x)+f(y))/2</span>
-<a name="l00086"></a>00086 <span class="comment">//</span>
-<a name="l00087"></a>00087 <span class="comment">// hyp(x) = sqrt(1+x^2): Dhyp(x,y) = (x+y)/(hyp(x)+hyp(y))</span>
-<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keyword">inline</span> real Dhyp(real x, real y, real hx, real hy) <span class="keywordflow">throw</span>()
-<a name="l00089"></a>00089 <span class="comment">// hx = hyp(x)</span>
-<a name="l00090"></a>00090 { <span class="keywordflow">return</span> (x + y) / (hx + hy); }
-<a name="l00091"></a>00091 <span class="comment">// sn(x) = x/sqrt(1+x^2): Dsn(x,y) = (x+y)/((sn(x)+sn(y))*(1+x^2)*(1+y^2))</span>
-<a name="l00092"></a>00092 <span class="keyword">static</span> <span class="keyword">inline</span> real Dsn(real x, real y, real sx, real sy) <span class="keywordflow">throw</span>() {
-<a name="l00093"></a>00093 <span class="comment">// sx = x/hyp(x)</span>
-<a name="l00094"></a>00094 real t = x * y;
-<a name="l00095"></a>00095 <span class="keywordflow">return</span> t > 0 ? (x + y) * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>( (sx * sy)/t ) / (sx + sy) :
-<a name="l00096"></a>00096 (x - y != 0 ? (sx - sy) / (x - y) : 1);
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 <span class="comment">// Dlog1p(x,y) = log1p((x-y)/(1+y)/(x-y)</span>
-<a name="l00099"></a>00099 <span class="keyword">static</span> <span class="keyword">inline</span> real Dlog1p(real x, real y) <span class="keywordflow">throw</span>() {
-<a name="l00100"></a>00100 real t = x - y; <span class="keywordflow">if</span> (t < 0) { t = -t; y = x; }
-<a name="l00101"></a>00101 <span class="keywordflow">return</span> t != 0 ? <a class="code" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">Math::log1p</a>(t / (1 + y)) / t : 1 / (1 + x);
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 <span class="comment">// Dexp(x,y) = exp((x+y)/2) * 2*sinh((x-y)/2)/(x-y)</span>
-<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keyword">inline</span> real Dexp(real x, real y) <span class="keywordflow">throw</span>() {
-<a name="l00105"></a>00105 real t = (x - y)/2;
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> (t != 0 ? sinh(t)/t : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)) * exp((x + y)/2);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 <span class="comment">// Dsinh(x,y) = 2*sinh((x-y)/2)/(x-y) * cosh((x+y)/2)</span>
-<a name="l00109"></a>00109 <span class="comment">// cosh((x+y)/2) = (c+sinh(x)*sinh(y)/c)/2</span>
-<a name="l00110"></a>00110 <span class="comment">// c=sqrt((1+cosh(x))*(1+cosh(y)))</span>
-<a name="l00111"></a>00111 <span class="comment">// cosh((x+y)/2) = sqrt( (sinh(x)*sinh(y) + cosh(x)*cosh(y) + 1)/2 )</span>
-<a name="l00112"></a>00112 <span class="keyword">static</span> <span class="keyword">inline</span> real Dsinh(real x, real y, real sx, real sy, real cx, real cy)
-<a name="l00113"></a>00113 <span class="comment">// sx = sinh(x), cx = cosh(x)</span>
-<a name="l00114"></a>00114 <span class="keywordflow">throw</span>() {
-<a name="l00115"></a>00115 <span class="comment">// real t = (x - y)/2, c = sqrt((1 + cx) * (1 + cy));</span>
-<a name="l00116"></a>00116 <span class="comment">// return (t != 0 ? sinh(t)/t : real(1)) * (c + sx * sy / c) /2;</span>
-<a name="l00117"></a>00117 real t = (x - y)/2;
-<a name="l00118"></a>00118 <span class="keywordflow">return</span> (t != 0 ? sinh(t)/t : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)) * sqrt((sx * sy + cx * cy + 1) /2);
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120 <span class="comment">// Dasinh(x,y) = asinh((x-y)*(x+y)/(x*sqrt(1+y^2)+y*sqrt(1+x^2)))/(x-y)</span>
-<a name="l00121"></a>00121 <span class="comment">// = asinh((x*sqrt(1+y^2)-y*sqrt(1+x^2)))/(x-y)</span>
-<a name="l00122"></a>00122 <span class="keyword">static</span> <span class="keyword">inline</span> real Dasinh(real x, real y, real hx, real hy) <span class="keywordflow">throw</span>() {
-<a name="l00123"></a>00123 <span class="comment">// hx = hyp(x)</span>
-<a name="l00124"></a>00124 real t = x - y;
-<a name="l00125"></a>00125 <span class="keywordflow">return</span> t != 0 ?
-<a name="l00126"></a>00126 <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(x*y > 0 ? t * (x+y) / (x*hy + y*hx) : x*hy - y*hx) / t :
-<a name="l00127"></a>00127 1/hx;
-<a name="l00128"></a>00128 }
-<a name="l00129"></a>00129 <span class="comment">// Deatanhe(x,y) = eatanhe((x-y)/(1-e^2*x*y))/(x-y)</span>
-<a name="l00130"></a>00130 <span class="keyword">inline</span> real Deatanhe(real x, real y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00131"></a>00131 real t = x - y, d = 1 - _e2 * x * y;
-<a name="l00132"></a>00132 <span class="keywordflow">return</span> t != 0 ? eatanhe(t / d) / t : _e2 / d;
-<a name="l00133"></a>00133 }
-<a name="l00134"></a>00134 <span class="keywordtype">void</span> Init(real sphi1, real cphi1, real sphi2, real cphi2, real k1) <span class="keywordflow">throw</span>();
-<a name="l00135"></a>00135 <span class="keyword">public</span>:
-<a name="l00136"></a>00136 <span class="comment"></span>
-<a name="l00137"></a>00137 <span class="comment"> /**</span>
-<a name="l00138"></a>00138 <span class="comment"> * Constructor with a single standard parallel.</span>
-<a name="l00139"></a>00139 <span class="comment"> *</span>
-<a name="l00140"></a>00140 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00141"></a>00141 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00142"></a>00142 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00143"></a>00143 <span class="comment"> * to 1/\e f.</span>
-<a name="l00144"></a>00144 <span class="comment"> * @param[in] stdlat standard parallel (degrees), the circle of tangency.</span>
-<a name="l00145"></a>00145 <span class="comment"> * @param[in] k0 scale on the standard parallel.</span>
-<a name="l00146"></a>00146 <span class="comment"> *</span>
-<a name="l00147"></a>00147 <span class="comment"> * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat</span>
-<a name="l00148"></a>00148 <span class="comment"> * is not in the range [-90, 90].</span>
-<a name="l00149"></a>00149 <span class="comment"> **********************************************************************/</span>
-<a name="l00150"></a>00150 <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(real a, real f, real stdlat, real k0);
-<a name="l00151"></a>00151 <span class="comment"></span>
-<a name="l00152"></a>00152 <span class="comment"> /**</span>
-<a name="l00153"></a>00153 <span class="comment"> * Constructor with two standard parallels.</span>
-<a name="l00154"></a>00154 <span class="comment"> *</span>
-<a name="l00155"></a>00155 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00156"></a>00156 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00157"></a>00157 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00158"></a>00158 <span class="comment"> * to 1/\e f.</span>
-<a name="l00159"></a>00159 <span class="comment"> * @param[in] stdlat1 first standard parallel (degrees).</span>
-<a name="l00160"></a>00160 <span class="comment"> * @param[in] stdlat2 second standard parallel (degrees).</span>
-<a name="l00161"></a>00161 <span class="comment"> * @param[in] k1 scale on the standard parallels.</span>
-<a name="l00162"></a>00162 <span class="comment"> *</span>
-<a name="l00163"></a>00163 <span class="comment"> * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat1</span>
-<a name="l00164"></a>00164 <span class="comment"> * or \e stdlat2 is not in the range [-90, 90]. In addition, if either \e</span>
-<a name="l00165"></a>00165 <span class="comment"> * stdlat1 or \e stdlat2 is a pole, then an exception is thrown if \e</span>
-<a name="l00166"></a>00166 <span class="comment"> * stdlat1 is not equal \e stdlat2.</span>
-<a name="l00167"></a>00167 <span class="comment"> **********************************************************************/</span>
-<a name="l00168"></a>00168 <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(real a, real f, real stdlat1, real stdlat2, real k1);
-<a name="l00169"></a>00169 <span class="comment"></span>
-<a name="l00170"></a>00170 <span class="comment"> /**</span>
-<a name="l00171"></a>00171 <span class="comment"> * Constructor with two standard parallels specified by sines and cosines.</span>
-<a name="l00172"></a>00172 <span class="comment"> *</span>
-<a name="l00173"></a>00173 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
-<a name="l00174"></a>00174 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00175"></a>00175 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00176"></a>00176 <span class="comment"> * to 1/\e f.</span>
-<a name="l00177"></a>00177 <span class="comment"> * @param[in] sinlat1 sine of first standard parallel.</span>
-<a name="l00178"></a>00178 <span class="comment"> * @param[in] coslat1 cosine of first standard parallel.</span>
-<a name="l00179"></a>00179 <span class="comment"> * @param[in] sinlat2 sine of second standard parallel.</span>
-<a name="l00180"></a>00180 <span class="comment"> * @param[in] coslat2 cosine of second standard parallel.</span>
-<a name="l00181"></a>00181 <span class="comment"> * @param[in] k1 scale on the standard parallels.</span>
-<a name="l00182"></a>00182 <span class="comment"> *</span>
-<a name="l00183"></a>00183 <span class="comment"> * This allows parallels close to the poles to be specified accurately.</span>
-<a name="l00184"></a>00184 <span class="comment"> * This routine computes the latitude of origin and the scale at this</span>
-<a name="l00185"></a>00185 <span class="comment"> * latitude. In the case where \e lat1 and \e lat2 are different, the</span>
-<a name="l00186"></a>00186 <span class="comment"> * errors in this routines are as follows: if \e dlat = abs(\e lat2 - \e</span>
-<a name="l00187"></a>00187 <span class="comment"> * lat1) <= 160<sup>o</sup> and max(abs(\e lat1), abs(\e lat2)) <= 90 -</span>
-<a name="l00188"></a>00188 <span class="comment"> * min(0.0002, 2.2e-6(180 - \e dlat), 6e-8 <i>dlat</i><sup>2</sup>) (in</span>
-<a name="l00189"></a>00189 <span class="comment"> * degrees), then the error in the latitude of origin is less than</span>
-<a name="l00190"></a>00190 <span class="comment"> * 4.5e-14<sup>o</sup> and the relative error in the scale is less than</span>
-<a name="l00191"></a>00191 <span class="comment"> * 7e-15.</span>
-<a name="l00192"></a>00192 <span class="comment"> **********************************************************************/</span>
-<a name="l00193"></a>00193 <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a>(real a, real f,
-<a name="l00194"></a>00194 real sinlat1, real coslat1,
-<a name="l00195"></a>00195 real sinlat2, real coslat2,
-<a name="l00196"></a>00196 real k1);
-<a name="l00197"></a>00197 <span class="comment"></span>
-<a name="l00198"></a>00198 <span class="comment"> /**</span>
-<a name="l00199"></a>00199 <span class="comment"> * Set the scale for the projection.</span>
-<a name="l00200"></a>00200 <span class="comment"> *</span>
-<a name="l00201"></a>00201 <span class="comment"> * @param[in] lat (degrees).</span>
-<a name="l00202"></a>00202 <span class="comment"> * @param[in] k scale at latitude \e lat (default 1).</span>
-<a name="l00203"></a>00203 <span class="comment"> *</span>
-<a name="l00204"></a>00204 <span class="comment"> * This allows a "latitude of true scale" to be specified. An exception is</span>
-<a name="l00205"></a>00205 <span class="comment"> * thrown if \e k is not positive or if \e stdlat is not in the range [-90,</span>
-<a name="l00206"></a>00206 <span class="comment"> * 90]</span>
-<a name="l00207"></a>00207 <span class="comment"> **********************************************************************/</span>
-<a name="l00208"></a>00208 <span class="keywordtype">void</span> SetScale(real lat, real k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
-<a name="l00209"></a>00209 <span class="comment"></span>
-<a name="l00210"></a>00210 <span class="comment"> /**</span>
-<a name="l00211"></a>00211 <span class="comment"> * Forward projection, from geographic to Lambert conformal conic.</span>
-<a name="l00212"></a>00212 <span class="comment"> *</span>
-<a name="l00213"></a>00213 <span class="comment"> * @param[in] lon0 central meridian longitude (degrees).</span>
-<a name="l00214"></a>00214 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00215"></a>00215 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00216"></a>00216 <span class="comment"> * @param[out] x easting of point (meters).</span>
-<a name="l00217"></a>00217 <span class="comment"> * @param[out] y northing of point (meters).</span>
-<a name="l00218"></a>00218 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00219"></a>00219 <span class="comment"> * @param[out] k scale of projection at point.</span>
-<a name="l00220"></a>00220 <span class="comment"> *</span>
-<a name="l00221"></a>00221 <span class="comment"> * The latitude origin is given by LambertConformalConic::LatitudeOrigin().</span>
-<a name="l00222"></a>00222 <span class="comment"> * No false easting or northing is added and \e lat should be in the range</span>
-<a name="l00223"></a>00223 <span class="comment"> * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360]. The</span>
-<a name="l00224"></a>00224 <span class="comment"> * error in the projection is less than about 10 nm (10 nanometers), true</span>
-<a name="l00225"></a>00225 <span class="comment"> * distance, and the errors in the meridian convergence and scale are</span>
-<a name="l00226"></a>00226 <span class="comment"> * consistent with this. The values of \e x and \e y returned for points</span>
-<a name="l00227"></a>00227 <span class="comment"> * which project to infinity (i.e., one or both of the poles) will be large</span>
-<a name="l00228"></a>00228 <span class="comment"> * but finite.</span>
-<a name="l00229"></a>00229 <span class="comment"> **********************************************************************/</span>
-<a name="l00230"></a>00230 <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00231"></a>00231 real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00232"></a>00232 <span class="comment"></span>
-<a name="l00233"></a>00233 <span class="comment"> /**</span>
-<a name="l00234"></a>00234 <span class="comment"> * Reverse projection, from Lambert conformal conic to geographic.</span>
-<a name="l00235"></a>00235 <span class="comment"> *</span>
-<a name="l00236"></a>00236 <span class="comment"> * @param[in] lon0 central meridian longitude (degrees).</span>
-<a name="l00237"></a>00237 <span class="comment"> * @param[in] x easting of point (meters).</span>
-<a name="l00238"></a>00238 <span class="comment"> * @param[in] y northing of point (meters).</span>
-<a name="l00239"></a>00239 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00240"></a>00240 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00241"></a>00241 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00242"></a>00242 <span class="comment"> * @param[out] k scale of projection at point.</span>
-<a name="l00243"></a>00243 <span class="comment"> *</span>
-<a name="l00244"></a>00244 <span class="comment"> * The latitude origin is given by LambertConformalConic::LatitudeOrigin().</span>
-<a name="l00245"></a>00245 <span class="comment"> * No false easting or northing is added. \e lon0 should be in the range</span>
-<a name="l00246"></a>00246 <span class="comment"> * [-180, 360]. The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00247"></a>00247 <span class="comment"> * The error in the projection is less than about 10 nm (10 nanometers),</span>
-<a name="l00248"></a>00248 <span class="comment"> * true distance, and the errors in the meridian convergence and scale are</span>
-<a name="l00249"></a>00249 <span class="comment"> * consistent with this.</span>
-<a name="l00250"></a>00250 <span class="comment"> **********************************************************************/</span>
-<a name="l00251"></a>00251 <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00252"></a>00252 real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00253"></a>00253 <span class="comment"></span>
-<a name="l00254"></a>00254 <span class="comment"> /**</span>
-<a name="l00255"></a>00255 <span class="comment"> * LambertConformalConic::Forward without returning the convergence and</span>
-<a name="l00256"></a>00256 <span class="comment"> * scale.</span>
-<a name="l00257"></a>00257 <span class="comment"> **********************************************************************/</span>
-<a name="l00258"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a14a3757d85e81488afe476f7ceb8a720">00258</a> <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00259"></a>00259 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00260"></a>00260 real gamma, k;
-<a name="l00261"></a>00261 Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00262"></a>00262 }
-<a name="l00263"></a>00263 <span class="comment"></span>
-<a name="l00264"></a>00264 <span class="comment"> /**</span>
-<a name="l00265"></a>00265 <span class="comment"> * LambertConformalConic::Reverse without returning the convergence and</span>
-<a name="l00266"></a>00266 <span class="comment"> * scale.</span>
-<a name="l00267"></a>00267 <span class="comment"> **********************************************************************/</span>
-<a name="l00268"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a1bffe1259895569e6834a4b1df9b22ab">00268</a> <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00269"></a>00269 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00270"></a>00270 real gamma, k;
-<a name="l00271"></a>00271 Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00272"></a>00272 }
-<a name="l00273"></a>00273 <span class="comment"></span>
-<a name="l00274"></a>00274 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00275"></a>00275 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00276"></a>00276 <span class="comment"> ///@{</span>
-<a name="l00277"></a>00277 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00278"></a>00278 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00279"></a>00279 <span class="comment"> * the value used in the constructor.</span>
-<a name="l00280"></a>00280 <span class="comment"> **********************************************************************/</span>
-<a name="l00281"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">00281</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00282"></a>00282 <span class="comment"></span>
-<a name="l00283"></a>00283 <span class="comment"> /**</span>
-<a name="l00284"></a>00284 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the</span>
-<a name="l00285"></a>00285 <span class="comment"> * value used in the constructor.</span>
-<a name="l00286"></a>00286 <span class="comment"> **********************************************************************/</span>
-<a name="l00287"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">00287</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00288"></a>00288 <span class="comment"></span>
-<a name="l00289"></a>00289 <span class="comment"> /**</span>
-<a name="l00290"></a>00290 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00291"></a>00291 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00292"></a>00292 <span class="comment"> **********************************************************************/</span>
-<a name="l00293"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">00293</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00294"></a>00294 <span class="comment"></span>
-<a name="l00295"></a>00295 <span class="comment"> /**</span>
-<a name="l00296"></a>00296 <span class="comment"> * @return latitude of the origin for the projection (degrees).</span>
-<a name="l00297"></a>00297 <span class="comment"> *</span>
-<a name="l00298"></a>00298 <span class="comment"> * This is the latitude of minimum scale and equals the \e stdlat in the</span>
-<a name="l00299"></a>00299 <span class="comment"> * 1-parallel constructor and lies between \e stdlat1 and \e stdlat2 in the</span>
-<a name="l00300"></a>00300 <span class="comment"> * 2-parallel constructors.</span>
-<a name="l00301"></a>00301 <span class="comment"> **********************************************************************/</span>
-<a name="l00302"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">00302</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">OriginLatitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
-<a name="l00303"></a>00303 <span class="comment"></span>
-<a name="l00304"></a>00304 <span class="comment"> /**</span>
-<a name="l00305"></a>00305 <span class="comment"> * @return central scale for the projection. This is the scale on the</span>
-<a name="l00306"></a>00306 <span class="comment"> * latitude of origin.</span>
+<a name="l00054"></a>00054 <span class="comment"> *</span>
+<a name="l00055"></a>00055 <span class="comment"> * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility</span>
+<a name="l00056"></a>00056 <span class="comment"> * providing access to the functionality of LambertConformalConic and</span>
+<a name="l00057"></a>00057 <span class="comment"> * AlbersEqualArea.</span>
+<a name="l00058"></a>00058 <span class="comment"> **********************************************************************/</span>
+<a name="l00059"></a>00059 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> LambertConformalConic {
+<a name="l00060"></a>00060 <span class="keyword">private</span>:
+<a name="l00061"></a>00061 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00062"></a>00062 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _fm, _e2, _e, _e2m;
+<a name="l00063"></a>00063 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _sign, _n, _nc, _t0nm1, _scale, _lat0, _k0;
+<a name="l00064"></a>00064 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _scbet0, _tchi0, _scchi0, _psi0, _nrho0;
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
+<a name="l00066"></a>00066 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> epsx_;
+<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ahypover_;
+<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
+<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hyp(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp. [...]
+<a name="l00071"></a>00071 <span class="comment">// e * atanh(e * x) = log( ((1 + e*x)/(1 - e*x))^(e/2) ) if f >= 0</span>
+<a name="l00072"></a>00072 <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x) if f < 0</span>
+<a name="l00073"></a>00073 <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00074"></a>00074 <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 <span class="comment">// Divided differences</span>
+<a name="l00077"></a>00077 <span class="comment">// Definition: Df(x,y) = (f(x)-f(y))/(x-y)</span>
+<a name="l00078"></a>00078 <span class="comment">// See: W. M. Kahan and R. J. Fateman,</span>
+<a name="l00079"></a>00079 <span class="comment">// Symbolic computation of divided differences,</span>
+<a name="l00080"></a>00080 <span class="comment">// SIGSAM Bull. 33(3), 7-28 (1999)</span>
+<a name="l00081"></a>00081 <span class="comment">// http://dx.doi.org/10.1145/334714.334716</span>
+<a name="l00082"></a>00082 <span class="comment">// http://www.cs.berkeley.edu/~fateman/papers/divdiff.pdf</span>
+<a name="l00083"></a>00083 <span class="comment">//</span>
+<a name="l00084"></a>00084 <span class="comment">// General rules</span>
+<a name="l00085"></a>00085 <span class="comment">// h(x) = f(g(x)): Dh(x,y) = Df(g(x),g(y))*Dg(x,y)</span>
+<a name="l00086"></a>00086 <span class="comment">// h(x) = f(x)*g(x):</span>
+<a name="l00087"></a>00087 <span class="comment">// Dh(x,y) = Df(x,y)*g(x) + Dg(x,y)*f(y)</span>
+<a name="l00088"></a>00088 <span class="comment">// = Df(x,y)*g(y) + Dg(x,y)*f(x)</span>
+<a name="l00089"></a>00089 <span class="comment">// = Df(x,y)*(g(x)+g(y))/2 + Dg(x,y)*(f(x)+f(y))/2</span>
+<a name="l00090"></a>00090 <span class="comment">//</span>
+<a name="l00091"></a>00091 <span class="comment">// hyp(x) = sqrt(1+x^2): Dhyp(x,y) = (x+y)/(hyp(x)+hyp(y))</span>
+<a name="l00092"></a>00092 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dhyp(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hx, <a class="code" href="Geod_8cpp.html#a5caf95d46b18 [...]
+<a name="l00093"></a>00093 <span class="comment">// hx = hyp(x)</span>
+<a name="l00094"></a>00094 { <span class="keywordflow">return</span> (x + y) / (hx + hy); }
+<a name="l00095"></a>00095 <span class="comment">// sn(x) = x/sqrt(1+x^2): Dsn(x,y) = (x+y)/((sn(x)+sn(y))*(1+x^2)*(1+y^2))</span>
+<a name="l00096"></a>00096 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dsn(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184 [...]
+<a name="l00097"></a>00097 <span class="comment">// sx = x/hyp(x)</span>
+<a name="l00098"></a>00098 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x * y;
+<a name="l00099"></a>00099 <span class="keywordflow">return</span> t > 0 ? (x + y) * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>( (sx * sy)/t ) / (sx + sy) :
+<a name="l00100"></a>00100 (x - y != 0 ? (sx - sy) / (x - y) : 1);
+<a name="l00101"></a>00101 }
+<a name="l00102"></a>00102 <span class="comment">// Dlog1p(x,y) = log1p((x-y)/(1+y)/(x-y)</span>
+<a name="l00103"></a>00103 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dlog1p(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
+<a name="l00104"></a>00104 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x - y; <span class="keywordflow">if</span> (t < 0) { t = -t; y = x; }
+<a name="l00105"></a>00105 <span class="keywordflow">return</span> t != 0 ? <a class="code" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">Math::log1p</a>(t / (1 + y)) / t : 1 / (1 + x);
+<a name="l00106"></a>00106 }
+<a name="l00107"></a>00107 <span class="comment">// Dexp(x,y) = exp((x+y)/2) * 2*sinh((x-y)/2)/(x-y)</span>
+<a name="l00108"></a>00108 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dexp(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keywordflow">throw</span>() {
+<a name="l00109"></a>00109 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = (x - y)/2;
+<a name="l00110"></a>00110 <span class="keywordflow">return</span> (t != 0 ? sinh(t)/t : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)) * exp((x + y)/2);
+<a name="l00111"></a>00111 }
+<a name="l00112"></a>00112 <span class="comment">// Dsinh(x,y) = 2*sinh((x-y)/2)/(x-y) * cosh((x+y)/2)</span>
+<a name="l00113"></a>00113 <span class="comment">// cosh((x+y)/2) = (c+sinh(x)*sinh(y)/c)/2</span>
+<a name="l00114"></a>00114 <span class="comment">// c=sqrt((1+cosh(x))*(1+cosh(y)))</span>
+<a name="l00115"></a>00115 <span class="comment">// cosh((x+y)/2) = sqrt( (sinh(x)*sinh(y) + cosh(x)*cosh(y) + 1)/2 )</span>
+<a name="l00116"></a>00116 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dsinh(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sx, <a class="code" href="Geod_8cpp.html#a5caf95d46b1 [...]
+<a name="l00117"></a>00117 <span class="comment">// sx = sinh(x), cx = cosh(x)</span>
+<a name="l00118"></a>00118 <span class="keywordflow">throw</span>() {
+<a name="l00119"></a>00119 <span class="comment">// real t = (x - y)/2, c = sqrt((1 + cx) * (1 + cy));</span>
+<a name="l00120"></a>00120 <span class="comment">// return (t != 0 ? sinh(t)/t : real(1)) * (c + sx * sy / c) /2;</span>
+<a name="l00121"></a>00121 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = (x - y)/2;
+<a name="l00122"></a>00122 <span class="keywordflow">return</span> (t != 0 ? sinh(t)/t : <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)) * sqrt((sx * sy + cx * cy + 1) /2);
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124 <span class="comment">// Dasinh(x,y) = asinh((x-y)*(x+y)/(x*sqrt(1+y^2)+y*sqrt(1+x^2)))/(x-y)</span>
+<a name="l00125"></a>00125 <span class="comment">// = asinh((x*sqrt(1+y^2)-y*sqrt(1+x^2)))/(x-y)</span>
+<a name="l00126"></a>00126 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Dasinh(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hx, <a class="code" href="Geod_8cpp.html#a5caf95d46b [...]
+<a name="l00127"></a>00127 <span class="comment">// hx = hyp(x)</span>
+<a name="l00128"></a>00128 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x - y;
+<a name="l00129"></a>00129 <span class="keywordflow">return</span> t != 0 ?
+<a name="l00130"></a>00130 <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(x*y > 0 ? t * (x+y) / (x*hy + y*hx) : x*hy - y*hx) / t :
+<a name="l00131"></a>00131 1/hx;
+<a name="l00132"></a>00132 }
+<a name="l00133"></a>00133 <span class="comment">// Deatanhe(x,y) = eatanhe((x-y)/(1-e^2*x*y))/(x-y)</span>
+<a name="l00134"></a>00134 <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Deatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00135"></a>00135 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = x - y, d = 1 - _e2 * x * y;
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> t != 0 ? eatanhe(t / d) / t : _e2 / d;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 <span class="keywordtype">void</span> Init(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781 [...]
+<a name="l00139"></a>00139 <span class="keyword">public</span>:
+<a name="l00140"></a>00140 <span class="comment"></span>
+<a name="l00141"></a>00141 <span class="comment"> /**</span>
+<a name="l00142"></a>00142 <span class="comment"> * Constructor with a single standard parallel.</span>
+<a name="l00143"></a>00143 <span class="comment"> *</span>
+<a name="l00144"></a>00144 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00145"></a>00145 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00146"></a>00146 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00147"></a>00147 <span class="comment"> * to 1/\e f.</span>
+<a name="l00148"></a>00148 <span class="comment"> * @param[in] stdlat standard parallel (degrees), the circle of tangency.</span>
+<a name="l00149"></a>00149 <span class="comment"> * @param[in] k0 scale on the standard parallel.</span>
+<a name="l00150"></a>00150 <span class="comment"> *</span>
+<a name="l00151"></a>00151 <span class="comment"> * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat</span>
+<a name="l00152"></a>00152 <span class="comment"> * is not in the range [-90, 90].</span>
+<a name="l00153"></a>00153 <span class="comment"> **********************************************************************/</span>
+<a name="l00154"></a>00154 LambertConformalConic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0);
+<a name="l00155"></a>00155 <span class="comment"></span>
+<a name="l00156"></a>00156 <span class="comment"> /**</span>
+<a name="l00157"></a>00157 <span class="comment"> * Constructor with two standard parallels.</span>
+<a name="l00158"></a>00158 <span class="comment"> *</span>
+<a name="l00159"></a>00159 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00160"></a>00160 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00161"></a>00161 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00162"></a>00162 <span class="comment"> * to 1/\e f.</span>
+<a name="l00163"></a>00163 <span class="comment"> * @param[in] stdlat1 first standard parallel (degrees).</span>
+<a name="l00164"></a>00164 <span class="comment"> * @param[in] stdlat2 second standard parallel (degrees).</span>
+<a name="l00165"></a>00165 <span class="comment"> * @param[in] k1 scale on the standard parallels.</span>
+<a name="l00166"></a>00166 <span class="comment"> *</span>
+<a name="l00167"></a>00167 <span class="comment"> * An exception is thrown if \e a or \e k0 is not positive or if \e stdlat1</span>
+<a name="l00168"></a>00168 <span class="comment"> * or \e stdlat2 is not in the range [-90, 90]. In addition, if either \e</span>
+<a name="l00169"></a>00169 <span class="comment"> * stdlat1 or \e stdlat2 is a pole, then an exception is thrown if \e</span>
+<a name="l00170"></a>00170 <span class="comment"> * stdlat1 is not equal \e stdlat2.</span>
+<a name="l00171"></a>00171 <span class="comment"> **********************************************************************/</span>
+<a name="l00172"></a>00172 LambertConformalConic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stdlat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1);
+<a name="l00173"></a>00173 <span class="comment"></span>
+<a name="l00174"></a>00174 <span class="comment"> /**</span>
+<a name="l00175"></a>00175 <span class="comment"> * Constructor with two standard parallels specified by sines and cosines.</span>
+<a name="l00176"></a>00176 <span class="comment"> *</span>
+<a name="l00177"></a>00177 <span class="comment"> * @param[in] a equatorial radius of ellipsoid (meters).</span>
+<a name="l00178"></a>00178 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00179"></a>00179 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00180"></a>00180 <span class="comment"> * to 1/\e f.</span>
+<a name="l00181"></a>00181 <span class="comment"> * @param[in] sinlat1 sine of first standard parallel.</span>
+<a name="l00182"></a>00182 <span class="comment"> * @param[in] coslat1 cosine of first standard parallel.</span>
+<a name="l00183"></a>00183 <span class="comment"> * @param[in] sinlat2 sine of second standard parallel.</span>
+<a name="l00184"></a>00184 <span class="comment"> * @param[in] coslat2 cosine of second standard parallel.</span>
+<a name="l00185"></a>00185 <span class="comment"> * @param[in] k1 scale on the standard parallels.</span>
+<a name="l00186"></a>00186 <span class="comment"> *</span>
+<a name="l00187"></a>00187 <span class="comment"> * This allows parallels close to the poles to be specified accurately.</span>
+<a name="l00188"></a>00188 <span class="comment"> * This routine computes the latitude of origin and the scale at this</span>
+<a name="l00189"></a>00189 <span class="comment"> * latitude. In the case where \e lat1 and \e lat2 are different, the</span>
+<a name="l00190"></a>00190 <span class="comment"> * errors in this routines are as follows: if \e dlat = abs(\e lat2 - \e</span>
+<a name="l00191"></a>00191 <span class="comment"> * lat1) <= 160<sup>o</sup> and max(abs(\e lat1), abs(\e lat2)) <= 90 -</span>
+<a name="l00192"></a>00192 <span class="comment"> * min(0.0002, 2.2e-6(180 - \e dlat), 6e-8 <i>dlat</i><sup>2</sup>) (in</span>
+<a name="l00193"></a>00193 <span class="comment"> * degrees), then the error in the latitude of origin is less than</span>
+<a name="l00194"></a>00194 <span class="comment"> * 4.5e-14<sup>o</sup> and the relative error in the scale is less than</span>
+<a name="l00195"></a>00195 <span class="comment"> * 7e-15.</span>
+<a name="l00196"></a>00196 <span class="comment"> **********************************************************************/</span>
+<a name="l00197"></a>00197 LambertConformalConic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f,
+<a name="l00198"></a>00198 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinlat1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> coslat1,
+<a name="l00199"></a>00199 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sinlat2, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> coslat2,
+<a name="l00200"></a>00200 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k1);
+<a name="l00201"></a>00201 <span class="comment"></span>
+<a name="l00202"></a>00202 <span class="comment"> /**</span>
+<a name="l00203"></a>00203 <span class="comment"> * Set the scale for the projection.</span>
+<a name="l00204"></a>00204 <span class="comment"> *</span>
+<a name="l00205"></a>00205 <span class="comment"> * @param[in] lat (degrees).</span>
+<a name="l00206"></a>00206 <span class="comment"> * @param[in] k scale at latitude \e lat (default 1).</span>
+<a name="l00207"></a>00207 <span class="comment"> *</span>
+<a name="l00208"></a>00208 <span class="comment"> * This allows a "latitude of true scale" to be specified. An exception is</span>
+<a name="l00209"></a>00209 <span class="comment"> * thrown if \e k is not positive or if \e stdlat is not in the range [-90,</span>
+<a name="l00210"></a>00210 <span class="comment"> * 90]</span>
+<a name="l00211"></a>00211 <span class="comment"> **********************************************************************/</span>
+<a name="l00212"></a>00212 <span class="keywordtype">void</span> SetScale(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
+<a name="l00213"></a>00213 <span class="comment"></span>
+<a name="l00214"></a>00214 <span class="comment"> /**</span>
+<a name="l00215"></a>00215 <span class="comment"> * Forward projection, from geographic to Lambert conformal conic.</span>
+<a name="l00216"></a>00216 <span class="comment"> *</span>
+<a name="l00217"></a>00217 <span class="comment"> * @param[in] lon0 central meridian longitude (degrees).</span>
+<a name="l00218"></a>00218 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00219"></a>00219 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00220"></a>00220 <span class="comment"> * @param[out] x easting of point (meters).</span>
+<a name="l00221"></a>00221 <span class="comment"> * @param[out] y northing of point (meters).</span>
+<a name="l00222"></a>00222 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00223"></a>00223 <span class="comment"> * @param[out] k scale of projection at point.</span>
+<a name="l00224"></a>00224 <span class="comment"> *</span>
+<a name="l00225"></a>00225 <span class="comment"> * The latitude origin is given by LambertConformalConic::LatitudeOrigin().</span>
+<a name="l00226"></a>00226 <span class="comment"> * No false easting or northing is added and \e lat should be in the range</span>
+<a name="l00227"></a>00227 <span class="comment"> * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360]. The</span>
+<a name="l00228"></a>00228 <span class="comment"> * error in the projection is less than about 10 nm (10 nanometers), true</span>
+<a name="l00229"></a>00229 <span class="comment"> * distance, and the errors in the meridian convergence and scale are</span>
+<a name="l00230"></a>00230 <span class="comment"> * consistent with this. The values of \e x and \e y returned for points</span>
+<a name="l00231"></a>00231 <span class="comment"> * which project to infinity (i.e., one or both of the poles) will be large</span>
+<a name="l00232"></a>00232 <span class="comment"> * but finite.</span>
+<a name="l00233"></a>00233 <span class="comment"> **********************************************************************/</span>
+<a name="l00234"></a>00234 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00235"></a>00235 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00236"></a>00236 <span class="comment"></span>
+<a name="l00237"></a>00237 <span class="comment"> /**</span>
+<a name="l00238"></a>00238 <span class="comment"> * Reverse projection, from Lambert conformal conic to geographic.</span>
+<a name="l00239"></a>00239 <span class="comment"> *</span>
+<a name="l00240"></a>00240 <span class="comment"> * @param[in] lon0 central meridian longitude (degrees).</span>
+<a name="l00241"></a>00241 <span class="comment"> * @param[in] x easting of point (meters).</span>
+<a name="l00242"></a>00242 <span class="comment"> * @param[in] y northing of point (meters).</span>
+<a name="l00243"></a>00243 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00244"></a>00244 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00245"></a>00245 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00246"></a>00246 <span class="comment"> * @param[out] k scale of projection at point.</span>
+<a name="l00247"></a>00247 <span class="comment"> *</span>
+<a name="l00248"></a>00248 <span class="comment"> * The latitude origin is given by LambertConformalConic::LatitudeOrigin().</span>
+<a name="l00249"></a>00249 <span class="comment"> * No false easting or northing is added. \e lon0 should be in the range</span>
+<a name="l00250"></a>00250 <span class="comment"> * [-180, 360]. The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00251"></a>00251 <span class="comment"> * The error in the projection is less than about 10 nm (10 nanometers),</span>
+<a name="l00252"></a>00252 <span class="comment"> * true distance, and the errors in the meridian convergence and scale are</span>
+<a name="l00253"></a>00253 <span class="comment"> * consistent with this.</span>
+<a name="l00254"></a>00254 <span class="comment"> **********************************************************************/</span>
+<a name="l00255"></a>00255 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00256"></a>00256 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00257"></a>00257 <span class="comment"></span>
+<a name="l00258"></a>00258 <span class="comment"> /**</span>
+<a name="l00259"></a>00259 <span class="comment"> * LambertConformalConic::Forward without returning the convergence and</span>
+<a name="l00260"></a>00260 <span class="comment"> * scale.</span>
+<a name="l00261"></a>00261 <span class="comment"> **********************************************************************/</span>
+<a name="l00262"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a14a3757d85e81488afe476f7ceb8a720">00262</a> <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
+<a name="l00263"></a>00263 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00264"></a>00264 real gamma, k;
+<a name="l00265"></a>00265 Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00266"></a>00266 }
+<a name="l00267"></a>00267 <span class="comment"></span>
+<a name="l00268"></a>00268 <span class="comment"> /**</span>
+<a name="l00269"></a>00269 <span class="comment"> * LambertConformalConic::Reverse without returning the convergence and</span>
+<a name="l00270"></a>00270 <span class="comment"> * scale.</span>
+<a name="l00271"></a>00271 <span class="comment"> **********************************************************************/</span>
+<a name="l00272"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a1bffe1259895569e6834a4b1df9b22ab">00272</a> <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
+<a name="l00273"></a>00273 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00274"></a>00274 real gamma, k;
+<a name="l00275"></a>00275 Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00276"></a>00276 }
+<a name="l00277"></a>00277 <span class="comment"></span>
+<a name="l00278"></a>00278 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00279"></a>00279 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00280"></a>00280 <span class="comment"> ///@{</span>
+<a name="l00281"></a>00281 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00282"></a>00282 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00283"></a>00283 <span class="comment"> * the value used in the constructor.</span>
+<a name="l00284"></a>00284 <span class="comment"> **********************************************************************/</span>
+<a name="l00285"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">00285</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00286"></a>00286 <span class="comment"></span>
+<a name="l00287"></a>00287 <span class="comment"> /**</span>
+<a name="l00288"></a>00288 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the</span>
+<a name="l00289"></a>00289 <span class="comment"> * value used in the constructor.</span>
+<a name="l00290"></a>00290 <span class="comment"> **********************************************************************/</span>
+<a name="l00291"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">00291</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00292"></a>00292 <span class="comment"></span>
+<a name="l00293"></a>00293 <span class="comment"> /// \cond SKIP</span>
+<a name="l00294"></a>00294 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00295"></a>00295 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00296"></a>00296 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00297"></a>00297 <span class="comment"> **********************************************************************/</span>
+<a name="l00298"></a>00298 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00299"></a>00299 <span class="comment"> /// \endcond</span>
+<a name="l00300"></a>00300 <span class="comment"></span><span class="comment"></span>
+<a name="l00301"></a>00301 <span class="comment"> /**</span>
+<a name="l00302"></a>00302 <span class="comment"> * @return latitude of the origin for the projection (degrees).</span>
+<a name="l00303"></a>00303 <span class="comment"> *</span>
+<a name="l00304"></a>00304 <span class="comment"> * This is the latitude of minimum scale and equals the \e stdlat in the</span>
+<a name="l00305"></a>00305 <span class="comment"> * 1-parallel constructor and lies between \e stdlat1 and \e stdlat2 in the</span>
+<a name="l00306"></a>00306 <span class="comment"> * 2-parallel constructors.</span>
<a name="l00307"></a>00307 <span class="comment"> **********************************************************************/</span>
-<a name="l00308"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">00308</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00309"></a>00309 <span class="comment"> ///@}</span>
-<a name="l00310"></a>00310 <span class="comment"></span><span class="comment"></span>
-<a name="l00311"></a>00311 <span class="comment"> /**</span>
-<a name="l00312"></a>00312 <span class="comment"> * A global instantiation of LambertConformalConic with the WGS84</span>
-<a name="l00313"></a>00313 <span class="comment"> * ellipsoid, \e stdlat = 0, and \e k0 = 1. This degenerates to the</span>
-<a name="l00314"></a>00314 <span class="comment"> * Mercator projection.</span>
-<a name="l00315"></a>00315 <span class="comment"> **********************************************************************/</span>
-<a name="l00316"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7fbb6973b77593245db52c9759740f9a">00316</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7fbb6973b77593245db52c9759740f9a">Mercator</a>;
-<a name="l00317"></a>00317 };
-<a name="l00318"></a>00318
-<a name="l00319"></a>00319 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00320"></a>00320
-<a name="l00321"></a>00321 <span class="preprocessor">#endif // GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</span>
+<a name="l00308"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">00308</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">OriginLatitude</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
+<a name="l00309"></a>00309 <span class="comment"></span>
+<a name="l00310"></a>00310 <span class="comment"> /**</span>
+<a name="l00311"></a>00311 <span class="comment"> * @return central scale for the projection. This is the scale on the</span>
+<a name="l00312"></a>00312 <span class="comment"> * latitude of origin.</span>
+<a name="l00313"></a>00313 <span class="comment"> **********************************************************************/</span>
+<a name="l00314"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">00314</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span cla [...]
+<a name="l00315"></a>00315 <span class="comment"> ///@}</span>
+<a name="l00316"></a>00316 <span class="comment"></span><span class="comment"></span>
+<a name="l00317"></a>00317 <span class="comment"> /**</span>
+<a name="l00318"></a>00318 <span class="comment"> * A global instantiation of LambertConformalConic with the WGS84</span>
+<a name="l00319"></a>00319 <span class="comment"> * ellipsoid, \e stdlat = 0, and \e k0 = 1. This degenerates to the</span>
+<a name="l00320"></a>00320 <span class="comment"> * Mercator projection.</span>
+<a name="l00321"></a>00321 <span class="comment"> **********************************************************************/</span>
+<a name="l00322"></a><a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7fbb6973b77593245db52c9759740f9a">00322</a> <span class="keyword">static</span> <span class="keyword">const</span> LambertConformalConic <a class="code" href="classGeographicLib_1_1LambertConformalConic.html#a7fbb6973b77593245db52c9759740f9a">Mercator</a>;
+<a name="l00323"></a>00323 };
+<a name="l00324"></a>00324
+<a name="l00325"></a>00325 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00326"></a>00326
+<a name="l00327"></a>00327 <span class="preprocessor">#endif // GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/LocalCartesian_8cpp.html b/doc/html/LocalCartesian_8cpp.html
index 5ef0e06..781fca6 100644
--- a/doc/html/LocalCartesian_8cpp.html
+++ b/doc/html/LocalCartesian_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: LocalCartesian.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8cpp.html#a0917de4aed4abb985b1e2830077aea45">GEOGRAPHICLIB_LOCALCARTESIAN_CPP</a> "$Id: 644a78ef382ef67447a8ef071f1dabeff89f460d $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8cpp.html#a0917de4aed4abb985b1e2830077aea45">GEOGRAPHICLIB_LOCALCARTESIAN_CPP</a> "$Id: 4d15764c089e07855bf6db300271e18f4fa89624 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="LocalCartesian_8cpp_source.html">LocalCartesian.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_LOCALCARTESIAN_CPP "$Id: 644a78ef382ef67447a8ef071f1dabeff89f460d $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_LOCALCARTESIAN_CPP "$Id: 4d15764c089e07855bf6db300271e18f4fa89624 $"</td>
</tr>
</table>
</div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/LocalCartesian_8cpp_source.html b/doc/html/LocalCartesian_8cpp_source.html
index 52bd11a..4d58616 100644
--- a/doc/html/LocalCartesian_8cpp_source.html
+++ b/doc/html/LocalCartesian_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: LocalCartesian.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
<a name="l00002"></a>00002 <span class="comment"> * \file LocalCartesian.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::LocalCartesian class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="LocalCartesian_8hpp.html" title="Header for GeographicLib::LocalCartesian class.">GeographicLib/LocalCartesian.hpp</a>></span>
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="LocalCartesian_8cpp.html#a0917de4aed4abb985b1e2830077aea45">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_LOCALCARTESIAN_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 644a78ef382ef67447a8ef071f1dabeff89f460d $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 4d15764c089e07855bf6db300271e18f4fa89624 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="LocalCartesian_8cpp.html#a0917de4aed4abb985b1e2830077aea45">GEOGRAPHICLIB_LOCALCARTESIAN_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="LocalCartesian_8hpp.html#a628d4dcde137e8249cb7fdbcaab30acd">GEOGRAPHICLIB_LOCALCARTESIAN_HPP</a>)
@@ -74,10 +89,10 @@
<a name="l00025"></a>00025 _h0 = h0;
<a name="l00026"></a>00026 _earth.Forward(_lat0, _lon0, _h0, _x0, _y0, _z0);
<a name="l00027"></a>00027 real
-<a name="l00028"></a>00028 phi = lat0 * Math::degree<real>(),
+<a name="l00028"></a>00028 phi = lat0 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00029"></a>00029 sphi = sin(phi),
<a name="l00030"></a>00030 cphi = abs(_lat0) == 90 ? 0 : cos(phi),
-<a name="l00031"></a>00031 lam = lon0 * Math::degree<real>(),
+<a name="l00031"></a>00031 lam = lon0 * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00032"></a>00032 slam = _lon0 == -180 ? 0 : sin(lam),
<a name="l00033"></a>00033 clam = abs(_lon0) == 90 ? 0 : cos(lam);
<a name="l00034"></a>00034 _earth.Rotation(sphi, cphi, slam, clam, _r);
@@ -120,8 +135,13 @@
<a name="l00071"></a>00071 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/LocalCartesian_8hpp.html b/doc/html/LocalCartesian_8hpp.html
index 3ac5e45..721998b 100644
--- a/doc/html/LocalCartesian_8hpp.html
+++ b/doc/html/LocalCartesian_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: LocalCartesian.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8hpp.html#a628d4dcde137e8249cb7fdbcaab30acd">GEOGRAPHICLIB_LOCALCARTESIAN_HPP</a> "$Id: f4bfc3dad6836b6107cf78e695349a9e9fa5530d $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8hpp.html#a628d4dcde137e8249cb7fdbcaab30acd">GEOGRAPHICLIB_LOCALCARTESIAN_HPP</a> "$Id: 133014a30695adf3bdea9f4b52613fab458c505a $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_LOCALCARTESIAN_HPP "$Id: f4bfc3dad6836b6107cf78e695349a9e9fa5530d $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_LOCALCARTESIAN_HPP "$Id: 133014a30695adf3bdea9f4b52613fab458c505a $"</td>
</tr>
</table>
</div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/LocalCartesian_8hpp_source.html b/doc/html/LocalCartesian_8hpp_source.html
index d491fb4..cd636b1 100644
--- a/doc/html/LocalCartesian_8hpp_source.html
+++ b/doc/html/LocalCartesian_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: LocalCartesian.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file LocalCartesian.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::LocalCartesian class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_LOCALCARTESIAN_HPP)</span>
<a name="l00011"></a><a class="code" href="LocalCartesian_8hpp.html#a628d4dcde137e8249cb7fdbcaab30acd">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_LOCALCARTESIAN_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: f4bfc3dad6836b6107cf78e695349a9e9fa5530d $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 133014a30695adf3bdea9f4b52613fab458c505a $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geocentric_8hpp.html" title="Header for GeographicLib::Geocentric class.">GeographicLib/Geocentric.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -81,213 +96,223 @@
<a name="l00031"></a>00031 <span class="comment"> *</span>
<a name="l00032"></a>00032 <span class="comment"> * Example of use:</span>
<a name="l00033"></a>00033 <span class="comment"> * \include example-LocalCartesian.cpp</span>
-<a name="l00034"></a>00034 <span class="comment"> **********************************************************************/</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html">00036</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a> {
-<a name="l00037"></a>00037 <span class="keyword">private</span>:
-<a name="l00038"></a>00038 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00039"></a>00039 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim_ = 3;
-<a name="l00040"></a>00040 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim2_ = dim_ * dim_;
-<a name="l00041"></a>00041 <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> _earth;
-<a name="l00042"></a>00042 real _lat0, _lon0, _h0;
-<a name="l00043"></a>00043 real _x0, _y0, _z0, _r[dim2_];
-<a name="l00044"></a>00044 <span class="keywordtype">void</span> IntForward(real lat, real lon, real h, real& x, real& y, real& z,
-<a name="l00045"></a>00045 real M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00046"></a>00046 <span class="keywordtype">void</span> IntReverse(real x, real y, real z, real& lat, real& lon, real& h,
-<a name="l00047"></a>00047 real M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00048"></a>00048 <span class="keywordtype">void</span> MatrixMultiply(real M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00049"></a>00049 <span class="keyword">public</span>:
-<a name="l00050"></a>00050 <span class="comment"></span>
-<a name="l00051"></a>00051 <span class="comment"> /**</span>
-<a name="l00052"></a>00052 <span class="comment"> * Constructor setting the origin.</span>
-<a name="l00053"></a>00053 <span class="comment"> *</span>
-<a name="l00054"></a>00054 <span class="comment"> * @param[in] lat0 latitude at origin (degrees).</span>
-<a name="l00055"></a>00055 <span class="comment"> * @param[in] lon0 longitude at origin (degrees).</span>
-<a name="l00056"></a>00056 <span class="comment"> * @param[in] h0 height above ellipsoid at origin (meters); default 0.</span>
-<a name="l00057"></a>00057 <span class="comment"> * @param[in] earth Geocentric object for the transformation; default</span>
-<a name="l00058"></a>00058 <span class="comment"> * Geocentric::WGS84.</span>
-<a name="l00059"></a>00059 <span class="comment"> **********************************************************************/</span>
-<a name="l00060"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ad277a6798293d5d66168c3c1438d10a2">00060</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>(real lat0, real lon0, real h0 = 0,
-<a name="l00061"></a>00061 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>) throw()
-<a name="l00062"></a>00062 : _earth(earth)
-<a name="l00063"></a>00063 { Reset(lat0, lon0, h0); }
-<a name="l00064"></a>00064 <span class="comment"></span>
-<a name="l00065"></a>00065 <span class="comment"> /**</span>
-<a name="l00066"></a>00066 <span class="comment"> * Default constructor.</span>
-<a name="l00067"></a>00067 <span class="comment"> *</span>
-<a name="l00068"></a>00068 <span class="comment"> * @param[in] earth Geocentric object for the transformation; default</span>
-<a name="l00069"></a>00069 <span class="comment"> * Geocentric::WGS84.</span>
+<a name="l00034"></a>00034 <span class="comment"> *</span>
+<a name="l00035"></a>00035 <span class="comment"> * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility</span>
+<a name="l00036"></a>00036 <span class="comment"> * providing access to the functionality of Geocentric and LocalCartesian.</span>
+<a name="l00037"></a>00037 <span class="comment"> **********************************************************************/</span>
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> LocalCartesian {
+<a name="l00040"></a>00040 <span class="keyword">private</span>:
+<a name="l00041"></a>00041 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00042"></a>00042 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim_ = 3;
+<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> dim2_ = dim_ * dim_;
+<a name="l00044"></a>00044 Geocentric _earth;
+<a name="l00045"></a>00045 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _lat0, _lon0, _h0;
+<a name="l00046"></a>00046 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _x0, _y0, _z0, _r[dim2_];
+<a name="l00047"></a>00047 <span class="keywordtype">void</span> IntForward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
+<a name="l00048"></a>00048 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00049"></a>00049 <span class="keywordtype">void</span> IntReverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c [...]
+<a name="l00050"></a>00050 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00051"></a>00051 <span class="keywordtype">void</span> MatrixMultiply(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> M[dim2_]) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00052"></a>00052 <span class="keyword">public</span>:
+<a name="l00053"></a>00053 <span class="comment"></span>
+<a name="l00054"></a>00054 <span class="comment"> /**</span>
+<a name="l00055"></a>00055 <span class="comment"> * Constructor setting the origin.</span>
+<a name="l00056"></a>00056 <span class="comment"> *</span>
+<a name="l00057"></a>00057 <span class="comment"> * @param[in] lat0 latitude at origin (degrees).</span>
+<a name="l00058"></a>00058 <span class="comment"> * @param[in] lon0 longitude at origin (degrees).</span>
+<a name="l00059"></a>00059 <span class="comment"> * @param[in] h0 height above ellipsoid at origin (meters); default 0.</span>
+<a name="l00060"></a>00060 <span class="comment"> * @param[in] earth Geocentric object for the transformation; default</span>
+<a name="l00061"></a>00061 <span class="comment"> * Geocentric::WGS84.</span>
+<a name="l00062"></a>00062 <span class="comment"> **********************************************************************/</span>
+<a name="l00063"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ad277a6798293d5d66168c3c1438d10a2">00063</a> LocalCartesian(real lat0, real lon0, real h0 = 0,
+<a name="l00064"></a>00064 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>) throw()
+<a name="l00065"></a>00065 : _earth(earth)
+<a name="l00066"></a>00066 { Reset(lat0, lon0, h0); }
+<a name="l00067"></a>00067 <span class="comment"></span>
+<a name="l00068"></a>00068 <span class="comment"> /**</span>
+<a name="l00069"></a>00069 <span class="comment"> * Default constructor.</span>
<a name="l00070"></a>00070 <span class="comment"> *</span>
-<a name="l00071"></a>00071 <span class="comment"> * Sets \e lat0 = 0, \e lon0 = 0, \e h0 = 0.</span>
-<a name="l00072"></a>00072 <span class="comment"> **********************************************************************/</span>
-<a name="l00073"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a3474a0434b2ff8b258111fe6d8468f0d">00073</a> <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1 [...]
-<a name="l00074"></a>00074 throw()
-<a name="l00075"></a>00075 : _earth(earth)
-<a name="l00076"></a>00076 { Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)); }
-<a name="l00077"></a>00077 <span class="comment"></span>
-<a name="l00078"></a>00078 <span class="comment"> /**</span>
-<a name="l00079"></a>00079 <span class="comment"> * Reset the origin.</span>
-<a name="l00080"></a>00080 <span class="comment"> *</span>
-<a name="l00081"></a>00081 <span class="comment"> * @param[in] lat0 latitude at origin (degrees).</span>
-<a name="l00082"></a>00082 <span class="comment"> * @param[in] lon0 longitude at origin (degrees).</span>
-<a name="l00083"></a>00083 <span class="comment"> * @param[in] h0 height above ellipsoid at origin (meters); default 0.</span>
-<a name="l00084"></a>00084 <span class="comment"> **********************************************************************/</span>
-<a name="l00085"></a>00085 <span class="keywordtype">void</span> Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h0 = 0)
-<a name="l00086"></a>00086 throw();
-<a name="l00087"></a>00087 <span class="comment"></span>
-<a name="l00088"></a>00088 <span class="comment"> /**</span>
-<a name="l00089"></a>00089 <span class="comment"> * Convert from geodetic to local cartesian coordinates.</span>
-<a name="l00090"></a>00090 <span class="comment"> *</span>
-<a name="l00091"></a>00091 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00092"></a>00092 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00093"></a>00093 <span class="comment"> * @param[in] h height of point above the ellipsoid (meters).</span>
-<a name="l00094"></a>00094 <span class="comment"> * @param[out] x local cartesian coordinate (meters).</span>
-<a name="l00095"></a>00095 <span class="comment"> * @param[out] y local cartesian coordinate (meters).</span>
-<a name="l00096"></a>00096 <span class="comment"> * @param[out] z local cartesian coordinate (meters).</span>
-<a name="l00097"></a>00097 <span class="comment"> *</span>
-<a name="l00098"></a>00098 <span class="comment"> * \e lat should be in the range [-90, 90]; \e lon and \e lon0 should be in</span>
-<a name="l00099"></a>00099 <span class="comment"> * the range [-180, 360].</span>
-<a name="l00100"></a>00100 <span class="comment"> **********************************************************************/</span>
-<a name="l00101"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">00101</a> <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& x, real& y, real& z)
-<a name="l00102"></a>00102 const throw() {
-<a name="l00103"></a>00103 IntForward(lat, lon, h, x, y, z, NULL);
-<a name="l00104"></a>00104 }
-<a name="l00105"></a>00105 <span class="comment"></span>
-<a name="l00106"></a>00106 <span class="comment"> /**</span>
-<a name="l00107"></a>00107 <span class="comment"> * Convert from geodetic to local cartesian coordinates and return rotation</span>
-<a name="l00108"></a>00108 <span class="comment"> * matrix.</span>
-<a name="l00109"></a>00109 <span class="comment"> *</span>
-<a name="l00110"></a>00110 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00111"></a>00111 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00112"></a>00112 <span class="comment"> * @param[in] h height of point above the ellipsoid (meters).</span>
-<a name="l00113"></a>00113 <span class="comment"> * @param[out] x local cartesian coordinate (meters).</span>
-<a name="l00114"></a>00114 <span class="comment"> * @param[out] y local cartesian coordinate (meters).</span>
-<a name="l00115"></a>00115 <span class="comment"> * @param[out] z local cartesian coordinate (meters).</span>
-<a name="l00116"></a>00116 <span class="comment"> * @param[out] M if the length of the vector is 9, fill with the rotation</span>
-<a name="l00117"></a>00117 <span class="comment"> * matrix in row-major order.</span>
-<a name="l00118"></a>00118 <span class="comment"> *</span>
-<a name="l00119"></a>00119 <span class="comment"> * Let \e v be a unit vector located at (\e lat, \e lon, \e h). We can</span>
-<a name="l00120"></a>00120 <span class="comment"> * express \e v as \e column vectors in one of two ways</span>
-<a name="l00121"></a>00121 <span class="comment"> * - in east, north, up coordinates (where the components are relative to a</span>
-<a name="l00122"></a>00122 <span class="comment"> * local coordinate system at (\e lat, \e lon, \e h)); call this</span>
-<a name="l00123"></a>00123 <span class="comment"> * representation \e v1.</span>
-<a name="l00124"></a>00124 <span class="comment"> * - in \e x, \e y, \e z coordinates (where the components are relative to</span>
-<a name="l00125"></a>00125 <span class="comment"> * the local coordinate system at (\e lat0, \e lon0, \e h0)); call this</span>
-<a name="l00126"></a>00126 <span class="comment"> * representation \e v0.</span>
-<a name="l00127"></a>00127 <span class="comment"> * .</span>
-<a name="l00128"></a>00128 <span class="comment"> * Then we have \e v0 = \e M . \e v1.</span>
-<a name="l00129"></a>00129 <span class="comment"> **********************************************************************/</span>
-<a name="l00130"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a774332be14e894536f13b3cc7a8323c7">00130</a> <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& x, real& y, real& z,
-<a name="l00131"></a>00131 std::vector<real>& M)
-<a name="l00132"></a>00132 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00133"></a>00133 <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
-<a name="l00134"></a>00134 real t[dim2_];
-<a name="l00135"></a>00135 IntForward(lat, lon, h, x, y, z, t);
-<a name="l00136"></a>00136 copy(t, t + dim2_, M.begin());
-<a name="l00137"></a>00137 } <span class="keywordflow">else</span>
-<a name="l00138"></a>00138 IntForward(lat, lon, h, x, y, z, NULL);
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 <span class="comment"></span>
-<a name="l00141"></a>00141 <span class="comment"> /**</span>
-<a name="l00142"></a>00142 <span class="comment"> * Convert from local cartesian to geodetic coordinates.</span>
-<a name="l00143"></a>00143 <span class="comment"> *</span>
-<a name="l00144"></a>00144 <span class="comment"> * @param[in] x local cartesian coordinate (meters).</span>
-<a name="l00145"></a>00145 <span class="comment"> * @param[in] y local cartesian coordinate (meters).</span>
-<a name="l00146"></a>00146 <span class="comment"> * @param[in] z local cartesian coordinate (meters).</span>
-<a name="l00147"></a>00147 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00148"></a>00148 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00149"></a>00149 <span class="comment"> * @param[out] h height of point above the ellipsoid (meters).</span>
-<a name="l00150"></a>00150 <span class="comment"> *</span>
-<a name="l00151"></a>00151 <span class="comment"> * The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00152"></a>00152 <span class="comment"> **********************************************************************/</span>
-<a name="l00153"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">00153</a> <span class="keywordtype">void</span> Reverse(real x, real y, real z, real& lat, real& lon, real& h)
-<a name="l00154"></a>00154 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00155"></a>00155 IntReverse(x, y, z, lat, lon, h, NULL);
-<a name="l00156"></a>00156 }
-<a name="l00157"></a>00157 <span class="comment"></span>
-<a name="l00158"></a>00158 <span class="comment"> /**</span>
-<a name="l00159"></a>00159 <span class="comment"> * Convert from local cartesian to geodetic coordinates and return rotation</span>
-<a name="l00160"></a>00160 <span class="comment"> * matrix.</span>
-<a name="l00161"></a>00161 <span class="comment"> *</span>
-<a name="l00162"></a>00162 <span class="comment"> * @param[in] x local cartesian coordinate (meters).</span>
-<a name="l00163"></a>00163 <span class="comment"> * @param[in] y local cartesian coordinate (meters).</span>
-<a name="l00164"></a>00164 <span class="comment"> * @param[in] z local cartesian coordinate (meters).</span>
-<a name="l00165"></a>00165 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00166"></a>00166 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00167"></a>00167 <span class="comment"> * @param[out] h height of point above the ellipsoid (meters).</span>
-<a name="l00168"></a>00168 <span class="comment"> * @param[out] M if the length of the vector is 9, fill with the rotation</span>
-<a name="l00169"></a>00169 <span class="comment"> * matrix in row-major order.</span>
-<a name="l00170"></a>00170 <span class="comment"> *</span>
-<a name="l00171"></a>00171 <span class="comment"> * Let \e v be a unit vector located at (\e lat, \e lon, \e h). We can</span>
-<a name="l00172"></a>00172 <span class="comment"> * express \e v as \e column vectors in one of two ways</span>
-<a name="l00173"></a>00173 <span class="comment"> * - in east, north, up coordinates (where the components are relative to a</span>
-<a name="l00174"></a>00174 <span class="comment"> * local coordinate system at (\e lat, \e lon, \e h)); call this</span>
-<a name="l00175"></a>00175 <span class="comment"> * representation \e v1.</span>
-<a name="l00176"></a>00176 <span class="comment"> * - in \e x, \e y, \e z coordinates (where the components are relative to</span>
-<a name="l00177"></a>00177 <span class="comment"> * the local coordinate system at (\e lat0, \e lon0, \e h0)); call this</span>
-<a name="l00178"></a>00178 <span class="comment"> * representation \e v0.</span>
-<a name="l00179"></a>00179 <span class="comment"> * .</span>
-<a name="l00180"></a>00180 <span class="comment"> * Then we have \e v1 = \e M^T . \e v0, where \e M^T is the transpose of \e</span>
-<a name="l00181"></a>00181 <span class="comment"> * M.</span>
-<a name="l00182"></a>00182 <span class="comment"> **********************************************************************/</span>
-<a name="l00183"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a7baa88b38b320d763f6cba3ece4f518d">00183</a> <span class="keywordtype">void</span> Reverse(real x, real y, real z, real& lat, real& lon, real& h,
-<a name="l00184"></a>00184 std::vector<real>& M)
-<a name="l00185"></a>00185 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00186"></a>00186 <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
-<a name="l00187"></a>00187 real t[dim2_];
-<a name="l00188"></a>00188 IntReverse(x, y, z, lat, lon, h, t);
-<a name="l00189"></a>00189 copy(t, t + dim2_, M.begin());
-<a name="l00190"></a>00190 } <span class="keywordflow">else</span>
-<a name="l00191"></a>00191 IntReverse(x, y, z, lat, lon, h, NULL);
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 <span class="comment"></span>
-<a name="l00194"></a>00194 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00195"></a>00195 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00196"></a>00196 <span class="comment"> ///@{</span>
-<a name="l00197"></a>00197 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00198"></a>00198 <span class="comment"> * @return latitude of the origin (degrees).</span>
-<a name="l00199"></a>00199 <span class="comment"> **********************************************************************/</span>
-<a name="l00200"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">00200</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">LatitudeOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
-<a name="l00201"></a>00201 <span class="comment"></span>
-<a name="l00202"></a>00202 <span class="comment"> /**</span>
-<a name="l00203"></a>00203 <span class="comment"> * @return longitude of the origin (degrees).</span>
-<a name="l00204"></a>00204 <span class="comment"> **********************************************************************/</span>
-<a name="l00205"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a45656227b4fff45249f1844bc6d233ad">00205</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a45656227b4fff45249f1844bc6d233ad">LongitudeOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lon0; }
-<a name="l00206"></a>00206 <span class="comment"></span>
-<a name="l00207"></a>00207 <span class="comment"> /**</span>
-<a name="l00208"></a>00208 <span class="comment"> * @return height of the origin (meters).</span>
-<a name="l00209"></a>00209 <span class="comment"> **********************************************************************/</span>
-<a name="l00210"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">00210</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">HeightOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _h0; }
-<a name="l00211"></a>00211 <span class="comment"></span>
-<a name="l00212"></a>00212 <span class="comment"> /**</span>
-<a name="l00213"></a>00213 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00214"></a>00214 <span class="comment"> * the value of \e a inherited from the Geocentric object used in the</span>
-<a name="l00215"></a>00215 <span class="comment"> * constructor.</span>
-<a name="l00216"></a>00216 <span class="comment"> **********************************************************************/</span>
-<a name="l00217"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">00217</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00218"></a>00218 <span class="comment"></span>
-<a name="l00219"></a>00219 <span class="comment"> /**</span>
-<a name="l00220"></a>00220 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00221"></a>00221 <span class="comment"> * inherited from the Geocentric object used in the constructor.</span>
-<a name="l00222"></a>00222 <span class="comment"> **********************************************************************/</span>
-<a name="l00223"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">00223</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }
-<a name="l00224"></a>00224 <span class="comment"></span>
-<a name="l00225"></a>00225 <span class="comment"> /**</span>
-<a name="l00226"></a>00226 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00227"></a>00227 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00228"></a>00228 <span class="comment"> **********************************************************************/</span>
-<a name="l00229"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">00229</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() <span class="keyword">const</span> throw()
-<a name="l00230"></a>00230 { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
-<a name="l00231"></a>00231 <span class="comment"> ///@}</span>
-<a name="l00232"></a>00232 <span class="comment"></span> };
-<a name="l00233"></a>00233
-<a name="l00234"></a>00234 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00235"></a>00235
-<a name="l00236"></a>00236 <span class="preprocessor">#endif // GEOGRAPHICLIB_LOCALCARTESIAN_HPP</span>
+<a name="l00071"></a>00071 <span class="comment"> * @param[in] earth Geocentric object for the transformation; default</span>
+<a name="l00072"></a>00072 <span class="comment"> * Geocentric::WGS84.</span>
+<a name="l00073"></a>00073 <span class="comment"> *</span>
+<a name="l00074"></a>00074 <span class="comment"> * Sets \e lat0 = 0, \e lon0 = 0, \e h0 = 0.</span>
+<a name="l00075"></a>00075 <span class="comment"> **********************************************************************/</span>
+<a name="l00076"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a3474a0434b2ff8b258111fe6d8468f0d">00076</a> <span class="keyword">explicit</span> LocalCartesian(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>)
+<a name="l00077"></a>00077 throw()
+<a name="l00078"></a>00078 : _earth(earth)
+<a name="l00079"></a>00079 { Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0)); }
+<a name="l00080"></a>00080 <span class="comment"></span>
+<a name="l00081"></a>00081 <span class="comment"> /**</span>
+<a name="l00082"></a>00082 <span class="comment"> * Reset the origin.</span>
+<a name="l00083"></a>00083 <span class="comment"> *</span>
+<a name="l00084"></a>00084 <span class="comment"> * @param[in] lat0 latitude at origin (degrees).</span>
+<a name="l00085"></a>00085 <span class="comment"> * @param[in] lon0 longitude at origin (degrees).</span>
+<a name="l00086"></a>00086 <span class="comment"> * @param[in] h0 height above ellipsoid at origin (meters); default 0.</span>
+<a name="l00087"></a>00087 <span class="comment"> **********************************************************************/</span>
+<a name="l00088"></a>00088 <span class="keywordtype">void</span> Reset(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h0 = 0)
+<a name="l00089"></a>00089 throw();
+<a name="l00090"></a>00090 <span class="comment"></span>
+<a name="l00091"></a>00091 <span class="comment"> /**</span>
+<a name="l00092"></a>00092 <span class="comment"> * Convert from geodetic to local cartesian coordinates.</span>
+<a name="l00093"></a>00093 <span class="comment"> *</span>
+<a name="l00094"></a>00094 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00095"></a>00095 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00096"></a>00096 <span class="comment"> * @param[in] h height of point above the ellipsoid (meters).</span>
+<a name="l00097"></a>00097 <span class="comment"> * @param[out] x local cartesian coordinate (meters).</span>
+<a name="l00098"></a>00098 <span class="comment"> * @param[out] y local cartesian coordinate (meters).</span>
+<a name="l00099"></a>00099 <span class="comment"> * @param[out] z local cartesian coordinate (meters).</span>
+<a name="l00100"></a>00100 <span class="comment"> *</span>
+<a name="l00101"></a>00101 <span class="comment"> * \e lat should be in the range [-90, 90]; \e lon and \e lon0 should be in</span>
+<a name="l00102"></a>00102 <span class="comment"> * the range [-180, 360].</span>
+<a name="l00103"></a>00103 <span class="comment"> **********************************************************************/</span>
+<a name="l00104"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">00104</a> <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& x, real& y, real& z)
+<a name="l00105"></a>00105 const throw() {
+<a name="l00106"></a>00106 IntForward(lat, lon, h, x, y, z, NULL);
+<a name="l00107"></a>00107 }
+<a name="l00108"></a>00108 <span class="comment"></span>
+<a name="l00109"></a>00109 <span class="comment"> /**</span>
+<a name="l00110"></a>00110 <span class="comment"> * Convert from geodetic to local cartesian coordinates and return rotation</span>
+<a name="l00111"></a>00111 <span class="comment"> * matrix.</span>
+<a name="l00112"></a>00112 <span class="comment"> *</span>
+<a name="l00113"></a>00113 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00114"></a>00114 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00115"></a>00115 <span class="comment"> * @param[in] h height of point above the ellipsoid (meters).</span>
+<a name="l00116"></a>00116 <span class="comment"> * @param[out] x local cartesian coordinate (meters).</span>
+<a name="l00117"></a>00117 <span class="comment"> * @param[out] y local cartesian coordinate (meters).</span>
+<a name="l00118"></a>00118 <span class="comment"> * @param[out] z local cartesian coordinate (meters).</span>
+<a name="l00119"></a>00119 <span class="comment"> * @param[out] M if the length of the vector is 9, fill with the rotation</span>
+<a name="l00120"></a>00120 <span class="comment"> * matrix in row-major order.</span>
+<a name="l00121"></a>00121 <span class="comment"> *</span>
+<a name="l00122"></a>00122 <span class="comment"> * Let \e v be a unit vector located at (\e lat, \e lon, \e h). We can</span>
+<a name="l00123"></a>00123 <span class="comment"> * express \e v as \e column vectors in one of two ways</span>
+<a name="l00124"></a>00124 <span class="comment"> * - in east, north, up coordinates (where the components are relative to a</span>
+<a name="l00125"></a>00125 <span class="comment"> * local coordinate system at (\e lat, \e lon, \e h)); call this</span>
+<a name="l00126"></a>00126 <span class="comment"> * representation \e v1.</span>
+<a name="l00127"></a>00127 <span class="comment"> * - in \e x, \e y, \e z coordinates (where the components are relative to</span>
+<a name="l00128"></a>00128 <span class="comment"> * the local coordinate system at (\e lat0, \e lon0, \e h0)); call this</span>
+<a name="l00129"></a>00129 <span class="comment"> * representation \e v0.</span>
+<a name="l00130"></a>00130 <span class="comment"> * .</span>
+<a name="l00131"></a>00131 <span class="comment"> * Then we have \e v0 = \e M . \e v1.</span>
+<a name="l00132"></a>00132 <span class="comment"> **********************************************************************/</span>
+<a name="l00133"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a774332be14e894536f13b3cc7a8323c7">00133</a> <span class="keywordtype">void</span> Forward(real lat, real lon, real h, real& x, real& y, real& z,
+<a name="l00134"></a>00134 std::vector<real>& M)
+<a name="l00135"></a>00135 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00136"></a>00136 <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
+<a name="l00137"></a>00137 real t[dim2_];
+<a name="l00138"></a>00138 IntForward(lat, lon, h, x, y, z, t);
+<a name="l00139"></a>00139 copy(t, t + dim2_, M.begin());
+<a name="l00140"></a>00140 } <span class="keywordflow">else</span>
+<a name="l00141"></a>00141 IntForward(lat, lon, h, x, y, z, NULL);
+<a name="l00142"></a>00142 }
+<a name="l00143"></a>00143 <span class="comment"></span>
+<a name="l00144"></a>00144 <span class="comment"> /**</span>
+<a name="l00145"></a>00145 <span class="comment"> * Convert from local cartesian to geodetic coordinates.</span>
+<a name="l00146"></a>00146 <span class="comment"> *</span>
+<a name="l00147"></a>00147 <span class="comment"> * @param[in] x local cartesian coordinate (meters).</span>
+<a name="l00148"></a>00148 <span class="comment"> * @param[in] y local cartesian coordinate (meters).</span>
+<a name="l00149"></a>00149 <span class="comment"> * @param[in] z local cartesian coordinate (meters).</span>
+<a name="l00150"></a>00150 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00151"></a>00151 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00152"></a>00152 <span class="comment"> * @param[out] h height of point above the ellipsoid (meters).</span>
+<a name="l00153"></a>00153 <span class="comment"> *</span>
+<a name="l00154"></a>00154 <span class="comment"> * The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00155"></a>00155 <span class="comment"> **********************************************************************/</span>
+<a name="l00156"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">00156</a> <span class="keywordtype">void</span> Reverse(real x, real y, real z, real& lat, real& lon, real& h)
+<a name="l00157"></a>00157 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00158"></a>00158 IntReverse(x, y, z, lat, lon, h, NULL);
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 <span class="comment"></span>
+<a name="l00161"></a>00161 <span class="comment"> /**</span>
+<a name="l00162"></a>00162 <span class="comment"> * Convert from local cartesian to geodetic coordinates and return rotation</span>
+<a name="l00163"></a>00163 <span class="comment"> * matrix.</span>
+<a name="l00164"></a>00164 <span class="comment"> *</span>
+<a name="l00165"></a>00165 <span class="comment"> * @param[in] x local cartesian coordinate (meters).</span>
+<a name="l00166"></a>00166 <span class="comment"> * @param[in] y local cartesian coordinate (meters).</span>
+<a name="l00167"></a>00167 <span class="comment"> * @param[in] z local cartesian coordinate (meters).</span>
+<a name="l00168"></a>00168 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00169"></a>00169 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00170"></a>00170 <span class="comment"> * @param[out] h height of point above the ellipsoid (meters).</span>
+<a name="l00171"></a>00171 <span class="comment"> * @param[out] M if the length of the vector is 9, fill with the rotation</span>
+<a name="l00172"></a>00172 <span class="comment"> * matrix in row-major order.</span>
+<a name="l00173"></a>00173 <span class="comment"> *</span>
+<a name="l00174"></a>00174 <span class="comment"> * Let \e v be a unit vector located at (\e lat, \e lon, \e h). We can</span>
+<a name="l00175"></a>00175 <span class="comment"> * express \e v as \e column vectors in one of two ways</span>
+<a name="l00176"></a>00176 <span class="comment"> * - in east, north, up coordinates (where the components are relative to a</span>
+<a name="l00177"></a>00177 <span class="comment"> * local coordinate system at (\e lat, \e lon, \e h)); call this</span>
+<a name="l00178"></a>00178 <span class="comment"> * representation \e v1.</span>
+<a name="l00179"></a>00179 <span class="comment"> * - in \e x, \e y, \e z coordinates (where the components are relative to</span>
+<a name="l00180"></a>00180 <span class="comment"> * the local coordinate system at (\e lat0, \e lon0, \e h0)); call this</span>
+<a name="l00181"></a>00181 <span class="comment"> * representation \e v0.</span>
+<a name="l00182"></a>00182 <span class="comment"> * .</span>
+<a name="l00183"></a>00183 <span class="comment"> * Then we have \e v1 = \e M^T . \e v0, where \e M^T is the transpose of \e</span>
+<a name="l00184"></a>00184 <span class="comment"> * M.</span>
+<a name="l00185"></a>00185 <span class="comment"> **********************************************************************/</span>
+<a name="l00186"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a7baa88b38b320d763f6cba3ece4f518d">00186</a> <span class="keywordtype">void</span> Reverse(real x, real y, real z, real& lat, real& lon, real& h,
+<a name="l00187"></a>00187 std::vector<real>& M)
+<a name="l00188"></a>00188 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00189"></a>00189 <span class="keywordflow">if</span> (M.end() == M.begin() + dim2_) {
+<a name="l00190"></a>00190 real t[dim2_];
+<a name="l00191"></a>00191 IntReverse(x, y, z, lat, lon, h, t);
+<a name="l00192"></a>00192 copy(t, t + dim2_, M.begin());
+<a name="l00193"></a>00193 } <span class="keywordflow">else</span>
+<a name="l00194"></a>00194 IntReverse(x, y, z, lat, lon, h, NULL);
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196 <span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00198"></a>00198 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00199"></a>00199 <span class="comment"> ///@{</span>
+<a name="l00200"></a>00200 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00201"></a>00201 <span class="comment"> * @return latitude of the origin (degrees).</span>
+<a name="l00202"></a>00202 <span class="comment"> **********************************************************************/</span>
+<a name="l00203"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">00203</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">LatitudeOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lat0; }
+<a name="l00204"></a>00204 <span class="comment"></span>
+<a name="l00205"></a>00205 <span class="comment"> /**</span>
+<a name="l00206"></a>00206 <span class="comment"> * @return longitude of the origin (degrees).</span>
+<a name="l00207"></a>00207 <span class="comment"> **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a45656227b4fff45249f1844bc6d233ad">00208</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a45656227b4fff45249f1844bc6d233ad">LongitudeOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _lon0; }
+<a name="l00209"></a>00209 <span class="comment"></span>
+<a name="l00210"></a>00210 <span class="comment"> /**</span>
+<a name="l00211"></a>00211 <span class="comment"> * @return height of the origin (meters).</span>
+<a name="l00212"></a>00212 <span class="comment"> **********************************************************************/</span>
+<a name="l00213"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">00213</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">HeightOrigin</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _h0; }
+<a name="l00214"></a>00214 <span class="comment"></span>
+<a name="l00215"></a>00215 <span class="comment"> /**</span>
+<a name="l00216"></a>00216 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00217"></a>00217 <span class="comment"> * the value of \e a inherited from the Geocentric object used in the</span>
+<a name="l00218"></a>00218 <span class="comment"> * constructor.</span>
+<a name="l00219"></a>00219 <span class="comment"> **********************************************************************/</span>
+<a name="l00220"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">00220</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00221"></a>00221 <span class="comment"></span>
+<a name="l00222"></a>00222 <span class="comment"> /**</span>
+<a name="l00223"></a>00223 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00224"></a>00224 <span class="comment"> * inherited from the Geocentric object used in the constructor.</span>
+<a name="l00225"></a>00225 <span class="comment"> **********************************************************************/</span>
+<a name="l00226"></a><a class="code" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">00226</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span cla [...]
+<a name="l00227"></a>00227 <span class="comment"> ///@}</span>
+<a name="l00228"></a>00228 <span class="comment"></span><span class="comment"></span>
+<a name="l00229"></a>00229 <span class="comment"> /// \cond SKIP</span>
+<a name="l00230"></a>00230 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00231"></a>00231 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00232"></a>00232 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00233"></a>00233 <span class="comment"> **********************************************************************/</span>
+<a name="l00234"></a>00234 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw()
+<a name="l00235"></a>00235 { <span class="keywordflow">return</span> _earth.InverseFlattening(); }<span class="comment"></span>
+<a name="l00236"></a>00236 <span class="comment"> /// \endcond</span>
+<a name="l00237"></a>00237 <span class="comment"></span> };
+<a name="l00238"></a>00238
+<a name="l00239"></a>00239 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00240"></a>00240
+<a name="l00241"></a>00241 <span class="preprocessor">#endif // GEOGRAPHICLIB_LOCALCARTESIAN_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MGRS_8cpp.html b/doc/html/MGRS_8cpp.html
index 42e972f..b59433f 100644
--- a/doc/html/MGRS_8cpp.html
+++ b/doc/html/MGRS_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MGRS.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,17 +76,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">GEOGRAPHICLIB_MGRS_CPP</a> "$Id: 563342c620510330e64ab87673b2d0f8e152adf6 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">GEOGRAPHICLIB_MGRS_CPP</a> "$Id: e4e6b419c8cd8544b3edab85b3352add0d1dd7cb $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="MGRS_8cpp_source.html">MGRS.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -80,7 +93,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_MGRS_CPP "$Id: 563342c620510330e64ab87673b2d0f8e152adf6 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_MGRS_CPP "$Id: e4e6b419c8cd8544b3edab85b3352add0d1dd7cb $"</td>
</tr>
</table>
</div>
@@ -91,8 +104,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MGRS_8cpp_source.html b/doc/html/MGRS_8cpp_source.html
index f5fc7bd..3e405bc 100644
--- a/doc/html/MGRS_8cpp_source.html
+++ b/doc/html/MGRS_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MGRS.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
<a name="l00002"></a>00002 <span class="comment"> * \file MGRS.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::MGRS class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="MGRS_8hpp.html" title="Header for GeographicLib::MGRS class.">GeographicLib/MGRS.hpp</a>></span>
<a name="l00011"></a>00011 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
<a name="l00012"></a>00012
-<a name="l00013"></a><a class="code" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">00013</a> <span class="preprocessor">#define GEOGRAPHICLIB_MGRS_CPP "$Id: 563342c620510330e64ab87673b2d0f8e152adf6 $"</span>
+<a name="l00013"></a><a class="code" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">00013</a> <span class="preprocessor">#define GEOGRAPHICLIB_MGRS_CPP "$Id: e4e6b419c8cd8544b3edab85b3352add0d1dd7cb $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="MGRS_8cpp.html#a7882927f72a62a7131868e387edd4dac">GEOGRAPHICLIB_MGRS_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">GEOGRAPHICLIB_MGRS_HPP</a>)
@@ -68,11 +83,11 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">using namespace </span>std;
<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> MGRS::eps_ =
+<a name="l00022"></a>00022 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> MGRS::eps_ =
<a name="l00023"></a>00023 <span class="comment">// 25 = ceil(log_2(2e7)) -- use half circumference here because northing</span>
<a name="l00024"></a>00024 <span class="comment">// 195e5 is a legal in the "southern" hemisphere.</span>
<a name="l00025"></a>00025 pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5), numeric_limits<real>::digits - 25);
-<a name="l00026"></a>00026 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> MGRS::angeps_ =
+<a name="l00026"></a>00026 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> MGRS::angeps_ =
<a name="l00027"></a>00027 <span class="comment">// 7 = ceil(log_2(90))</span>
<a name="l00028"></a>00028 pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5), numeric_limits<real>::digits - 7);
<a name="l00029"></a>00029 <span class="keyword">const</span> <span class="keywordtype">string</span> MGRS::hemispheres_ = <span class="stringliteral">"SN"</span>;
@@ -92,7 +107,7 @@
<a name="l00043"></a>00043 { maxupsSind_, maxupsNind_, maxutmcol_, maxutmcol_ };
<a name="l00044"></a>00044 <span class="keyword">const</span> <span class="keywordtype">int</span> MGRS::minnorthing_[4] =
<a name="l00045"></a>00045 { minupsSind_, minupsNind_,
-<a name="l00046"></a>00046 minutmSrow_, minutmSrow_ - (maxutmSrow_ - minutmNrow_) };
+<a name="l00046"></a>00046 minutmSrow_, minutmSrow_ - (maxutmSrow_ - minutmNrow_) };
<a name="l00047"></a>00047 <span class="keyword">const</span> <span class="keywordtype">int</span> MGRS::maxnorthing_[4] =
<a name="l00048"></a>00048 { maxupsSind_, maxupsNind_,
<a name="l00049"></a>00049 maxutmNrow_ + (maxutmSrow_ - minutmNrow_), maxutmNrow_ };
@@ -107,9 +122,9 @@
<a name="l00058"></a>00058 }
<a name="l00059"></a>00059 <span class="keywordtype">bool</span> utmp = zone != 0;
<a name="l00060"></a>00060 CheckCoords(utmp, northp, x, y);
-<a name="l00061"></a>00061 <span class="keywordflow">if</span> (!(zone >= 0 || zone <= 60))
+<a name="l00061"></a>00061 <span class="keywordflow">if</span> (!(zone >= UTMUPS::MINZONE && zone <= UTMUPS::MAXZONE))
<a name="l00062"></a>00062 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Zone "</span> + Utility::str(zone) + <span class="stringliteral">" not in [0,60]"</span>);
-<a name="l00063"></a>00063 <span class="keywordflow">if</span> (!(prec >= 0 || prec <= maxprec_))
+<a name="l00063"></a>00063 <span class="keywordflow">if</span> (!(prec >= 0 && prec <= maxprec_))
<a name="l00064"></a>00064 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"MGRS precision "</span> + Utility::str(prec)
<a name="l00065"></a>00065 + <span class="stringliteral">" not in [0, "</span>
<a name="l00066"></a>00066 + Utility::str(<span class="keywordtype">int</span>(maxprec_)) + <span class="stringliteral">"]"</span>);
@@ -201,9 +216,9 @@
<a name="l00152"></a>00152 toupper(mgrs[0]) == <span class="charliteral">'I'</span> &&
<a name="l00153"></a>00153 toupper(mgrs[1]) == <span class="charliteral">'N'</span> &&
<a name="l00154"></a>00154 toupper(mgrs[2]) == <span class="charliteral">'V'</span>) {
-<a name="l00155"></a>00155 zone = UTMUPS::INVALID;
+<a name="l00155"></a>00155 zone = <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::INVALID;
<a name="l00156"></a>00156 northp = <span class="keyword">false</span>;
-<a name="l00157"></a>00157 x = y = Math::NaN<real>();
+<a name="l00157"></a>00157 x = y = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00158"></a>00158 prec = -1;
<a name="l00159"></a>00159 <span class="keywordflow">return</span>;
<a name="l00160"></a>00160 }
@@ -215,14 +230,14 @@
<a name="l00166"></a>00166 zone1 = 10 * zone1 + i;
<a name="l00167"></a>00167 ++p;
<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169 <span class="keywordflow">if</span> (p > 0 && (zone1 == 0 || zone1 > 60))
+<a name="l00169"></a>00169 <span class="keywordflow">if</span> (p > 0 && !(zone1 >= UTMUPS::MINUTMZONE && zone1 <= UTMUPS::MAXUTMZONE))
<a name="l00170"></a>00170 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Zone "</span> + Utility::str(zone1) + <span class="stringliteral">" not in [1,60]"</span>);
<a name="l00171"></a>00171 <span class="keywordflow">if</span> (p > 2)
<a name="l00172"></a>00172 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"More than 2 digits_ at start of MGRS "</span>
<a name="l00173"></a>00173 + mgrs.substr(0, p));
<a name="l00174"></a>00174 <span class="keywordflow">if</span> (len - p < 3)
<a name="l00175"></a>00175 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"MGRS string too short "</span> + mgrs);
-<a name="l00176"></a>00176 <span class="keywordtype">bool</span> utmp = zone1 != 0;
+<a name="l00176"></a>00176 <span class="keywordtype">bool</span> utmp = zone1 != <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>::UPS;
<a name="l00177"></a>00177 <span class="keywordtype">int</span> zonem1 = zone1 - 1;
<a name="l00178"></a>00178 <span class="keyword">const</span> <span class="keywordtype">string</span>& band = utmp ? latband_ : upsband_;
<a name="l00179"></a>00179 <span class="keywordtype">int</span> iband = Utility::lookup(band, mgrs[p++]);
@@ -375,7 +390,7 @@
<a name="l00326"></a>00326 <span class="comment">// The following deals with these special cases.</span>
<a name="l00327"></a>00327 <span class="keywordtype">int</span>
<a name="l00328"></a>00328 <span class="comment">// Fold [-10,-1] -> [9,0]</span>
-<a name="l00329"></a>00329 sband = iband >= 0 ? iband : - iband - 1,
+<a name="l00329"></a>00329 sband = iband >= 0 ? iband : -iband - 1,
<a name="l00330"></a>00330 <span class="comment">// Fold [-90,-1] -> [89,0]</span>
<a name="l00331"></a>00331 srow = irow >= 0 ? irow : -irow - 1,
<a name="l00332"></a>00332 <span class="comment">// Fold [4,7] -> [3,0]</span>
@@ -392,8 +407,13 @@
<a name="l00343"></a>00343 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MGRS_8hpp.html b/doc/html/MGRS_8hpp.html
index cde776c..2d78459 100644
--- a/doc/html/MGRS_8hpp.html
+++ b/doc/html/MGRS_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MGRS.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,17 +83,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">GEOGRAPHICLIB_MGRS_HPP</a> "$Id: c0374fd149f358fa6d0e52533206c1e5b0c49dec $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">GEOGRAPHICLIB_MGRS_HPP</a> "$Id: 80e08da6eca9d9cf92c5adad148c64302df2573d $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="MGRS_8hpp_source.html">MGRS.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_MGRS_HPP "$Id: c0374fd149f358fa6d0e52533206c1e5b0c49dec $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_MGRS_HPP "$Id: 80e08da6eca9d9cf92c5adad148c64302df2573d $"</td>
</tr>
</table>
</div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MGRS_8hpp_source.html b/doc/html/MGRS_8hpp_source.html
index d1b1816..9598e70 100644
--- a/doc/html/MGRS_8hpp_source.html
+++ b/doc/html/MGRS_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MGRS.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,13 +67,13 @@
<a name="l00002"></a>00002 <span class="comment"> * \file MGRS.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::MGRS class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_MGRS_HPP)</span>
-<a name="l00011"></a><a class="code" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MGRS_HPP "$Id: c0374fd149f358fa6d0e52533206c1e5b0c49dec $"</span>
+<a name="l00011"></a><a class="code" href="MGRS_8hpp.html#a1c5e778121820c6ec16b6180ffab51ac">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MGRS_HPP "$Id: 80e08da6eca9d9cf92c5adad148c64302df2573d $"</span>
<a name="l00012"></a>00012 <span class="preprocessor"></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include <sstream></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -110,13 +125,13 @@
<a name="l00060"></a>00060 <span class="comment"> * Example of use:</span>
<a name="l00061"></a>00061 <span class="comment"> * \include example-MGRS.cpp</span>
<a name="l00062"></a>00062 <span class="comment"> **********************************************************************/</span>
-<a name="l00063"></a><a class="code" href="classGeographicLib_1_1MGRS.html">00063</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a> {
+<a name="l00063"></a>00063 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> MGRS {
<a name="l00064"></a>00064 <span class="keyword">private</span>:
-<a name="l00065"></a>00065 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00065"></a>00065 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00066"></a>00066 <span class="comment">// The smallest length s.t., 1.0e7 - eps_ < 1.0e7 (approx 1.9 nm)</span>
-<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
+<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eps_;
<a name="l00068"></a>00068 <span class="comment">// The smallest angle s.t., 90 - eps_ < 90 (approx 50e-12 arcsec)</span>
-<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keyword">const</span> real angeps_;
+<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> angeps_;
<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">const</span> std::string hemispheres_;
<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">const</span> std::string utmcols_[3];
<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keyword">const</span> std::string utmrow_;
@@ -141,7 +156,7 @@
<a name="l00091"></a>00091 <span class="comment">// Maximum precision is um</span>
<a name="l00092"></a>00092 maxprec_ = 5 + 6,
<a name="l00093"></a>00093 };
-<a name="l00094"></a>00094 <span class="keyword">static</span> <span class="keywordtype">void</span> CheckCoords(<span class="keywordtype">bool</span> utmp, <span class="keywordtype">bool</span>& northp, real& x, real& y);
+<a name="l00094"></a>00094 <span class="keyword">static</span> <span class="keywordtype">void</span> CheckCoords(<span class="keywordtype">bool</span> utmp, <span class="keywordtype">bool</span>& northp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y);
<a name="l00095"></a>00095 <span class="keyword">static</span> <span class="keywordtype">int</span> UTMRow(<span class="keywordtype">int</span> iband, <span class="keywordtype">int</span> icol, <span class="keywordtype">int</span> irow) <span class="keywordflow">throw</span>();
<a name="l00096"></a>00096
<a name="l00097"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a6a0cfac496024eaf645c7a2f98a02a75">00097</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>; <span class="comment">// UTMUPS::StandardZone calls LatitudeBand</span>
@@ -169,7 +184,7 @@
<a name="l00119"></a>00119 <span class="comment">// Difference between S hemisphere northing and N hemisphere northing</span>
<a name="l00120"></a>00120 utmNshift_ = (maxutmSrow_ - minutmNrow_) * tile_
<a name="l00121"></a>00121 };
-<a name="l00122"></a>00122 <a class="code" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a>(); <span class="comment">// Disable constructor</span>
+<a name="l00122"></a>00122 MGRS(); <span class="comment">// Disable constructor</span>
<a name="l00123"></a>00123
<a name="l00124"></a>00124 <span class="keyword">public</span>:
<a name="l00125"></a>00125 <span class="comment"></span>
@@ -312,7 +327,7 @@
<a name="l00262"></a>00262 <span class="comment"> * (The WGS84 value is returned because the UTM and UPS projections are</span>
<a name="l00263"></a>00263 <span class="comment"> * based on this ellipsoid.)</span>
<a name="l00264"></a>00264 <span class="comment"> **********************************************************************/</span>
-<a name="l00265"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">00265</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">MajorRadius</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a293aa30508096d [...]
+<a name="l00265"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">00265</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">MajorRadius</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUP [...]
<a name="l00266"></a>00266 <span class="comment"></span>
<a name="l00267"></a>00267 <span class="comment"> /**</span>
<a name="l00268"></a>00268 <span class="comment"> * @return \e f the flattening of the WGS84 ellipsoid.</span>
@@ -320,28 +335,35 @@
<a name="l00270"></a>00270 <span class="comment"> * (The WGS84 value is returned because the UTM and UPS projections are</span>
<a name="l00271"></a>00271 <span class="comment"> * based on this ellipsoid.)</span>
<a name="l00272"></a>00272 <span class="comment"> **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">00273</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">Flattening</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a182de2e29f1181c [...]
-<a name="l00274"></a>00274 <span class="comment"></span>
-<a name="l00275"></a>00275 <span class="comment"> /**</span>
-<a name="l00276"></a>00276 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00277"></a>00277 <span class="comment"> * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
-<a name="l00278"></a>00278 <span class="comment"> **********************************************************************/</span>
-<a name="l00279"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">00279</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() throw()
-<a name="l00280"></a>00280 { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">UTMUPS::InverseFlattening</a>(); }<span class="comment"></span>
-<a name="l00281"></a>00281 <span class="comment"> ///@}</span>
-<a name="l00282"></a>00282 <span class="comment"></span> };
-<a name="l00283"></a>00283
-<a name="l00284"></a>00284 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00273"></a><a class="code" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">00273</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">Flattening</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1UTMUPS [...]
+<a name="l00274"></a>00274 <span class="comment"> ///@}</span>
+<a name="l00275"></a>00275 <span class="comment"></span><span class="comment"></span>
+<a name="l00276"></a>00276 <span class="comment"> /// \cond SKIP</span>
+<a name="l00277"></a>00277 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00278"></a>00278 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00279"></a>00279 <span class="comment"> * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
+<a name="l00280"></a>00280 <span class="comment"> **********************************************************************/</span>
+<a name="l00281"></a>00281 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() throw()
+<a name="l00282"></a>00282 { <span class="keywordflow">return</span> UTMUPS::InverseFlattening(); }<span class="comment"></span>
+<a name="l00283"></a>00283 <span class="comment"> /// \endcond</span>
+<a name="l00284"></a>00284 <span class="comment"></span> };
<a name="l00285"></a>00285
-<a name="l00286"></a>00286 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00287"></a>00287 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00288"></a>00288 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00289"></a>00289 <span class="preprocessor"></span>
-<a name="l00290"></a>00290 <span class="preprocessor">#endif // GEOGRAPHICLIB_MGRS_HPP</span>
+<a name="l00286"></a>00286 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00287"></a>00287
+<a name="l00288"></a>00288 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00289"></a>00289 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00290"></a>00290 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00291"></a>00291 <span class="preprocessor"></span>
+<a name="l00292"></a>00292 <span class="preprocessor">#endif // GEOGRAPHICLIB_MGRS_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticCircle_8cpp.html b/doc/html/MagneticCircle_8cpp.html
index 753f185..41a6a60 100644
--- a/doc/html/MagneticCircle_8cpp.html
+++ b/doc/html/MagneticCircle_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticCircle.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -63,10 +78,8 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8cpp.html#a0ca864788d9c9fdd4987afdc16db17ac">GEOGRAPHICLIB_MAGNETICCIRCLE_CPP</a> "$Id: 8cd933c406708a1f8b90e029e89bb99d2eb177b0 $"</td></tr>
@@ -109,8 +122,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticCircle_8cpp_source.html b/doc/html/MagneticCircle_8cpp_source.html
index 04429f1..c2a98c9 100644
--- a/doc/html/MagneticCircle_8cpp_source.html
+++ b/doc/html/MagneticCircle_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticCircle.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -106,8 +121,13 @@
<a name="l00057"></a>00057 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticCircle_8hpp.html b/doc/html/MagneticCircle_8hpp.html
index fbd81d7..ad8c1ab 100644
--- a/doc/html/MagneticCircle_8hpp.html
+++ b/doc/html/MagneticCircle_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticCircle.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,13 +84,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8hpp.html#a5bc784ff412658d1c422828506b424da">GEOGRAPHICLIB_MAGNETICCIRCLE_HPP</a> "$Id: 3884656adfb278af41423d4df4826b1b928f55f1 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8hpp.html#a5bc784ff412658d1c422828506b424da">GEOGRAPHICLIB_MAGNETICCIRCLE_HPP</a> "$Id: 5b3adc58d894f36ca4206864eb565541f24ff492 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
@@ -88,7 +101,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_MAGNETICCIRCLE_HPP "$Id: 3884656adfb278af41423d4df4826b1b928f55f1 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_MAGNETICCIRCLE_HPP "$Id: 5b3adc58d894f36ca4206864eb565541f24ff492 $"</td>
</tr>
</table>
</div>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticCircle_8hpp_source.html b/doc/html/MagneticCircle_8hpp_source.html
index e536630..b5ba339 100644
--- a/doc/html/MagneticCircle_8hpp_source.html
+++ b/doc/html/MagneticCircle_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticCircle.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_MAGNETICCIRCLE_HPP)</span>
<a name="l00011"></a><a class="code" href="MagneticCircle_8hpp.html#a5bc784ff412658d1c422828506b424da">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MAGNETICCIRCLE_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 3884656adfb278af41423d4df4826b1b928f55f1 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 5b3adc58d894f36ca4206864eb565541f24ff492 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <vector></span>
@@ -81,132 +96,140 @@
<a name="l00031"></a>00031 <span class="comment"> *</span>
<a name="l00032"></a>00032 <span class="comment"> * Example of use:</span>
<a name="l00033"></a>00033 <span class="comment"> * \include example-MagneticCircle.cpp</span>
-<a name="l00034"></a>00034 <span class="comment"> **********************************************************************/</span>
-<a name="l00035"></a>00035
-<a name="l00036"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html">00036</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> {
-<a name="l00037"></a>00037 <span class="keyword">private</span>:
-<a name="l00038"></a>00038 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00039"></a>00039
-<a name="l00040"></a>00040 real _a, _f, _lat, _h, _t, _cphi, _sphi, _t1, _dt0;
-<a name="l00041"></a>00041 <span class="keywordtype">bool</span> _interpolate;
-<a name="l00042"></a>00042 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> _circ0, _circ1;
-<a name="l00043"></a>00043
-<a name="l00044"></a>00044 <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>(real a, real f, real lat, real h, real t,
-<a name="l00045"></a>00045 real cphi, real sphi, real t1, real dt0,
-<a name="l00046"></a>00046 <span class="keywordtype">bool</span> interpolate,
-<a name="l00047"></a>00047 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& circ0, <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>& circ1)
-<a name="l00048"></a>00048 : _a(a)
-<a name="l00049"></a>00049 , _f(f)
-<a name="l00050"></a>00050 , _lat(lat)
-<a name="l00051"></a>00051 , _h(h)
-<a name="l00052"></a>00052 , _t(t)
-<a name="l00053"></a>00053 , _cphi(cphi)
-<a name="l00054"></a>00054 , _sphi(sphi)
-<a name="l00055"></a>00055 , _t1(t1)
-<a name="l00056"></a>00056 , _dt0(dt0)
-<a name="l00057"></a>00057 , _interpolate(interpolate)
-<a name="l00058"></a>00058 , _circ0(circ0)
-<a name="l00059"></a>00059 , _circ1(circ1)
-<a name="l00060"></a>00060 {}
-<a name="l00061"></a>00061
-<a name="l00062"></a>00062 <span class="keywordtype">void</span> Field(real lon, <span class="keywordtype">bool</span> diffp,
-<a name="l00063"></a>00063 real& Bx, real& By, real& Bz,
-<a name="l00064"></a>00064 real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00065"></a>00065
-<a name="l00066"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#af6619ebe4c078705fc49a0d9f950b431">00066</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>; <span class="comment">// MagneticModel calls the private constructor</span>
-<a name="l00067"></a>00067
-<a name="l00068"></a>00068 <span class="keyword">public</span>:
-<a name="l00069"></a>00069 <span class="comment"></span>
-<a name="l00070"></a>00070 <span class="comment"> /**</span>
-<a name="l00071"></a>00071 <span class="comment"> * A default constructor for the normal gravity. This sets up an</span>
-<a name="l00072"></a>00072 <span class="comment"> * uninitialized object which can be later replaced by the</span>
-<a name="l00073"></a>00073 <span class="comment"> * MagneticModel::Circle.</span>
-<a name="l00074"></a>00074 <span class="comment"> **********************************************************************/</span>
-<a name="l00075"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a49170460b1833722ad9bc45b92c86e5a">00075</a> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a49170460b1833722ad9bc45b92c86e5a">MagneticCircle</a>() : _a(-1) {}
-<a name="l00076"></a>00076 <span class="comment"></span>
-<a name="l00077"></a>00077 <span class="comment"> /** \name Compute the magnetic field</span>
-<a name="l00078"></a>00078 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00079"></a>00079 <span class="comment"> ///@{</span>
-<a name="l00080"></a>00080 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00081"></a>00081 <span class="comment"> * Evaluate the components of the geomagnetic field at a particular</span>
-<a name="l00082"></a>00082 <span class="comment"> * longitude.</span>
-<a name="l00083"></a>00083 <span class="comment"> *</span>
-<a name="l00084"></a>00084 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00085"></a>00085 <span class="comment"> * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
-<a name="l00086"></a>00086 <span class="comment"> * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
-<a name="l00087"></a>00087 <span class="comment"> * @param[out] Bz the vertical (up) component of the magnetic field</span>
-<a name="l00088"></a>00088 <span class="comment"> * (nanotesla).</span>
-<a name="l00089"></a>00089 <span class="comment"> **********************************************************************/</span>
-<a name="l00090"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">00090</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">operator()</a>(real lon, real& Bx, real& By, real& Bz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00091"></a>00091 real dummy;
-<a name="l00092"></a>00092 Field(lon, <span class="keyword">false</span>, Bx, By, Bz, dummy, dummy, dummy);
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094 <span class="comment"></span>
-<a name="l00095"></a>00095 <span class="comment"> /**</span>
-<a name="l00096"></a>00096 <span class="comment"> * Evaluate the components of the geomagnetic field and their time</span>
-<a name="l00097"></a>00097 <span class="comment"> * derivatives at a particular longitude.</span>
-<a name="l00098"></a>00098 <span class="comment"> *</span>
-<a name="l00099"></a>00099 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00100"></a>00100 <span class="comment"> * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
-<a name="l00101"></a>00101 <span class="comment"> * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
-<a name="l00102"></a>00102 <span class="comment"> * @param[out] Bz the vertical (up) component of the magnetic field</span>
-<a name="l00103"></a>00103 <span class="comment"> * (nanotesla).</span>
-<a name="l00104"></a>00104 <span class="comment"> * @param[out] Bxt the rate of change of \e Bx (nT/yr).</span>
-<a name="l00105"></a>00105 <span class="comment"> * @param[out] Byt the rate of change of \e By (nT/yr).</span>
-<a name="l00106"></a>00106 <span class="comment"> * @param[out] Bzt the rate of change of \e Bz (nT/yr).</span>
-<a name="l00107"></a>00107 <span class="comment"> **********************************************************************/</span>
-<a name="l00108"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">00108</a> <span class="keywordtype">void</span> operator()(real lon, real& Bx, real& By, real& Bz,
-<a name="l00109"></a>00109 real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00110"></a>00110 Field(lon, <span class="keyword">true</span>, Bx, By, Bz, Bxt, Byt, Bzt);
-<a name="l00111"></a>00111 }<span class="comment"></span>
-<a name="l00112"></a>00112 <span class="comment"> ///@}</span>
-<a name="l00113"></a>00113 <span class="comment"></span><span class="comment"></span>
-<a name="l00114"></a>00114 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00115"></a>00115 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00116"></a>00116 <span class="comment"> ///@{</span>
-<a name="l00117"></a>00117 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00118"></a>00118 <span class="comment"> * @return true if the object has been initialized.</span>
-<a name="l00119"></a>00119 <span class="comment"> **********************************************************************/</span>
-<a name="l00120"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8ec84cd0b1d97b51464ec80d9e2dcf57">00120</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8ec84cd0b1d97b51464ec80d9e2dcf57">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }<span class="comment"></span>
-<a name="l00121"></a>00121 <span class="comment"> /**</span>
-<a name="l00122"></a>00122 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00123"></a>00123 <span class="comment"> * the value inherited from the MagneticModel object used in the</span>
-<a name="l00124"></a>00124 <span class="comment"> * constructor.</span>
-<a name="l00125"></a>00125 <span class="comment"> **********************************************************************/</span>
-<a name="l00126"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a78721d381d21f676152394dd576f2e77">00126</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00127"></a>00127 { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00128"></a>00128 <span class="comment"> /**</span>
-<a name="l00129"></a>00129 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00130"></a>00130 <span class="comment"> * inherited from the MagneticModel object used in the constructor.</span>
-<a name="l00131"></a>00131 <span class="comment"> **********************************************************************/</span>
-<a name="l00132"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a4c3fc40a49332ddcd042e5cb41c3cb2a">00132</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00133"></a>00133 { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00134"></a>00134 <span class="comment"> /**</span>
-<a name="l00135"></a>00135 <span class="comment"> * @return the latitude of the circle (degrees).</span>
-<a name="l00136"></a>00136 <span class="comment"> **********************************************************************/</span>
-<a name="l00137"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#aaf14e89275bffd8253acdbe4840b65d0">00137</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Latitude() <span class="keyword">const</span> throw()
-<a name="l00138"></a>00138 { <span class="keywordflow">return</span> Init() ? _lat : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00139"></a>00139 <span class="comment"> /**</span>
-<a name="l00140"></a>00140 <span class="comment"> * @return the height of the circle (meters).</span>
-<a name="l00141"></a>00141 <span class="comment"> **********************************************************************/</span>
-<a name="l00142"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#aadd95eac0650f195e4d7acdc9819716b">00142</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Height() <span class="keyword">const</span> throw()
-<a name="l00143"></a>00143 { <span class="keywordflow">return</span> Init() ? _h : Math::NaN<real>(); }<span class="comment"></span>
-<a name="l00144"></a>00144 <span class="comment"> /**</span>
-<a name="l00145"></a>00145 <span class="comment"> * @return the time (fractional years).</span>
-<a name="l00146"></a>00146 <span class="comment"> **********************************************************************/</span>
-<a name="l00147"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a44783c9e44f16bbd48cc5061b30ce8e9">00147</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Time() <span class="keyword">const</span> throw()
-<a name="l00148"></a>00148 { <span class="keywordflow">return</span> Init() ? _t : Math::NaN<real>(); }
-<a name="l00149"></a>00149 <span class="comment"></span>
-<a name="l00150"></a>00150 <span class="comment"> ///@}</span>
-<a name="l00151"></a>00151 <span class="comment"></span> };
-<a name="l00152"></a>00152
-<a name="l00153"></a>00153 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00154"></a>00154
-<a name="l00155"></a>00155 <span class="preprocessor">#endif // GEOGRAPHICLIB_MAGNETICCIRCLE_HPP</span>
+<a name="l00034"></a>00034 <span class="comment"> *</span>
+<a name="l00035"></a>00035 <span class="comment"> * <a href="MagneticField.1.html">MagneticField</a> is a command-line utility</span>
+<a name="l00036"></a>00036 <span class="comment"> * providing access to the functionality of MagneticModel and MagneticCircle.</span>
+<a name="l00037"></a>00037 <span class="comment"> **********************************************************************/</span>
+<a name="l00038"></a>00038
+<a name="l00039"></a>00039 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> MagneticCircle {
+<a name="l00040"></a>00040 <span class="keyword">private</span>:
+<a name="l00041"></a>00041 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _lat, _h, _t, _cphi, _sphi, _t1, _dt0;
+<a name="l00044"></a>00044 <span class="keywordtype">bool</span> _interpolate;
+<a name="l00045"></a>00045 CircularEngine _circ0, _circ1;
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 MagneticCircle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t,
+<a name="l00048"></a>00048 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cphi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sphi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dt0,
+<a name="l00049"></a>00049 <span class="keywordtype">bool</span> interpolate,
+<a name="l00050"></a>00050 <span class="keyword">const</span> CircularEngine& circ0, <span class="keyword">const</span> CircularEngine& circ1)
+<a name="l00051"></a>00051 : _a(a)
+<a name="l00052"></a>00052 , _f(f)
+<a name="l00053"></a>00053 , _lat(lat)
+<a name="l00054"></a>00054 , _h(h)
+<a name="l00055"></a>00055 , _t(t)
+<a name="l00056"></a>00056 , _cphi(cphi)
+<a name="l00057"></a>00057 , _sphi(sphi)
+<a name="l00058"></a>00058 , _t1(t1)
+<a name="l00059"></a>00059 , _dt0(dt0)
+<a name="l00060"></a>00060 , _interpolate(interpolate)
+<a name="l00061"></a>00061 , _circ0(circ0)
+<a name="l00062"></a>00062 , _circ1(circ1)
+<a name="l00063"></a>00063 {}
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keywordtype">void</span> Field(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> diffp,
+<a name="l00066"></a>00066 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& By, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bz,
+<a name="l00067"></a>00067 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bxt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Byt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00068"></a>00068
+<a name="l00069"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#af6619ebe4c078705fc49a0d9f950b431">00069</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>; <span class="comment">// MagneticModel calls the private constructor</span>
+<a name="l00070"></a>00070
+<a name="l00071"></a>00071 <span class="keyword">public</span>:
+<a name="l00072"></a>00072 <span class="comment"></span>
+<a name="l00073"></a>00073 <span class="comment"> /**</span>
+<a name="l00074"></a>00074 <span class="comment"> * A default constructor for the normal gravity. This sets up an</span>
+<a name="l00075"></a>00075 <span class="comment"> * uninitialized object which can be later replaced by the</span>
+<a name="l00076"></a>00076 <span class="comment"> * MagneticModel::Circle.</span>
+<a name="l00077"></a>00077 <span class="comment"> **********************************************************************/</span>
+<a name="l00078"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a49170460b1833722ad9bc45b92c86e5a">00078</a> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a49170460b1833722ad9bc45b92c86e5a">MagneticCircle</a>() : _a(-1) {}
+<a name="l00079"></a>00079 <span class="comment"></span>
+<a name="l00080"></a>00080 <span class="comment"> /** \name Compute the magnetic field</span>
+<a name="l00081"></a>00081 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00082"></a>00082 <span class="comment"> ///@{</span>
+<a name="l00083"></a>00083 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00084"></a>00084 <span class="comment"> * Evaluate the components of the geomagnetic field at a particular</span>
+<a name="l00085"></a>00085 <span class="comment"> * longitude.</span>
+<a name="l00086"></a>00086 <span class="comment"> *</span>
+<a name="l00087"></a>00087 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00088"></a>00088 <span class="comment"> * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
+<a name="l00089"></a>00089 <span class="comment"> * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
+<a name="l00090"></a>00090 <span class="comment"> * @param[out] Bz the vertical (up) component of the magnetic field</span>
+<a name="l00091"></a>00091 <span class="comment"> * (nanotesla).</span>
+<a name="l00092"></a>00092 <span class="comment"> **********************************************************************/</span>
+<a name="l00093"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">00093</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">operator()</a>(real lon, real& Bx, real& By, real& Bz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00094"></a>00094 real dummy;
+<a name="l00095"></a>00095 Field(lon, <span class="keyword">false</span>, Bx, By, Bz, dummy, dummy, dummy);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097 <span class="comment"></span>
+<a name="l00098"></a>00098 <span class="comment"> /**</span>
+<a name="l00099"></a>00099 <span class="comment"> * Evaluate the components of the geomagnetic field and their time</span>
+<a name="l00100"></a>00100 <span class="comment"> * derivatives at a particular longitude.</span>
+<a name="l00101"></a>00101 <span class="comment"> *</span>
+<a name="l00102"></a>00102 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00103"></a>00103 <span class="comment"> * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
+<a name="l00104"></a>00104 <span class="comment"> * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
+<a name="l00105"></a>00105 <span class="comment"> * @param[out] Bz the vertical (up) component of the magnetic field</span>
+<a name="l00106"></a>00106 <span class="comment"> * (nanotesla).</span>
+<a name="l00107"></a>00107 <span class="comment"> * @param[out] Bxt the rate of change of \e Bx (nT/yr).</span>
+<a name="l00108"></a>00108 <span class="comment"> * @param[out] Byt the rate of change of \e By (nT/yr).</span>
+<a name="l00109"></a>00109 <span class="comment"> * @param[out] Bzt the rate of change of \e Bz (nT/yr).</span>
+<a name="l00110"></a>00110 <span class="comment"> **********************************************************************/</span>
+<a name="l00111"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">00111</a> <span class="keywordtype">void</span> operator()(real lon, real& Bx, real& By, real& Bz,
+<a name="l00112"></a>00112 real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00113"></a>00113 Field(lon, <span class="keyword">true</span>, Bx, By, Bz, Bxt, Byt, Bzt);
+<a name="l00114"></a>00114 }<span class="comment"></span>
+<a name="l00115"></a>00115 <span class="comment"> ///@}</span>
+<a name="l00116"></a>00116 <span class="comment"></span><span class="comment"></span>
+<a name="l00117"></a>00117 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00118"></a>00118 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00119"></a>00119 <span class="comment"> ///@{</span>
+<a name="l00120"></a>00120 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00121"></a>00121 <span class="comment"> * @return true if the object has been initialized.</span>
+<a name="l00122"></a>00122 <span class="comment"> **********************************************************************/</span>
+<a name="l00123"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8ec84cd0b1d97b51464ec80d9e2dcf57">00123</a> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html#a8ec84cd0b1d97b51464ec80d9e2dcf57">Init</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a > 0; }<span class="comment"></span>
+<a name="l00124"></a>00124 <span class="comment"> /**</span>
+<a name="l00125"></a>00125 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00126"></a>00126 <span class="comment"> * the value inherited from the MagneticModel object used in the</span>
+<a name="l00127"></a>00127 <span class="comment"> * constructor.</span>
+<a name="l00128"></a>00128 <span class="comment"> **********************************************************************/</span>
+<a name="l00129"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a78721d381d21f676152394dd576f2e77">00129</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00130"></a>00130 { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00131"></a>00131 <span class="comment"> /**</span>
+<a name="l00132"></a>00132 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00133"></a>00133 <span class="comment"> * inherited from the MagneticModel object used in the constructor.</span>
+<a name="l00134"></a>00134 <span class="comment"> **********************************************************************/</span>
+<a name="l00135"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a4c3fc40a49332ddcd042e5cb41c3cb2a">00135</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00136"></a>00136 { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00137"></a>00137 <span class="comment"> /**</span>
+<a name="l00138"></a>00138 <span class="comment"> * @return the latitude of the circle (degrees).</span>
+<a name="l00139"></a>00139 <span class="comment"> **********************************************************************/</span>
+<a name="l00140"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#aaf14e89275bffd8253acdbe4840b65d0">00140</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Latitude() <span class="keyword">const</span> throw()
+<a name="l00141"></a>00141 { <span class="keywordflow">return</span> Init() ? _lat : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00142"></a>00142 <span class="comment"> /**</span>
+<a name="l00143"></a>00143 <span class="comment"> * @return the height of the circle (meters).</span>
+<a name="l00144"></a>00144 <span class="comment"> **********************************************************************/</span>
+<a name="l00145"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#aadd95eac0650f195e4d7acdc9819716b">00145</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Height() <span class="keyword">const</span> throw()
+<a name="l00146"></a>00146 { <span class="keywordflow">return</span> Init() ? _h : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }<span class="comment"></span>
+<a name="l00147"></a>00147 <span class="comment"> /**</span>
+<a name="l00148"></a>00148 <span class="comment"> * @return the time (fractional years).</span>
+<a name="l00149"></a>00149 <span class="comment"> **********************************************************************/</span>
+<a name="l00150"></a><a class="code" href="classGeographicLib_1_1MagneticCircle.html#a44783c9e44f16bbd48cc5061b30ce8e9">00150</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Time() <span class="keyword">const</span> throw()
+<a name="l00151"></a>00151 { <span class="keywordflow">return</span> Init() ? _t : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
+<a name="l00152"></a>00152 <span class="comment"></span>
+<a name="l00153"></a>00153 <span class="comment"> ///@}</span>
+<a name="l00154"></a>00154 <span class="comment"></span> };
+<a name="l00155"></a>00155
+<a name="l00156"></a>00156 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="preprocessor">#endif // GEOGRAPHICLIB_MAGNETICCIRCLE_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticField.1.html b/doc/html/MagneticField.1.html
index 8288971..cf39b66 100644
--- a/doc/html/MagneticField.1.html
+++ b/doc/html/MagneticField.1.html
@@ -48,8 +48,11 @@
<p><strong>MagneticField</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ]
[ <strong>-t</strong> <em>time</em> | <strong>-c</strong> <em>time</em> <em>lat</em> <em>h</em> ]
[ <strong>-r</strong> ] [ <strong>-T</strong> <em>tguard</em> ] [ <strong>-H</strong> <em>hguard</em> ] [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -144,6 +147,15 @@ places.</p>
<p>print information about the magnetic model on standard error before
processing the input.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -169,8 +181,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -261,7 +279,7 @@ way.</p>
<h1><a name="examples">EXAMPLES</a></h1>
<p>The magnetic field from WMM2010 in Timbuktu on 2012-01-01</p>
<pre>
- echo 2012-01-01 "16d46'33N" "3d00'34W" 300 | MagneticField -r
+ echo 2012-01-01 16:46:33N 3:00:34W 300 | MagneticField -r
=> -2.55 12.43 33771.0 33737.6 -1500.5 7446.0 34582.1
0.10 -0.07 34.3 36.8 54.4 -35.3 25.9</pre>
<p>The first two numbers returned are the declination and inclination of
diff --git a/doc/html/MagneticField_8cpp.html b/doc/html/MagneticField_8cpp.html
index 23b7dec..e34d4d4 100644
--- a/doc/html/MagneticField_8cpp.html
+++ b/doc/html/MagneticField_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticField.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for evaluating magnetic fields. </p>
-<p>Copyright (c) Charles Karney (2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o MagneticField \ <a class="el" href="MagneticField_8cpp.html" title="Command line utility for evaluating magnetic fields.">MagneticField.cpp</a> \ ../src/CircularEngine.cpp \ ../src/DMS.cpp \ ../src/Geocentric.cpp \ ../src/MagneticCircle.cpp \ ../src/MagneticModel.cpp \ ../src/SphericalEngine.cpp \ ../src/Utility.cpp</p>
<p>See the <a href="MagneticField.1.html">man page</a> for usage information. </p>
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="MagneticField_8cpp_source.html#l00035">35</a> of file <a class="el" href="MagneticField_8cpp_source.html">MagneticField.cpp</a>.</p>
-<p>References <a class="el" href="MagneticModel_8cpp_source.html#l00207">GeographicLib::MagneticModel::Circle()</a>, <a class="el" href="MagneticModel_8hpp_source.html#l00234">GeographicLib::MagneticModel::DateTime()</a>, <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, <a class="el" href="MagneticModel_8cpp_source.html#l00250">GeographicLib::MagneticModel::DefaultMa [...]
+<p>References <a class="el" href="MagneticModel_8cpp_source.html#l00250">GeographicLib::MagneticModel::DefaultMagneticName()</a>, <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8hpp_source.html#l00078">GeographicLib::DMS::LONGITUDE</a>, <a class="el" href="MagneticModel_8cpp_source.html#l00237">GeographicLib::MagneticModel::DefaultMagneticPath()</a>, <a class="el" href="MagneticModel_8hpp_source.html#l00286">GeographicLib::Magne [...]
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticField_8cpp_source.html b/doc/html/MagneticField_8cpp_source.html
index 354eeb2..e67beef 100644
--- a/doc/html/MagneticField_8cpp_source.html
+++ b/doc/html/MagneticField_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticField.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file MagneticField.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for evaluating magnetic fields</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under</span>
-<a name="l00006"></a>00006 <span class="comment"> * the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -84,298 +99,322 @@
<a name="l00035"></a><a class="code" href="MagneticField_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00035</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00036"></a>00036 <span class="keywordflow">try</span> {
<a name="l00037"></a>00037 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00038"></a>00038 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00038"></a>00038 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00039"></a>00039 <span class="keywordtype">bool</span> verbose = <span class="keyword">false</span>;
<a name="l00040"></a>00040 std::string dir;
<a name="l00041"></a>00041 std::string model = <a class="code" href="classGeographicLib_1_1MagneticModel.html#ab2ac8cc598c0d9a6b448c9a45e9642d9">MagneticModel::DefaultMagneticName</a>();
-<a name="l00042"></a>00042 std::string istring, ifile, ofile;
-<a name="l00043"></a>00043 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> time = 0, lat = 0, h = 0;
-<a name="l00044"></a>00044 <span class="keywordtype">bool</span> timeset = <span class="keyword">false</span>, circle = <span class="keyword">false</span>, rate = <span class="keyword">false</span>;
-<a name="l00045"></a>00045 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hguard = 500000, tguard = 50;
-<a name="l00046"></a>00046 <span class="keywordtype">int</span> prec = 1;
-<a name="l00047"></a>00047
-<a name="l00048"></a>00048 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00049"></a>00049 std::string arg(argv[m]);
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
-<a name="l00051"></a>00051 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00052"></a>00052 model = argv[m];
-<a name="l00053"></a>00053 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
-<a name="l00054"></a>00054 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00055"></a>00055 dir = argv[m];
-<a name="l00056"></a>00056 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>) {
-<a name="l00057"></a>00057 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
-<a name="l00059"></a>00059 time = Utility::fractionalyear<real>(std::string(argv[m]));
-<a name="l00060"></a>00060 timeset = <span class="keyword">true</span>;
-<a name="l00061"></a>00061 circle = <span class="keyword">false</span>;
-<a name="l00062"></a>00062 }
-<a name="l00063"></a>00063 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00064"></a>00064 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00065"></a>00065 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00066"></a>00066 <span class="keywordflow">return</span> 1;
-<a name="l00067"></a>00067 }
-<a name="l00068"></a>00068 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
-<a name="l00069"></a>00069 <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00070"></a>00070 <span class="keywordflow">try</span> {
-<a name="l00071"></a>00071 time = Utility::fractionalyear<real>(std::string(argv[++m]));
-<a name="l00072"></a>00072 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00073"></a>00073 lat = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
-<a name="l00074"></a>00074 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
-<a name="l00075"></a>00075 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on latitude"</span>);
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (!(std::abs(lat) <= 90))
-<a name="l00077"></a>00077 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude not in [-90d, 90d]"</span>);
-<a name="l00078"></a>00078 h = Utility::num<real>(std::string(argv[++m]));
-<a name="l00079"></a>00079 timeset = <span class="keyword">false</span>;
-<a name="l00080"></a>00080 circle = <span class="keyword">true</span>;
-<a name="l00081"></a>00081 }
-<a name="l00082"></a>00082 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00083"></a>00083 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00084"></a>00084 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00085"></a>00085 <span class="keywordflow">return</span> 1;
-<a name="l00086"></a>00086 }
-<a name="l00087"></a>00087 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00088"></a>00088 rate = !rate;
-<a name="l00089"></a>00089 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
-<a name="l00090"></a>00090 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00091"></a>00091 <span class="keywordflow">try</span> {
-<a name="l00092"></a>00092 prec = Utility::num<int>(std::string(argv[m]));
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
-<a name="l00095"></a>00095 std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> 1;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-T"</span>) {
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00100"></a>00100 <span class="keywordflow">try</span> {
-<a name="l00101"></a>00101 tguard = Utility::num<real>(std::string(argv[m]));
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00104"></a>00104 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00105"></a>00105 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00106"></a>00106 <span class="keywordflow">return</span> 1;
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-H"</span>) {
-<a name="l00109"></a>00109 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00110"></a>00110 <span class="keywordflow">try</span> {
-<a name="l00111"></a>00111 hguard = Utility::num<real>(std::string(argv[m]));
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00114"></a>00114 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00115"></a>00115 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> 1;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
-<a name="l00119"></a>00119 verbose = <span class="keyword">true</span>;
-<a name="l00120"></a>00120 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00122"></a>00122 istring = argv[m];
-<a name="l00123"></a>00123 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00124"></a>00124 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00125"></a>00125 ifile = argv[m];
-<a name="l00126"></a>00126 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00128"></a>00128 ofile = argv[m];
-<a name="l00129"></a>00129 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00130"></a>00130 std::cout
-<a name="l00131"></a>00131 << argv[0]
-<a name="l00132"></a>00132 << <span class="stringliteral">": $Id: 9eed3e6df94c67923b1730fe0dae826a5a73163e $\n"</span>
-<a name="l00133"></a>00133 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00134"></a>00134 <span class="keywordflow">return</span> 0;
-<a name="l00135"></a>00135 } <span class="keywordflow">else</span> {
-<a name="l00136"></a>00136 <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00137"></a>00137 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
-<a name="l00138"></a>00138 std::cout<< <span class="stringliteral">"\nDefault magnetic path = \""</span>
-<a name="l00139"></a>00139 << <a class="code" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">MagneticModel::DefaultMagneticPath</a>()
-<a name="l00140"></a>00140 << <span class="stringliteral">"\"\nDefault magnetic name = \""</span>
-<a name="l00141"></a>00141 << <a class="code" href="classGeographicLib_1_1MagneticModel.html#ab2ac8cc598c0d9a6b448c9a45e9642d9">MagneticModel::DefaultMagneticName</a>()
-<a name="l00142"></a>00142 << <span class="stringliteral">"\"\n"</span>;
-<a name="l00143"></a>00143 <span class="keywordflow">return</span> retval;
-<a name="l00144"></a>00144 }
-<a name="l00145"></a>00145 }
-<a name="l00146"></a>00146
-<a name="l00147"></a>00147 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00148"></a>00148 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00149"></a>00149 <span class="keywordflow">return</span> 1;
-<a name="l00150"></a>00150 }
-<a name="l00151"></a>00151 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00152"></a>00152 std::ifstream infile;
-<a name="l00153"></a>00153 std::istringstream instring;
-<a name="l00154"></a>00154 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00155"></a>00155 infile.open(ifile.c_str());
-<a name="l00156"></a>00156 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00157"></a>00157 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00158"></a>00158 <span class="keywordflow">return</span> 1;
-<a name="l00159"></a>00159 }
-<a name="l00160"></a>00160 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00161"></a>00161 std::string::size_type m = 0;
-<a name="l00162"></a>00162 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00163"></a>00163 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00164"></a>00164 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00165"></a>00165 <span class="keywordflow">break</span>;
-<a name="l00166"></a>00166 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00167"></a>00167 }
-<a name="l00168"></a>00168 instring.str(istring);
-<a name="l00169"></a>00169 }
-<a name="l00170"></a>00170 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00171"></a>00171 (!istring.empty() ? &instring : &std::cin);
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 std::ofstream outfile;
-<a name="l00174"></a>00174 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00176"></a>00176 outfile.open(ofile.c_str());
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00178"></a>00178 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00179"></a>00179 <span class="keywordflow">return</span> 1;
-<a name="l00180"></a>00180 }
-<a name="l00181"></a>00181 }
-<a name="l00182"></a>00182 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00042"></a>00042 std::string istring, ifile, ofile, cdelim;
+<a name="l00043"></a>00043 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00044"></a>00044 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> time = 0, lat = 0, h = 0;
+<a name="l00045"></a>00045 <span class="keywordtype">bool</span> timeset = <span class="keyword">false</span>, circle = <span class="keyword">false</span>, rate = <span class="keyword">false</span>;
+<a name="l00046"></a>00046 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> hguard = 500000, tguard = 50;
+<a name="l00047"></a>00047 <span class="keywordtype">int</span> prec = 1;
+<a name="l00048"></a>00048
+<a name="l00049"></a>00049 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00050"></a>00050 std::string arg(argv[m]);
+<a name="l00051"></a>00051 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-n"</span>) {
+<a name="l00052"></a>00052 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00053"></a>00053 model = argv[m];
+<a name="l00054"></a>00054 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-d"</span>) {
+<a name="l00055"></a>00055 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00056"></a>00056 dir = argv[m];
+<a name="l00057"></a>00057 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>) {
+<a name="l00058"></a>00058 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00059"></a>00059 <span class="keywordflow">try</span> {
+<a name="l00060"></a>00060 time = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fractionalyear<real>(std::string(argv[m]));
+<a name="l00061"></a>00061 timeset = <span class="keyword">true</span>;
+<a name="l00062"></a>00062 circle = <span class="keyword">false</span>;
+<a name="l00063"></a>00063 }
+<a name="l00064"></a>00064 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00065"></a>00065 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00066"></a>00066 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00067"></a>00067 <span class="keywordflow">return</span> 1;
+<a name="l00068"></a>00068 }
+<a name="l00069"></a>00069 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-c"</span>) {
+<a name="l00070"></a>00070 <span class="keywordflow">if</span> (m + 3 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00071"></a>00071 <span class="keywordflow">try</span> {
+<a name="l00072"></a>00072 time = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fractionalyear<real>(std::string(argv[++m]));
+<a name="l00073"></a>00073 <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00074"></a>00074 lat = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[++m]), ind);
+<a name="l00075"></a>00075 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">DMS::LONGITUDE</a>)
+<a name="l00076"></a>00076 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on latitude"</span>);
+<a name="l00077"></a>00077 <span class="keywordflow">if</span> (!(std::abs(lat) <= 90))
+<a name="l00078"></a>00078 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude not in [-90d, 90d]"</span>);
+<a name="l00079"></a>00079 h = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[++m]));
+<a name="l00080"></a>00080 timeset = <span class="keyword">false</span>;
+<a name="l00081"></a>00081 circle = <span class="keyword">true</span>;
+<a name="l00082"></a>00082 }
+<a name="l00083"></a>00083 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00084"></a>00084 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00085"></a>00085 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> 1;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00089"></a>00089 rate = !rate;
+<a name="l00090"></a>00090 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-p"</span>) {
+<a name="l00091"></a>00091 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00092"></a>00092 <span class="keywordflow">try</span> {
+<a name="l00093"></a>00093 prec = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(std::string(argv[m]));
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception&) {
+<a name="l00096"></a>00096 std::cerr << <span class="stringliteral">"Precision "</span> << argv[m] << <span class="stringliteral">" is not a number\n"</span>;
+<a name="l00097"></a>00097 <span class="keywordflow">return</span> 1;
+<a name="l00098"></a>00098 }
+<a name="l00099"></a>00099 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-T"</span>) {
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00101"></a>00101 <span class="keywordflow">try</span> {
+<a name="l00102"></a>00102 tguard = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m]));
+<a name="l00103"></a>00103 }
+<a name="l00104"></a>00104 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00105"></a>00105 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00106"></a>00106 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00107"></a>00107 <span class="keywordflow">return</span> 1;
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-H"</span>) {
+<a name="l00110"></a>00110 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00111"></a>00111 <span class="keywordflow">try</span> {
+<a name="l00112"></a>00112 hguard = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m]));
+<a name="l00113"></a>00113 }
+<a name="l00114"></a>00114 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00115"></a>00115 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00116"></a>00116 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00117"></a>00117 <span class="keywordflow">return</span> 1;
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-v"</span>)
+<a name="l00120"></a>00120 verbose = <span class="keyword">true</span>;
+<a name="l00121"></a>00121 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00122"></a>00122 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00123"></a>00123 istring = argv[m];
+<a name="l00124"></a>00124 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00126"></a>00126 ifile = argv[m];
+<a name="l00127"></a>00127 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00128"></a>00128 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00129"></a>00129 ofile = argv[m];
+<a name="l00130"></a>00130 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00132"></a>00132 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00133"></a>00133 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00134"></a>00134 <span class="keywordflow">return</span> 1;
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 lsep = argv[m][0];
+<a name="l00137"></a>00137 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00138"></a>00138 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00139"></a>00139 cdelim = argv[m];
+<a name="l00140"></a>00140 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00141"></a>00141 std::cout
+<a name="l00142"></a>00142 << argv[0]
+<a name="l00143"></a>00143 << <span class="stringliteral">": $Id: cd55a73582dee908c12a23bee33362e7607268af $\n"</span>
+<a name="l00144"></a>00144 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00145"></a>00145 <span class="keywordflow">return</span> 0;
+<a name="l00146"></a>00146 } <span class="keywordflow">else</span> {
+<a name="l00147"></a>00147 <span class="keywordtype">int</span> retval = usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00148"></a>00148 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-h"</span>)
+<a name="l00149"></a>00149 std::cout<< <span class="stringliteral">"\nDefault magnetic path = \""</span>
+<a name="l00150"></a>00150 << <a class="code" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">MagneticModel::DefaultMagneticPath</a>()
+<a name="l00151"></a>00151 << <span class="stringliteral">"\"\nDefault magnetic name = \""</span>
+<a name="l00152"></a>00152 << <a class="code" href="classGeographicLib_1_1MagneticModel.html#ab2ac8cc598c0d9a6b448c9a45e9642d9">MagneticModel::DefaultMagneticName</a>()
+<a name="l00153"></a>00153 << <span class="stringliteral">"\"\n"</span>;
+<a name="l00154"></a>00154 <span class="keywordflow">return</span> retval;
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 }
+<a name="l00157"></a>00157
+<a name="l00158"></a>00158 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00159"></a>00159 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00160"></a>00160 <span class="keywordflow">return</span> 1;
+<a name="l00161"></a>00161 }
+<a name="l00162"></a>00162 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00163"></a>00163 std::ifstream infile;
+<a name="l00164"></a>00164 std::istringstream instring;
+<a name="l00165"></a>00165 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00166"></a>00166 infile.open(ifile.c_str());
+<a name="l00167"></a>00167 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00168"></a>00168 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00169"></a>00169 <span class="keywordflow">return</span> 1;
+<a name="l00170"></a>00170 }
+<a name="l00171"></a>00171 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00172"></a>00172 std::string::size_type m = 0;
+<a name="l00173"></a>00173 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00174"></a>00174 m = istring.find(lsep, m);
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00176"></a>00176 <span class="keywordflow">break</span>;
+<a name="l00177"></a>00177 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00178"></a>00178 }
+<a name="l00179"></a>00179 instring.str(istring);
+<a name="l00180"></a>00180 }
+<a name="l00181"></a>00181 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00182"></a>00182 (!istring.empty() ? &instring : &std::cin);
<a name="l00183"></a>00183
-<a name="l00184"></a>00184 tguard = std::max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), tguard);
-<a name="l00185"></a>00185 hguard = std::max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), hguard);
-<a name="l00186"></a>00186 prec = std::min(10, std::max(0, prec));
-<a name="l00187"></a>00187 <span class="keywordtype">int</span> retval = 0;
-<a name="l00188"></a>00188 <span class="keywordflow">try</span> {
-<a name="l00189"></a>00189 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> m(model, dir);
-<a name="l00190"></a>00190 <span class="keywordflow">if</span> ((timeset || circle)
-<a name="l00191"></a>00191 && (!Math::isfinite<real>(time) ||
-<a name="l00192"></a>00192 time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() - tguard ||
-<a name="l00193"></a>00193 time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() + tguard))
-<a name="l00194"></a>00194 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Time "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(time) +
-<a name="l00195"></a>00195 <span class="stringliteral">" too far outside allowed range ["</span> +
-<a name="l00196"></a>00196 <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>()) + <span class="stringliteral">","</span> +
-<a name="l00197"></a>00197 <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()) + <span class="stringliteral">"]"</span>);
-<a name="l00198"></a>00198 <span class="keywordflow">if</span> (circle
-<a name="l00199"></a>00199 && (!Math::isfinite<real>(h) ||
-<a name="l00200"></a>00200 h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() - hguard ||
-<a name="l00201"></a>00201 h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() + hguard))
-<a name="l00202"></a>00202 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(h/1000) +
-<a name="l00203"></a>00203 <span class="stringliteral">"km too far outside allowed range ["</span> +
-<a name="l00204"></a>00204 <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000) + <span class="stringliteral">"km,"</span> +
-<a name="l00205"></a>00205 <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000) + <span class="stringliteral">"km]"</span>);
-<a name="l00206"></a>00206 <span class="keywordflow">if</span> (verbose) {
-<a name="l00207"></a>00207 std::cerr << <span class="stringliteral">"Magnetic file: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">MagneticFile</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00208"></a>00208 << <span class="stringliteral">"Name: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">MagneticModelName</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00209"></a>00209 << <span class="stringliteral">"Description: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">Description</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00210"></a>00210 << <span class="stringliteral">"Date & Time: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">DateTime</a>() << <span class="stringliteral">"\n"</span>
-<a name="l00211"></a>00211 << <span class="stringliteral">"Time range: ["</span>
-<a name="l00212"></a>00212 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span>
-<a name="l00213"></a>00213 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>
-<a name="l00214"></a>00214 << <span class="stringliteral">"Height range: ["</span>
-<a name="l00215"></a>00215 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
-<a name="l00216"></a>00216 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218 <span class="keywordflow">if</span> ((timeset || circle) && (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()))
-<a name="l00219"></a>00219 std::cerr << <span class="stringliteral">"WARNING: Time "</span> << time
-<a name="l00220"></a>00220 << <span class="stringliteral">" outside allowed range ["</span>
-<a name="l00221"></a>00221 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>;
-<a name="l00222"></a>00222 <span class="keywordflow">if</span> (circle && (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()))
-<a name="l00223"></a>00223 std::cerr << <span class="stringliteral">"WARNING: Height "</span> << h/1000
-<a name="l00224"></a>00224 << <span class="stringliteral">"km outside allowed range ["</span>
-<a name="l00225"></a>00225 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
-<a name="l00226"></a>00226 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
-<a name="l00227"></a>00227 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> c(circle ? m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">Circle</a>(time, lat, h) :
-<a name="l00228"></a>00228 <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>());
-<a name="l00229"></a>00229 std::string s, stra, strb;
-<a name="l00230"></a>00230 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00231"></a>00231 <span class="keywordflow">try</span> {
-<a name="l00232"></a>00232 std::istringstream str(s);
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (!(timeset || circle)) {
-<a name="l00234"></a>00234 <span class="keywordflow">if</span> (!(str >> stra))
-<a name="l00235"></a>00235 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00236"></a>00236 time = Utility::fractionalyear<real>(stra);
-<a name="l00237"></a>00237 <span class="keywordflow">if</span> (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() - tguard || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() + tguard)
-<a name="l00238"></a>00238 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Time "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(time) +
-<a name="l00239"></a>00239 <span class="stringliteral">" too far outside allowed range ["</span> +
-<a name="l00240"></a>00240 <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>()) + <span class="stringliteral">","</span> +
-<a name="l00241"></a>00241 <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()) +
-<a name="l00242"></a>00242 <span class="stringliteral">"]"</span>);
-<a name="l00243"></a>00243 <span class="keywordflow">if</span> (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>())
-<a name="l00244"></a>00244 std::cerr << <span class="stringliteral">"WARNING: Time "</span> << time
-<a name="l00245"></a>00245 << <span class="stringliteral">" outside allowed range ["</span>
-<a name="l00246"></a>00246 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>;
-<a name="l00247"></a>00247 }
-<a name="l00248"></a>00248 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon;
-<a name="l00249"></a>00249 <span class="keywordflow">if</span> (circle) {
-<a name="l00250"></a>00250 <span class="keywordflow">if</span> (!(str >> strb))
-<a name="l00251"></a>00251 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00252"></a>00252 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00253"></a>00253 lon = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb, ind);
-<a name="l00254"></a>00254 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
-<a name="l00255"></a>00255 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on "</span> + strb);
-<a name="l00256"></a>00256 <span class="keywordflow">if</span> (lon < -180 || lon > 360)
-<a name="l00257"></a>00257 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + strb + <span class="stringliteral">"not in [-180d, 360d]"</span>);
-<a name="l00258"></a>00258 } <span class="keywordflow">else</span> {
-<a name="l00259"></a>00259 <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00260"></a>00260 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00261"></a>00261 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00262"></a>00262 h = 0; <span class="comment">// h is optional</span>
-<a name="l00263"></a>00263 <span class="keywordflow">if</span> (str >> h) {
-<a name="l00264"></a>00264 <span class="keywordflow">if</span> (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() - hguard || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() + hguard)
-<a name="l00265"></a>00265 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(h/1000) +
-<a name="l00266"></a>00266 <span class="stringliteral">"km too far outside allowed range ["</span> +
-<a name="l00267"></a>00267 <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000) + <span class="stringliteral">"km,"</span> +
-<a name="l00268"></a>00268 <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000) + <span class="stringliteral">"km]"</span>);
-<a name="l00269"></a>00269 <span class="keywordflow">if</span> (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>())
-<a name="l00270"></a>00270 std::cerr << <span class="stringliteral">"WARNING: Height "</span> << h/1000
-<a name="l00271"></a>00271 << <span class="stringliteral">"km outside allowed range ["</span>
-<a name="l00272"></a>00272 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
-<a name="l00273"></a>00273 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
-<a name="l00274"></a>00274 }
-<a name="l00275"></a>00275 <span class="keywordflow">else</span>
-<a name="l00276"></a>00276 str.clear();
-<a name="l00277"></a>00277 }
-<a name="l00278"></a>00278 <span class="keywordflow">if</span> (str >> stra)
-<a name="l00279"></a>00279 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra junk in input: "</span> + s);
-<a name="l00280"></a>00280 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> bx, by, bz, bxt, byt, bzt;
-<a name="l00281"></a>00281 <span class="keywordflow">if</span> (circle)
-<a name="l00282"></a>00282 c(lon, bx, by, bz, bxt, byt, bzt);
-<a name="l00283"></a>00283 <span class="keywordflow">else</span>
-<a name="l00284"></a>00284 m(time, lat, lon, h, bx, by, bz, bxt, byt, bzt);
-<a name="l00285"></a>00285 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H, F, D, I, Ht, Ft, Dt, It;
-<a name="l00286"></a>00286 <a class="code" href="classGeographicLib_1_1MagneticModel.html#af553c42337b9a9a1d51b81fea7083ea2">MagneticModel::FieldComponents</a>(bx, by, bz, bxt, byt, bzt,
-<a name="l00287"></a>00287 H, F, D, I, Ht, Ft, Dt, It);
-<a name="l00288"></a>00288
-<a name="l00289"></a>00289 *output << <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(D, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
-<a name="l00290"></a>00290 << <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(I, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
-<a name="l00291"></a>00291 << Utility::str<real>(H, prec) << <span class="stringliteral">" "</span>
-<a name="l00292"></a>00292 << Utility::str<real>(by, prec) << <span class="stringliteral">" "</span>
-<a name="l00293"></a>00293 << Utility::str<real>(bx, prec) << <span class="stringliteral">" "</span>
-<a name="l00294"></a>00294 << Utility::str<real>(-bz, prec) << <span class="stringliteral">" "</span>
-<a name="l00295"></a>00295 << Utility::str<real>(F, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00296"></a>00296 <span class="keywordflow">if</span> (rate)
-<a name="l00297"></a>00297 *output << <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(Dt, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
-<a name="l00298"></a>00298 << <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(It, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
-<a name="l00299"></a>00299 << Utility::str<real>(Ht, prec) << <span class="stringliteral">" "</span>
-<a name="l00300"></a>00300 << Utility::str<real>(byt, prec) << <span class="stringliteral">" "</span>
-<a name="l00301"></a>00301 << Utility::str<real>(bxt, prec) << <span class="stringliteral">" "</span>
-<a name="l00302"></a>00302 << Utility::str<real>(-bzt, prec) << <span class="stringliteral">" "</span>
-<a name="l00303"></a>00303 << Utility::str<real>(Ft, prec) << <span class="stringliteral">"\n"</span>;
-<a name="l00304"></a>00304 }
-<a name="l00305"></a>00305 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00306"></a>00306 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00307"></a>00307 retval = 1;
-<a name="l00308"></a>00308 }
-<a name="l00309"></a>00309 }
-<a name="l00310"></a>00310 }
-<a name="l00311"></a>00311 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00312"></a>00312 std::cerr << <span class="stringliteral">"Error reading "</span> << model << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00313"></a>00313 retval = 1;
-<a name="l00314"></a>00314 }
-<a name="l00315"></a>00315 <span class="keywordflow">return</span> retval;
-<a name="l00316"></a>00316 }
-<a name="l00317"></a>00317 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00318"></a>00318 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00319"></a>00319 <span class="keywordflow">return</span> 1;
-<a name="l00320"></a>00320 }
-<a name="l00321"></a>00321 <span class="keywordflow">catch</span> (...) {
-<a name="l00322"></a>00322 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00323"></a>00323 <span class="keywordflow">return</span> 1;
-<a name="l00324"></a>00324 }
-<a name="l00325"></a>00325 }
+<a name="l00184"></a>00184 std::ofstream outfile;
+<a name="l00185"></a>00185 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00186"></a>00186 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00187"></a>00187 outfile.open(ofile.c_str());
+<a name="l00188"></a>00188 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00189"></a>00189 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00190"></a>00190 <span class="keywordflow">return</span> 1;
+<a name="l00191"></a>00191 }
+<a name="l00192"></a>00192 }
+<a name="l00193"></a>00193 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00194"></a>00194
+<a name="l00195"></a>00195 tguard = std::max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), tguard);
+<a name="l00196"></a>00196 hguard = std::max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), hguard);
+<a name="l00197"></a>00197 prec = std::min(10, std::max(0, prec));
+<a name="l00198"></a>00198 <span class="keywordtype">int</span> retval = 0;
+<a name="l00199"></a>00199 <span class="keywordflow">try</span> {
+<a name="l00200"></a>00200 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> m(model, dir);
+<a name="l00201"></a>00201 <span class="keywordflow">if</span> ((timeset || circle)
+<a name="l00202"></a>00202 && (!Math::isfinite<real>(time) ||
+<a name="l00203"></a>00203 time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() - tguard ||
+<a name="l00204"></a>00204 time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() + tguard))
+<a name="l00205"></a>00205 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Time "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(time) +
+<a name="l00206"></a>00206 <span class="stringliteral">" too far outside allowed range ["</span> +
+<a name="l00207"></a>00207 <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>()) + <span class="stringliteral">","</span> +
+<a name="l00208"></a>00208 <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()) + <span class="stringliteral">"]"</span>);
+<a name="l00209"></a>00209 <span class="keywordflow">if</span> (circle
+<a name="l00210"></a>00210 && (!Math::isfinite<real>(h) ||
+<a name="l00211"></a>00211 h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() - hguard ||
+<a name="l00212"></a>00212 h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() + hguard))
+<a name="l00213"></a>00213 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(h/1000) +
+<a name="l00214"></a>00214 <span class="stringliteral">"km too far outside allowed range ["</span> +
+<a name="l00215"></a>00215 <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000) + <span class="stringliteral">"km,"</span> +
+<a name="l00216"></a>00216 <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000) + <span class="stringliteral">"km]"</span>);
+<a name="l00217"></a>00217 <span class="keywordflow">if</span> (verbose) {
+<a name="l00218"></a>00218 std::cerr << <span class="stringliteral">"Magnetic file: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">MagneticFile</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00219"></a>00219 << <span class="stringliteral">"Name: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">MagneticModelName</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00220"></a>00220 << <span class="stringliteral">"Description: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">Description</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00221"></a>00221 << <span class="stringliteral">"Date & Time: "</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">DateTime</a>() << <span class="stringliteral">"\n"</span>
+<a name="l00222"></a>00222 << <span class="stringliteral">"Time range: ["</span>
+<a name="l00223"></a>00223 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span>
+<a name="l00224"></a>00224 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>
+<a name="l00225"></a>00225 << <span class="stringliteral">"Height range: ["</span>
+<a name="l00226"></a>00226 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
+<a name="l00227"></a>00227 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
+<a name="l00228"></a>00228 }
+<a name="l00229"></a>00229 <span class="keywordflow">if</span> ((timeset || circle) && (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()))
+<a name="l00230"></a>00230 std::cerr << <span class="stringliteral">"WARNING: Time "</span> << time
+<a name="l00231"></a>00231 << <span class="stringliteral">" outside allowed range ["</span>
+<a name="l00232"></a>00232 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>;
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (circle && (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()))
+<a name="l00234"></a>00234 std::cerr << <span class="stringliteral">"WARNING: Height "</span> << h/1000
+<a name="l00235"></a>00235 << <span class="stringliteral">"km outside allowed range ["</span>
+<a name="l00236"></a>00236 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
+<a name="l00237"></a>00237 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
+<a name="l00238"></a>00238 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> c(circle ? m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">Circle</a>(time, lat, h) :
+<a name="l00239"></a>00239 <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>());
+<a name="l00240"></a>00240 std::string s, stra, strb;
+<a name="l00241"></a>00241 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00242"></a>00242 <span class="keywordflow">try</span> {
+<a name="l00243"></a>00243 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00244"></a>00244 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00245"></a>00245 std::string::size_type m = s.find(cdelim);
+<a name="l00246"></a>00246 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00247"></a>00247 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00248"></a>00248 s = s.substr(0, m);
+<a name="l00249"></a>00249 }
+<a name="l00250"></a>00250 }
+<a name="l00251"></a>00251 std::istringstream str(s);
+<a name="l00252"></a>00252 <span class="keywordflow">if</span> (!(timeset || circle)) {
+<a name="l00253"></a>00253 <span class="keywordflow">if</span> (!(str >> stra))
+<a name="l00254"></a>00254 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00255"></a>00255 time = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fractionalyear<real>(stra);
+<a name="l00256"></a>00256 <span class="keywordflow">if</span> (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() - tguard || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() + tguard)
+<a name="l00257"></a>00257 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Time "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(time) +
+<a name="l00258"></a>00258 <span class="stringliteral">" too far outside allowed range ["</span> +
+<a name="l00259"></a>00259 <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>()) + <span class="stringliteral">","</span> +
+<a name="l00260"></a>00260 <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>()) +
+<a name="l00261"></a>00261 <span class="stringliteral">"]"</span>);
+<a name="l00262"></a>00262 <span class="keywordflow">if</span> (time < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() || time > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>())
+<a name="l00263"></a>00263 std::cerr << <span class="stringliteral">"WARNING: Time "</span> << time
+<a name="l00264"></a>00264 << <span class="stringliteral">" outside allowed range ["</span>
+<a name="l00265"></a>00265 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() << <span class="stringliteral">","</span> << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() << <span class="stringliteral">"]\n"</span>;
+<a name="l00266"></a>00266 }
+<a name="l00267"></a>00267 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon;
+<a name="l00268"></a>00268 <span class="keywordflow">if</span> (circle) {
+<a name="l00269"></a>00269 <span class="keywordflow">if</span> (!(str >> strb))
+<a name="l00270"></a>00270 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00271"></a>00271 <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00272"></a>00272 lon = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(strb, ind);
+<a name="l00273"></a>00273 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
+<a name="l00274"></a>00274 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere letter on "</span> + strb);
+<a name="l00275"></a>00275 <span class="keywordflow">if</span> (lon < -180 || lon > 360)
+<a name="l00276"></a>00276 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + strb + <span class="stringliteral">"not in [-180d, 360d]"</span>);
+<a name="l00277"></a>00277 } <span class="keywordflow">else</span> {
+<a name="l00278"></a>00278 <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00279"></a>00279 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00280"></a>00280 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00281"></a>00281 h = 0; <span class="comment">// h is optional</span>
+<a name="l00282"></a>00282 <span class="keywordflow">if</span> (str >> h) {
+<a name="l00283"></a>00283 <span class="keywordflow">if</span> (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() - hguard || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() + hguard)
+<a name="l00284"></a>00284 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Height "</span> + <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(h/1000) +
+<a name="l00285"></a>00285 <span class="stringliteral">"km too far outside allowed range ["</span> +
+<a name="l00286"></a>00286 <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000) + <span class="stringliteral">"km,"</span> +
+<a name="l00287"></a>00287 <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">Utility::str</a>(m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000) + <span class="stringliteral">"km]"</span>);
+<a name="l00288"></a>00288 <span class="keywordflow">if</span> (h < m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() || h > m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>())
+<a name="l00289"></a>00289 std::cerr << <span class="stringliteral">"WARNING: Height "</span> << h/1000
+<a name="l00290"></a>00290 << <span class="stringliteral">"km outside allowed range ["</span>
+<a name="l00291"></a>00291 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>()/1000 << <span class="stringliteral">"km,"</span>
+<a name="l00292"></a>00292 << m.<a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>()/1000 << <span class="stringliteral">"km]\n"</span>;
+<a name="l00293"></a>00293 }
+<a name="l00294"></a>00294 <span class="keywordflow">else</span>
+<a name="l00295"></a>00295 str.clear();
+<a name="l00296"></a>00296 }
+<a name="l00297"></a>00297 <span class="keywordflow">if</span> (str >> stra)
+<a name="l00298"></a>00298 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra junk in input: "</span> + s);
+<a name="l00299"></a>00299 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> bx, by, bz, bxt, byt, bzt;
+<a name="l00300"></a>00300 <span class="keywordflow">if</span> (circle)
+<a name="l00301"></a>00301 c(lon, bx, by, bz, bxt, byt, bzt);
+<a name="l00302"></a>00302 <span class="keywordflow">else</span>
+<a name="l00303"></a>00303 m(time, lat, lon, h, bx, by, bz, bxt, byt, bzt);
+<a name="l00304"></a>00304 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> H, F, D, I, Ht, Ft, Dt, It;
+<a name="l00305"></a>00305 <a class="code" href="classGeographicLib_1_1MagneticModel.html#af553c42337b9a9a1d51b81fea7083ea2">MagneticModel::FieldComponents</a>(bx, by, bz, bxt, byt, bzt,
+<a name="l00306"></a>00306 H, F, D, I, Ht, Ft, Dt, It);
+<a name="l00307"></a>00307
+<a name="l00308"></a>00308 *output << <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(D, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
+<a name="l00309"></a>00309 << <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(I, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
+<a name="l00310"></a>00310 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(H, prec) << <span class="stringliteral">" "</span>
+<a name="l00311"></a>00311 << Utility::str<real>(by, prec) << <span class="stringliteral">" "</span>
+<a name="l00312"></a>00312 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(bx, prec) << <span class="stringliteral">" "</span>
+<a name="l00313"></a>00313 << Utility::str<real>(-bz, prec) << <span class="stringliteral">" "</span>
+<a name="l00314"></a>00314 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(F, prec) << eol;
+<a name="l00315"></a>00315 <span class="keywordflow">if</span> (rate)
+<a name="l00316"></a>00316 *output << <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(Dt, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
+<a name="l00317"></a>00317 << <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(It, prec + 1, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a>) << <span class="stringliteral">" "</span>
+<a name="l00318"></a>00318 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(Ht, prec) << <span class="stringliteral">" "</span>
+<a name="l00319"></a>00319 << Utility::str<real>(byt, prec) << <span class="stringliteral">" "</span>
+<a name="l00320"></a>00320 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(bxt, prec) << <span class="stringliteral">" "</span>
+<a name="l00321"></a>00321 << Utility::str<real>(-bzt, prec) << <span class="stringliteral">" "</span>
+<a name="l00322"></a>00322 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(Ft, prec) << eol;
+<a name="l00323"></a>00323 }
+<a name="l00324"></a>00324 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00325"></a>00325 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00326"></a>00326 retval = 1;
+<a name="l00327"></a>00327 }
+<a name="l00328"></a>00328 }
+<a name="l00329"></a>00329 }
+<a name="l00330"></a>00330 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00331"></a>00331 std::cerr << <span class="stringliteral">"Error reading "</span> << model << <span class="stringliteral">": "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00332"></a>00332 retval = 1;
+<a name="l00333"></a>00333 }
+<a name="l00334"></a>00334 <span class="keywordflow">return</span> retval;
+<a name="l00335"></a>00335 }
+<a name="l00336"></a>00336 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00337"></a>00337 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00338"></a>00338 <span class="keywordflow">return</span> 1;
+<a name="l00339"></a>00339 }
+<a name="l00340"></a>00340 <span class="keywordflow">catch</span> (...) {
+<a name="l00341"></a>00341 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00342"></a>00342 <span class="keywordflow">return</span> 1;
+<a name="l00343"></a>00343 }
+<a name="l00344"></a>00344 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticModel_8cpp.html b/doc/html/MagneticModel_8cpp.html
index 9203884..f8b1572 100644
--- a/doc/html/MagneticModel_8cpp.html
+++ b/doc/html/MagneticModel_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticModel.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -64,13 +79,11 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html#ac744ec56ccbc33cff2c75c204b4c7ae1">GEOGRAPHICLIB_MAGNETICMODEL_CPP</a> "$Id: caa93d8d88501ae144eb69febc642ced9319995b $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html#ac744ec56ccbc33cff2c75c204b4c7ae1">GEOGRAPHICLIB_MAGNETICMODEL_CPP</a> "$Id: b0287ac014f10e4c6656b67f21c764432a47559a $"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html#a45687ef771d809c1c369daea074cc109">GEOGRAPHICLIB_DATA</a> "/usr/local/share/GeographicLib"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html#a302055ff69e445c8103c09913de840ff">MAGNETIC_DEFAULT_NAME</a> "wmm2010"</td></tr>
</table>
@@ -85,7 +98,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_MAGNETICMODEL_CPP "$Id: caa93d8d88501ae144eb69febc642ced9319995b $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_MAGNETICMODEL_CPP "$Id: b0287ac014f10e4c6656b67f21c764432a47559a $"</td>
</tr>
</table>
</div>
@@ -130,8 +143,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticModel_8cpp_source.html b/doc/html/MagneticModel_8cpp_source.html
index 7722eb3..0f70445 100644
--- a/doc/html/MagneticModel_8cpp_source.html
+++ b/doc/html/MagneticModel_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticModel.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -63,7 +78,7 @@
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
<a name="l00015"></a>00015
<a name="l00016"></a><a class="code" href="MagneticModel_8cpp.html#ac744ec56ccbc33cff2c75c204b4c7ae1">00016</a> <span class="preprocessor">#define GEOGRAPHICLIB_MAGNETICMODEL_CPP \</span>
-<a name="l00017"></a>00017 <span class="preprocessor"> "$Id: caa93d8d88501ae144eb69febc642ced9319995b $"</span>
+<a name="l00017"></a>00017 <span class="preprocessor"> "$Id: b0287ac014f10e4c6656b67f21c764432a47559a $"</span>
<a name="l00018"></a>00018 <span class="preprocessor"></span>
<a name="l00019"></a>00019 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="MagneticModel_8cpp.html#ac744ec56ccbc33cff2c75c204b4c7ae1">GEOGRAPHICLIB_MAGNETICMODEL_CPP</a>)
<a name="l00020"></a>00020 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="MagneticModel_8hpp.html#a8f9f091785b789fbe080c650bc0b8654">GEOGRAPHICLIB_MAGNETICMODEL_HPP</a>)
@@ -134,7 +149,7 @@
<a name="l00085"></a>00085 <span class="keywordtype">int</span> pos = int(coeffstr.tellg());
<a name="l00086"></a>00086 coeffstr.seekg(0, ios::end);
<a name="l00087"></a>00087 <span class="keywordflow">if</span> (pos != coeffstr.tellg())
-<a name="l00088"></a>00088 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra data in "</span> + coeff);
+<a name="l00088"></a>00088 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extra data in "</span> + coeff);
<a name="l00089"></a>00089 }
<a name="l00090"></a>00090 }
<a name="l00091"></a>00091
@@ -148,7 +163,7 @@
<a name="l00099"></a>00099 getline(metastr, line);
<a name="l00100"></a>00100 <span class="keywordflow">if</span> (!(line.size() >= 6 && line.substr(0,5) == <span class="stringliteral">"WMMF-"</span>))
<a name="l00101"></a>00101 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(_filename + <span class="stringliteral">" does not contain WMMF-n signature"</span>);
-<a name="l00102"></a>00102 string::size_type n = line.find_first_of(spaces, 5);
+<a name="l00102"></a>00102 <span class="keywordtype">string</span>::size_type n = line.find_first_of(spaces, 5);
<a name="l00103"></a>00103 <span class="keywordflow">if</span> (n != string::npos)
<a name="l00104"></a>00104 n -= 5;
<a name="l00105"></a>00105 <span class="keywordtype">string</span> version = line.substr(5, n);
@@ -166,7 +181,7 @@
<a name="l00117"></a>00117 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ReleaseDate"</span>)
<a name="l00118"></a>00118 _date = val;
<a name="l00119"></a>00119 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Radius"</span>)
-<a name="l00120"></a>00120 _a = Utility::num<real>(val);
+<a name="l00120"></a>00120 _a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(val);
<a name="l00121"></a>00121 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Type"</span>) {
<a name="l00122"></a>00122 <span class="keywordflow">if</span> (!(val == <span class="stringliteral">"Linear"</span> || val == <span class="stringliteral">"linear"</span>))
<a name="l00123"></a>00123 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Only linear models are supported"</span>);
@@ -181,14 +196,14 @@
<a name="l00132"></a>00132 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"MaxTime"</span>)
<a name="l00133"></a>00133 _tmax = Utility::num<real>(val);
<a name="l00134"></a>00134 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"MinHeight"</span>)
-<a name="l00135"></a>00135 _hmin = Utility::num<real>(val);
+<a name="l00135"></a>00135 _hmin = Utility::num<real>(val);
<a name="l00136"></a>00136 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"MaxHeight"</span>)
-<a name="l00137"></a>00137 _hmax = Utility::num<real>(val);
+<a name="l00137"></a>00137 _hmax = Utility::num<real>(val);
<a name="l00138"></a>00138 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"Normalization"</span>) {
<a name="l00139"></a>00139 <span class="keywordflow">if</span> (val == <span class="stringliteral">"FULL"</span> || val == <span class="stringliteral">"Full"</span> || val == <span class="stringliteral">"full"</span>)
-<a name="l00140"></a>00140 _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">SphericalHarmonic::FULL</a>;
+<a name="l00140"></a>00140 _norm = SphericalHarmonic::FULL;
<a name="l00141"></a>00141 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (val == <span class="stringliteral">"SCHMIDT"</span> || val == <span class="stringliteral">"Schmidt"</span> || val == <span class="stringliteral">"schmidt"</span>)
-<a name="l00142"></a>00142 _norm = <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eba014c2f3300abd50ff65ea8d73ef3c69e">SphericalHarmonic::SCHMIDT</a>;
+<a name="l00142"></a>00142 _norm = SphericalHarmonic::SCHMIDT;
<a name="l00143"></a>00143 <span class="keywordflow">else</span>
<a name="l00144"></a>00144 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Unknown normalization "</span> + val);
<a name="l00145"></a>00145 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"ByteOrder"</span>) {
@@ -201,7 +216,7 @@
<a name="l00152"></a>00152 <span class="comment">// else unrecognized keywords are skipped</span>
<a name="l00153"></a>00153 }
<a name="l00154"></a>00154 <span class="comment">// Check values</span>
-<a name="l00155"></a>00155 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00156"></a>00156 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Reference radius must be positive"</span>);
<a name="l00157"></a>00157 <span class="keywordflow">if</span> (!(_t0 > 0))
<a name="l00158"></a>00158 <span class="keywordflow">throw</span> GeographicErr(<span class="stringliteral">"Epoch time not defined"</span>);
@@ -258,7 +273,7 @@
<a name="l00209"></a>00209 <span class="keywordtype">int</span> n = max(min(<span class="keywordtype">int</span>(floor(t1 / _dt0)), _Nmodels - 1), 0);
<a name="l00210"></a>00210 <span class="keywordtype">bool</span> interpolate = n + 1 < _Nmodels;
<a name="l00211"></a>00211 t1 -= n * _dt0;
-<a name="l00212"></a>00212 real X, Y, Z, M[Geocentric::dim2_];
+<a name="l00212"></a>00212 real X, Y, Z, M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00213"></a>00213 _earth.IntForward(lat, 0, h, X, Y, Z, M);
<a name="l00214"></a>00214 <span class="comment">// Y = 0, cphi = M[7], sphi = M[8];</span>
<a name="l00215"></a>00215
@@ -273,14 +288,14 @@
<a name="l00224"></a>00224 real& H, real& F, real& D, real& I,
<a name="l00225"></a>00225 real& Ht, real& Ft,
<a name="l00226"></a>00226 real& Dt, real& It) <span class="keywordflow">throw</span>() {
-<a name="l00227"></a>00227 H = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Bx, By);
-<a name="l00228"></a>00228 Ht = H ? (Bx * Bxt + By * Byt) / H : <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Bxt, Byt);
-<a name="l00229"></a>00229 D = (0 - (H ? atan2(-Bx, By) : atan2(-Bxt, Byt))) / Math::degree<real>();
-<a name="l00230"></a>00230 Dt = (H ? (By * Bxt - Bx * Byt) / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(H) : 0) / Math::degree<real>();
-<a name="l00231"></a>00231 F = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(H, Bz);
-<a name="l00232"></a>00232 Ft = F ? (H * Ht + Bz * Bzt) / F : <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(Ht, Bzt);
+<a name="l00227"></a>00227 H = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Bx, By);
+<a name="l00228"></a>00228 Ht = H ? (Bx * Bxt + By * Byt) / H : <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Bxt, Byt);
+<a name="l00229"></a>00229 D = (0 - (H ? atan2(-Bx, By) : atan2(-Bxt, Byt))) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00230"></a>00230 Dt = (H ? (By * Bxt - Bx * Byt) / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(H) : 0) / Math::degree<real>();
+<a name="l00231"></a>00231 F = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(H, Bz);
+<a name="l00232"></a>00232 Ft = F ? (H * Ht + Bz * Bzt) / F : <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(Ht, Bzt);
<a name="l00233"></a>00233 I = (F ? atan2(-Bz, H) : atan2(-Bzt, Ht)) / Math::degree<real>();
-<a name="l00234"></a>00234 It = (F ? (Bz * Ht - H * Bzt) / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(F) : 0) / Math::degree<real>();
+<a name="l00234"></a>00234 It = (F ? (Bz * Ht - H * Bzt) / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(F) : 0) / Math::degree<real>();
<a name="l00235"></a>00235 }
<a name="l00236"></a>00236
<a name="l00237"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">00237</a> std::string <a class="code" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">MagneticModel::DefaultMagneticPath</a>() {
@@ -307,8 +322,13 @@
<a name="l00258"></a>00258 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticModel_8hpp.html b/doc/html/MagneticModel_8hpp.html
index 9fd0f3b..9e8efc4 100644
--- a/doc/html/MagneticModel_8hpp.html
+++ b/doc/html/MagneticModel_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticModel.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,13 +86,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8hpp.html#a8f9f091785b789fbe080c650bc0b8654">GEOGRAPHICLIB_MAGNETICMODEL_HPP</a> "$Id: 7e3fd1db9a29b713c7ce63584e8fbfd2b28914e2 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8hpp.html#a8f9f091785b789fbe080c650bc0b8654">GEOGRAPHICLIB_MAGNETICMODEL_HPP</a> "$Id: 7f8c59ee3cdbfce252d1172c1bb4d7db7cf5ef38 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
@@ -90,7 +103,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_MAGNETICMODEL_HPP "$Id: 7e3fd1db9a29b713c7ce63584e8fbfd2b28914e2 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_MAGNETICMODEL_HPP "$Id: 7f8c59ee3cdbfce252d1172c1bb4d7db7cf5ef38 $"</td>
</tr>
</table>
</div>
@@ -101,8 +114,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/MagneticModel_8hpp_source.html b/doc/html/MagneticModel_8hpp_source.html
index 2e5f8f9..9c86121 100644
--- a/doc/html/MagneticModel_8hpp_source.html
+++ b/doc/html/MagneticModel_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: MagneticModel.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_MAGNETICMODEL_HPP)</span>
<a name="l00011"></a><a class="code" href="MagneticModel_8hpp.html#a8f9f091785b789fbe080c650bc0b8654">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MAGNETICMODEL_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 7e3fd1db9a29b713c7ce63584e8fbfd2b28914e2 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 7f8c59ee3cdbfce252d1172c1bb4d7db7cf5ef38 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <string></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <sstream></span>
@@ -106,291 +121,299 @@
<a name="l00056"></a>00056 <span class="comment"> *</span>
<a name="l00057"></a>00057 <span class="comment"> * Example of use:</span>
<a name="l00058"></a>00058 <span class="comment"> * \include example-MagneticModel.cpp</span>
-<a name="l00059"></a>00059 <span class="comment"> **********************************************************************/</span>
-<a name="l00060"></a>00060
-<a name="l00061"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html">00061</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> {
-<a name="l00062"></a>00062 <span class="keyword">private</span>:
-<a name="l00063"></a>00063 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00064"></a>00064 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> idlength_ = 8;
-<a name="l00065"></a>00065 std::string _name, _dir, _description, _date, _filename, _id;
-<a name="l00066"></a>00066 real _t0, _dt0, _tmin, _tmax, _a, _hmin, _hmax;
-<a name="l00067"></a>00067 <span class="keywordtype">int</span> _Nmodels;
-<a name="l00068"></a>00068 <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eb">SphericalHarmonic::normalization</a> _norm;
-<a name="l00069"></a>00069 <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> _earth;
-<a name="l00070"></a>00070 std::vector< std::vector<real> > _G;
-<a name="l00071"></a>00071 std::vector< std::vector<real> > _H;
-<a name="l00072"></a>00072 std::vector<SphericalHarmonic> _harm;
-<a name="l00073"></a>00073 <span class="keywordtype">void</span> Field(real t, real lat, real lon, real h, <span class="keywordtype">bool</span> diffp,
-<a name="l00074"></a>00074 real& Bx, real& By, real& Bz,
-<a name="l00075"></a>00075 real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00076"></a>00076 <span class="keywordtype">void</span> ReadMetadata(<span class="keyword">const</span> std::string& name);
-<a name="l00077"></a>00077 <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>&); <span class="comment">// copy constructor not allowed</span>
-<a name="l00078"></a>00078 <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>& operator=(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>&); <span class="comment">// nor copy assignment</span>
-<a name="l00079"></a>00079 <span class="keyword">public</span>:
-<a name="l00080"></a>00080 <span class="comment"></span>
-<a name="l00081"></a>00081 <span class="comment"> /** \name Setting up the magnetic model</span>
-<a name="l00082"></a>00082 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00083"></a>00083 <span class="comment"> ///@{</span>
-<a name="l00084"></a>00084 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00085"></a>00085 <span class="comment"> * Construct a magnetic model.</span>
-<a name="l00086"></a>00086 <span class="comment"> *</span>
-<a name="l00087"></a>00087 <span class="comment"> * @param[in] name the name of the model.</span>
-<a name="l00088"></a>00088 <span class="comment"> * @param[in] path (optional) directory for data file.</span>
-<a name="l00089"></a>00089 <span class="comment"> * @param[in] earth (optional) Geocentric object for converting</span>
-<a name="l00090"></a>00090 <span class="comment"> * coordinates; default Geocentric::WGS84.</span>
-<a name="l00091"></a>00091 <span class="comment"> *</span>
-<a name="l00092"></a>00092 <span class="comment"> * A filename is formed by appending ".wmm" (World Magnetic Model) to the</span>
-<a name="l00093"></a>00093 <span class="comment"> * name. If \e path is specified (and is non-empty), then the file is</span>
-<a name="l00094"></a>00094 <span class="comment"> * loaded from directory, \e path. Otherwise the path is given by the</span>
-<a name="l00095"></a>00095 <span class="comment"> * DefaultMagneticPath(). This may throw an exception because the file</span>
-<a name="l00096"></a>00096 <span class="comment"> * does not exist, is unreadable, or is corrupt.</span>
-<a name="l00097"></a>00097 <span class="comment"> *</span>
-<a name="l00098"></a>00098 <span class="comment"> * This file contains the metadata which specifies the properties of the</span>
-<a name="l00099"></a>00099 <span class="comment"> * model. The coefficients for the spherical harmonic sums are obtained</span>
-<a name="l00100"></a>00100 <span class="comment"> * from a file obtained by appending ".cof" to metadata file (so the</span>
-<a name="l00101"></a>00101 <span class="comment"> * filename ends in ".wwm.cof").</span>
-<a name="l00102"></a>00102 <span class="comment"> *</span>
-<a name="l00103"></a>00103 <span class="comment"> * The model is not tied to a particular ellipsoidal model of the earth.</span>
-<a name="l00104"></a>00104 <span class="comment"> * The final earth argument to the constructor specify an ellipsoid to</span>
-<a name="l00105"></a>00105 <span class="comment"> * allow geodetic coordinates to the transformed into the spherical</span>
-<a name="l00106"></a>00106 <span class="comment"> * coordinates used in the spherical harmonic sum.</span>
-<a name="l00107"></a>00107 <span class="comment"> **********************************************************************/</span>
-<a name="l00108"></a>00108 <span class="keyword">explicit</span> <a class="code" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a>(<span class="keyword">const</span> std::string& name,
-<a name="l00109"></a>00109 <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>,
-<a name="l00110"></a>00110 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>);<span class="comment"></span>
-<a name="l00111"></a>00111 <span class="comment"> ///@}</span>
-<a name="l00112"></a>00112 <span class="comment"></span><span class="comment"></span>
-<a name="l00113"></a>00113 <span class="comment"> /** \name Compute the magnetic field</span>
-<a name="l00114"></a>00114 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00115"></a>00115 <span class="comment"> ///@{</span>
-<a name="l00116"></a>00116 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00117"></a>00117 <span class="comment"> * Evaluate the components of the geomagnetic field.</span>
-<a name="l00118"></a>00118 <span class="comment"> *</span>
-<a name="l00119"></a>00119 <span class="comment"> * @param[in] t the time (years).</span>
-<a name="l00120"></a>00120 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00121"></a>00121 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00122"></a>00122 <span class="comment"> * @param[in] h the height of the point above the ellipsoid (meters).</span>
-<a name="l00123"></a>00123 <span class="comment"> * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
-<a name="l00124"></a>00124 <span class="comment"> * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
-<a name="l00125"></a>00125 <span class="comment"> * @param[out] Bz the vertical (up) component of the magnetic field</span>
-<a name="l00126"></a>00126 <span class="comment"> * (nanotesla).</span>
-<a name="l00127"></a>00127 <span class="comment"> **********************************************************************/</span>
-<a name="l00128"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">00128</a> <span class="keywordtype">void</span> operator()(real t, real lat, real lon, real h,
-<a name="l00129"></a>00129 real& Bx, real& By, real& Bz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00130"></a>00130 real dummy;
-<a name="l00131"></a>00131 Field(t, lat, lon, h, <span class="keyword">false</span>, Bx, By, Bz, dummy, dummy, dummy);
-<a name="l00132"></a>00132 }
-<a name="l00133"></a>00133 <span class="comment"></span>
-<a name="l00134"></a>00134 <span class="comment"> /**</span>
-<a name="l00135"></a>00135 <span class="comment"> * Evaluate the components of the geomagnetic field and their time</span>
-<a name="l00136"></a>00136 <span class="comment"> * derivatives</span>
-<a name="l00137"></a>00137 <span class="comment"> *</span>
-<a name="l00138"></a>00138 <span class="comment"> * @param[in] t the time (years).</span>
-<a name="l00139"></a>00139 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00140"></a>00140 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
-<a name="l00141"></a>00141 <span class="comment"> * @param[in] h the height of the point above the ellipsoid (meters).</span>
-<a name="l00142"></a>00142 <span class="comment"> * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
-<a name="l00143"></a>00143 <span class="comment"> * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
-<a name="l00144"></a>00144 <span class="comment"> * @param[out] Bz the vertical (up) component of the magnetic field</span>
-<a name="l00145"></a>00145 <span class="comment"> * (nanotesla).</span>
-<a name="l00146"></a>00146 <span class="comment"> * @param[out] Bxt the rate of change of \e Bx (nT/yr).</span>
-<a name="l00147"></a>00147 <span class="comment"> * @param[out] Byt the rate of change of \e By (nT/yr).</span>
-<a name="l00148"></a>00148 <span class="comment"> * @param[out] Bzt the rate of change of \e Bz (nT/yr).</span>
-<a name="l00149"></a>00149 <span class="comment"> **********************************************************************/</span>
-<a name="l00150"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a11fed1ca7a45947f6f43f6ba7897250f">00150</a> <span class="keywordtype">void</span> operator()(real t, real lat, real lon, real h,
-<a name="l00151"></a>00151 real& Bx, real& By, real& Bz,
-<a name="l00152"></a>00152 real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00153"></a>00153 Field(t, lat, lon, h, <span class="keyword">true</span>, Bx, By, Bz, Bxt, Byt, Bzt);
-<a name="l00154"></a>00154 }
-<a name="l00155"></a>00155 <span class="comment"></span>
-<a name="l00156"></a>00156 <span class="comment"> /**</span>
-<a name="l00157"></a>00157 <span class="comment"> * Create a MagneticCircle object to allow the geomagnetic field at many</span>
-<a name="l00158"></a>00158 <span class="comment"> * points with constant \e lat, \e h, and \e t and varying \e lon to be</span>
-<a name="l00159"></a>00159 <span class="comment"> * computed efficiently.</span>
-<a name="l00160"></a>00160 <span class="comment"> *</span>
-<a name="l00161"></a>00161 <span class="comment"> * @param[in] t the time (years).</span>
-<a name="l00162"></a>00162 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
-<a name="l00163"></a>00163 <span class="comment"> * @param[in] h the height of the point above the ellipsoid (meters).</span>
-<a name="l00164"></a>00164 <span class="comment"> * @return a MagneticCircle object whose MagneticCircle::operator()(real</span>
-<a name="l00165"></a>00165 <span class="comment"> * lon) member function computes the field at particular values of \e</span>
-<a name="l00166"></a>00166 <span class="comment"> * lon.</span>
-<a name="l00167"></a>00167 <span class="comment"> *</span>
-<a name="l00168"></a>00168 <span class="comment"> * If the field at several points on a circle of latitude need to be</span>
-<a name="l00169"></a>00169 <span class="comment"> * calculated then creating a MagneticCircle and using its member functions</span>
-<a name="l00170"></a>00170 <span class="comment"> * will be substantially faster, especially for high-degree models.</span>
-<a name="l00171"></a>00171 <span class="comment"> **********************************************************************/</span>
-<a name="l00172"></a>00172 <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> Circle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h) <span class="keyword">const</span>;
-<a name="l00173"></a>00173 <span class="comment"></span>
-<a name="l00174"></a>00174 <span class="comment"> /**</span>
-<a name="l00175"></a>00175 <span class="comment"> * Compute various quantities dependent on the magnetic field.</span>
-<a name="l00176"></a>00176 <span class="comment"> *</span>
-<a name="l00177"></a>00177 <span class="comment"> * @param[in] Bx the \e x (easterly) component of the magnetic field (nT).</span>
-<a name="l00178"></a>00178 <span class="comment"> * @param[in] By the \e y (northerly) component of the magnetic field (nT).</span>
-<a name="l00179"></a>00179 <span class="comment"> * @param[in] Bz the \e z (vertical, up positive) component of the magnetic</span>
-<a name="l00180"></a>00180 <span class="comment"> * field (nT).</span>
-<a name="l00181"></a>00181 <span class="comment"> * @param[out] H the horizontal magnetic field (nT).</span>
-<a name="l00182"></a>00182 <span class="comment"> * @param[out] F the total magnetic field (nT).</span>
-<a name="l00183"></a>00183 <span class="comment"> * @param[out] D the declination of the field (degrees east of north).</span>
-<a name="l00184"></a>00184 <span class="comment"> * @param[out] I the inclination of the field (degrees down from</span>
-<a name="l00185"></a>00185 <span class="comment"> * horizontal).</span>
-<a name="l00186"></a>00186 <span class="comment"> **********************************************************************/</span>
-<a name="l00187"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#af553c42337b9a9a1d51b81fea7083ea2">00187</a> <span class="keyword">static</span> <span class="keywordtype">void</span> FieldComponents(real Bx, real By, real Bz,
-<a name="l00188"></a>00188 real& H, real& F, real& D, real& I) <span class="keywordflow">throw</span>() {
-<a name="l00189"></a>00189 real Ht, Ft, Dt, It;
-<a name="l00190"></a>00190 FieldComponents(Bx, By, Bz, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
-<a name="l00191"></a>00191 H, F, D, I, Ht, Ft, Dt, It);
-<a name="l00192"></a>00192 }
-<a name="l00193"></a>00193 <span class="comment"></span>
-<a name="l00194"></a>00194 <span class="comment"> /**</span>
-<a name="l00195"></a>00195 <span class="comment"> * Compute various quantities dependent on the magnetic field and its rate</span>
-<a name="l00196"></a>00196 <span class="comment"> * of change.</span>
-<a name="l00197"></a>00197 <span class="comment"> *</span>
-<a name="l00198"></a>00198 <span class="comment"> * @param[in] Bx the \e x (easterly) component of the magnetic field (nT).</span>
-<a name="l00199"></a>00199 <span class="comment"> * @param[in] By the \e y (northerly) component of the magnetic field (nT).</span>
-<a name="l00200"></a>00200 <span class="comment"> * @param[in] Bz the \e z (vertical, up positive) component of the magnetic</span>
-<a name="l00201"></a>00201 <span class="comment"> * field (nT).</span>
-<a name="l00202"></a>00202 <span class="comment"> * @param[in] Bxt the rate of change of \e Bx (nT/yr).</span>
-<a name="l00203"></a>00203 <span class="comment"> * @param[in] Byt the rate of change of \e By (nT/yr).</span>
-<a name="l00204"></a>00204 <span class="comment"> * @param[in] Bzt the rate of change of \e Bz (nT/yr).</span>
-<a name="l00205"></a>00205 <span class="comment"> * @param[out] H the horizontal magnetic field (nT).</span>
-<a name="l00206"></a>00206 <span class="comment"> * @param[out] F the total magnetic field (nT).</span>
-<a name="l00207"></a>00207 <span class="comment"> * @param[out] D the declination of the field (degrees east of north).</span>
-<a name="l00208"></a>00208 <span class="comment"> * @param[out] I the inclination of the field (degrees down from</span>
-<a name="l00209"></a>00209 <span class="comment"> * horizontal).</span>
-<a name="l00210"></a>00210 <span class="comment"> * @param[out] Ht the rate of change of \e H (nT/yr).</span>
-<a name="l00211"></a>00211 <span class="comment"> * @param[out] Ft the rate of change of \e F (nT/yr).</span>
-<a name="l00212"></a>00212 <span class="comment"> * @param[out] Dt the rate of change of \e D (degrees/yr).</span>
-<a name="l00213"></a>00213 <span class="comment"> * @param[out] It the rate of change of \e I (degrees/yr).</span>
-<a name="l00214"></a>00214 <span class="comment"> **********************************************************************/</span>
-<a name="l00215"></a>00215 <span class="keyword">static</span> <span class="keywordtype">void</span> FieldComponents(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> By, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bz,
-<a name="l00216"></a>00216 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bxt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Byt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bzt,
-<a name="l00217"></a>00217 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& H, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& F, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& D, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& I,
-<a name="l00218"></a>00218 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Ht, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Ft, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& It) <span class="keywordflow">throw</span>();<span class="comment"></span>
-<a name="l00219"></a>00219 <span class="comment"> ///@}</span>
-<a name="l00220"></a>00220 <span class="comment"></span><span class="comment"></span>
-<a name="l00221"></a>00221 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00222"></a>00222 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00223"></a>00223 <span class="comment"> ///@{</span>
-<a name="l00224"></a>00224 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00225"></a>00225 <span class="comment"> * @return the description of the magnetic model, if available, from the</span>
-<a name="l00226"></a>00226 <span class="comment"> * Description file in the data file; if absent, return "NONE".</span>
-<a name="l00227"></a>00227 <span class="comment"> **********************************************************************/</span>
-<a name="l00228"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">00228</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
-<a name="l00229"></a>00229 <span class="comment"></span>
-<a name="l00230"></a>00230 <span class="comment"> /**</span>
-<a name="l00231"></a>00231 <span class="comment"> * @return date of the model, if available, from the ReleaseDate field in</span>
-<a name="l00232"></a>00232 <span class="comment"> * the data file; if absent, return "UNKNOWN".</span>
-<a name="l00233"></a>00233 <span class="comment"> **********************************************************************/</span>
-<a name="l00234"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">00234</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _date; }
-<a name="l00235"></a>00235 <span class="comment"></span>
-<a name="l00236"></a>00236 <span class="comment"> /**</span>
-<a name="l00237"></a>00237 <span class="comment"> * @return full file name used to load the magnetic model.</span>
-<a name="l00238"></a>00238 <span class="comment"> **********************************************************************/</span>
-<a name="l00239"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">00239</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">MagneticFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
-<a name="l00240"></a>00240 <span class="comment"></span>
-<a name="l00241"></a>00241 <span class="comment"> /**</span>
-<a name="l00242"></a>00242 <span class="comment"> * @return "name" used to load the magnetic model (from the first argument</span>
-<a name="l00243"></a>00243 <span class="comment"> * of the constructor, but this may be overridden by the model file).</span>
-<a name="l00244"></a>00244 <span class="comment"> **********************************************************************/</span>
-<a name="l00245"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">00245</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">MagneticModelName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
-<a name="l00246"></a>00246 <span class="comment"></span>
-<a name="l00247"></a>00247 <span class="comment"> /**</span>
-<a name="l00248"></a>00248 <span class="comment"> * @return directory used to load the magnetic model.</span>
-<a name="l00249"></a>00249 <span class="comment"> **********************************************************************/</span>
-<a name="l00250"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a2476aee96f07071de17c24dbbf80f521">00250</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a2476aee96f07071de17c24dbbf80f521">MagneticModelDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
-<a name="l00251"></a>00251 <span class="comment"></span>
-<a name="l00252"></a>00252 <span class="comment"> /**</span>
-<a name="l00253"></a>00253 <span class="comment"> * @return the minimum height above the ellipsoid (in meters) for which</span>
-<a name="l00254"></a>00254 <span class="comment"> * this MagneticModel should be used.</span>
-<a name="l00255"></a>00255 <span class="comment"> *</span>
-<a name="l00256"></a>00256 <span class="comment"> * Because the model will typically provide useful results</span>
-<a name="l00257"></a>00257 <span class="comment"> * slightly outside the range of allowed heights, no check of \e t</span>
-<a name="l00258"></a>00258 <span class="comment"> * argument is made by MagneticModel::operator()() or</span>
-<a name="l00259"></a>00259 <span class="comment"> * MagneticModel::Circle.</span>
-<a name="l00260"></a>00260 <span class="comment"> **********************************************************************/</span>
-<a name="l00261"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">00261</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _hmin; }
-<a name="l00262"></a>00262 <span class="comment"></span>
-<a name="l00263"></a>00263 <span class="comment"> /**</span>
-<a name="l00264"></a>00264 <span class="comment"> * @return the maximum height above the ellipsoid (in meters) for which</span>
-<a name="l00265"></a>00265 <span class="comment"> * this MagneticModel should be used.</span>
-<a name="l00266"></a>00266 <span class="comment"> *</span>
-<a name="l00267"></a>00267 <span class="comment"> * Because the model will typically provide useful results</span>
-<a name="l00268"></a>00268 <span class="comment"> * slightly outside the range of allowed heights, no check of \e t</span>
-<a name="l00269"></a>00269 <span class="comment"> * argument is made by MagneticModel::operator()() or</span>
-<a name="l00270"></a>00270 <span class="comment"> * MagneticModel::Circle.</span>
-<a name="l00271"></a>00271 <span class="comment"> **********************************************************************/</span>
-<a name="l00272"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">00272</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _hmax; }
-<a name="l00273"></a>00273 <span class="comment"></span>
-<a name="l00274"></a>00274 <span class="comment"> /**</span>
-<a name="l00275"></a>00275 <span class="comment"> * @return the minimum time (in years) for which this MagneticModel should</span>
-<a name="l00276"></a>00276 <span class="comment"> * be used.</span>
-<a name="l00277"></a>00277 <span class="comment"> *</span>
-<a name="l00278"></a>00278 <span class="comment"> * Because the model will typically provide useful results</span>
-<a name="l00279"></a>00279 <span class="comment"> * slightly outside the range of allowed times, no check of \e t</span>
-<a name="l00280"></a>00280 <span class="comment"> * argument is made by MagneticModel::operator()() or</span>
-<a name="l00281"></a>00281 <span class="comment"> * MagneticModel::Circle.</span>
-<a name="l00282"></a>00282 <span class="comment"> **********************************************************************/</span>
-<a name="l00283"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">00283</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _tmin; }
-<a name="l00284"></a>00284 <span class="comment"></span>
-<a name="l00285"></a>00285 <span class="comment"> /**</span>
-<a name="l00286"></a>00286 <span class="comment"> * @return the maximum time (in years) for which this MagneticModel should</span>
-<a name="l00287"></a>00287 <span class="comment"> * be used.</span>
-<a name="l00288"></a>00288 <span class="comment"> *</span>
-<a name="l00289"></a>00289 <span class="comment"> * Because the model will typically provide useful results</span>
-<a name="l00290"></a>00290 <span class="comment"> * slightly outside the range of allowed times, no check of \e t</span>
-<a name="l00291"></a>00291 <span class="comment"> * argument is made by MagneticModel::operator()() or</span>
-<a name="l00292"></a>00292 <span class="comment"> * MagneticModel::Circle.</span>
-<a name="l00293"></a>00293 <span class="comment"> **********************************************************************/</span>
-<a name="l00294"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">00294</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _tmax; }
-<a name="l00295"></a>00295 <span class="comment"></span>
-<a name="l00296"></a>00296 <span class="comment"> /**</span>
-<a name="l00297"></a>00297 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00298"></a>00298 <span class="comment"> * the value of \e a inherited from the Geocentric object used in the</span>
-<a name="l00299"></a>00299 <span class="comment"> * constructor.</span>
-<a name="l00300"></a>00300 <span class="comment"> **********************************************************************/</span>
-<a name="l00301"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a0b55df676607204a2d44687ffafe8d9e">00301</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a0b55df676607204a2d44687ffafe8d9e">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00302"></a>00302 <span class="comment"></span>
-<a name="l00303"></a>00303 <span class="comment"> /**</span>
-<a name="l00304"></a>00304 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00305"></a>00305 <span class="comment"> * inherited from the Geocentric object used in the constructor.</span>
-<a name="l00306"></a>00306 <span class="comment"> **********************************************************************/</span>
-<a name="l00307"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a38ad95b421f5fbce40abff5733421370">00307</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1MagneticModel.html#a38ad95b421f5fbce40abff5733421370">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="comment"></span>
-<a name="l00308"></a>00308 <span class="comment"> ///@}</span>
-<a name="l00309"></a>00309 <span class="comment"></span><span class="comment"></span>
-<a name="l00310"></a>00310 <span class="comment"> /**</span>
-<a name="l00311"></a>00311 <span class="comment"> * @return the default path for magnetic model data files.</span>
-<a name="l00312"></a>00312 <span class="comment"> *</span>
-<a name="l00313"></a>00313 <span class="comment"> * This is the value of the environment variable MAGNETIC_PATH, if set;</span>
-<a name="l00314"></a>00314 <span class="comment"> * otherwise, it is $GEOGRAPHICLIB_DATA/magnetic if the environment</span>
-<a name="l00315"></a>00315 <span class="comment"> * variable GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time</span>
-<a name="l00316"></a>00316 <span class="comment"> * default (/usr/local/share/GeographicLib/magnetic on non-Windows systems</span>
-<a name="l00317"></a>00317 <span class="comment"> * and C:/Documents and Settings/All Users/Application</span>
-<a name="l00318"></a>00318 <span class="comment"> * Data/GeographicLib/magnetic on Windows systems).</span>
-<a name="l00319"></a>00319 <span class="comment"> **********************************************************************/</span>
-<a name="l00320"></a>00320 <span class="keyword">static</span> std::string DefaultMagneticPath();
-<a name="l00321"></a>00321 <span class="comment"></span>
-<a name="l00322"></a>00322 <span class="comment"> /**</span>
-<a name="l00323"></a>00323 <span class="comment"> * @return the default name for the magnetic model.</span>
-<a name="l00324"></a>00324 <span class="comment"> *</span>
-<a name="l00325"></a>00325 <span class="comment"> * This is the value of the environment variable MAGNETIC_NAME, if set,</span>
-<a name="l00326"></a>00326 <span class="comment"> * otherwise, it is "wmm2010". The MagneticModel class does not use this</span>
-<a name="l00327"></a>00327 <span class="comment"> * function; it is just provided as a convenience for a calling program</span>
-<a name="l00328"></a>00328 <span class="comment"> * when constructing a MagneticModel object.</span>
-<a name="l00329"></a>00329 <span class="comment"> **********************************************************************/</span>
-<a name="l00330"></a>00330 <span class="keyword">static</span> std::string DefaultMagneticName();
-<a name="l00331"></a>00331 };
-<a name="l00332"></a>00332
-<a name="l00333"></a>00333 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00334"></a>00334
-<a name="l00335"></a>00335 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00336"></a>00336 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00337"></a>00337 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00338"></a>00338 <span class="preprocessor"></span>
-<a name="l00339"></a>00339 <span class="preprocessor">#endif // GEOGRAPHICLIB_MAGNETICMODEL_HPP</span>
+<a name="l00059"></a>00059 <span class="comment"> *</span>
+<a name="l00060"></a>00060 <span class="comment"> * <a href="MagneticField.1.html">MagneticField</a> is a command-line utility</span>
+<a name="l00061"></a>00061 <span class="comment"> * providing access to the functionality of MagneticModel and MagneticCircle.</span>
+<a name="l00062"></a>00062 <span class="comment"> **********************************************************************/</span>
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> MagneticModel {
+<a name="l00065"></a>00065 <span class="keyword">private</span>:
+<a name="l00066"></a>00066 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> idlength_ = 8;
+<a name="l00068"></a>00068 std::string _name, _dir, _description, _date, _filename, _id;
+<a name="l00069"></a>00069 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _t0, _dt0, _tmin, _tmax, _a, _hmin, _hmax;
+<a name="l00070"></a>00070 <span class="keywordtype">int</span> _Nmodels;
+<a name="l00071"></a>00071 SphericalHarmonic::normalization _norm;
+<a name="l00072"></a>00072 Geocentric _earth;
+<a name="l00073"></a>00073 std::vector< std::vector<real> > _G;
+<a name="l00074"></a>00074 std::vector< std::vector<real> > _H;
+<a name="l00075"></a>00075 std::vector<SphericalHarmonic> _harm;
+<a name="l00076"></a>00076 <span class="keywordtype">void</span> Field(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <span class="keywordtype">bool</span> diffp,
+<a name="l00077"></a>00077 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& By, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bz,
+<a name="l00078"></a>00078 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bxt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Byt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00079"></a>00079 <span class="keywordtype">void</span> ReadMetadata(<span class="keyword">const</span> std::string& name);
+<a name="l00080"></a>00080 MagneticModel(<span class="keyword">const</span> MagneticModel&); <span class="comment">// copy constructor not allowed</span>
+<a name="l00081"></a>00081 MagneticModel& operator=(<span class="keyword">const</span> MagneticModel&); <span class="comment">// nor copy assignment</span>
+<a name="l00082"></a>00082 <span class="keyword">public</span>:
+<a name="l00083"></a>00083 <span class="comment"></span>
+<a name="l00084"></a>00084 <span class="comment"> /** \name Setting up the magnetic model</span>
+<a name="l00085"></a>00085 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00086"></a>00086 <span class="comment"> ///@{</span>
+<a name="l00087"></a>00087 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00088"></a>00088 <span class="comment"> * Construct a magnetic model.</span>
+<a name="l00089"></a>00089 <span class="comment"> *</span>
+<a name="l00090"></a>00090 <span class="comment"> * @param[in] name the name of the model.</span>
+<a name="l00091"></a>00091 <span class="comment"> * @param[in] path (optional) directory for data file.</span>
+<a name="l00092"></a>00092 <span class="comment"> * @param[in] earth (optional) Geocentric object for converting</span>
+<a name="l00093"></a>00093 <span class="comment"> * coordinates; default Geocentric::WGS84.</span>
+<a name="l00094"></a>00094 <span class="comment"> *</span>
+<a name="l00095"></a>00095 <span class="comment"> * A filename is formed by appending ".wmm" (World Magnetic Model) to the</span>
+<a name="l00096"></a>00096 <span class="comment"> * name. If \e path is specified (and is non-empty), then the file is</span>
+<a name="l00097"></a>00097 <span class="comment"> * loaded from directory, \e path. Otherwise the path is given by the</span>
+<a name="l00098"></a>00098 <span class="comment"> * DefaultMagneticPath(). This may throw an exception because the file</span>
+<a name="l00099"></a>00099 <span class="comment"> * does not exist, is unreadable, or is corrupt.</span>
+<a name="l00100"></a>00100 <span class="comment"> *</span>
+<a name="l00101"></a>00101 <span class="comment"> * This file contains the metadata which specifies the properties of the</span>
+<a name="l00102"></a>00102 <span class="comment"> * model. The coefficients for the spherical harmonic sums are obtained</span>
+<a name="l00103"></a>00103 <span class="comment"> * from a file obtained by appending ".cof" to metadata file (so the</span>
+<a name="l00104"></a>00104 <span class="comment"> * filename ends in ".wwm.cof").</span>
+<a name="l00105"></a>00105 <span class="comment"> *</span>
+<a name="l00106"></a>00106 <span class="comment"> * The model is not tied to a particular ellipsoidal model of the earth.</span>
+<a name="l00107"></a>00107 <span class="comment"> * The final earth argument to the constructor specify an ellipsoid to</span>
+<a name="l00108"></a>00108 <span class="comment"> * allow geodetic coordinates to the transformed into the spherical</span>
+<a name="l00109"></a>00109 <span class="comment"> * coordinates used in the spherical harmonic sum.</span>
+<a name="l00110"></a>00110 <span class="comment"> **********************************************************************/</span>
+<a name="l00111"></a>00111 <span class="keyword">explicit</span> MagneticModel(<span class="keyword">const</span> std::string& name,
+<a name="l00112"></a>00112 <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>,
+<a name="l00113"></a>00113 <span class="keyword">const</span> Geocentric& earth = <a class="code" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">Geocentric::WGS84</a>);<span class="comment"></span>
+<a name="l00114"></a>00114 <span class="comment"> ///@}</span>
+<a name="l00115"></a>00115 <span class="comment"></span><span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment"> /** \name Compute the magnetic field</span>
+<a name="l00117"></a>00117 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment"> ///@{</span>
+<a name="l00119"></a>00119 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00120"></a>00120 <span class="comment"> * Evaluate the components of the geomagnetic field.</span>
+<a name="l00121"></a>00121 <span class="comment"> *</span>
+<a name="l00122"></a>00122 <span class="comment"> * @param[in] t the time (years).</span>
+<a name="l00123"></a>00123 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00124"></a>00124 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00125"></a>00125 <span class="comment"> * @param[in] h the height of the point above the ellipsoid (meters).</span>
+<a name="l00126"></a>00126 <span class="comment"> * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
+<a name="l00127"></a>00127 <span class="comment"> * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
+<a name="l00128"></a>00128 <span class="comment"> * @param[out] Bz the vertical (up) component of the magnetic field</span>
+<a name="l00129"></a>00129 <span class="comment"> * (nanotesla).</span>
+<a name="l00130"></a>00130 <span class="comment"> **********************************************************************/</span>
+<a name="l00131"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">00131</a> <span class="keywordtype">void</span> operator()(real t, real lat, real lon, real h,
+<a name="l00132"></a>00132 real& Bx, real& By, real& Bz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00133"></a>00133 real dummy;
+<a name="l00134"></a>00134 Field(t, lat, lon, h, <span class="keyword">false</span>, Bx, By, Bz, dummy, dummy, dummy);
+<a name="l00135"></a>00135 }
+<a name="l00136"></a>00136 <span class="comment"></span>
+<a name="l00137"></a>00137 <span class="comment"> /**</span>
+<a name="l00138"></a>00138 <span class="comment"> * Evaluate the components of the geomagnetic field and their time</span>
+<a name="l00139"></a>00139 <span class="comment"> * derivatives</span>
+<a name="l00140"></a>00140 <span class="comment"> *</span>
+<a name="l00141"></a>00141 <span class="comment"> * @param[in] t the time (years).</span>
+<a name="l00142"></a>00142 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00143"></a>00143 <span class="comment"> * @param[in] lon longitude of the point (degrees).</span>
+<a name="l00144"></a>00144 <span class="comment"> * @param[in] h the height of the point above the ellipsoid (meters).</span>
+<a name="l00145"></a>00145 <span class="comment"> * @param[out] Bx the easterly component of the magnetic field (nanotesla).</span>
+<a name="l00146"></a>00146 <span class="comment"> * @param[out] By the northerly component of the magnetic field (nanotesla).</span>
+<a name="l00147"></a>00147 <span class="comment"> * @param[out] Bz the vertical (up) component of the magnetic field</span>
+<a name="l00148"></a>00148 <span class="comment"> * (nanotesla).</span>
+<a name="l00149"></a>00149 <span class="comment"> * @param[out] Bxt the rate of change of \e Bx (nT/yr).</span>
+<a name="l00150"></a>00150 <span class="comment"> * @param[out] Byt the rate of change of \e By (nT/yr).</span>
+<a name="l00151"></a>00151 <span class="comment"> * @param[out] Bzt the rate of change of \e Bz (nT/yr).</span>
+<a name="l00152"></a>00152 <span class="comment"> **********************************************************************/</span>
+<a name="l00153"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a11fed1ca7a45947f6f43f6ba7897250f">00153</a> <span class="keywordtype">void</span> operator()(real t, real lat, real lon, real h,
+<a name="l00154"></a>00154 real& Bx, real& By, real& Bz,
+<a name="l00155"></a>00155 real& Bxt, real& Byt, real& Bzt) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00156"></a>00156 Field(t, lat, lon, h, <span class="keyword">true</span>, Bx, By, Bz, Bxt, Byt, Bzt);
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="comment"></span>
+<a name="l00159"></a>00159 <span class="comment"> /**</span>
+<a name="l00160"></a>00160 <span class="comment"> * Create a MagneticCircle object to allow the geomagnetic field at many</span>
+<a name="l00161"></a>00161 <span class="comment"> * points with constant \e lat, \e h, and \e t and varying \e lon to be</span>
+<a name="l00162"></a>00162 <span class="comment"> * computed efficiently.</span>
+<a name="l00163"></a>00163 <span class="comment"> *</span>
+<a name="l00164"></a>00164 <span class="comment"> * @param[in] t the time (years).</span>
+<a name="l00165"></a>00165 <span class="comment"> * @param[in] lat latitude of the point (degrees).</span>
+<a name="l00166"></a>00166 <span class="comment"> * @param[in] h the height of the point above the ellipsoid (meters).</span>
+<a name="l00167"></a>00167 <span class="comment"> * @return a MagneticCircle object whose MagneticCircle::operator()(real</span>
+<a name="l00168"></a>00168 <span class="comment"> * lon) member function computes the field at particular values of \e</span>
+<a name="l00169"></a>00169 <span class="comment"> * lon.</span>
+<a name="l00170"></a>00170 <span class="comment"> *</span>
+<a name="l00171"></a>00171 <span class="comment"> * If the field at several points on a circle of latitude need to be</span>
+<a name="l00172"></a>00172 <span class="comment"> * calculated then creating a MagneticCircle and using its member functions</span>
+<a name="l00173"></a>00173 <span class="comment"> * will be substantially faster, especially for high-degree models.</span>
+<a name="l00174"></a>00174 <span class="comment"> **********************************************************************/</span>
+<a name="l00175"></a>00175 <a class="code" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a> Circle(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h) <span class="keyword">const</span>;
+<a name="l00176"></a>00176 <span class="comment"></span>
+<a name="l00177"></a>00177 <span class="comment"> /**</span>
+<a name="l00178"></a>00178 <span class="comment"> * Compute various quantities dependent on the magnetic field.</span>
+<a name="l00179"></a>00179 <span class="comment"> *</span>
+<a name="l00180"></a>00180 <span class="comment"> * @param[in] Bx the \e x (easterly) component of the magnetic field (nT).</span>
+<a name="l00181"></a>00181 <span class="comment"> * @param[in] By the \e y (northerly) component of the magnetic field (nT).</span>
+<a name="l00182"></a>00182 <span class="comment"> * @param[in] Bz the \e z (vertical, up positive) component of the magnetic</span>
+<a name="l00183"></a>00183 <span class="comment"> * field (nT).</span>
+<a name="l00184"></a>00184 <span class="comment"> * @param[out] H the horizontal magnetic field (nT).</span>
+<a name="l00185"></a>00185 <span class="comment"> * @param[out] F the total magnetic field (nT).</span>
+<a name="l00186"></a>00186 <span class="comment"> * @param[out] D the declination of the field (degrees east of north).</span>
+<a name="l00187"></a>00187 <span class="comment"> * @param[out] I the inclination of the field (degrees down from</span>
+<a name="l00188"></a>00188 <span class="comment"> * horizontal).</span>
+<a name="l00189"></a>00189 <span class="comment"> **********************************************************************/</span>
+<a name="l00190"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#af553c42337b9a9a1d51b81fea7083ea2">00190</a> <span class="keyword">static</span> <span class="keywordtype">void</span> FieldComponents(real Bx, real By, real Bz,
+<a name="l00191"></a>00191 real& H, real& F, real& D, real& I) <span class="keywordflow">throw</span>() {
+<a name="l00192"></a>00192 real Ht, Ft, Dt, It;
+<a name="l00193"></a>00193 FieldComponents(Bx, By, Bz, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0),
+<a name="l00194"></a>00194 H, F, D, I, Ht, Ft, Dt, It);
+<a name="l00195"></a>00195 }
+<a name="l00196"></a>00196 <span class="comment"></span>
+<a name="l00197"></a>00197 <span class="comment"> /**</span>
+<a name="l00198"></a>00198 <span class="comment"> * Compute various quantities dependent on the magnetic field and its rate</span>
+<a name="l00199"></a>00199 <span class="comment"> * of change.</span>
+<a name="l00200"></a>00200 <span class="comment"> *</span>
+<a name="l00201"></a>00201 <span class="comment"> * @param[in] Bx the \e x (easterly) component of the magnetic field (nT).</span>
+<a name="l00202"></a>00202 <span class="comment"> * @param[in] By the \e y (northerly) component of the magnetic field (nT).</span>
+<a name="l00203"></a>00203 <span class="comment"> * @param[in] Bz the \e z (vertical, up positive) component of the magnetic</span>
+<a name="l00204"></a>00204 <span class="comment"> * field (nT).</span>
+<a name="l00205"></a>00205 <span class="comment"> * @param[in] Bxt the rate of change of \e Bx (nT/yr).</span>
+<a name="l00206"></a>00206 <span class="comment"> * @param[in] Byt the rate of change of \e By (nT/yr).</span>
+<a name="l00207"></a>00207 <span class="comment"> * @param[in] Bzt the rate of change of \e Bz (nT/yr).</span>
+<a name="l00208"></a>00208 <span class="comment"> * @param[out] H the horizontal magnetic field (nT).</span>
+<a name="l00209"></a>00209 <span class="comment"> * @param[out] F the total magnetic field (nT).</span>
+<a name="l00210"></a>00210 <span class="comment"> * @param[out] D the declination of the field (degrees east of north).</span>
+<a name="l00211"></a>00211 <span class="comment"> * @param[out] I the inclination of the field (degrees down from</span>
+<a name="l00212"></a>00212 <span class="comment"> * horizontal).</span>
+<a name="l00213"></a>00213 <span class="comment"> * @param[out] Ht the rate of change of \e H (nT/yr).</span>
+<a name="l00214"></a>00214 <span class="comment"> * @param[out] Ft the rate of change of \e F (nT/yr).</span>
+<a name="l00215"></a>00215 <span class="comment"> * @param[out] Dt the rate of change of \e D (degrees/yr).</span>
+<a name="l00216"></a>00216 <span class="comment"> * @param[out] It the rate of change of \e I (degrees/yr).</span>
+<a name="l00217"></a>00217 <span class="comment"> **********************************************************************/</span>
+<a name="l00218"></a>00218 <span class="keyword">static</span> <span class="keywordtype">void</span> FieldComponents(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> By, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bz,
+<a name="l00219"></a>00219 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bxt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Byt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Bzt,
+<a name="l00220"></a>00220 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& H, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& F, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& D, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& I,
+<a name="l00221"></a>00221 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Ht, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Ft, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& Dt, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& It) <span class="keywordflow">throw</span>();<span class="comment"></span>
+<a name="l00222"></a>00222 <span class="comment"> ///@}</span>
+<a name="l00223"></a>00223 <span class="comment"></span><span class="comment"></span>
+<a name="l00224"></a>00224 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00225"></a>00225 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00226"></a>00226 <span class="comment"> ///@{</span>
+<a name="l00227"></a>00227 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00228"></a>00228 <span class="comment"> * @return the description of the magnetic model, if available, from the</span>
+<a name="l00229"></a>00229 <span class="comment"> * Description file in the data file; if absent, return "NONE".</span>
+<a name="l00230"></a>00230 <span class="comment"> **********************************************************************/</span>
+<a name="l00231"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">00231</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">Description</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _description; }
+<a name="l00232"></a>00232 <span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment"> /**</span>
+<a name="l00234"></a>00234 <span class="comment"> * @return date of the model, if available, from the ReleaseDate field in</span>
+<a name="l00235"></a>00235 <span class="comment"> * the data file; if absent, return "UNKNOWN".</span>
+<a name="l00236"></a>00236 <span class="comment"> **********************************************************************/</span>
+<a name="l00237"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">00237</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a230648296f87ff6fc12a3e65ff01bc3b">DateTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _date; }
+<a name="l00238"></a>00238 <span class="comment"></span>
+<a name="l00239"></a>00239 <span class="comment"> /**</span>
+<a name="l00240"></a>00240 <span class="comment"> * @return full file name used to load the magnetic model.</span>
+<a name="l00241"></a>00241 <span class="comment"> **********************************************************************/</span>
+<a name="l00242"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">00242</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#aa072d202531c0cacdd7bca128d670705">MagneticFile</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _filename; }
+<a name="l00243"></a>00243 <span class="comment"></span>
+<a name="l00244"></a>00244 <span class="comment"> /**</span>
+<a name="l00245"></a>00245 <span class="comment"> * @return "name" used to load the magnetic model (from the first argument</span>
+<a name="l00246"></a>00246 <span class="comment"> * of the constructor, but this may be overridden by the model file).</span>
+<a name="l00247"></a>00247 <span class="comment"> **********************************************************************/</span>
+<a name="l00248"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">00248</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#ad500f0d76997b4026b75805fad71dbee">MagneticModelName</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _name; }
+<a name="l00249"></a>00249 <span class="comment"></span>
+<a name="l00250"></a>00250 <span class="comment"> /**</span>
+<a name="l00251"></a>00251 <span class="comment"> * @return directory used to load the magnetic model.</span>
+<a name="l00252"></a>00252 <span class="comment"> **********************************************************************/</span>
+<a name="l00253"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a2476aee96f07071de17c24dbbf80f521">00253</a> <span class="keyword">const</span> std::string& <a class="code" href="classGeographicLib_1_1MagneticModel.html#a2476aee96f07071de17c24dbbf80f521">MagneticModelDirectory</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _dir; }
+<a name="l00254"></a>00254 <span class="comment"></span>
+<a name="l00255"></a>00255 <span class="comment"> /**</span>
+<a name="l00256"></a>00256 <span class="comment"> * @return the minimum height above the ellipsoid (in meters) for which</span>
+<a name="l00257"></a>00257 <span class="comment"> * this MagneticModel should be used.</span>
+<a name="l00258"></a>00258 <span class="comment"> *</span>
+<a name="l00259"></a>00259 <span class="comment"> * Because the model will typically provide useful results</span>
+<a name="l00260"></a>00260 <span class="comment"> * slightly outside the range of allowed heights, no check of \e t</span>
+<a name="l00261"></a>00261 <span class="comment"> * argument is made by MagneticModel::operator()() or</span>
+<a name="l00262"></a>00262 <span class="comment"> * MagneticModel::Circle.</span>
+<a name="l00263"></a>00263 <span class="comment"> **********************************************************************/</span>
+<a name="l00264"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">00264</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a8a170290542bf8e694cda4b4d329c881">MinHeight</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _hmin; }
+<a name="l00265"></a>00265 <span class="comment"></span>
+<a name="l00266"></a>00266 <span class="comment"> /**</span>
+<a name="l00267"></a>00267 <span class="comment"> * @return the maximum height above the ellipsoid (in meters) for which</span>
+<a name="l00268"></a>00268 <span class="comment"> * this MagneticModel should be used.</span>
+<a name="l00269"></a>00269 <span class="comment"> *</span>
+<a name="l00270"></a>00270 <span class="comment"> * Because the model will typically provide useful results</span>
+<a name="l00271"></a>00271 <span class="comment"> * slightly outside the range of allowed heights, no check of \e t</span>
+<a name="l00272"></a>00272 <span class="comment"> * argument is made by MagneticModel::operator()() or</span>
+<a name="l00273"></a>00273 <span class="comment"> * MagneticModel::Circle.</span>
+<a name="l00274"></a>00274 <span class="comment"> **********************************************************************/</span>
+<a name="l00275"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">00275</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a41e16617bc2cdd89ab7b7a02b4bd4dcf">MaxHeight</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _hmax; }
+<a name="l00276"></a>00276 <span class="comment"></span>
+<a name="l00277"></a>00277 <span class="comment"> /**</span>
+<a name="l00278"></a>00278 <span class="comment"> * @return the minimum time (in years) for which this MagneticModel should</span>
+<a name="l00279"></a>00279 <span class="comment"> * be used.</span>
+<a name="l00280"></a>00280 <span class="comment"> *</span>
+<a name="l00281"></a>00281 <span class="comment"> * Because the model will typically provide useful results</span>
+<a name="l00282"></a>00282 <span class="comment"> * slightly outside the range of allowed times, no check of \e t</span>
+<a name="l00283"></a>00283 <span class="comment"> * argument is made by MagneticModel::operator()() or</span>
+<a name="l00284"></a>00284 <span class="comment"> * MagneticModel::Circle.</span>
+<a name="l00285"></a>00285 <span class="comment"> **********************************************************************/</span>
+<a name="l00286"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">00286</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a1e8624990112edc3c6503c9c9acb9309">MinTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _tmin; }
+<a name="l00287"></a>00287 <span class="comment"></span>
+<a name="l00288"></a>00288 <span class="comment"> /**</span>
+<a name="l00289"></a>00289 <span class="comment"> * @return the maximum time (in years) for which this MagneticModel should</span>
+<a name="l00290"></a>00290 <span class="comment"> * be used.</span>
+<a name="l00291"></a>00291 <span class="comment"> *</span>
+<a name="l00292"></a>00292 <span class="comment"> * Because the model will typically provide useful results</span>
+<a name="l00293"></a>00293 <span class="comment"> * slightly outside the range of allowed times, no check of \e t</span>
+<a name="l00294"></a>00294 <span class="comment"> * argument is made by MagneticModel::operator()() or</span>
+<a name="l00295"></a>00295 <span class="comment"> * MagneticModel::Circle.</span>
+<a name="l00296"></a>00296 <span class="comment"> **********************************************************************/</span>
+<a name="l00297"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">00297</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a5d538204401200c87b37cdc37509311a">MaxTime</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _tmax; }
+<a name="l00298"></a>00298 <span class="comment"></span>
+<a name="l00299"></a>00299 <span class="comment"> /**</span>
+<a name="l00300"></a>00300 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00301"></a>00301 <span class="comment"> * the value of \e a inherited from the Geocentric object used in the</span>
+<a name="l00302"></a>00302 <span class="comment"> * constructor.</span>
+<a name="l00303"></a>00303 <span class="comment"> **********************************************************************/</span>
+<a name="l00304"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a0b55df676607204a2d44687ffafe8d9e">00304</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a0b55df676607204a2d44687ffafe8d9e">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00305"></a>00305 <span class="comment"></span>
+<a name="l00306"></a>00306 <span class="comment"> /**</span>
+<a name="l00307"></a>00307 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00308"></a>00308 <span class="comment"> * inherited from the Geocentric object used in the constructor.</span>
+<a name="l00309"></a>00309 <span class="comment"> **********************************************************************/</span>
+<a name="l00310"></a><a class="code" href="classGeographicLib_1_1MagneticModel.html#a38ad95b421f5fbce40abff5733421370">00310</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1MagneticModel.html#a38ad95b421f5fbce40abff5733421370">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class [...]
+<a name="l00311"></a>00311 <span class="comment"> ///@}</span>
+<a name="l00312"></a>00312 <span class="comment"></span><span class="comment"></span>
+<a name="l00313"></a>00313 <span class="comment"> /**</span>
+<a name="l00314"></a>00314 <span class="comment"> * @return the default path for magnetic model data files.</span>
+<a name="l00315"></a>00315 <span class="comment"> *</span>
+<a name="l00316"></a>00316 <span class="comment"> * This is the value of the environment variable MAGNETIC_PATH, if set;</span>
+<a name="l00317"></a>00317 <span class="comment"> * otherwise, it is $GEOGRAPHICLIB_DATA/magnetic if the environment</span>
+<a name="l00318"></a>00318 <span class="comment"> * variable GEOGRAPHICLIB_DATA is set; otherwise, it is a compile-time</span>
+<a name="l00319"></a>00319 <span class="comment"> * default (/usr/local/share/GeographicLib/magnetic on non-Windows systems</span>
+<a name="l00320"></a>00320 <span class="comment"> * and C:/Documents and Settings/All Users/Application</span>
+<a name="l00321"></a>00321 <span class="comment"> * Data/GeographicLib/magnetic on Windows systems).</span>
+<a name="l00322"></a>00322 <span class="comment"> **********************************************************************/</span>
+<a name="l00323"></a>00323 <span class="keyword">static</span> std::string DefaultMagneticPath();
+<a name="l00324"></a>00324 <span class="comment"></span>
+<a name="l00325"></a>00325 <span class="comment"> /**</span>
+<a name="l00326"></a>00326 <span class="comment"> * @return the default name for the magnetic model.</span>
+<a name="l00327"></a>00327 <span class="comment"> *</span>
+<a name="l00328"></a>00328 <span class="comment"> * This is the value of the environment variable MAGNETIC_NAME, if set,</span>
+<a name="l00329"></a>00329 <span class="comment"> * otherwise, it is "wmm2010". The MagneticModel class does not use this</span>
+<a name="l00330"></a>00330 <span class="comment"> * function; it is just provided as a convenience for a calling program</span>
+<a name="l00331"></a>00331 <span class="comment"> * when constructing a MagneticModel object.</span>
+<a name="l00332"></a>00332 <span class="comment"> **********************************************************************/</span>
+<a name="l00333"></a>00333 <span class="keyword">static</span> std::string DefaultMagneticName();
+<a name="l00334"></a>00334 };
+<a name="l00335"></a>00335
+<a name="l00336"></a>00336 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00337"></a>00337
+<a name="l00338"></a>00338 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00339"></a>00339 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00340"></a>00340 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00341"></a>00341 <span class="preprocessor"></span>
+<a name="l00342"></a>00342 <span class="preprocessor">#endif // GEOGRAPHICLIB_MAGNETICMODEL_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Math_8hpp.html b/doc/html/Math_8hpp.html
index ec3fd2d..e1d5882 100644
--- a/doc/html/Math_8hpp.html
+++ b/doc/html/Math_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Math.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,20 +85,18 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#afb2818ef5e2f2bed96dcaa151b3edca4">GEOGRAPHICLIB_MATH_HPP</a> "$Id: 045fb188fcc3fe808fed0c9d5fa965861d2735d1 $"</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#a6cdc2f4c764d4116788cc5c24625e75d">GEOGRAPHICLIB_CPLUSPLUS0X_MATH</a> 0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#afb2818ef5e2f2bed96dcaa151b3edca4">GEOGRAPHICLIB_MATH_HPP</a> "$Id: edd244e4c5c74e696096c2b6d598728957a0d36d $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#a2769cdfa2277e2728e4e157ec3f6318b">GEOGRAPHICLIB_CPLUSPLUS11_MATH</a> 0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#a82e69009d3cd108c8aad8afe44fb1132">WORDS_BIGENDIAN</a> 0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html#a8df061fdb3d6e90d150d4fdd749f96b1">GEOGRAPHICLIB_PREC</a> 1</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -92,7 +105,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_MATH_HPP "$Id: 045fb188fcc3fe808fed0c9d5fa965861d2735d1 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_MATH_HPP "$Id: edd244e4c5c74e696096c2b6d598728957a0d36d $"</td>
</tr>
</table>
</div>
@@ -102,17 +115,17 @@ Defines</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a6cdc2f4c764d4116788cc5c24625e75d"></a><!-- doxytag: member="Math.hpp::GEOGRAPHICLIB_CPLUSPLUS0X_MATH" ref="a6cdc2f4c764d4116788cc5c24625e75d" args="" -->
+<a class="anchor" id="a2769cdfa2277e2728e4e157ec3f6318b"></a><!-- doxytag: member="Math.hpp::GEOGRAPHICLIB_CPLUSPLUS11_MATH" ref="a2769cdfa2277e2728e4e157ec3f6318b" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 0</td>
+ <td class="memname">#define GEOGRAPHICLIB_CPLUSPLUS11_MATH 0</td>
</tr>
</table>
</div>
<div class="memdoc">
-<p>Are C++0X math functions available? </p>
+<p>Are C++11 math functions available? </p>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00024">24</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
@@ -150,8 +163,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Math_8hpp_source.html b/doc/html/Math_8hpp_source.html
index 43fed2c..1531cb3 100644
--- a/doc/html/Math_8hpp_source.html
+++ b/doc/html/Math_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Math.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,8 +67,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Math.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::Math class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
@@ -62,16 +77,16 @@
<a name="l00012"></a>00012 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
<a name="l00013"></a>00013
<a name="l00014"></a>00014 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_MATH_HPP)</span>
-<a name="l00015"></a><a class="code" href="Math_8hpp.html#afb2818ef5e2f2bed96dcaa151b3edca4">00015</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MATH_HPP "$Id: 045fb188fcc3fe808fed0c9d5fa965861d2735d1 $"</span>
+<a name="l00015"></a><a class="code" href="Math_8hpp.html#afb2818ef5e2f2bed96dcaa151b3edca4">00015</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_MATH_HPP "$Id: edd244e4c5c74e696096c2b6d598728957a0d36d $"</span>
<a name="l00016"></a>00016 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00017"></a>00017 <span class="comment">/**</span>
-<a name="l00018"></a>00018 <span class="comment"> * Are C++0X math functions available?</span>
+<a name="l00018"></a>00018 <span class="comment"> * Are C++11 math functions available?</span>
<a name="l00019"></a>00019 <span class="comment"> **********************************************************************/</span>
-<a name="l00020"></a>00020 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00020"></a>00020 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
<a name="l00021"></a>00021 <span class="preprocessor"></span><span class="preprocessor"># if defined(__GXX_EXPERIMENTAL_CXX0X__)</span>
-<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor"># define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 1</span>
+<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor"># define GEOGRAPHICLIB_CPLUSPLUS11_MATH 1</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor"># else</span>
-<a name="l00024"></a><a class="code" href="Math_8hpp.html#a6cdc2f4c764d4116788cc5c24625e75d">00024</a> <span class="preprocessor"></span><span class="preprocessor"># define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 0</span>
+<a name="l00024"></a><a class="code" href="Math_8hpp.html#a2769cdfa2277e2728e4e157ec3f6318b">00024</a> <span class="preprocessor"></span><span class="preprocessor"># define GEOGRAPHICLIB_CPLUSPLUS11_MATH 0</span>
<a name="l00025"></a>00025 <span class="preprocessor"></span><span class="preprocessor"># endif</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span>
@@ -108,13 +123,13 @@
<a name="l00058"></a>00058 <span class="comment"> * Example of use:</span>
<a name="l00059"></a>00059 <span class="comment"> * \include example-Math.cpp</span>
<a name="l00060"></a>00060 <span class="comment"> **********************************************************************/</span>
-<a name="l00061"></a><a class="code" href="classGeographicLib_1_1Math.html">00061</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a> {
+<a name="l00061"></a>00061 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Math {
<a name="l00062"></a>00062 <span class="keyword">private</span>:
<a name="l00063"></a>00063 <span class="keywordtype">void</span> dummy() {
<a name="l00064"></a>00064 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(<a class="code" href="Math_8hpp.html#a8df061fdb3d6e90d150d4fdd749f96b1">GEOGRAPHICLIB_PREC</a> >= 0 && <a class="code" href="Math_8hpp.html#a8df061fdb3d6e90d150d4fdd749f96b1">GEOGRAPHICLIB_PREC</a> <= 2,
<a name="l00065"></a>00065 <span class="stringliteral">"Bad value of precision"</span>);
<a name="l00066"></a>00066 }
-<a name="l00067"></a>00067 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>(); <span class="comment">// Disable constructor</span>
+<a name="l00067"></a>00067 Math(); <span class="comment">// Disable constructor</span>
<a name="l00068"></a>00068 <span class="keyword">public</span>:
<a name="l00069"></a>00069
<a name="l00070"></a>00070 <span class="preprocessor">#if defined(HAVE_LONG_DOUBLE)</span>
@@ -122,7 +137,7 @@
<a name="l00072"></a>00072 <span class="comment"> * The extended precision type for real numbers, used for some testing.</span>
<a name="l00073"></a>00073 <span class="comment"> * This is long double on computers with this type; otherwise it is double.</span>
<a name="l00074"></a>00074 <span class="comment"> **********************************************************************/</span>
-<a name="l00075"></a>00075 <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> <a class="code" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">extended</a>;
+<a name="l00075"></a>00075 <span class="keyword">typedef</span> <span class="keywordtype">long</span> <span class="keywordtype">double</span> extended;
<a name="l00076"></a>00076 <span class="preprocessor">#else</span>
<a name="l00077"></a><a class="code" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">00077</a> <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keywordtype">double</span> <a class="code" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">extended</a>;
<a name="l00078"></a>00078 <span class="preprocessor">#endif</span>
@@ -152,7 +167,7 @@
<a name="l00102"></a>00102 <span class="comment"> * @tparam T the type of the returned value.</span>
<a name="l00103"></a>00103 <span class="comment"> * @return \e pi.</span>
<a name="l00104"></a>00104 <span class="comment"> **********************************************************************/</span>
-<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">00105</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T pi() throw()
+<a name="l00105"></a><a class="code" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">00105</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T pi() throw()
<a name="l00106"></a>00106 { <span class="keywordflow">return</span> std::atan2(T(0), -T(1)); }<span class="comment"></span>
<a name="l00107"></a>00107 <span class="comment"> /**</span>
<a name="l00108"></a>00108 <span class="comment"> * A synonym for pi<real>().</span>
@@ -163,7 +178,7 @@
<a name="l00113"></a>00113 <span class="comment"> * @tparam T the type of the returned value.</span>
<a name="l00114"></a>00114 <span class="comment"> * @return the number of radians in a degree.</span>
<a name="l00115"></a>00115 <span class="comment"> **********************************************************************/</span>
-<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">00116</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T degree() throw()
+<a name="l00116"></a><a class="code" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">00116</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T degree() throw()
<a name="l00117"></a>00117 { <span class="keywordflow">return</span> pi<T>() / T(180); }<span class="comment"></span>
<a name="l00118"></a>00118 <span class="comment"> /**</span>
<a name="l00119"></a>00119 <span class="comment"> * A synonym for degree<real>().</span>
@@ -177,7 +192,7 @@
<a name="l00127"></a>00127 <span class="comment"> * @param[in] x</span>
<a name="l00128"></a>00128 <span class="comment"> * @return <i>x</i><sup>2</sup>.</span>
<a name="l00129"></a>00129 <span class="comment"> **********************************************************************/</span>
-<a name="l00130"></a><a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">00130</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T sq(T x) <span class="keywordflow">throw</span>()
+<a name="l00130"></a><a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">00130</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T sq(T x) <span class="keywordflow">throw</span>()
<a name="l00131"></a>00131 { <span class="keywordflow">return</span> x * x; }
<a name="l00132"></a>00132
<a name="l00133"></a>00133 <span class="preprocessor">#if defined(DOXYGEN)</span>
@@ -189,20 +204,20 @@
<a name="l00139"></a>00139 <span class="comment"> * @param[in] y</span>
<a name="l00140"></a>00140 <span class="comment"> * @return sqrt(<i>x</i><sup>2</sup> + <i>y</i><sup>2</sup>).</span>
<a name="l00141"></a>00141 <span class="comment"> **********************************************************************/</span>
-<a name="l00142"></a><a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">00142</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">hypot</a>(T x, T y) <span class="keywordflow">throw</span>() {
+<a name="l00142"></a><a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">00142</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">hypot</a>(T x, T y) <span class="keywordflow">throw</span>() {
<a name="l00143"></a>00143 x = std::abs(x);
<a name="l00144"></a>00144 y = std::abs(y);
<a name="l00145"></a>00145 T a = (std::max)(x, y),
<a name="l00146"></a>00146 b = (std::min)(x, y) / (a ? a : 1);
<a name="l00147"></a>00147 <span class="keywordflow">return</span> a * std::sqrt(1 + b * b);
<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00149"></a>00149 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
<a name="l00150"></a>00150 <span class="preprocessor"></span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T hypot(T x, T y) <span class="keywordflow">throw</span>()
<a name="l00151"></a>00151 { <span class="keywordflow">return</span> std::hypot(x, y); }
<a name="l00152"></a>00152 <span class="preprocessor">#elif defined(_MSC_VER)</span>
<a name="l00153"></a>00153 <span class="preprocessor"></span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> hypot(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y) <span class="keywordflow">throw</span>()
<a name="l00154"></a>00154 { <span class="keywordflow">return</span> _hypot(x, y); }
-<a name="l00155"></a>00155 <span class="preprocessor">#if (_MSC_VER < 1400)</span>
+<a name="l00155"></a>00155 <span class="preprocessor">#if _MSC_VER < 1400</span>
<a name="l00156"></a>00156 <span class="preprocessor"></span> <span class="comment">// Visual C++ 7.1/VS .NET 2003 does not have _hypotf()</span>
<a name="l00157"></a>00157 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> hypot(<span class="keywordtype">float</span> x, <span class="keywordtype">float</span> y) <span class="keywordflow">throw</span>()
<a name="l00158"></a>00158 { <span class="keywordflow">return</span> float(_hypot(x, y)); }
@@ -226,7 +241,7 @@
<a name="l00176"></a>00176 <span class="preprocessor">#endif</span>
<a name="l00177"></a>00177 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00178"></a>00178 <span class="preprocessor"></span>
-<a name="l00179"></a>00179 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00179"></a>00179 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
<a name="l00180"></a>00180 <span class="preprocessor"></span><span class="comment"> /**</span>
<a name="l00181"></a>00181 <span class="comment"> * exp(\e x) - 1 accurate near \e x = 0. This is taken from</span>
<a name="l00182"></a>00182 <span class="comment"> * N. J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd</span>
@@ -236,7 +251,7 @@
<a name="l00186"></a>00186 <span class="comment"> * @param[in] x</span>
<a name="l00187"></a>00187 <span class="comment"> * @return exp(\e x) - 1.</span>
<a name="l00188"></a>00188 <span class="comment"> **********************************************************************/</span>
-<a name="l00189"></a><a class="code" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">00189</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">expm1</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00189"></a><a class="code" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">00189</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">expm1</a>(T x) <span class="keywordflow">throw</span>() {
<a name="l00190"></a>00190 <span class="keyword">volatile</span> T
<a name="l00191"></a>00191 y = std::exp(x),
<a name="l00192"></a>00192 z = y - 1;
@@ -244,9 +259,9 @@
<a name="l00194"></a>00194 <span class="comment">// mathematically reduces to exp(x) - 1, and the factor z/log(y) = (y -</span>
<a name="l00195"></a>00195 <span class="comment">// 1)/log(y) is a slowly varying quantity near y = 1 and is accurately</span>
<a name="l00196"></a>00196 <span class="comment">// computed.</span>
-<a name="l00197"></a>00197 <span class="keywordflow">return</span> std::abs(x) > 1 ? z : (z == 0 ? x : x * z / std::log(y));
+<a name="l00197"></a>00197 <span class="keywordflow">return</span> std::abs(x) > 1 ? z : (z == 0 ? x : x * z / std::log(y));
<a name="l00198"></a>00198 }
-<a name="l00199"></a>00199 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00199"></a>00199 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
<a name="l00200"></a>00200 <span class="preprocessor"></span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T expm1(T x) <span class="keywordflow">throw</span>()
<a name="l00201"></a>00201 { <span class="keywordflow">return</span> std::expm1(x); }
<a name="l00202"></a>00202 <span class="preprocessor">#else</span>
@@ -258,7 +273,7 @@
<a name="l00208"></a>00208 <span class="preprocessor">#endif</span>
<a name="l00209"></a>00209 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00210"></a>00210 <span class="preprocessor"></span>
-<a name="l00211"></a>00211 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00211"></a>00211 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
<a name="l00212"></a>00212 <span class="preprocessor"></span><span class="comment"> /**</span>
<a name="l00213"></a>00213 <span class="comment"> * log(1 + \e x) accurate near \e x = 0.</span>
<a name="l00214"></a>00214 <span class="comment"> *</span>
@@ -271,7 +286,7 @@
<a name="l00221"></a>00221 <span class="comment"> * @param[in] x</span>
<a name="l00222"></a>00222 <span class="comment"> * @return log(1 + \e x).</span>
<a name="l00223"></a>00223 <span class="comment"> **********************************************************************/</span>
-<a name="l00224"></a><a class="code" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">00224</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">log1p</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00224"></a><a class="code" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">00224</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">log1p</a>(T x) <span class="keywordflow">throw</span>() {
<a name="l00225"></a>00225 <span class="keyword">volatile</span> T
<a name="l00226"></a>00226 y = 1 + x,
<a name="l00227"></a>00227 z = y - 1;
@@ -281,7 +296,7 @@
<a name="l00231"></a>00231 <span class="comment">// (log(y)/z) introduces little additional error.</span>
<a name="l00232"></a>00232 <span class="keywordflow">return</span> z == 0 ? x : x * std::log(y) / z;
<a name="l00233"></a>00233 }
-<a name="l00234"></a>00234 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00234"></a>00234 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
<a name="l00235"></a>00235 <span class="preprocessor"></span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T log1p(T x) <span class="keywordflow">throw</span>()
<a name="l00236"></a>00236 { <span class="keywordflow">return</span> std::log1p(x); }
<a name="l00237"></a>00237 <span class="preprocessor">#else</span>
@@ -293,7 +308,7 @@
<a name="l00243"></a>00243 <span class="preprocessor">#endif</span>
<a name="l00244"></a>00244 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00245"></a>00245 <span class="preprocessor"></span>
-<a name="l00246"></a>00246 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00246"></a>00246 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
<a name="l00247"></a>00247 <span class="preprocessor"></span><span class="comment"> /**</span>
<a name="l00248"></a>00248 <span class="comment"> * The inverse hyperbolic sine function. This is defined in terms of</span>
<a name="l00249"></a>00249 <span class="comment"> * Math::log1p(\e x) in order to maintain accuracy near \e x = 0. In</span>
@@ -303,12 +318,12 @@
<a name="l00253"></a>00253 <span class="comment"> * @param[in] x</span>
<a name="l00254"></a>00254 <span class="comment"> * @return asinh(\e x).</span>
<a name="l00255"></a>00255 <span class="comment"> **********************************************************************/</span>
-<a name="l00256"></a><a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">00256</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">asinh</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00256"></a><a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">00256</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">asinh</a>(T x) <span class="keywordflow">throw</span>() {
<a name="l00257"></a>00257 T y = std::abs(x); <span class="comment">// Enforce odd parity</span>
<a name="l00258"></a>00258 y = log1p(y * (1 + y/(hypot(T(1), y) + 1)));
<a name="l00259"></a>00259 <span class="keywordflow">return</span> x < 0 ? -y : y;
<a name="l00260"></a>00260 }
-<a name="l00261"></a>00261 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00261"></a>00261 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
<a name="l00262"></a>00262 <span class="preprocessor"></span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T asinh(T x) <span class="keywordflow">throw</span>()
<a name="l00263"></a>00263 { <span class="keywordflow">return</span> std::asinh(x); }
<a name="l00264"></a>00264 <span class="preprocessor">#else</span>
@@ -320,7 +335,7 @@
<a name="l00270"></a>00270 <span class="preprocessor">#endif</span>
<a name="l00271"></a>00271 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00272"></a>00272 <span class="preprocessor"></span>
-<a name="l00273"></a>00273 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00273"></a>00273 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
<a name="l00274"></a>00274 <span class="preprocessor"></span><span class="comment"> /**</span>
<a name="l00275"></a>00275 <span class="comment"> * The inverse hyperbolic tangent function. This is defined in terms of</span>
<a name="l00276"></a>00276 <span class="comment"> * Math::log1p(\e x) in order to maintain accuracy near \e x = 0. In</span>
@@ -330,12 +345,12 @@
<a name="l00280"></a>00280 <span class="comment"> * @param[in] x</span>
<a name="l00281"></a>00281 <span class="comment"> * @return atanh(\e x).</span>
<a name="l00282"></a>00282 <span class="comment"> **********************************************************************/</span>
-<a name="l00283"></a><a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">00283</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">atanh</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00283"></a><a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">00283</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">atanh</a>(T x) <span class="keywordflow">throw</span>() {
<a name="l00284"></a>00284 T y = std::abs(x); <span class="comment">// Enforce odd parity</span>
<a name="l00285"></a>00285 y = log1p(2 * y/(1 - y))/2;
<a name="l00286"></a>00286 <span class="keywordflow">return</span> x < 0 ? -y : y;
<a name="l00287"></a>00287 }
-<a name="l00288"></a>00288 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00288"></a>00288 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
<a name="l00289"></a>00289 <span class="preprocessor"></span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T atanh(T x) <span class="keywordflow">throw</span>()
<a name="l00290"></a>00290 { <span class="keywordflow">return</span> std::atanh(x); }
<a name="l00291"></a>00291 <span class="preprocessor">#else</span>
@@ -347,7 +362,7 @@
<a name="l00297"></a>00297 <span class="preprocessor">#endif</span>
<a name="l00298"></a>00298 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00299"></a>00299 <span class="preprocessor"></span>
-<a name="l00300"></a>00300 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00300"></a>00300 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
<a name="l00301"></a>00301 <span class="preprocessor"></span><span class="comment"> /**</span>
<a name="l00302"></a>00302 <span class="comment"> * The cube root function.</span>
<a name="l00303"></a>00303 <span class="comment"> *</span>
@@ -355,11 +370,11 @@
<a name="l00305"></a>00305 <span class="comment"> * @param[in] x</span>
<a name="l00306"></a>00306 <span class="comment"> * @return the real cube root of \e x.</span>
<a name="l00307"></a>00307 <span class="comment"> **********************************************************************/</span>
-<a name="l00308"></a><a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">00308</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">cbrt</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00308"></a><a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">00308</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">cbrt</a>(T x) <span class="keywordflow">throw</span>() {
<a name="l00309"></a>00309 T y = std::pow(std::abs(x), 1/T(3)); <span class="comment">// Return the real cube root</span>
<a name="l00310"></a>00310 <span class="keywordflow">return</span> x < 0 ? -y : y;
<a name="l00311"></a>00311 }
-<a name="l00312"></a>00312 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH</span>
+<a name="l00312"></a>00312 <span class="preprocessor">#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH</span>
<a name="l00313"></a>00313 <span class="preprocessor"></span> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T cbrt(T x) <span class="keywordflow">throw</span>()
<a name="l00314"></a>00314 { <span class="keywordflow">return</span> std::cbrt(x); }
<a name="l00315"></a>00315 <span class="preprocessor">#else</span>
@@ -377,10 +392,10 @@
<a name="l00327"></a>00327 <span class="comment"> * @param[in] x</span>
<a name="l00328"></a>00328 <span class="comment"> * @return true if number is finite, false if NaN or infinite.</span>
<a name="l00329"></a>00329 <span class="comment"> **********************************************************************/</span>
-<a name="l00330"></a><a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">00330</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">isfinite</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00330"></a><a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">00330</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">isfinite</a>(T x) <span class="keywordflow">throw</span>() {
<a name="l00331"></a>00331 <span class="preprocessor">#if defined(DOXYGEN)</span>
<a name="l00332"></a>00332 <span class="preprocessor"></span> <span class="keywordflow">return</span> std::abs(x) <= (std::numeric_limits<T>::max)();
-<a name="l00333"></a>00333 <span class="preprocessor">#elif (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00333"></a>00333 <span class="preprocessor">#elif (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
<a name="l00334"></a>00334 <span class="preprocessor"></span> <span class="keywordflow">return</span> _finite(x) != 0;
<a name="l00335"></a>00335 <span class="preprocessor">#else</span>
<a name="l00336"></a>00336 <span class="preprocessor"></span> <span class="keywordflow">return</span> std::isfinite(x);
@@ -393,7 +408,7 @@
<a name="l00343"></a>00343 <span class="comment"> * @tparam T the type of the returned value.</span>
<a name="l00344"></a>00344 <span class="comment"> * @return NaN if available, otherwise return the max real.</span>
<a name="l00345"></a>00345 <span class="comment"> **********************************************************************/</span>
-<a name="l00346"></a><a class="code" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">00346</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">NaN</a>() throw() {
+<a name="l00346"></a><a class="code" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">00346</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">NaN</a>() throw() {
<a name="l00347"></a>00347 <span class="keywordflow">return</span> std::numeric_limits<T>::has_quiet_NaN ?
<a name="l00348"></a>00348 std::numeric_limits<T>::quiet_NaN() :
<a name="l00349"></a>00349 (std::numeric_limits<T>::max)();
@@ -410,8 +425,8 @@
<a name="l00360"></a>00360 <span class="comment"> * @param[in] x</span>
<a name="l00361"></a>00361 <span class="comment"> * @return true if argument is a NaN.</span>
<a name="l00362"></a>00362 <span class="comment"> **********************************************************************/</span>
-<a name="l00363"></a><a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">00363</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">isnan</a>(T x) <span class="keywordflow">throw</span>() {
-<a name="l00364"></a>00364 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)</span>
+<a name="l00363"></a><a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">00363</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">isnan</a>(T x) <span class="keywordflow">throw</span>() {
+<a name="l00364"></a>00364 <span class="preprocessor">#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)</span>
<a name="l00365"></a>00365 <span class="preprocessor"></span> <span class="keywordflow">return</span> x != x;
<a name="l00366"></a>00366 <span class="preprocessor">#else</span>
<a name="l00367"></a>00367 <span class="preprocessor"></span> <span class="keywordflow">return</span> std::isnan(x);
@@ -424,7 +439,7 @@
<a name="l00374"></a>00374 <span class="comment"> * @tparam T the type of the returned value.</span>
<a name="l00375"></a>00375 <span class="comment"> * @return infinity if available, otherwise return the max real.</span>
<a name="l00376"></a>00376 <span class="comment"> **********************************************************************/</span>
-<a name="l00377"></a><a class="code" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">00377</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">infinity</a>() throw() {
+<a name="l00377"></a><a class="code" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">00377</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">infinity</a>() throw() {
<a name="l00378"></a>00378 <span class="keywordflow">return</span> std::numeric_limits<T>::has_infinity ?
<a name="l00379"></a>00379 std::numeric_limits<T>::infinity() :
<a name="l00380"></a>00380 (std::numeric_limits<T>::max)();
@@ -441,7 +456,7 @@
<a name="l00391"></a>00391 <span class="comment"> * @param[in] x</span>
<a name="l00392"></a>00392 <span class="comment"> * @return x with its bytes swapped.</span>
<a name="l00393"></a>00393 <span class="comment"> **********************************************************************/</span>
-<a name="l00394"></a><a class="code" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">00394</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">swab</a>(T x) {
+<a name="l00394"></a><a class="code" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">00394</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> <span class="keyword">inline</span> T <a class="code" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">swab</a>(T x) {
<a name="l00395"></a>00395 <span class="keyword">union </span>{
<a name="l00396"></a>00396 T r;
<a name="l00397"></a>00397 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c[<span class="keyword">sizeof</span>(T)];
@@ -458,8 +473,13 @@
<a name="l00408"></a>00408 <span class="preprocessor">#endif // GEOGRAPHICLIB_MATH_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/NormalGravity_8cpp.html b/doc/html/NormalGravity_8cpp.html
index d69293c..9022f38 100644
--- a/doc/html/NormalGravity_8cpp.html
+++ b/doc/html/NormalGravity_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: NormalGravity.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,13 +75,11 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8cpp.html#ae09694799ad8f72c9b216b9729848655">GEOGRAPHICLIB_NORMALGRAVITY_CPP</a> "$Id: a12ddd4a6c44a5760e9590781099532fbed53cac $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8cpp.html#ae09694799ad8f72c9b216b9729848655">GEOGRAPHICLIB_NORMALGRAVITY_CPP</a> "$Id: ccd3d6bd4bddefb0b40cbce0006d863f08d64db4 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_NORMALGRAVITY_CPP "$Id: a12ddd4a6c44a5760e9590781099532fbed53cac $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_NORMALGRAVITY_CPP "$Id: ccd3d6bd4bddefb0b40cbce0006d863f08d64db4 $"</td>
</tr>
</table>
</div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/NormalGravity_8cpp_source.html b/doc/html/NormalGravity_8cpp_source.html
index a80b83e..acdb2a8 100644
--- a/doc/html/NormalGravity_8cpp_source.html
+++ b/doc/html/NormalGravity_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: NormalGravity.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="NormalGravity_8hpp.html" title="Header for GeographicLib::NormalGravity class.">GeographicLib/NormalGravity.hpp</a>></span>
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="NormalGravity_8cpp.html#ae09694799ad8f72c9b216b9729848655">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_NORMALGRAVITY_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: a12ddd4a6c44a5760e9590781099532fbed53cac $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: ccd3d6bd4bddefb0b40cbce0006d863f08d64db4 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="NormalGravity_8cpp.html#ae09694799ad8f72c9b216b9729848655">GEOGRAPHICLIB_NORMALGRAVITY_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="NormalGravity_8hpp.html#a3f83059dc418514a79fa4e6c94869b58">GEOGRAPHICLIB_NORMALGRAVITY_HPP</a>)
@@ -77,11 +92,11 @@
<a name="l00028"></a>00028 , _omega2(<a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::sq(_omega))
<a name="l00029"></a>00029 , _aomega2(<a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::sq(_omega * _a))
<a name="l00030"></a>00030 {
-<a name="l00031"></a>00031 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00031"></a>00031 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00032"></a>00032 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_GM) && _GM > 0))
+<a name="l00033"></a>00033 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_GM) && _GM > 0))
<a name="l00034"></a>00034 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Gravitational constants is not positive"</span>);
-<a name="l00035"></a>00035 <span class="keywordtype">bool</span> flatp = _f > 0 && <a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f);
+<a name="l00035"></a>00035 <span class="keywordtype">bool</span> flatp = _f > 0 && <a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f);
<a name="l00036"></a>00036 <span class="keywordflow">if</span> (_J2 > 0 && Math::isfinite(_J2) && flatp)
<a name="l00037"></a>00037 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Cannot specify both f and J2"</span>);
<a name="l00038"></a>00038 <span class="keywordflow">if</span> (!(_J2 > 0 && Math::isfinite(_J2)) && !flatp)
@@ -135,17 +150,17 @@
<a name="l00086"></a>00086 Constants::GRS80_omega<real>(),
<a name="l00087"></a>00087 0, Constants::GRS80_J2<real>());
<a name="l00088"></a>00088
-<a name="l00089"></a>00089 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> NormalGravity::qf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2) <span class="keywordflow">throw</span>() {
+<a name="l00089"></a>00089 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> NormalGravity::qf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2) <span class="keywordflow">throw</span>() {
<a name="l00090"></a>00090 <span class="comment">// Compute</span>
<a name="l00091"></a>00091 <span class="comment">//</span>
-<a name="l00092"></a>00092 <span class="comment">// ((1 + 3/e'^2) * atan(e') - 3/e')/2</span>
+<a name="l00092"></a>00092 <span class="comment">// ((1 + 3/e'^2) * atan(e') - 3/e')/2</span>
<a name="l00093"></a>00093 <span class="comment">//</span>
<a name="l00094"></a>00094 <span class="comment">// See H+M, Eq 2-57, with E/u = e'. This suffers from two levels of</span>
<a name="l00095"></a>00095 <span class="comment">// cancelation. The e'^-1 and e'^1 terms drop out, so that the leading</span>
<a name="l00096"></a>00096 <span class="comment">// term is O(e'^3).</span>
<a name="l00097"></a>00097 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep = sqrt(ep2);
-<a name="l00098"></a>00098 <span class="keywordflow">if</span> (abs(ep2) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) <span class="comment">// Use the closed expression</span>
-<a name="l00099"></a>00099 <span class="keywordflow">return</span> ((1 + 3 / ep2) * atan(ep) - 3 / ep)/2;
+<a name="l00098"></a>00098 <span class="keywordflow">if</span> (abs(ep2) > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.5)) <span class="comment">// Use the closed expression</span>
+<a name="l00099"></a>00099 <span class="keywordflow">return</span> ((1 + 3 / ep2) * atan(ep) - 3 / ep)/2;
<a name="l00100"></a>00100 <span class="keywordflow">else</span> {
<a name="l00101"></a>00101 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2n = 1, q = 0; <span class="comment">// The series expansion H+M, Eq 2-86</span>
<a name="l00102"></a>00102 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> n = 1; ; ++n) {
@@ -162,10 +177,10 @@
<a name="l00113"></a>00113 }
<a name="l00114"></a>00114 }
<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> NormalGravity::qpf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2) <span class="keywordflow">throw</span>() {
+<a name="l00116"></a>00116 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> NormalGravity::qpf(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> ep2) <span class="keywordflow">throw</span>() {
<a name="l00117"></a>00117 <span class="comment">// Compute</span>
<a name="l00118"></a>00118 <span class="comment">//</span>
-<a name="l00119"></a>00119 <span class="comment">// 3*(1 + 1/e'^2) * (1 - atan(e')/e') - 1</span>
+<a name="l00119"></a>00119 <span class="comment">// 3*(1 + 1/e'^2) * (1 - atan(e')/e') - 1</span>
<a name="l00120"></a>00120 <span class="comment">//</span>
<a name="l00121"></a>00121 <span class="comment">// See H+M, Eq 2-67, with E/u = e'. This suffers from two levels of</span>
<a name="l00122"></a>00122 <span class="comment">// cancelation. The e'^-2 and e'^0 terms drop out, so that the leading</span>
@@ -189,7 +204,7 @@
<a name="l00140"></a>00140 }
<a name="l00141"></a>00141 }
<a name="l00142"></a>00142
-<a name="l00143"></a>00143 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> NormalGravity::Jn(<span class="keywordtype">int</span> n) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00143"></a>00143 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> NormalGravity::Jn(<span class="keywordtype">int</span> n) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00144"></a>00144 <span class="comment">// Note Jn(0) = -1; Jn(2) = _J2; Jn(odd) = 0</span>
<a name="l00145"></a>00145 <span class="keywordflow">if</span> (n & 1 || n < 0)
<a name="l00146"></a>00146 <span class="keywordflow">return</span> 0;
@@ -201,50 +216,50 @@
<a name="l00152"></a>00152 -3 * e2n * (1 - n + 5 * n * _J2 / _e2) / ((2 * n + 1) * (2 * n + 3));
<a name="l00153"></a>00153 }
<a name="l00154"></a>00154
-<a name="l00155"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">00155</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">NormalGravity::SurfaceGravity</a>(real lat) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00155"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">00155</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">NormalGravity::SurfaceGravity</a>(real lat) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00156"></a>00156 real
-<a name="l00157"></a>00157 phi = lat * Math::degree<real>(),
-<a name="l00158"></a>00158 sphi2 = abs(lat) == 90 ? 1 : <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sin(phi));
+<a name="l00157"></a>00157 phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
+<a name="l00158"></a>00158 sphi2 = abs(lat) == 90 ? 1 : <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sin(phi));
<a name="l00159"></a>00159 <span class="comment">// H+M, Eq 2-78</span>
<a name="l00160"></a>00160 <span class="keywordflow">return</span> _gammae * (1 + _k * sphi2) / sqrt(1 - _e2 * sphi2);
<a name="l00161"></a>00161 }
<a name="l00162"></a>00162
-<a name="l00163"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">00163</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">NormalGravity::V0</a>(real X, real Y, real Z,
+<a name="l00163"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">00163</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">NormalGravity::V0</a>(real X, real Y, real Z,
<a name="l00164"></a>00164 real& GammaX, real& GammaY, real& GammaZ)
<a name="l00165"></a>00165 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00166"></a>00166 <span class="comment">// See H+M, Sec 6-2</span>
<a name="l00167"></a>00167 real
-<a name="l00168"></a>00168 p = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(X, Y),
+<a name="l00168"></a>00168 p = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(X, Y),
<a name="l00169"></a>00169 clam = p ? X/p : 1,
<a name="l00170"></a>00170 slam = p ? Y/p : 0,
-<a name="l00171"></a>00171 r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(p, Z),
-<a name="l00172"></a>00172 Q = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(r) - <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_E),
-<a name="l00173"></a>00173 t2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(2 * _E * Z),
-<a name="l00174"></a>00174 disc = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(Q) + t2),
+<a name="l00171"></a>00171 r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(p, Z),
+<a name="l00172"></a>00172 Q = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(r) - <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_E),
+<a name="l00173"></a>00173 t2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(2 * _E * Z),
+<a name="l00174"></a>00174 disc = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(Q) + t2),
<a name="l00175"></a>00175 <span class="comment">// This is H+M, Eq 6-8a, but generalized to deal with Q negative</span>
<a name="l00176"></a>00176 <span class="comment">// accurately.</span>
<a name="l00177"></a>00177 u = sqrt((Q >= 0 ? (Q + disc) : t2 / (disc - Q)) / 2),
-<a name="l00178"></a>00178 uE = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(u, _E),
+<a name="l00178"></a>00178 uE = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(u, _E),
<a name="l00179"></a>00179 <span class="comment">// H+M, Eq 6-8b</span>
<a name="l00180"></a>00180 sbet = Z * uE,
<a name="l00181"></a>00181 cbet = p * u,
-<a name="l00182"></a>00182 s = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(cbet, sbet);
+<a name="l00182"></a>00182 s = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(cbet, sbet);
<a name="l00183"></a>00183 cbet = s ? cbet/s : 0;
<a name="l00184"></a>00184 sbet = s ? sbet/s : 1;
<a name="l00185"></a>00185 real
-<a name="l00186"></a>00186 invw = uE / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(u, _E * sbet), <span class="comment">// H+M, Eq 2-63</span>
+<a name="l00186"></a>00186 invw = uE / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(u, _E * sbet), <span class="comment">// H+M, Eq 2-63</span>
<a name="l00187"></a>00187 ep = _E/u,
-<a name="l00188"></a>00188 ep2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(ep),
+<a name="l00188"></a>00188 ep2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(ep),
<a name="l00189"></a>00189 q = qf(ep2) / _q0,
<a name="l00190"></a>00190 qp = qpf(ep2) / _q0,
<a name="l00191"></a>00191 <span class="comment">// H+M, Eqs 2-62 + 6-9, but omitting last (rotational) term .</span>
<a name="l00192"></a>00192 Vres = (_GM / _E * atan(_E / u)
-<a name="l00193"></a>00193 + _aomega2 * q * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sbet) - 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3)) / 2),
+<a name="l00193"></a>00193 + _aomega2 * q * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sbet) - 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3)) / 2),
<a name="l00194"></a>00194 <span class="comment">// H+M, Eq 6-10</span>
<a name="l00195"></a>00195 gamu = - invw * (_GM
<a name="l00196"></a>00196 + (_aomega2 * _E * qp
-<a name="l00197"></a>00197 * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sbet) - 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3)) / 2)) / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(uE),
-<a name="l00198"></a>00198 gamb = _aomega2 * q * sbet * cbet * invw / uE,
+<a name="l00197"></a>00197 * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sbet) - 1/<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(3)) / 2)) / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(uE),
+<a name="l00198"></a>00198 gamb = _aomega2 * q * sbet * cbet * invw / uE,
<a name="l00199"></a>00199 t = u * invw / uE;
<a name="l00200"></a>00200 <span class="comment">// H+M, Eq 6-12</span>
<a name="l00201"></a>00201 GammaX = t * cbet * gamu - invw * sbet * gamb;
@@ -254,15 +269,15 @@
<a name="l00205"></a>00205 <span class="keywordflow">return</span> Vres;
<a name="l00206"></a>00206 }
<a name="l00207"></a>00207
-<a name="l00208"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">00208</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">NormalGravity::Phi</a>(real X, real Y, real& fX, real& fY)
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">00208</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">NormalGravity::Phi</a>(real X, real Y, real& fX, real& fY)
<a name="l00209"></a>00209 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00210"></a>00210 fX = _omega2 * X;
<a name="l00211"></a>00211 fY = _omega2 * Y;
<a name="l00212"></a>00212 <span class="comment">// N.B. fZ = 0;</span>
-<a name="l00213"></a>00213 <span class="keywordflow">return</span> _omega2 * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(X) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(Y)) / 2;
+<a name="l00213"></a>00213 <span class="keywordflow">return</span> _omega2 * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(X) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(Y)) / 2;
<a name="l00214"></a>00214 }
<a name="l00215"></a>00215
-<a name="l00216"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">00216</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">NormalGravity::U</a>(real X, real Y, real Z,
+<a name="l00216"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">00216</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">NormalGravity::U</a>(real X, real Y, real Z,
<a name="l00217"></a>00217 real& gammaX, real& gammaY, real& gammaZ)
<a name="l00218"></a>00218 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00219"></a>00219 real fX, fY;
@@ -272,11 +287,11 @@
<a name="l00223"></a>00223 <span class="keywordflow">return</span> Ures;
<a name="l00224"></a>00224 }
<a name="l00225"></a>00225
-<a name="l00226"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">00226</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">NormalGravity::Gravity</a>(real lat, real h,
+<a name="l00226"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">00226</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">NormalGravity::Gravity</a>(real lat, real h,
<a name="l00227"></a>00227 real& gammay, real& gammaz)
<a name="l00228"></a>00228 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00229"></a>00229 real X, Y, Z;
-<a name="l00230"></a>00230 real M[Geocentric::dim2_];
+<a name="l00230"></a>00230 real M[<a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a>::dim2_];
<a name="l00231"></a>00231 _earth.IntForward(lat, 0, h, X, Y, Z, M);
<a name="l00232"></a>00232 real gammaX, gammaY, gammaZ,
<a name="l00233"></a>00233 Ures = U(X, Y, Z, gammaX, gammaY, gammaZ);
@@ -289,8 +304,13 @@
<a name="l00240"></a>00240 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/NormalGravity_8hpp.html b/doc/html/NormalGravity_8hpp.html
index bc8f750..ed47932 100644
--- a/doc/html/NormalGravity_8hpp.html
+++ b/doc/html/NormalGravity_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: NormalGravity.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,10 +82,8 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8hpp.html#a3f83059dc418514a79fa4e6c94869b58">GEOGRAPHICLIB_NORMALGRAVITY_HPP</a> "$Id: e4b65c9c5787d8ee14f476cbb518fd5007006344 $"</td></tr>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/NormalGravity_8hpp_source.html b/doc/html/NormalGravity_8hpp_source.html
index 5a56453..b30d559 100644
--- a/doc/html/NormalGravity_8hpp_source.html
+++ b/doc/html/NormalGravity_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: NormalGravity.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -108,17 +123,17 @@
<a name="l00058"></a>00058 <span class="comment"> * \include example-NormalGravity.cpp</span>
<a name="l00059"></a>00059 <span class="comment"> **********************************************************************/</span>
<a name="l00060"></a>00060
-<a name="l00061"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html">00061</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> {
+<a name="l00061"></a>00061 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> NormalGravity {
<a name="l00062"></a>00062 <span class="keyword">private</span>:
<a name="l00063"></a>00063 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> maxit_ = 10;
-<a name="l00064"></a>00064 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00064"></a>00064 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00065"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#ada1db1d9f480d8044753ed869c995519">00065</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a>;
<a name="l00066"></a>00066 real _a, _GM, _omega, _f, _J2, _omega2, _aomega2;
<a name="l00067"></a>00067 real _e2, _ep2, _b, _E, _U0, _gammae, _gammap, _q0, _m, _k, _fstar;
<a name="l00068"></a>00068 <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> _earth;
-<a name="l00069"></a>00069 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> qf(real ep2) <span class="keywordflow">throw</span>();
-<a name="l00070"></a>00070 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> qpf(real ep2) <span class="keywordflow">throw</span>();
-<a name="l00071"></a>00071 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Jn(<span class="keywordtype">int</span> n) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00069"></a>00069 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real qf(real ep2) <span class="keywordflow">throw</span>();
+<a name="l00070"></a>00070 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real qpf(real ep2) <span class="keywordflow">throw</span>();
+<a name="l00071"></a>00071 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Jn(<span class="keywordtype">int</span> n) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00072"></a>00072 <span class="keyword">public</span>:
<a name="l00073"></a>00073 <span class="comment"></span>
<a name="l00074"></a>00074 <span class="comment"> /** \name Setting up the normal gravity</span>
@@ -147,7 +162,7 @@
<a name="l00097"></a>00097 <span class="comment"> * A and \e C are the equatorial and polar moments of inertia and \e M is</span>
<a name="l00098"></a>00098 <span class="comment"> * the mass of the earth.</span>
<a name="l00099"></a>00099 <span class="comment"> **********************************************************************/</span>
-<a name="l00100"></a>00100 <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>(real a, real GM, real omega, real f, real J2);
+<a name="l00100"></a>00100 NormalGravity(real a, real GM, real omega, real f, real J2);
<a name="l00101"></a>00101 <span class="comment"></span>
<a name="l00102"></a>00102 <span class="comment"> /**</span>
<a name="l00103"></a>00103 <span class="comment"> * A default constructor for the normal gravity. This sets up an</span>
@@ -172,7 +187,7 @@
<a name="l00122"></a>00122 <span class="comment"> * surface of the ellipsoid. It includes the effects of the earth's</span>
<a name="l00123"></a>00123 <span class="comment"> * rotation.</span>
<a name="l00124"></a>00124 <span class="comment"> **********************************************************************/</span>
-<a name="l00125"></a>00125 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SurfaceGravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00125"></a>00125 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> SurfaceGravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00126"></a>00126 <span class="comment"></span>
<a name="l00127"></a>00127 <span class="comment"> /**</span>
<a name="l00128"></a>00128 <span class="comment"> * Evaluate the gravity at an arbitrary point above (or below) the</span>
@@ -192,7 +207,7 @@
<a name="l00142"></a>00142 <span class="comment"> * of the earth's rotation. When \e h = 0, this function gives \e gammay =</span>
<a name="l00143"></a>00143 <span class="comment"> * 0 and the returned value matches that of NormalGravity::SurfaceGravity.</span>
<a name="l00144"></a>00144 <span class="comment"> **********************************************************************/</span>
-<a name="l00145"></a>00145 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gammay, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& [...]
+<a name="l00145"></a>00145 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Gravity(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> h, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& [...]
<a name="l00146"></a>00146 <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00147"></a>00147 <span class="comment"></span>
<a name="l00148"></a>00148 <span class="comment"> /**</span>
@@ -215,7 +230,7 @@
<a name="l00165"></a>00165 <span class="comment"> * The acceleration given by <b>gamma</b> = <b>grad</b> \e U = <b>grad</b></span>
<a name="l00166"></a>00166 <span class="comment"> * <i>V</i><sub>0</sub> + <b>grad</b> \e Phi = <b>Gamma</b> + <b>f</b>.</span>
<a name="l00167"></a>00167 <span class="comment"> **********************************************************************/</span>
-<a name="l00168"></a>00168 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> U(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00168"></a>00168 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> U(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
<a name="l00169"></a>00169 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gammaX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gammaY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gammaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00170"></a>00170 <span class="comment"></span>
<a name="l00171"></a>00171 <span class="comment"> /**</span>
@@ -239,7 +254,7 @@
<a name="l00189"></a>00189 <span class="comment"> * function NormalGravity::U (which includes this effect) should usually be</span>
<a name="l00190"></a>00190 <span class="comment"> * used.</span>
<a name="l00191"></a>00191 <span class="comment"> **********************************************************************/</span>
-<a name="l00192"></a>00192 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> V0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
+<a name="l00192"></a>00192 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> V0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Z,
<a name="l00193"></a>00193 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GammaX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GammaY, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& GammaZ) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00194"></a>00194 <span class="comment"></span>
<a name="l00195"></a>00195 <span class="comment"> /**</span>
@@ -257,7 +272,7 @@
<a name="l00207"></a>00207 <span class="comment"> * NormalGravity::U sums the results of NormalGravity::V0 and</span>
<a name="l00208"></a>00208 <span class="comment"> * NormalGravity::Phi.</span>
<a name="l00209"></a>00209 <span class="comment"> **********************************************************************/</span>
-<a name="l00210"></a>00210 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Phi(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& fX, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& fY) <span [...]
+<a name="l00210"></a>00210 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Phi(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> X, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> Y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& f [...]
<a name="l00211"></a>00211 <span class="comment"> ///@}</span>
<a name="l00212"></a>00212 <span class="comment"></span><span class="comment"></span>
<a name="l00213"></a>00213 <span class="comment"> /** \name Inspector functions</span>
@@ -272,16 +287,16 @@
<a name="l00222"></a>00222 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
<a name="l00223"></a>00223 <span class="comment"> * the value used in the constructor.</span>
<a name="l00224"></a>00224 <span class="comment"> **********************************************************************/</span>
-<a name="l00225"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a9155d22c5a64a7ef346ce7f590a6264f">00225</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() <span class="keyword">const</span> throw()
-<a name="l00226"></a>00226 { <span class="keywordflow">return</span> Init() ? _a : Math::NaN<real>(); }
+<a name="l00225"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a9155d22c5a64a7ef346ce7f590a6264f">00225</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() <span class="keyword">const</span> throw()
+<a name="l00226"></a>00226 { <span class="keywordflow">return</span> Init() ? _a : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
<a name="l00227"></a>00227 <span class="comment"></span>
<a name="l00228"></a>00228 <span class="comment"> /**</span>
<a name="l00229"></a>00229 <span class="comment"> * @return \e GM the mass constant of the ellipsoid</span>
<a name="l00230"></a>00230 <span class="comment"> * (m<sup>3</sup> s<sup>-2</sup>). This is the value used in the</span>
<a name="l00231"></a>00231 <span class="comment"> * constructor.</span>
<a name="l00232"></a>00232 <span class="comment"> **********************************************************************/</span>
-<a name="l00233"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3c6693dc7efe04cdbed408b2510c69da">00233</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MassConstant() <span class="keyword">const</span> throw()
-<a name="l00234"></a>00234 { <span class="keywordflow">return</span> Init() ? _GM : Math::NaN<real>(); }
+<a name="l00233"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3c6693dc7efe04cdbed408b2510c69da">00233</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MassConstant() <span class="keyword">const</span> throw()
+<a name="l00234"></a>00234 { <span class="keywordflow">return</span> Init() ? _GM : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
<a name="l00235"></a>00235 <span class="comment"></span>
<a name="l00236"></a>00236 <span class="comment"> /**</span>
<a name="l00237"></a>00237 <span class="comment"> * @return \e J<sub>n</sub> the dynamical form factors of the ellipsoid.</span>
@@ -293,50 +308,50 @@
<a name="l00243"></a>00243 <span class="comment"> * normalized Legendre functions are used and the corresponding coefficient</span>
<a name="l00244"></a>00244 <span class="comment"> * is <i>C</i><sub><i>n</i>0</sub> = -\e J<sub>n</sub> / sqrt(2 \e n + 1).</span>
<a name="l00245"></a>00245 <span class="comment"> **********************************************************************/</span>
-<a name="l00246"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aa52b03157eb0b199d331d6fca28a259a">00246</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> DynamicalFormFactor(<span class="keywordtype">int</span> n = 2) <span class="keyword">const</span> throw()
+<a name="l00246"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aa52b03157eb0b199d331d6fca28a259a">00246</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real DynamicalFormFactor(<span class="keywordtype">int</span> n = 2) <span class="keyword">const</span> throw()
<a name="l00247"></a>00247 { <span class="keywordflow">return</span> Init() ? ( n == 2 ? _J2 : Jn(n)) : Math::NaN<real>(); }
<a name="l00248"></a>00248 <span class="comment"></span>
<a name="l00249"></a>00249 <span class="comment"> /**</span>
<a name="l00250"></a>00250 <span class="comment"> * @return \e omega the angular velocity of the ellipsoid</span>
<a name="l00251"></a>00251 <span class="comment"> * (rad s<sup>-1</sup>). This is the value used in the constructor.</span>
<a name="l00252"></a>00252 <span class="comment"> **********************************************************************/</span>
-<a name="l00253"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aefd6dfb7e6f806b63d099316dcc97f55">00253</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> AngularVelocity() <span class="keyword">const</span> throw()
-<a name="l00254"></a>00254 { <span class="keywordflow">return</span> Init() ? _omega : Math::NaN<real>(); }
+<a name="l00253"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aefd6dfb7e6f806b63d099316dcc97f55">00253</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real AngularVelocity() <span class="keyword">const</span> throw()
+<a name="l00254"></a>00254 { <span class="keywordflow">return</span> Init() ? _omega : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
<a name="l00255"></a>00255 <span class="comment"></span>
<a name="l00256"></a>00256 <span class="comment"> /**</span>
<a name="l00257"></a>00257 <span class="comment"> * @return <i>f</i> the flattening of the ellipsoid (\e a - \e b)/\e a.</span>
<a name="l00258"></a>00258 <span class="comment"> **********************************************************************/</span>
-<a name="l00259"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aba396954f43e623e755bdff7db7d850b">00259</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() <span class="keyword">const</span> throw()
-<a name="l00260"></a>00260 { <span class="keywordflow">return</span> Init() ? _f : Math::NaN<real>(); }
+<a name="l00259"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#aba396954f43e623e755bdff7db7d850b">00259</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() <span class="keyword">const</span> throw()
+<a name="l00260"></a>00260 { <span class="keywordflow">return</span> Init() ? _f : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
<a name="l00261"></a>00261 <span class="comment"></span>
<a name="l00262"></a>00262 <span class="comment"> /**</span>
<a name="l00263"></a>00263 <span class="comment"> * @return <i>gamma</i><sub>e</sub> the normal gravity at equator</span>
<a name="l00264"></a>00264 <span class="comment"> * (m s<sup>-2</sup>).</span>
<a name="l00265"></a>00265 <span class="comment"> **********************************************************************/</span>
-<a name="l00266"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3610ec908c7b168b39f00946e2fc3fad">00266</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> EquatorialGravity() <span class="keyword">const</span> throw()
-<a name="l00267"></a>00267 { <span class="keywordflow">return</span> Init() ? _gammae : Math::NaN<real>(); }
+<a name="l00266"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3610ec908c7b168b39f00946e2fc3fad">00266</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real EquatorialGravity() <span class="keyword">const</span> throw()
+<a name="l00267"></a>00267 { <span class="keywordflow">return</span> Init() ? _gammae : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
<a name="l00268"></a>00268 <span class="comment"></span>
<a name="l00269"></a>00269 <span class="comment"> /**</span>
<a name="l00270"></a>00270 <span class="comment"> * @return <i>gamma</i><sub>p</sub> the normal gravity at poles</span>
<a name="l00271"></a>00271 <span class="comment"> * (m s<sup>-2</sup>).</span>
<a name="l00272"></a>00272 <span class="comment"> **********************************************************************/</span>
-<a name="l00273"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3079310d3a7af97ccb50b91be01d5a50">00273</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> PolarGravity() <span class="keyword">const</span> throw()
-<a name="l00274"></a>00274 { <span class="keywordflow">return</span> Init() ? _gammap : Math::NaN<real>(); }
+<a name="l00273"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a3079310d3a7af97ccb50b91be01d5a50">00273</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real PolarGravity() <span class="keyword">const</span> throw()
+<a name="l00274"></a>00274 { <span class="keywordflow">return</span> Init() ? _gammap : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
<a name="l00275"></a>00275 <span class="comment"></span>
<a name="l00276"></a>00276 <span class="comment"> /**</span>
<a name="l00277"></a>00277 <span class="comment"> * @return <i>f*</i> the gravity flattening</span>
<a name="l00278"></a>00278 <span class="comment"> * (<i>gamma</i><sub>p</sub> - <i>gamma</i><sub>e</sub>) /</span>
<a name="l00279"></a>00279 <span class="comment"> * <i>gamma</i><sub>e</sub>.</span>
<a name="l00280"></a>00280 <span class="comment"> **********************************************************************/</span>
-<a name="l00281"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a7e9329f7b3120b7777a0c5be3ca424a7">00281</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GravityFlattening() <span class="keyword">const</span> throw()
-<a name="l00282"></a>00282 { <span class="keywordflow">return</span> Init() ? _fstar : Math::NaN<real>(); }
+<a name="l00281"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a7e9329f7b3120b7777a0c5be3ca424a7">00281</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real GravityFlattening() <span class="keyword">const</span> throw()
+<a name="l00282"></a>00282 { <span class="keywordflow">return</span> Init() ? _fstar : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
<a name="l00283"></a>00283 <span class="comment"></span>
<a name="l00284"></a>00284 <span class="comment"> /**</span>
<a name="l00285"></a>00285 <span class="comment"> * @return <i>U</i><sub>0</sub> the constant normal potential for the</span>
<a name="l00286"></a>00286 <span class="comment"> * surface of the ellipsoid (m<sup>2</sup> s<sup>-2</sup>).</span>
<a name="l00287"></a>00287 <span class="comment"> **********************************************************************/</span>
-<a name="l00288"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a5bc3756dd7dbc82c07ef4afd1a182372">00288</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SurfacePotential() <span class="keyword">const</span> throw()
-<a name="l00289"></a>00289 { <span class="keywordflow">return</span> Init() ? _U0 : Math::NaN<real>(); }
+<a name="l00288"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a5bc3756dd7dbc82c07ef4afd1a182372">00288</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real SurfacePotential() <span class="keyword">const</span> throw()
+<a name="l00289"></a>00289 { <span class="keywordflow">return</span> Init() ? _U0 : <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>(); }
<a name="l00290"></a>00290 <span class="comment"></span>
<a name="l00291"></a>00291 <span class="comment"> /**</span>
<a name="l00292"></a>00292 <span class="comment"> * @return the Geocentric object used by this instance.</span>
@@ -347,12 +362,12 @@
<a name="l00297"></a>00297 <span class="comment"> /**</span>
<a name="l00298"></a>00298 <span class="comment"> * A global instantiation of NormalGravity for the WGS84 ellipsoid.</span>
<a name="l00299"></a>00299 <span class="comment"> **********************************************************************/</span>
-<a name="l00300"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">00300</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">WGS84</a>;
+<a name="l00300"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">00300</a> <span class="keyword">static</span> <span class="keyword">const</span> NormalGravity <a class="code" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">WGS84</a>;
<a name="l00301"></a>00301 <span class="comment"></span>
<a name="l00302"></a>00302 <span class="comment"> /**</span>
<a name="l00303"></a>00303 <span class="comment"> * A global instantiation of NormalGravity for the GRS80 ellipsoid.</span>
<a name="l00304"></a>00304 <span class="comment"> **********************************************************************/</span>
-<a name="l00305"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">00305</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> <a class="code" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">GRS80</a>;
+<a name="l00305"></a><a class="code" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">00305</a> <span class="keyword">static</span> <span class="keyword">const</span> NormalGravity <a class="code" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">GRS80</a>;
<a name="l00306"></a>00306 };
<a name="l00307"></a>00307
<a name="l00308"></a>00308 } <span class="comment">// namespace GeographicLib</span>
@@ -360,8 +375,13 @@
<a name="l00310"></a>00310 <span class="preprocessor">#endif // GEOGRAPHICLIB_NORMALGRAVITY_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/OSGB_8cpp.html b/doc/html/OSGB_8cpp.html
index 2f3f125..a2bae7c 100644
--- a/doc/html/OSGB_8cpp.html
+++ b/doc/html/OSGB_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: OSGB.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,17 +76,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">GEOGRAPHICLIB_OSGB_CPP</a> "$Id: 3412efffd5d1ac0d564ff4f6ae2094c2ca92649a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">GEOGRAPHICLIB_OSGB_CPP</a> "$Id: 4bfb35c88866ed936faad797f3cef6f4ece36196 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
-<p>Copyright (c) Charles Karney (2010, 2011, 2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2010-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="OSGB_8cpp_source.html">OSGB.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -80,7 +93,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_OSGB_CPP "$Id: 3412efffd5d1ac0d564ff4f6ae2094c2ca92649a $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_OSGB_CPP "$Id: 4bfb35c88866ed936faad797f3cef6f4ece36196 $"</td>
</tr>
</table>
</div>
@@ -91,8 +104,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/OSGB_8cpp_source.html b/doc/html/OSGB_8cpp_source.html
index 166eed4..e93490b 100644
--- a/doc/html/OSGB_8cpp_source.html
+++ b/doc/html/OSGB_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: OSGB.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
<a name="l00002"></a>00002 <span class="comment"> * \file OSGB.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::OSGB class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2010, 2011, 2012) <charles at karney.com> and</span>
-<a name="l00006"></a>00006 <span class="comment"> * licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2010-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="OSGB_8hpp.html" title="Header for GeographicLib::OSGB class.">GeographicLib/OSGB.hpp</a>></span>
<a name="l00011"></a>00011 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
<a name="l00012"></a>00012
-<a name="l00013"></a><a class="code" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">00013</a> <span class="preprocessor">#define GEOGRAPHICLIB_OSGB_CPP "$Id: 3412efffd5d1ac0d564ff4f6ae2094c2ca92649a $"</span>
+<a name="l00013"></a><a class="code" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">00013</a> <span class="preprocessor">#define GEOGRAPHICLIB_OSGB_CPP "$Id: 4bfb35c88866ed936faad797f3cef6f4ece36196 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="OSGB_8cpp.html#af7fa9aa83a3be95cccc572fc3b399b58">GEOGRAPHICLIB_OSGB_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">GEOGRAPHICLIB_OSGB_HPP</a>)
@@ -74,13 +89,13 @@
<a name="l00025"></a>00025 <span class="keyword">const</span> TransverseMercator
<a name="l00026"></a>00026 OSGB::OSGBTM_(MajorRadius(), Flattening(), CentralScale());
<a name="l00027"></a>00027
-<a name="l00028"></a>00028 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> OSGB::computenorthoffset() <span class="keywordflow">throw</span>() {
+<a name="l00028"></a>00028 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> OSGB::computenorthoffset() <span class="keywordflow">throw</span>() {
<a name="l00029"></a>00029 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, y;
<a name="l00030"></a>00030 OSGBTM_.Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), OriginLatitude(), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), x, y);
<a name="l00031"></a>00031 <span class="keywordflow">return</span> FalseNorthing() - y;
<a name="l00032"></a>00032 }
<a name="l00033"></a>00033
-<a name="l00034"></a>00034 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> OSGB::northoffset_ = computenorthoffset();
+<a name="l00034"></a>00034 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> OSGB::northoffset_ = computenorthoffset();
<a name="l00035"></a>00035
<a name="l00036"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a0a79e8f2babae1eb0305a0e728fea8c8">00036</a> <span class="keywordtype">void</span> OSGB::GridReference(real x, real y, <span class="keywordtype">int</span> prec, std::string& gridref) {
<a name="l00037"></a>00037 CheckCoords(x, y);
@@ -207,8 +222,13 @@
<a name="l00158"></a>00158 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/OSGB_8hpp.html b/doc/html/OSGB_8hpp.html
index 8a074c0..7273343 100644
--- a/doc/html/OSGB_8hpp.html
+++ b/doc/html/OSGB_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: OSGB.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,13 +84,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">GEOGRAPHICLIB_OSGB_HPP</a> "$Id: a8dbde4065691daa15563ea55c23eab4b7d8e967 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">GEOGRAPHICLIB_OSGB_HPP</a> "$Id: e91367e693ad63bb500c953e9c21445bef017464 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
@@ -88,7 +101,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_OSGB_HPP "$Id: a8dbde4065691daa15563ea55c23eab4b7d8e967 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_OSGB_HPP "$Id: e91367e693ad63bb500c953e9c21445bef017464 $"</td>
</tr>
</table>
</div>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/OSGB_8hpp_source.html b/doc/html/OSGB_8hpp_source.html
index 2152046..8ae6724 100644
--- a/doc/html/OSGB_8hpp_source.html
+++ b/doc/html/OSGB_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: OSGB.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -58,7 +73,7 @@
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_OSGB_HPP)</span>
-<a name="l00011"></a><a class="code" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_OSGB_HPP "$Id: a8dbde4065691daa15563ea55c23eab4b7d8e967 $"</span>
+<a name="l00011"></a><a class="code" href="OSGB_8hpp.html#a786c5942146679103feb716bea66a0a7">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_OSGB_HPP "$Id: e91367e693ad63bb500c953e9c21445bef017464 $"</span>
<a name="l00012"></a>00012 <span class="preprocessor"></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include <string></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <sstream></span>
@@ -93,13 +108,13 @@
<a name="l00043"></a>00043 <span class="comment"> * Example of use:</span>
<a name="l00044"></a>00044 <span class="comment"> * \include example-OSGB.cpp</span>
<a name="l00045"></a>00045 <span class="comment"> **********************************************************************/</span>
-<a name="l00046"></a><a class="code" href="classGeographicLib_1_1OSGB.html">00046</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> {
+<a name="l00046"></a>00046 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> OSGB {
<a name="l00047"></a>00047 <span class="keyword">private</span>:
-<a name="l00048"></a>00048 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00048"></a>00048 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00049"></a>00049 <span class="keyword">static</span> <span class="keyword">const</span> std::string letters_;
<a name="l00050"></a>00050 <span class="keyword">static</span> <span class="keyword">const</span> std::string digits_;
-<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> OSGBTM_;
-<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">const</span> real northoffset_;
+<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">const</span> TransverseMercator OSGBTM_;
+<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> northoffset_;
<a name="l00053"></a>00053 <span class="keyword">enum</span> {
<a name="l00054"></a>00054 base_ = 10,
<a name="l00055"></a>00055 tile_ = 100000,
@@ -114,9 +129,9 @@
<a name="l00064"></a>00064 <span class="comment">// Maximum precision is um</span>
<a name="l00065"></a>00065 maxprec_ = 5 + 6,
<a name="l00066"></a>00066 };
-<a name="l00067"></a>00067 <span class="keyword">static</span> real computenorthoffset() <span class="keywordflow">throw</span>();
-<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keywordtype">void</span> CheckCoords(real x, real y);
-<a name="l00069"></a>00069 <a class="code" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a>(); <span class="comment">// Disable constructor</span>
+<a name="l00067"></a>00067 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> computenorthoffset() <span class="keywordflow">throw</span>();
+<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keywordtype">void</span> CheckCoords(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y);
+<a name="l00069"></a>00069 OSGB(); <span class="comment">// Disable constructor</span>
<a name="l00070"></a>00070
<a name="l00071"></a>00071 <span class="keyword">public</span>:
<a name="l00072"></a>00072 <span class="comment"></span>
@@ -229,7 +244,7 @@
<a name="l00179"></a>00179 <span class="comment"> * 10^(9.48401603-10) m. (The Airy 1830 value is returned because the OSGB</span>
<a name="l00180"></a>00180 <span class="comment"> * projection is based on this ellipsoid.)</span>
<a name="l00181"></a>00181 <span class="comment"> **********************************************************************/</span>
-<a name="l00182"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a9bb3b0ff55a462ac2ebcd0cfd446d811">00182</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> MajorRadius() throw()
+<a name="l00182"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a9bb3b0ff55a462ac2ebcd0cfd446d811">00182</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() throw()
<a name="l00183"></a>00183 <span class="comment">// result is about 6377563.3960320664406 m</span>
<a name="l00184"></a>00184 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713) * std::pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(10), <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.48401603L) - 1); }
<a name="l00185"></a>00185 <span class="comment"></span>
@@ -241,55 +256,62 @@
<a name="l00191"></a>00191 <span class="comment"> * 1/299.32496459... (The Airy 1830 value is returned because the OSGB</span>
<a name="l00192"></a>00192 <span class="comment"> * projection is based on this ellipsoid.)</span>
<a name="l00193"></a>00193 <span class="comment"> **********************************************************************/</span>
-<a name="l00194"></a><a class="code" href="classGeographicLib_1_1OSGB.html#aae688ebd8c126f22517eaa0a01d659f8">00194</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() throw()
-<a name="l00195"></a>00195 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713 - 20853810) / <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713); }
+<a name="l00194"></a><a class="code" href="classGeographicLib_1_1OSGB.html#aae688ebd8c126f22517eaa0a01d659f8">00194</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() throw()
+<a name="l00195"></a>00195 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713 - 20853810) / <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(20923713); }
<a name="l00196"></a>00196 <span class="comment"></span>
-<a name="l00197"></a>00197 <span class="comment"> /**</span>
-<a name="l00198"></a>00198 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00199"></a>00199 <span class="comment"> * @return \e r the inverse flattening of the Airy 1830 ellipsoid.</span>
-<a name="l00200"></a>00200 <span class="comment"> **********************************************************************/</span>
-<a name="l00201"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">00201</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">InverseFlattening</a>() throw() { <span class="keywordflow">return</span> 1/Flattening(); }
-<a name="l00202"></a>00202 <span class="comment"></span>
-<a name="l00203"></a>00203 <span class="comment"> /**</span>
-<a name="l00204"></a>00204 <span class="comment"> * @return \e k0 central scale for the OSGB projection (0.9996012717).</span>
-<a name="l00205"></a>00205 <span class="comment"> **********************************************************************/</span>
-<a name="l00206"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a65210bfdcac362f393a8f81f28259ad0">00206</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> CentralScale() throw()
-<a name="l00207"></a>00207 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.9996012717L); }
-<a name="l00208"></a>00208 <span class="comment"></span>
-<a name="l00209"></a>00209 <span class="comment"> /**</span>
-<a name="l00210"></a>00210 <span class="comment"> * @return latitude of the origin for the OSGB projection (49 degrees).</span>
-<a name="l00211"></a>00211 <span class="comment"> **********************************************************************/</span>
-<a name="l00212"></a><a class="code" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">00212</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">OriginLatitude</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3 [...]
-<a name="l00213"></a>00213 <span class="comment"></span>
-<a name="l00214"></a>00214 <span class="comment"> /**</span>
-<a name="l00215"></a>00215 <span class="comment"> * @return longitude of the origin for the OSGB projection (-2 degrees).</span>
-<a name="l00216"></a>00216 <span class="comment"> **********************************************************************/</span>
-<a name="l00217"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">00217</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">OriginLongitude</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b [...]
-<a name="l00218"></a>00218 <span class="comment"></span>
-<a name="l00219"></a>00219 <span class="comment"> /**</span>
-<a name="l00220"></a>00220 <span class="comment"> * @return false northing the OSGB projection (-100000 meters).</span>
-<a name="l00221"></a>00221 <span class="comment"> **********************************************************************/</span>
-<a name="l00222"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a74072d4e62fcd4ca679b222716b6a6a1">00222</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#a74072d4e62fcd4ca679b222716b6a6a1">FalseNorthing</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c [...]
-<a name="l00223"></a>00223 <span class="comment"></span>
-<a name="l00224"></a>00224 <span class="comment"> /**</span>
-<a name="l00225"></a>00225 <span class="comment"> * @return false easting the OSGB projection (400000 meters).</span>
-<a name="l00226"></a>00226 <span class="comment"> **********************************************************************/</span>
-<a name="l00227"></a><a class="code" href="classGeographicLib_1_1OSGB.html#ab27e19f7688f6b472d217b31aeae079c">00227</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1OSGB.html#ab27e19f7688f6b472d217b31aeae079c">FalseEasting</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9 [...]
-<a name="l00228"></a>00228 <span class="comment"> ///@}</span>
-<a name="l00229"></a>00229 <span class="comment"></span>
-<a name="l00230"></a>00230 };
-<a name="l00231"></a>00231
-<a name="l00232"></a>00232 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00197"></a>00197 <span class="comment"> /// \cond SKIP</span>
+<a name="l00198"></a>00198 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00199"></a>00199 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00200"></a>00200 <span class="comment"> * @return \e r the inverse flattening of the Airy 1830 ellipsoid.</span>
+<a name="l00201"></a>00201 <span class="comment"> **********************************************************************/</span>
+<a name="l00202"></a>00202 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() throw() { <span class="keywordflow">return</span> 1/Flattening(); }<span class="comment"></span>
+<a name="l00203"></a>00203 <span class="comment"> /// \endcond</span>
+<a name="l00204"></a>00204 <span class="comment"></span><span class="comment"></span>
+<a name="l00205"></a>00205 <span class="comment"> /**</span>
+<a name="l00206"></a>00206 <span class="comment"> * @return \e k0 central scale for the OSGB projection (0.9996012717).</span>
+<a name="l00207"></a>00207 <span class="comment"> **********************************************************************/</span>
+<a name="l00208"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a65210bfdcac362f393a8f81f28259ad0">00208</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real CentralScale() throw()
+<a name="l00209"></a>00209 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.9996012717L); }
+<a name="l00210"></a>00210 <span class="comment"></span>
+<a name="l00211"></a>00211 <span class="comment"> /**</span>
+<a name="l00212"></a>00212 <span class="comment"> * @return latitude of the origin for the OSGB projection (49 degrees).</span>
+<a name="l00213"></a>00213 <span class="comment"> **********************************************************************/</span>
+<a name="l00214"></a><a class="code" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">00214</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">OriginLatitude</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d4 [...]
+<a name="l00215"></a>00215 <span class="comment"></span>
+<a name="l00216"></a>00216 <span class="comment"> /**</span>
+<a name="l00217"></a>00217 <span class="comment"> * @return longitude of the origin for the OSGB projection (-2 degrees).</span>
+<a name="l00218"></a>00218 <span class="comment"> **********************************************************************/</span>
+<a name="l00219"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">00219</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">OriginLongitude</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d [...]
+<a name="l00220"></a>00220 <span class="comment"></span>
+<a name="l00221"></a>00221 <span class="comment"> /**</span>
+<a name="l00222"></a>00222 <span class="comment"> * @return false northing the OSGB projection (-100000 meters).</span>
+<a name="l00223"></a>00223 <span class="comment"> **********************************************************************/</span>
+<a name="l00224"></a><a class="code" href="classGeographicLib_1_1OSGB.html#a74072d4e62fcd4ca679b222716b6a6a1">00224</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1OSGB.html#a74072d4e62fcd4ca679b222716b6a6a1">FalseNorthing</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46 [...]
+<a name="l00225"></a>00225 <span class="comment"></span>
+<a name="l00226"></a>00226 <span class="comment"> /**</span>
+<a name="l00227"></a>00227 <span class="comment"> * @return false easting the OSGB projection (400000 meters).</span>
+<a name="l00228"></a>00228 <span class="comment"> **********************************************************************/</span>
+<a name="l00229"></a><a class="code" href="classGeographicLib_1_1OSGB.html#ab27e19f7688f6b472d217b31aeae079c">00229</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1OSGB.html#ab27e19f7688f6b472d217b31aeae079c">FalseEasting</a>() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b [...]
+<a name="l00230"></a>00230 <span class="comment"> ///@}</span>
+<a name="l00231"></a>00231 <span class="comment"></span>
+<a name="l00232"></a>00232 };
<a name="l00233"></a>00233
-<a name="l00234"></a>00234 <span class="preprocessor">#if defined(_MSC_VER)</span>
-<a name="l00235"></a>00235 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
-<a name="l00236"></a>00236 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<a name="l00237"></a>00237 <span class="preprocessor"></span>
-<a name="l00238"></a>00238 <span class="preprocessor">#endif</span>
+<a name="l00234"></a>00234 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00235"></a>00235
+<a name="l00236"></a>00236 <span class="preprocessor">#if defined(_MSC_VER)</span>
+<a name="l00237"></a>00237 <span class="preprocessor"></span><span class="preprocessor">#pragma warning (pop)</span>
+<a name="l00238"></a>00238 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00239"></a>00239 <span class="preprocessor"></span>
+<a name="l00240"></a>00240 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Planimeter.1.html b/doc/html/Planimeter.1.html
index 4705c61..37d5415 100644
--- a/doc/html/Planimeter.1.html
+++ b/doc/html/Planimeter.1.html
@@ -43,8 +43,10 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>Planimeter</strong> [ <strong>-r</strong> ] [ <strong>-s</strong> ] [ <strong>-l</strong> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -109,6 +111,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
coordinates, use the default ellipsoid, since the conversion of these
coordinates to latitude and longitude uses the WGS84 parameters.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing. For a given polygon, the last such string found will be
+appended to the output line (separated by a space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -134,8 +145,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/doc/html/Planimeter_8cpp.html b/doc/html/Planimeter_8cpp.html
index e9e2762..add05c6 100644
--- a/doc/html/Planimeter_8cpp.html
+++ b/doc/html/Planimeter_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Planimeter.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for measuring the area of geodesic polygons. </p>
-<p>Copyright (c) Charles Karney (2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2010-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o Planimeter \ <a class="el" href="Planimeter_8cpp.html" title="Command line utility for measuring the area of geodesic polygons.">Planimeter.cpp</a> \ ../src/DMS.cpp \ ../src/GeoCoords.cpp \ ../src/Geodesic.cpp \ ../src/GeodesicLine.cpp \ ../src/MGRS.cpp \ ../src/PolarStereographic.cpp \ ../src/PolygonArea.cpp \ ../src/TransverseMercator.cpp \ ../src/UTMUPS.cpp</p>
<p>See the <a href="Planimeter.1.html">man page</a> for usage information. </p>
@@ -103,13 +118,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="Planimeter_8cpp_source.html#l00037">37</a> of file <a class="el" href="Planimeter_8cpp_source.html">Planimeter.cpp</a>.</p>
-<p>References <a class="el" href="PolygonArea_8cpp_source.html#l00023">GeographicLib::PolygonArea::AddPoint()</a>, <a class="el" href="PolygonArea_8hpp_source.html#l00107">GeographicLib::PolygonArea::Clear()</a>, <a class="el" href="PolygonArea_8cpp_source.html#l00041">GeographicLib::PolygonArea::Compute()</a>, <a class="el" href="Math_8hpp_source.html#l00363">GeographicLib::Math::isnan()</a>, and <a class="el" href="GeoCoords_8cpp_source.html#l00027">GeographicLib::GeoCoords::Reset()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00363">GeographicLib::Math::isnan()</a>, <a class="el" href="PolygonArea_8cpp_source.html#l00041">GeographicLib::PolygonArea::Compute()</a>, <a class="el" href="PolygonArea_8hpp_source.html#l00110">GeographicLib::PolygonArea::Clear()</a>, and <a class="el" href="PolygonArea_8cpp_source.html#l00023">GeographicLib::PolygonArea::AddPoint()</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Planimeter_8cpp_source.html b/doc/html/Planimeter_8cpp_source.html
index 52f6fef..c0f7f90 100644
--- a/doc/html/Planimeter_8cpp_source.html
+++ b/doc/html/Planimeter_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Planimeter.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,7 +66,7 @@
<a name="l00002"></a>00002 <span class="comment"> * \file Planimeter.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for measuring the area of geodesic polygons</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2010, 2011) <charles at karney.com> and licensed</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2010-2012) <charles at karney.com> and licensed</span>
<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
@@ -86,144 +101,170 @@
<a name="l00037"></a><a class="code" href="Planimeter_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00037</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00038"></a>00038 <span class="keywordflow">try</span> {
<a name="l00039"></a>00039 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00040"></a>00040 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00040"></a>00040 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00041"></a>00041 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00042"></a>00042 a = Constants::WGS84_a<real>(),
+<a name="l00042"></a>00042 a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
<a name="l00043"></a>00043 f = Constants::WGS84_f<real>();
<a name="l00044"></a>00044 <span class="keywordtype">bool</span> reverse = <span class="keyword">false</span>, sign = <span class="keyword">true</span>, polyline = <span class="keyword">false</span>;
-<a name="l00045"></a>00045 std::string istring, ifile, ofile;
-<a name="l00046"></a>00046
-<a name="l00047"></a>00047 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00048"></a>00048 std::string arg(argv[m]);
-<a name="l00049"></a>00049 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00050"></a>00050 reverse = !reverse;
-<a name="l00051"></a>00051 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>)
-<a name="l00052"></a>00052 sign = !sign;
-<a name="l00053"></a>00053 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>)
-<a name="l00054"></a>00054 polyline = !polyline;
-<a name="l00055"></a>00055 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00056"></a>00056 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00057"></a>00057 <span class="keywordflow">try</span> {
-<a name="l00058"></a>00058 a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00059"></a>00059 f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00060"></a>00060 }
-<a name="l00061"></a>00061 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00062"></a>00062 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00063"></a>00063 <span class="keywordflow">return</span> 1;
-<a name="l00064"></a>00064 }
-<a name="l00065"></a>00065 m += 2;
-<a name="l00066"></a>00066 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00068"></a>00068 istring = argv[m];
-<a name="l00069"></a>00069 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00070"></a>00070 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00071"></a>00071 ifile = argv[m];
-<a name="l00072"></a>00072 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00073"></a>00073 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00074"></a>00074 ofile = argv[m];
-<a name="l00075"></a>00075 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00076"></a>00076 std::cout
-<a name="l00077"></a>00077 << argv[0]
-<a name="l00078"></a>00078 << <span class="stringliteral">": $Id: 9e86fcfa71ff796f3ac3b4395f565456f2ae86eb $\n"</span>
-<a name="l00079"></a>00079 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00080"></a>00080 <span class="keywordflow">return</span> 0;
-<a name="l00081"></a>00081 } <span class="keywordflow">else</span>
-<a name="l00082"></a>00082 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00086"></a>00086 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00087"></a>00087 <span class="keywordflow">return</span> 1;
-<a name="l00088"></a>00088 }
-<a name="l00089"></a>00089 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00090"></a>00090 std::ifstream infile;
-<a name="l00091"></a>00091 std::istringstream instring;
-<a name="l00092"></a>00092 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00093"></a>00093 infile.open(ifile.c_str());
-<a name="l00094"></a>00094 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00095"></a>00095 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00096"></a>00096 <span class="keywordflow">return</span> 1;
-<a name="l00097"></a>00097 }
-<a name="l00098"></a>00098 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00099"></a>00099 std::string::size_type m = 0;
-<a name="l00100"></a>00100 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00101"></a>00101 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00103"></a>00103 <span class="keywordflow">break</span>;
-<a name="l00104"></a>00104 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00105"></a>00105 }
-<a name="l00106"></a>00106 instring.str(istring);
-<a name="l00107"></a>00107 }
-<a name="l00108"></a>00108 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00109"></a>00109 (!istring.empty() ? &instring : &std::cin);
-<a name="l00110"></a>00110
-<a name="l00111"></a>00111 std::ofstream outfile;
-<a name="l00112"></a>00112 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00113"></a>00113 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00114"></a>00114 outfile.open(ofile.c_str());
-<a name="l00115"></a>00115 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00116"></a>00116 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00117"></a>00117 <span class="keywordflow">return</span> 1;
-<a name="l00118"></a>00118 }
-<a name="l00119"></a>00119 }
-<a name="l00120"></a>00120 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00045"></a>00045 std::string istring, ifile, ofile, cdelim;
+<a name="l00046"></a>00046 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00049"></a>00049 std::string arg(argv[m]);
+<a name="l00050"></a>00050 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00051"></a>00051 reverse = !reverse;
+<a name="l00052"></a>00052 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>)
+<a name="l00053"></a>00053 sign = !sign;
+<a name="l00054"></a>00054 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>)
+<a name="l00055"></a>00055 polyline = !polyline;
+<a name="l00056"></a>00056 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00057"></a>00057 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00058"></a>00058 <span class="keywordflow">try</span> {
+<a name="l00059"></a>00059 a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00060"></a>00060 f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00061"></a>00061 }
+<a name="l00062"></a>00062 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00063"></a>00063 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00064"></a>00064 <span class="keywordflow">return</span> 1;
+<a name="l00065"></a>00065 }
+<a name="l00066"></a>00066 m += 2;
+<a name="l00067"></a>00067 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00069"></a>00069 istring = argv[m];
+<a name="l00070"></a>00070 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00071"></a>00071 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00072"></a>00072 ifile = argv[m];
+<a name="l00073"></a>00073 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00075"></a>00075 ofile = argv[m];
+<a name="l00076"></a>00076 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00077"></a>00077 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00078"></a>00078 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00079"></a>00079 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00080"></a>00080 <span class="keywordflow">return</span> 1;
+<a name="l00081"></a>00081 }
+<a name="l00082"></a>00082 lsep = argv[m][0];
+<a name="l00083"></a>00083 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00084"></a>00084 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00085"></a>00085 cdelim = argv[m];
+<a name="l00086"></a>00086 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00087"></a>00087 std::cout
+<a name="l00088"></a>00088 << argv[0]
+<a name="l00089"></a>00089 << <span class="stringliteral">": $Id: dbb8a9a0d79f172256044e72f65ebc667801eeac $\n"</span>
+<a name="l00090"></a>00090 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00091"></a>00091 <span class="keywordflow">return</span> 0;
+<a name="l00092"></a>00092 } <span class="keywordflow">else</span>
+<a name="l00093"></a>00093 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095
+<a name="l00096"></a>00096 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00097"></a>00097 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00098"></a>00098 <span class="keywordflow">return</span> 1;
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00101"></a>00101 std::ifstream infile;
+<a name="l00102"></a>00102 std::istringstream instring;
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00104"></a>00104 infile.open(ifile.c_str());
+<a name="l00105"></a>00105 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00106"></a>00106 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00107"></a>00107 <span class="keywordflow">return</span> 1;
+<a name="l00108"></a>00108 }
+<a name="l00109"></a>00109 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00110"></a>00110 std::string::size_type m = 0;
+<a name="l00111"></a>00111 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00112"></a>00112 m = istring.find(lsep, m);
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00114"></a>00114 <span class="keywordflow">break</span>;
+<a name="l00115"></a>00115 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 instring.str(istring);
+<a name="l00118"></a>00118 }
+<a name="l00119"></a>00119 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00120"></a>00120 (!istring.empty() ? &instring : &std::cin);
<a name="l00121"></a>00121
-<a name="l00122"></a>00122 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
-<a name="l00123"></a>00123 <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a> poly(geod, polyline);
-<a name="l00124"></a>00124 <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
-<a name="l00125"></a>00125
-<a name="l00126"></a>00126 std::string s;
-<a name="l00127"></a>00127 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> perimeter, area;
-<a name="l00128"></a>00128 <span class="keywordtype">unsigned</span> num;
-<a name="l00129"></a>00129 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00130"></a>00130 <span class="keywordtype">bool</span> endpoly = s.empty();
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (!endpoly) {
-<a name="l00132"></a>00132 <span class="keywordflow">try</span> {
-<a name="l00133"></a>00133 p.<a class="code" href="classGeographicLib_1_1GeoCoords.html#a4a1e0a65a8a344dfe519fcbf25078e37">Reset</a>(s);
-<a name="l00134"></a>00134 <span class="keywordflow">if</span> (<a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(p.Latitude()) || <a class="code" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">Math::isnan</a>(p.Longitude()))
-<a name="l00135"></a>00135 endpoly = <span class="keyword">true</span>;
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>&) {
-<a name="l00138"></a>00138 endpoly = <span class="keyword">true</span>;
-<a name="l00139"></a>00139 }
-<a name="l00140"></a>00140 }
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (endpoly) {
-<a name="l00142"></a>00142 num = poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a60e1c288358818c849356c9921191215">Compute</a>(reverse, sign, perimeter, area);
-<a name="l00143"></a>00143 <span class="keywordflow">if</span> (num > 0) {
-<a name="l00144"></a>00144 *output << num << <span class="stringliteral">" "</span>
-<a name="l00145"></a>00145 << Utility::str<real>(perimeter, 8);
-<a name="l00146"></a>00146 <span class="keywordflow">if</span> (!polyline)
-<a name="l00147"></a>00147 *output << <span class="stringliteral">" "</span> << Utility::str<real>(area, 3);
-<a name="l00148"></a>00148 *output << <span class="stringliteral">"\n"</span>;
-<a name="l00149"></a>00149 }
-<a name="l00150"></a>00150 poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>();
-<a name="l00151"></a>00151 } <span class="keywordflow">else</span>
-<a name="l00152"></a>00152 poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#acfec56f0e136a534192e1e71589299f1">AddPoint</a>(p.Latitude(), p.Longitude());
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 num = poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a60e1c288358818c849356c9921191215">Compute</a>(reverse, sign, perimeter, area);
-<a name="l00155"></a>00155 <span class="keywordflow">if</span> (num > 0) {
-<a name="l00156"></a>00156 *output << num << <span class="stringliteral">" "</span>
-<a name="l00157"></a>00157 << Utility::str<real>(perimeter, 8);
-<a name="l00158"></a>00158 <span class="keywordflow">if</span> (!polyline)
-<a name="l00159"></a>00159 *output << <span class="stringliteral">" "</span> << Utility::str<real>(area, 3);
-<a name="l00160"></a>00160 *output << <span class="stringliteral">"\n"</span>;
-<a name="l00161"></a>00161 }
-<a name="l00162"></a>00162 poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>();
-<a name="l00163"></a>00163 <span class="keywordflow">return</span> 0;
-<a name="l00164"></a>00164 }
-<a name="l00165"></a>00165 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00166"></a>00166 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00167"></a>00167 <span class="keywordflow">return</span> 1;
-<a name="l00168"></a>00168 }
-<a name="l00169"></a>00169 <span class="keywordflow">catch</span> (...) {
-<a name="l00170"></a>00170 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00171"></a>00171 <span class="keywordflow">return</span> 1;
-<a name="l00172"></a>00172 }
-<a name="l00173"></a>00173 }
+<a name="l00122"></a>00122 std::ofstream outfile;
+<a name="l00123"></a>00123 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00124"></a>00124 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00125"></a>00125 outfile.open(ofile.c_str());
+<a name="l00126"></a>00126 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00127"></a>00127 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00128"></a>00128 <span class="keywordflow">return</span> 1;
+<a name="l00129"></a>00129 }
+<a name="l00130"></a>00130 }
+<a name="l00131"></a>00131 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00132"></a>00132
+<a name="l00133"></a>00133 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(a, f);
+<a name="l00134"></a>00134 <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a> poly(geod, polyline);
+<a name="l00135"></a>00135 <a class="code" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a> p;
+<a name="l00136"></a>00136
+<a name="l00137"></a>00137 std::string s;
+<a name="l00138"></a>00138 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> perimeter, area;
+<a name="l00139"></a>00139 <span class="keywordtype">unsigned</span> num;
+<a name="l00140"></a>00140 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00141"></a>00141 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00142"></a>00142 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00143"></a>00143 std::string::size_type m = s.find(cdelim);
+<a name="l00144"></a>00144 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00145"></a>00145 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00146"></a>00146 s = s.substr(0, m);
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 }
+<a name="l00149"></a>00149 <span class="keywordtype">bool</span> endpoly = s.empty();
+<a name="l00150"></a>00150 <span class="keywordflow">if</span> (!endpoly) {
+<a name="l00151"></a>00151 <span class="keywordflow">try</span> {
+<a name="l00152"></a>00152 p.Reset(s);
+<a name="l00153"></a>00153 <span class="keywordflow">if</span> (<a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(p.Latitude()) || <a class="code" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">Math::isnan</a>(p.Longitude()))
+<a name="l00154"></a>00154 endpoly = <span class="keyword">true</span>;
+<a name="l00155"></a>00155 }
+<a name="l00156"></a>00156 <span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>&) {
+<a name="l00157"></a>00157 endpoly = <span class="keyword">true</span>;
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 <span class="keywordflow">if</span> (endpoly) {
+<a name="l00161"></a>00161 num = poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a60e1c288358818c849356c9921191215">Compute</a>(reverse, sign, perimeter, area);
+<a name="l00162"></a>00162 <span class="keywordflow">if</span> (num > 0) {
+<a name="l00163"></a>00163 *output << num << <span class="stringliteral">" "</span>
+<a name="l00164"></a>00164 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(perimeter, 8);
+<a name="l00165"></a>00165 <span class="keywordflow">if</span> (!polyline)
+<a name="l00166"></a>00166 *output << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(area, 3);
+<a name="l00167"></a>00167 *output << eol;
+<a name="l00168"></a>00168 }
+<a name="l00169"></a>00169 poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>();
+<a name="l00170"></a>00170 eol = <span class="stringliteral">"\n"</span>;
+<a name="l00171"></a>00171 } <span class="keywordflow">else</span>
+<a name="l00172"></a>00172 poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#acfec56f0e136a534192e1e71589299f1">AddPoint</a>(p.Latitude(), p.Longitude());
+<a name="l00173"></a>00173 }
+<a name="l00174"></a>00174 num = poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a60e1c288358818c849356c9921191215">Compute</a>(reverse, sign, perimeter, area);
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (num > 0) {
+<a name="l00176"></a>00176 *output << num << <span class="stringliteral">" "</span>
+<a name="l00177"></a>00177 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(perimeter, 8);
+<a name="l00178"></a>00178 <span class="keywordflow">if</span> (!polyline)
+<a name="l00179"></a>00179 *output << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(area, 3);
+<a name="l00180"></a>00180 *output << eol;
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 poly.<a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>();
+<a name="l00183"></a>00183 eol = <span class="stringliteral">"\n"</span>;
+<a name="l00184"></a>00184 <span class="keywordflow">return</span> 0;
+<a name="l00185"></a>00185 }
+<a name="l00186"></a>00186 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00187"></a>00187 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00188"></a>00188 <span class="keywordflow">return</span> 1;
+<a name="l00189"></a>00189 }
+<a name="l00190"></a>00190 <span class="keywordflow">catch</span> (...) {
+<a name="l00191"></a>00191 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00192"></a>00192 <span class="keywordflow">return</span> 1;
+<a name="l00193"></a>00193 }
+<a name="l00194"></a>00194 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/PolarStereographic_8cpp.html b/doc/html/PolarStereographic_8cpp.html
index 5ec27eb..117622e 100644
--- a/doc/html/PolarStereographic_8cpp.html
+++ b/doc/html/PolarStereographic_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: PolarStereographic.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8cpp.html#a2887f1d8fd2633373698a2d1468befc2">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP</a> "$Id: 272e10eb6406c817889a0e792fb9196893d85817 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8cpp.html#a2887f1d8fd2633373698a2d1468befc2">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP</a> "$Id: 3a2dee07e6ef1c55ddcdc2178d818c8edd4d1cd4 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="PolarStereographic_8cpp_source.html">PolarStereographic.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -79,7 +92,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP "$Id: 272e10eb6406c817889a0e792fb9196893d85817 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP "$Id: 3a2dee07e6ef1c55ddcdc2178d818c8edd4d1cd4 $"</td>
</tr>
</table>
</div>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/PolarStereographic_8cpp_source.html b/doc/html/PolarStereographic_8cpp_source.html
index 1f1ea27..a15928e 100644
--- a/doc/html/PolarStereographic_8cpp_source.html
+++ b/doc/html/PolarStereographic_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: PolarStereographic.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,15 +66,15 @@
<a name="l00002"></a>00002 <span class="comment"> * \file PolarStereographic.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::PolarStereographic class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#include <<a class="code" href="PolarStereographic_8hpp.html" title="Header for GeographicLib::PolarStereographic class.">GeographicLib/PolarStereographic.hpp</a>></span>
<a name="l00011"></a>00011
<a name="l00012"></a><a class="code" href="PolarStereographic_8cpp.html#a2887f1d8fd2633373698a2d1468befc2">00012</a> <span class="preprocessor">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP \</span>
-<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 272e10eb6406c817889a0e792fb9196893d85817 $"</span>
+<a name="l00013"></a>00013 <span class="preprocessor"> "$Id: 3a2dee07e6ef1c55ddcdc2178d818c8edd4d1cd4 $"</span>
<a name="l00014"></a>00014 <span class="preprocessor"></span>
<a name="l00015"></a>00015 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="PolarStereographic_8cpp.html#a2887f1d8fd2633373698a2d1468befc2">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP</a>)
<a name="l00016"></a>00016 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="PolarStereographic_8hpp.html#a7450566a6ed1475dc10f7c0dc85f5dd9">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</a>)
@@ -68,10 +83,10 @@
<a name="l00019"></a>00019
<a name="l00020"></a>00020 <span class="keyword">using namespace </span>std;
<a name="l00021"></a>00021
-<a name="l00022"></a>00022 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> PolarStereographic::tol_ =
+<a name="l00022"></a>00022 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> PolarStereographic::tol_ =
<a name="l00023"></a>00023 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1)*sqrt(numeric_limits<real>::epsilon());
<a name="l00024"></a>00024 <span class="comment">// Overflow value s.t. atan(overflow_) = pi/2</span>
-<a name="l00025"></a>00025 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> PolarStereographic::overflow_ =
+<a name="l00025"></a>00025 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> PolarStereographic::overflow_ =
<a name="l00026"></a>00026 1 / Math::sq(numeric_limits<real>::epsilon());
<a name="l00027"></a>00027
<a name="l00028"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a170d21f9c7a2e922c57fc83a44ea3dfa">00028</a> PolarStereographic::PolarStereographic(real a, real f, real k0)
@@ -84,11 +99,11 @@
<a name="l00035"></a>00035 , _c( (1 - _f) * _Cx )
<a name="l00036"></a>00036 , _k0(k0)
<a name="l00037"></a>00037 {
-<a name="l00038"></a>00038 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00038"></a>00038 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00039"></a>00039 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00040"></a>00040 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00040"></a>00040 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00041"></a>00041 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00042"></a>00042 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_k0) && _k0 > 0))
+<a name="l00042"></a>00042 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_k0) && _k0 > 0))
<a name="l00043"></a>00043 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00044"></a>00044 }
<a name="l00045"></a>00045
@@ -123,19 +138,19 @@
<a name="l00074"></a>00074 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00075"></a>00075 lat *= northp ? 1 : -1;
<a name="l00076"></a>00076 real
-<a name="l00077"></a>00077 phi = lat * Math::degree<real>(),
+<a name="l00077"></a>00077 phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00078"></a>00078 tau = lat != -90 ? tanx(phi) : -overflow_,
-<a name="l00079"></a>00079 secphi = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00079"></a>00079 secphi = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
<a name="l00080"></a>00080 sig = sinh( eatanhe(tau / secphi) ),
-<a name="l00081"></a>00081 taup = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * secphi,
-<a name="l00082"></a>00082 rho = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup) + abs(taup);
+<a name="l00081"></a>00081 taup = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * secphi,
+<a name="l00082"></a>00082 rho = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup) + abs(taup);
<a name="l00083"></a>00083 rho = taup >= 0 ? (lat != 90 ? 1/rho : 0) : rho;
<a name="l00084"></a>00084 rho *= 2 * _k0 * _a / _c;
-<a name="l00085"></a>00085 k = lat != 90 ? (rho / _a) * secphi * sqrt(_e2m + _e2 / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(secphi)) :
+<a name="l00085"></a>00085 k = lat != 90 ? (rho / _a) * secphi * sqrt(_e2m + _e2 / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(secphi)) :
<a name="l00086"></a>00086 _k0;
<a name="l00087"></a>00087 lon = lon >= 180 ? lon - 360 : (lon < -180 ? lon + 360 : lon);
<a name="l00088"></a>00088 real
-<a name="l00089"></a>00089 lam = lon * Math::degree<real>();
+<a name="l00089"></a>00089 lam = lon * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00090"></a>00090 x = rho * (lon == -180 ? 0 : sin(lam));
<a name="l00091"></a>00091 y = (northp ? -rho : rho) * (abs(lon) == 90 ? 0 : cos(lam));
<a name="l00092"></a>00092 gamma = northp ? lon : -lon;
@@ -145,7 +160,7 @@
<a name="l00096"></a>00096 real& lat, real& lon, real& gamma, real& k)
<a name="l00097"></a>00097 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00098"></a>00098 real
-<a name="l00099"></a>00099 rho = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(x, y),
+<a name="l00099"></a>00099 rho = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(x, y),
<a name="l00100"></a>00100 t = rho / (2 * _k0 * _a / _c),
<a name="l00101"></a>00101 taup = (1 / t - t) / 2,
<a name="l00102"></a>00102 tau = taup * _Cx,
@@ -153,27 +168,27 @@
<a name="l00104"></a>00104 <span class="comment">// min iterations = 1, max iterations = 2; mean = 1.99</span>
<a name="l00105"></a>00105 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < numit_; ++i) {
<a name="l00106"></a>00106 real
-<a name="l00107"></a>00107 tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00107"></a>00107 tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
<a name="l00108"></a>00108 sig = sinh( eatanhe( tau / tau1 ) ),
-<a name="l00109"></a>00109 taupa = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
-<a name="l00110"></a>00110 dtau = (taup - taupa) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tau)) /
-<a name="l00111"></a>00111 ( _e2m * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
+<a name="l00109"></a>00109 taupa = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
+<a name="l00110"></a>00110 dtau = (taup - taupa) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tau)) /
+<a name="l00111"></a>00111 ( _e2m * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
<a name="l00112"></a>00112 tau += dtau;
<a name="l00113"></a>00113 <span class="keywordflow">if</span> (!(abs(dtau) >= stol))
<a name="l00114"></a>00114 <span class="keywordflow">break</span>;
<a name="l00115"></a>00115 }
<a name="l00116"></a>00116 real
<a name="l00117"></a>00117 phi = atan(tau),
-<a name="l00118"></a>00118 secphi = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau);
+<a name="l00118"></a>00118 secphi = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau);
<a name="l00119"></a>00119 k = rho != 0 ?
-<a name="l00120"></a>00120 (rho / _a) * secphi * sqrt(_e2m + _e2 / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(secphi)) : _k0;
+<a name="l00120"></a>00120 (rho / _a) * secphi * sqrt(_e2m + _e2 / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(secphi)) : _k0;
<a name="l00121"></a>00121 lat = (northp ? 1 : -1) * (rho != 0 ? phi / Math::degree<real>() : 90);
-<a name="l00122"></a>00122 lon = -atan2( -x, northp ? -y : y ) / Math::degree<real>();
+<a name="l00122"></a>00122 lon = -atan2( -x, northp ? -y : y ) / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00123"></a>00123 gamma = northp ? lon : -lon;
<a name="l00124"></a>00124 }
<a name="l00125"></a>00125
<a name="l00126"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3f957214eb1d1248277a680e4c4ceed5">00126</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3f957214eb1d1248277a680e4c4ceed5">PolarStereographic::SetScale</a>(real lat, real k) {
-<a name="l00127"></a>00127 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(k) && k > 0))
+<a name="l00127"></a>00127 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(k) && k > 0))
<a name="l00128"></a>00128 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00129"></a>00129 <span class="keywordflow">if</span> (!(-90 < lat && lat <= 90))
<a name="l00130"></a>00130 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude must be in (-90d, 90d]"</span>);
@@ -186,8 +201,13 @@
<a name="l00137"></a>00137 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/PolarStereographic_8hpp.html b/doc/html/PolarStereographic_8hpp.html
index 11e679b..e1e18d7 100644
--- a/doc/html/PolarStereographic_8hpp.html
+++ b/doc/html/PolarStereographic_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: PolarStereographic.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -66,17 +81,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8hpp.html#a7450566a6ed1475dc10f7c0dc85f5dd9">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</a> "$Id: 4bd816aed80f08d9369cd9fee96df0db2f9eedb6 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8hpp.html#a7450566a6ed1475dc10f7c0dc85f5dd9">GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</a> "$Id: 07add8492c46e42012007a8738060abc902a5504 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -85,7 +98,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP "$Id: 4bd816aed80f08d9369cd9fee96df0db2f9eedb6 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP "$Id: 07add8492c46e42012007a8738060abc902a5504 $"</td>
</tr>
</table>
</div>
@@ -96,8 +109,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/PolarStereographic_8hpp_source.html b/doc/html/PolarStereographic_8hpp_source.html
index 28b836b..00a4664 100644
--- a/doc/html/PolarStereographic_8hpp_source.html
+++ b/doc/html/PolarStereographic_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: PolarStereographic.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file PolarStereographic.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::PolarStereographic class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP)</span>
<a name="l00011"></a><a class="code" href="PolarStereographic_8hpp.html#a7450566a6ed1475dc10f7c0dc85f5dd9">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 4bd816aed80f08d9369cd9fee96df0db2f9eedb6 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 07add8492c46e42012007a8738060abc902a5504 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
<a name="l00015"></a>00015
@@ -80,25 +95,25 @@
<a name="l00030"></a>00030 <span class="comment"> * Example of use:</span>
<a name="l00031"></a>00031 <span class="comment"> * \include example-PolarStereographic.cpp</span>
<a name="l00032"></a>00032 <span class="comment"> **********************************************************************/</span>
-<a name="l00033"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html">00033</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> {
+<a name="l00033"></a>00033 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> PolarStereographic {
<a name="l00034"></a>00034 <span class="keyword">private</span>:
-<a name="l00035"></a>00035 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00035"></a>00035 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00036"></a>00036 <span class="comment">// _Cx used to be _C but g++ 3.4 has a macro of that name</span>
-<a name="l00037"></a>00037 real _a, _f, _e2, _e, _e2m, _Cx, _c;
-<a name="l00038"></a>00038 real _k0;
-<a name="l00039"></a>00039 <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00040"></a>00040 <span class="keyword">static</span> <span class="keyword">const</span> real overflow_;
+<a name="l00037"></a>00037 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _e2, _e, _e2m, _Cx, _c;
+<a name="l00038"></a>00038 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _k0;
+<a name="l00039"></a>00039 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00040"></a>00040 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> overflow_;
<a name="l00041"></a>00041 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
<a name="l00042"></a>00042 <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
-<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">inline</span> real tanx(real x) <span class="keywordflow">throw</span>() {
-<a name="l00044"></a>00044 real t = std::tan(x);
+<a name="l00043"></a>00043 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tanx(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00044"></a>00044 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = std::tan(x);
<a name="l00045"></a>00045 <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
<a name="l00046"></a>00046 <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
<a name="l00047"></a>00047 }
<a name="l00048"></a>00048 <span class="comment">// Return e * atanh(e * x) for f >= 0, else return</span>
<a name="l00049"></a>00049 <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x) for f < 0</span>
-<a name="l00050"></a>00050 <span class="keyword">inline</span> real eatanhe(real x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00051"></a>00051 <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
+<a name="l00050"></a>00050 <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00051"></a>00051 <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
<a name="l00052"></a>00052 }
<a name="l00053"></a>00053 <span class="keyword">public</span>:
<a name="l00054"></a>00054 <span class="comment"></span>
@@ -114,7 +129,7 @@
<a name="l00064"></a>00064 <span class="comment"> * An exception is thrown if either of the axes of the ellipsoid is</span>
<a name="l00065"></a>00065 <span class="comment"> * not positive \e a or if \e k0 is not positive.</span>
<a name="l00066"></a>00066 <span class="comment"> **********************************************************************/</span>
-<a name="l00067"></a>00067 <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a>(real a, real f, real k0);
+<a name="l00067"></a>00067 PolarStereographic(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0);
<a name="l00068"></a>00068 <span class="comment"></span>
<a name="l00069"></a>00069 <span class="comment"> /**</span>
<a name="l00070"></a>00070 <span class="comment"> * Set the scale for the projection.</span>
@@ -126,7 +141,7 @@
<a name="l00076"></a>00076 <span class="comment"> * thrown if \e k is not positive or if \e lat is not in the range (-90,</span>
<a name="l00077"></a>00077 <span class="comment"> * 90].</span>
<a name="l00078"></a>00078 <span class="comment"> **********************************************************************/</span>
-<a name="l00079"></a>00079 <span class="keywordtype">void</span> SetScale(real lat, real k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
+<a name="l00079"></a>00079 <span class="keywordtype">void</span> SetScale(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1));
<a name="l00080"></a>00080 <span class="comment"></span>
<a name="l00081"></a>00081 <span class="comment"> /**</span>
<a name="l00082"></a>00082 <span class="comment"> * Forward projection, from geographic to polar stereographic.</span>
@@ -144,8 +159,8 @@
<a name="l00094"></a>00094 <span class="comment"> * (-90, 90] for \e northp = true and in the range [-90, 90) for \e northp</span>
<a name="l00095"></a>00095 <span class="comment"> * = false; \e lon should be in the range [-180, 360].</span>
<a name="l00096"></a>00096 <span class="comment"> **********************************************************************/</span>
-<a name="l00097"></a>00097 <span class="keywordtype">void</span> Forward(<span class="keywordtype">bool</span> northp, real lat, real lon,
-<a name="l00098"></a>00098 real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00097"></a>00097 <span class="keywordtype">void</span> Forward(<span class="keywordtype">bool</span> northp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00098"></a>00098 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00099"></a>00099 <span class="comment"></span>
<a name="l00100"></a>00100 <span class="comment"> /**</span>
<a name="l00101"></a>00101 <span class="comment"> * Reverse projection, from polar stereographic to geographic.</span>
@@ -162,8 +177,8 @@
<a name="l00112"></a>00112 <span class="comment"> * No false easting or northing is added. The value of \e lon returned is</span>
<a name="l00113"></a>00113 <span class="comment"> * in the range [-180, 180).</span>
<a name="l00114"></a>00114 <span class="comment"> **********************************************************************/</span>
-<a name="l00115"></a>00115 <span class="keywordtype">void</span> Reverse(<span class="keywordtype">bool</span> northp, real x, real y,
-<a name="l00116"></a>00116 real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00115"></a>00115 <span class="keywordtype">void</span> Reverse(<span class="keywordtype">bool</span> northp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00116"></a>00116 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00117"></a>00117 <span class="comment"></span>
<a name="l00118"></a>00118 <span class="comment"> /**</span>
<a name="l00119"></a>00119 <span class="comment"> * PolarStereographic::Forward without returning the convergence and scale.</span>
@@ -190,43 +205,50 @@
<a name="l00140"></a>00140 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
<a name="l00141"></a>00141 <span class="comment"> * the value used in the constructor.</span>
<a name="l00142"></a>00142 <span class="comment"> **********************************************************************/</span>
-<a name="l00143"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">00143</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00143"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">00143</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
<a name="l00144"></a>00144 <span class="comment"></span>
<a name="l00145"></a>00145 <span class="comment"> /**</span>
<a name="l00146"></a>00146 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value used in</span>
<a name="l00147"></a>00147 <span class="comment"> * the constructor.</span>
<a name="l00148"></a>00148 <span class="comment"> **********************************************************************/</span>
-<a name="l00149"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">00149</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00149"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">00149</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
<a name="l00150"></a>00150 <span class="comment"></span>
-<a name="l00151"></a>00151 <span class="comment"> /**</span>
-<a name="l00152"></a>00152 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00153"></a>00153 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00154"></a>00154 <span class="comment"> **********************************************************************/</span>
-<a name="l00155"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">00155</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00156"></a>00156 <span class="comment"></span>
-<a name="l00157"></a>00157 <span class="comment"> /**</span>
-<a name="l00158"></a>00158 <span class="comment"> * The central scale for the projection. This is the value of \e k0 used</span>
-<a name="l00159"></a>00159 <span class="comment"> * in the constructor and is the scale at the pole unless overridden by</span>
-<a name="l00160"></a>00160 <span class="comment"> * PolarStereographic::SetScale.</span>
-<a name="l00161"></a>00161 <span class="comment"> **********************************************************************/</span>
-<a name="l00162"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">00162</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00163"></a>00163 <span class="comment"> ///@}</span>
-<a name="l00164"></a>00164 <span class="comment"></span><span class="comment"></span>
-<a name="l00165"></a>00165 <span class="comment"> /**</span>
-<a name="l00166"></a>00166 <span class="comment"> * A global instantiation of PolarStereographic with the WGS84 ellipsoid</span>
-<a name="l00167"></a>00167 <span class="comment"> * and the UPS scale factor. However, unlike UPS, no false easting or</span>
-<a name="l00168"></a>00168 <span class="comment"> * northing is added.</span>
-<a name="l00169"></a>00169 <span class="comment"> **********************************************************************/</span>
-<a name="l00170"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">00170</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">UPS</a>;
-<a name="l00171"></a>00171 };
-<a name="l00172"></a>00172
-<a name="l00173"></a>00173 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00151"></a>00151 <span class="comment"> /// \cond SKIP</span>
+<a name="l00152"></a>00152 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00153"></a>00153 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00154"></a>00154 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00155"></a>00155 <span class="comment"> **********************************************************************/</span>
+<a name="l00156"></a>00156 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00157"></a>00157 <span class="comment"> /// \endcond</span>
+<a name="l00158"></a>00158 <span class="comment"></span><span class="comment"></span>
+<a name="l00159"></a>00159 <span class="comment"> /**</span>
+<a name="l00160"></a>00160 <span class="comment"> * The central scale for the projection. This is the value of \e k0 used</span>
+<a name="l00161"></a>00161 <span class="comment"> * in the constructor and is the scale at the pole unless overridden by</span>
+<a name="l00162"></a>00162 <span class="comment"> * PolarStereographic::SetScale.</span>
+<a name="l00163"></a>00163 <span class="comment"> **********************************************************************/</span>
+<a name="l00164"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">00164</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="co [...]
+<a name="l00165"></a>00165 <span class="comment"> ///@}</span>
+<a name="l00166"></a>00166 <span class="comment"></span><span class="comment"></span>
+<a name="l00167"></a>00167 <span class="comment"> /**</span>
+<a name="l00168"></a>00168 <span class="comment"> * A global instantiation of PolarStereographic with the WGS84 ellipsoid</span>
+<a name="l00169"></a>00169 <span class="comment"> * and the UPS scale factor. However, unlike UPS, no false easting or</span>
+<a name="l00170"></a>00170 <span class="comment"> * northing is added.</span>
+<a name="l00171"></a>00171 <span class="comment"> **********************************************************************/</span>
+<a name="l00172"></a><a class="code" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">00172</a> <span class="keyword">static</span> <span class="keyword">const</span> PolarStereographic <a class="code" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">UPS</a>;
+<a name="l00173"></a>00173 };
<a name="l00174"></a>00174
-<a name="l00175"></a>00175 <span class="preprocessor">#endif // GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</span>
+<a name="l00175"></a>00175 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00176"></a>00176
+<a name="l00177"></a>00177 <span class="preprocessor">#endif // GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/PolygonArea_8cpp.html b/doc/html/PolygonArea_8cpp.html
index 11711f0..3c89aea 100644
--- a/doc/html/PolygonArea_8cpp.html
+++ b/doc/html/PolygonArea_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: PolygonArea.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,10 +75,8 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8cpp.html#adda27aeacbbca888326b0f4cd9577254">GEOGRAPHICLIB_POLYGONAREA_CPP</a> "$Id: ae2fce0b24653309ca8835d962b1a3e047a6768a $"</td></tr>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/PolygonArea_8cpp_source.html b/doc/html/PolygonArea_8cpp_source.html
index 53cb8ab..b179ec9 100644
--- a/doc/html/PolygonArea_8cpp_source.html
+++ b/doc/html/PolygonArea_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: PolygonArea.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -180,8 +195,13 @@
<a name="l00131"></a>00131 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/PolygonArea_8hpp.html b/doc/html/PolygonArea_8hpp.html
index a9b7efc..1d29700 100644
--- a/doc/html/PolygonArea_8hpp.html
+++ b/doc/html/PolygonArea_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: PolygonArea.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,13 +83,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8hpp.html#a284051319ec399ec9363ace180fc1203">GEOGRAPHICLIB_POLYGONAREA_HPP</a> "$Id: 8c532d61c2cec114c7bf224b2f80a1c249748f1b $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8hpp.html#a284051319ec399ec9363ace180fc1203">GEOGRAPHICLIB_POLYGONAREA_HPP</a> "$Id: 7a339f312a9c977b9fccad3c0c8bfa9009d863e2 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
@@ -87,7 +100,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_POLYGONAREA_HPP "$Id: 8c532d61c2cec114c7bf224b2f80a1c249748f1b $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_POLYGONAREA_HPP "$Id: 7a339f312a9c977b9fccad3c0c8bfa9009d863e2 $"</td>
</tr>
</table>
</div>
@@ -98,8 +111,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/PolygonArea_8hpp_source.html b/doc/html/PolygonArea_8hpp_source.html
index ac268aa..8d17b8a 100644
--- a/doc/html/PolygonArea_8hpp_source.html
+++ b/doc/html/PolygonArea_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: PolygonArea.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_POLYGONAREA_HPP)</span>
<a name="l00011"></a><a class="code" href="PolygonArea_8hpp.html#a284051319ec399ec9363ace180fc1203">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_POLYGONAREA_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 8c532d61c2cec114c7bf224b2f80a1c249748f1b $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 7a339f312a9c977b9fccad3c0c8bfa9009d863e2 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Geodesic_8hpp.html" title="Header for GeographicLib::Geodesic class.">GeographicLib/Geodesic.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -95,153 +110,161 @@
<a name="l00045"></a>00045 <span class="comment"> *</span>
<a name="l00046"></a>00046 <span class="comment"> * Example of use:</span>
<a name="l00047"></a>00047 <span class="comment"> * \include example-PolygonArea.cpp</span>
-<a name="l00048"></a>00048 <span class="comment"> **********************************************************************/</span>
-<a name="l00049"></a>00049
-<a name="l00050"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html">00050</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a> {
-<a name="l00051"></a>00051 <span class="keyword">private</span>:
-<a name="l00052"></a>00052 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00053"></a>00053 <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> _earth;
-<a name="l00054"></a>00054 real _area0; <span class="comment">// Full ellipsoid area</span>
-<a name="l00055"></a>00055 <span class="keywordtype">bool</span> _polyline; <span class="comment">// Assume polyline (don't close and skip area)</span>
-<a name="l00056"></a>00056 <span class="keywordtype">unsigned</span> _mask;
-<a name="l00057"></a>00057 <span class="keywordtype">unsigned</span> _num;
-<a name="l00058"></a>00058 <span class="keywordtype">int</span> _crossings;
-<a name="l00059"></a>00059 <a class="code" href="classGeographicLib_1_1Accumulator.html">Accumulator<real></a> _areasum, _perimetersum;
-<a name="l00060"></a>00060 real _lat0, _lon0, _lat1, _lon1;
-<a name="l00061"></a>00061 <span class="comment">// Copied from Geodesic class</span>
-<a name="l00062"></a>00062 <span class="keyword">static</span> <span class="keyword">inline</span> real AngNormalize(real x) <span class="keywordflow">throw</span>() {
-<a name="l00063"></a>00063 <span class="comment">// Place angle in [-180, 180). Assumes x is in [-540, 540).</span>
-<a name="l00064"></a>00064 <span class="comment">//</span>
-<a name="l00065"></a>00065 <span class="comment">// g++ 4.4.4 holds a temporary in an extended register causing an error</span>
-<a name="l00066"></a>00066 <span class="comment">// with the triangle 89,0.1;89,90.1;89,-179.9. The volatile declaration</span>
-<a name="l00067"></a>00067 <span class="comment">// fixes this. (The bug probably triggered because transit and</span>
-<a name="l00068"></a>00068 <span class="comment">// AngNormalize are inline functions. So don't port this change over to</span>
-<a name="l00069"></a>00069 <span class="comment">// Geodesic.hpp.)</span>
-<a name="l00070"></a>00070 <span class="keyword">volatile</span> real y = x;
-<a name="l00071"></a>00071 <span class="keywordflow">return</span> y >= 180 ? y - 360 : (y < -180 ? y + 360 : y);
-<a name="l00072"></a>00072 }
-<a name="l00073"></a>00073 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> transit(real lon1, real lon2) {
-<a name="l00074"></a>00074 <span class="comment">// Return 1 or -1 if crossing prime meridian in east or west direction.</span>
-<a name="l00075"></a>00075 <span class="comment">// Otherwise return zero.</span>
-<a name="l00076"></a>00076 lon1 = AngNormalize(lon1);
-<a name="l00077"></a>00077 lon2 = AngNormalize(lon2);
-<a name="l00078"></a>00078 <span class="comment">// treat lon12 = -180 as an eastward geodesic, so convert to 180.</span>
-<a name="l00079"></a>00079 real lon12 = -AngNormalize(lon1 - lon2); <span class="comment">// In (-180, 180]</span>
-<a name="l00080"></a>00080 <span class="keywordtype">int</span> cross =
-<a name="l00081"></a>00081 lon1 < 0 && lon2 >= 0 && lon12 > 0 ? 1 :
-<a name="l00082"></a>00082 (lon2 < 0 && lon1 >= 0 && lon12 < 0 ? -1 : 0);
-<a name="l00083"></a>00083 <span class="keywordflow">return</span> cross;
-<a name="l00084"></a>00084 }
-<a name="l00085"></a>00085 <span class="keyword">public</span>:
-<a name="l00086"></a>00086 <span class="comment"></span>
-<a name="l00087"></a>00087 <span class="comment"> /**</span>
-<a name="l00088"></a>00088 <span class="comment"> * Constructor for PolygonArea.</span>
-<a name="l00089"></a>00089 <span class="comment"> *</span>
-<a name="l00090"></a>00090 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
-<a name="l00091"></a>00091 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
-<a name="l00092"></a>00092 <span class="comment"> * @param[in] polyline if true that treat the points as defining a polyline</span>
-<a name="l00093"></a>00093 <span class="comment"> * instead of a polygon (default = false).</span>
-<a name="l00094"></a>00094 <span class="comment"> **********************************************************************/</span>
-<a name="l00095"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#a060a1dc499bd079c62f62ed5cad929e5">00095</a> <a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a>(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth, <span class="keywordtype">bool</span> polyline = <span class="keyword">false</span>) throw()
-<a name="l00096"></a>00096 : _earth(earth)
-<a name="l00097"></a>00097 , _area0(_earth.EllipsoidArea())
-<a name="l00098"></a>00098 , _polyline(polyline)
-<a name="l00099"></a>00099 , _mask(<a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::DISTANCE | (_polyline ? 0 : <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::AREA))
-<a name="l00100"></a>00100 {
-<a name="l00101"></a>00101 Clear();
-<a name="l00102"></a>00102 }
-<a name="l00103"></a>00103 <span class="comment"></span>
-<a name="l00104"></a>00104 <span class="comment"> /**</span>
-<a name="l00105"></a>00105 <span class="comment"> * Clear PolygonArea, allowing a new polygon to be started.</span>
-<a name="l00106"></a>00106 <span class="comment"> **********************************************************************/</span>
-<a name="l00107"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">00107</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>() throw() {
-<a name="l00108"></a>00108 _num = 0;
-<a name="l00109"></a>00109 _crossings = 0;
-<a name="l00110"></a>00110 _areasum = 0;
-<a name="l00111"></a>00111 _perimetersum = 0;
-<a name="l00112"></a>00112 _lat0 = _lon0 = _lat1 = _lon1 = 0;
-<a name="l00113"></a>00113 }
-<a name="l00114"></a>00114 <span class="comment"></span>
-<a name="l00115"></a>00115 <span class="comment"> /**</span>
-<a name="l00116"></a>00116 <span class="comment"> * Add a point to the polygon or polyline.</span>
-<a name="l00117"></a>00117 <span class="comment"> *</span>
-<a name="l00118"></a>00118 <span class="comment"> * @param[in] lat the latitude of the point (degrees).</span>
-<a name="l00119"></a>00119 <span class="comment"> * @param[in] lon the latitude of the point (degrees).</span>
+<a name="l00048"></a>00048 <span class="comment"> *</span>
+<a name="l00049"></a>00049 <span class="comment"> * <a href="Planimeter.1.html">Planimeter</a> is a command-line utility</span>
+<a name="l00050"></a>00050 <span class="comment"> * providing access to the functionality of PolygonArea.</span>
+<a name="l00051"></a>00051 <span class="comment"> **********************************************************************/</span>
+<a name="l00052"></a>00052
+<a name="l00053"></a>00053 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> PolygonArea {
+<a name="l00054"></a>00054 <span class="keyword">private</span>:
+<a name="l00055"></a>00055 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00056"></a>00056 Geodesic _earth;
+<a name="l00057"></a>00057 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _area0; <span class="comment">// Full ellipsoid area</span>
+<a name="l00058"></a>00058 <span class="keywordtype">bool</span> _polyline; <span class="comment">// Assume polyline (don't close and skip area)</span>
+<a name="l00059"></a>00059 <span class="keywordtype">unsigned</span> _mask;
+<a name="l00060"></a>00060 <span class="keywordtype">unsigned</span> _num;
+<a name="l00061"></a>00061 <span class="keywordtype">int</span> _crossings;
+<a name="l00062"></a>00062 Accumulator<real> _areasum, _perimetersum;
+<a name="l00063"></a>00063 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _lat0, _lon0, _lat1, _lon1;
+<a name="l00064"></a>00064 <span class="comment">// Copied from Geodesic class</span>
+<a name="l00065"></a>00065 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> AngNormalize(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00066"></a>00066 <span class="comment">// Place angle in [-180, 180). Assumes x is in [-540, 540).</span>
+<a name="l00067"></a>00067 <span class="comment">//</span>
+<a name="l00068"></a>00068 <span class="comment">// g++ 4.4.4 holds a temporary in an extended register causing an error</span>
+<a name="l00069"></a>00069 <span class="comment">// with the triangle 89,0.1;89,90.1;89,-179.9. The volatile declaration</span>
+<a name="l00070"></a>00070 <span class="comment">// fixes this. (The bug probably triggered because transit and</span>
+<a name="l00071"></a>00071 <span class="comment">// AngNormalize are inline functions. So don't port this change over to</span>
+<a name="l00072"></a>00072 <span class="comment">// Geodesic.hpp.)</span>
+<a name="l00073"></a>00073 <span class="keyword">volatile</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y = x;
+<a name="l00074"></a>00074 <span class="keywordflow">return</span> y >= 180 ? y - 360 : (y < -180 ? y + 360 : y);
+<a name="l00075"></a>00075 }
+<a name="l00076"></a>00076 <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">int</span> transit(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon2) {
+<a name="l00077"></a>00077 <span class="comment">// Return 1 or -1 if crossing prime meridian in east or west direction.</span>
+<a name="l00078"></a>00078 <span class="comment">// Otherwise return zero.</span>
+<a name="l00079"></a>00079 lon1 = AngNormalize(lon1);
+<a name="l00080"></a>00080 lon2 = AngNormalize(lon2);
+<a name="l00081"></a>00081 <span class="comment">// treat lon12 = -180 as an eastward geodesic, so convert to 180.</span>
+<a name="l00082"></a>00082 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon12 = -AngNormalize(lon1 - lon2); <span class="comment">// In (-180, 180]</span>
+<a name="l00083"></a>00083 <span class="keywordtype">int</span> cross =
+<a name="l00084"></a>00084 lon1 < 0 && lon2 >= 0 && lon12 > 0 ? 1 :
+<a name="l00085"></a>00085 (lon2 < 0 && lon1 >= 0 && lon12 < 0 ? -1 : 0);
+<a name="l00086"></a>00086 <span class="keywordflow">return</span> cross;
+<a name="l00087"></a>00087 }
+<a name="l00088"></a>00088 <span class="keyword">public</span>:
+<a name="l00089"></a>00089 <span class="comment"></span>
+<a name="l00090"></a>00090 <span class="comment"> /**</span>
+<a name="l00091"></a>00091 <span class="comment"> * Constructor for PolygonArea.</span>
+<a name="l00092"></a>00092 <span class="comment"> *</span>
+<a name="l00093"></a>00093 <span class="comment"> * @param[in] earth the Geodesic object to use for geodesic calculations.</span>
+<a name="l00094"></a>00094 <span class="comment"> * By default this uses the WGS84 ellipsoid.</span>
+<a name="l00095"></a>00095 <span class="comment"> * @param[in] polyline if true that treat the points as defining a polyline</span>
+<a name="l00096"></a>00096 <span class="comment"> * instead of a polygon (default = false).</span>
+<a name="l00097"></a>00097 <span class="comment"> **********************************************************************/</span>
+<a name="l00098"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#a060a1dc499bd079c62f62ed5cad929e5">00098</a> PolygonArea(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& earth, <span class="keywordtype">bool</span> polyline = <span class="keyword">false</span>) throw()
+<a name="l00099"></a>00099 : _earth(earth)
+<a name="l00100"></a>00100 , _area0(_earth.EllipsoidArea())
+<a name="l00101"></a>00101 , _polyline(polyline)
+<a name="l00102"></a>00102 , _mask(<a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::DISTANCE | (_polyline ? 0 : <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::AREA))
+<a name="l00103"></a>00103 {
+<a name="l00104"></a>00104 Clear();
+<a name="l00105"></a>00105 }
+<a name="l00106"></a>00106 <span class="comment"></span>
+<a name="l00107"></a>00107 <span class="comment"> /**</span>
+<a name="l00108"></a>00108 <span class="comment"> * Clear PolygonArea, allowing a new polygon to be started.</span>
+<a name="l00109"></a>00109 <span class="comment"> **********************************************************************/</span>
+<a name="l00110"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">00110</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1PolygonArea.html#a66198bec67036ad09aa58ec43166fe60">Clear</a>() throw() {
+<a name="l00111"></a>00111 _num = 0;
+<a name="l00112"></a>00112 _crossings = 0;
+<a name="l00113"></a>00113 _areasum = 0;
+<a name="l00114"></a>00114 _perimetersum = 0;
+<a name="l00115"></a>00115 _lat0 = _lon0 = _lat1 = _lon1 = 0;
+<a name="l00116"></a>00116 }
+<a name="l00117"></a>00117 <span class="comment"></span>
+<a name="l00118"></a>00118 <span class="comment"> /**</span>
+<a name="l00119"></a>00119 <span class="comment"> * Add a point to the polygon or polyline.</span>
<a name="l00120"></a>00120 <span class="comment"> *</span>
-<a name="l00121"></a>00121 <span class="comment"> * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
-<a name="l00122"></a>00122 <span class="comment"> * range [-180, 360].</span>
-<a name="l00123"></a>00123 <span class="comment"> **********************************************************************/</span>
-<a name="l00124"></a>00124 <span class="keywordtype">void</span> AddPoint(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keywordflow">throw</span>();
-<a name="l00125"></a>00125 <span class="comment"></span>
-<a name="l00126"></a>00126 <span class="comment"> /**</span>
-<a name="l00127"></a>00127 <span class="comment"> * Return the results so far.</span>
-<a name="l00128"></a>00128 <span class="comment"> *</span>
-<a name="l00129"></a>00129 <span class="comment"> * @param[in] reverse if true then clockwise (instead of counter-clockwise)</span>
-<a name="l00130"></a>00130 <span class="comment"> * traversal counts as a positive area.</span>
-<a name="l00131"></a>00131 <span class="comment"> * @param[in] sign if true then return a signed result for the area if</span>
-<a name="l00132"></a>00132 <span class="comment"> * the polygon is traversed in the "wrong" direction instead of returning</span>
-<a name="l00133"></a>00133 <span class="comment"> * the area for the rest of the earth.</span>
-<a name="l00134"></a>00134 <span class="comment"> * @param[out] perimeter the perimeter of the polygon or length of the</span>
-<a name="l00135"></a>00135 <span class="comment"> * polyline (meters).</span>
-<a name="l00136"></a>00136 <span class="comment"> * @param[out] area the area of the polygon (meters^2); only set if</span>
-<a name="l00137"></a>00137 <span class="comment"> * polyline is false in the constructor.</span>
-<a name="l00138"></a>00138 <span class="comment"> * @return the number of points.</span>
-<a name="l00139"></a>00139 <span class="comment"> **********************************************************************/</span>
-<a name="l00140"></a>00140 <span class="keywordtype">unsigned</span> Compute(<span class="keywordtype">bool</span> reverse, <span class="keywordtype">bool</span> sign,
-<a name="l00141"></a>00141 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& perimeter, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& area) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00142"></a>00142 <span class="comment"></span>
-<a name="l00143"></a>00143 <span class="comment"> /**</span>
-<a name="l00144"></a>00144 <span class="comment"> * Return the results assuming a tentative final test point is added;</span>
-<a name="l00145"></a>00145 <span class="comment"> * however, the data for the test point is not saved. This lets you report</span>
-<a name="l00146"></a>00146 <span class="comment"> * a running result for the perimeter and area as the user moves the mouse</span>
-<a name="l00147"></a>00147 <span class="comment"> * cursor. Ordinary floating point arithmetic is used to accumulate the</span>
-<a name="l00148"></a>00148 <span class="comment"> * data for the test point; thus the area and perimeter returned are less</span>
-<a name="l00149"></a>00149 <span class="comment"> * accurate than if AddPoint and Compute are used.</span>
-<a name="l00150"></a>00150 <span class="comment"> *</span>
-<a name="l00151"></a>00151 <span class="comment"> * @param[in] lat the latitude of the test point (degrees).</span>
-<a name="l00152"></a>00152 <span class="comment"> * @param[in] lon the longitude of the test point (degrees).</span>
-<a name="l00153"></a>00153 <span class="comment"> * @param[in] reverse if true then clockwise (instead of counter-clockwise)</span>
-<a name="l00154"></a>00154 <span class="comment"> * traversal counts as a positive area.</span>
-<a name="l00155"></a>00155 <span class="comment"> * @param[in] sign if true then return a signed result for the area if</span>
-<a name="l00156"></a>00156 <span class="comment"> * the polygon is traversed in the "wrong" direction instead of returning</span>
-<a name="l00157"></a>00157 <span class="comment"> * the area for the rest of the earth.</span>
-<a name="l00158"></a>00158 <span class="comment"> * @param[out] perimeter the approximate perimeter of the polygon or length</span>
-<a name="l00159"></a>00159 <span class="comment"> * of the polyline (meters).</span>
-<a name="l00160"></a>00160 <span class="comment"> * @param[out] area the approximate area of the polygon (meters^2); only</span>
-<a name="l00161"></a>00161 <span class="comment"> * set if polyline is false in the constructor.</span>
-<a name="l00162"></a>00162 <span class="comment"> * @return the number of points.</span>
-<a name="l00163"></a>00163 <span class="comment"> *</span>
-<a name="l00164"></a>00164 <span class="comment"> * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
-<a name="l00165"></a>00165 <span class="comment"> * range [-180, 360].</span>
-<a name="l00166"></a>00166 <span class="comment"> **********************************************************************/</span>
-<a name="l00167"></a>00167 <span class="keywordtype">unsigned</span> TestCompute(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> reverse, <span class="keywordtype">bool</span> sign,
-<a name="l00168"></a>00168 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& perimeter, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& area) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00169"></a>00169 <span class="comment"></span>
-<a name="l00170"></a>00170 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00171"></a>00171 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00172"></a>00172 <span class="comment"> ///@{</span>
-<a name="l00173"></a>00173 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00174"></a>00174 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00175"></a>00175 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
-<a name="l00176"></a>00176 <span class="comment"> **********************************************************************/</span>
-<a name="l00177"></a>00177
-<a name="l00178"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#afcdd74fcb4a0f57aa193e5fd08239369">00178</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolygonArea.html#afcdd74fcb4a0f57aa193e5fd08239369">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
-<a name="l00179"></a>00179 <span class="comment"></span>
-<a name="l00180"></a>00180 <span class="comment"> /**</span>
-<a name="l00181"></a>00181 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
-<a name="l00182"></a>00182 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
-<a name="l00183"></a>00183 <span class="comment"> **********************************************************************/</span>
-<a name="l00184"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#aba3543baed0f014b64890d174b8c62a0">00184</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1PolygonArea.html#aba3543baed0f014b64890d174b8c62a0">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="comment"></span>
-<a name="l00185"></a>00185 <span class="comment"> ///@}</span>
-<a name="l00186"></a>00186 <span class="comment"></span> };
-<a name="l00187"></a>00187
-<a name="l00188"></a>00188 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00189"></a>00189
-<a name="l00190"></a>00190 <span class="preprocessor">#endif // GEOGRAPHICLIB_POLYGONAREA_HPP</span>
+<a name="l00121"></a>00121 <span class="comment"> * @param[in] lat the latitude of the point (degrees).</span>
+<a name="l00122"></a>00122 <span class="comment"> * @param[in] lon the latitude of the point (degrees).</span>
+<a name="l00123"></a>00123 <span class="comment"> *</span>
+<a name="l00124"></a>00124 <span class="comment"> * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
+<a name="l00125"></a>00125 <span class="comment"> * range [-180, 360].</span>
+<a name="l00126"></a>00126 <span class="comment"> **********************************************************************/</span>
+<a name="l00127"></a>00127 <span class="keywordtype">void</span> AddPoint(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) <span class="keywordflow">throw</span>();
+<a name="l00128"></a>00128 <span class="comment"></span>
+<a name="l00129"></a>00129 <span class="comment"> /**</span>
+<a name="l00130"></a>00130 <span class="comment"> * Return the results so far.</span>
+<a name="l00131"></a>00131 <span class="comment"> *</span>
+<a name="l00132"></a>00132 <span class="comment"> * @param[in] reverse if true then clockwise (instead of counter-clockwise)</span>
+<a name="l00133"></a>00133 <span class="comment"> * traversal counts as a positive area.</span>
+<a name="l00134"></a>00134 <span class="comment"> * @param[in] sign if true then return a signed result for the area if</span>
+<a name="l00135"></a>00135 <span class="comment"> * the polygon is traversed in the "wrong" direction instead of returning</span>
+<a name="l00136"></a>00136 <span class="comment"> * the area for the rest of the earth.</span>
+<a name="l00137"></a>00137 <span class="comment"> * @param[out] perimeter the perimeter of the polygon or length of the</span>
+<a name="l00138"></a>00138 <span class="comment"> * polyline (meters).</span>
+<a name="l00139"></a>00139 <span class="comment"> * @param[out] area the area of the polygon (meters^2); only set if</span>
+<a name="l00140"></a>00140 <span class="comment"> * polyline is false in the constructor.</span>
+<a name="l00141"></a>00141 <span class="comment"> * @return the number of points.</span>
+<a name="l00142"></a>00142 <span class="comment"> **********************************************************************/</span>
+<a name="l00143"></a>00143 <span class="keywordtype">unsigned</span> Compute(<span class="keywordtype">bool</span> reverse, <span class="keywordtype">bool</span> sign,
+<a name="l00144"></a>00144 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& perimeter, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& area) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00145"></a>00145 <span class="comment"></span>
+<a name="l00146"></a>00146 <span class="comment"> /**</span>
+<a name="l00147"></a>00147 <span class="comment"> * Return the results assuming a tentative final test point is added;</span>
+<a name="l00148"></a>00148 <span class="comment"> * however, the data for the test point is not saved. This lets you report</span>
+<a name="l00149"></a>00149 <span class="comment"> * a running result for the perimeter and area as the user moves the mouse</span>
+<a name="l00150"></a>00150 <span class="comment"> * cursor. Ordinary floating point arithmetic is used to accumulate the</span>
+<a name="l00151"></a>00151 <span class="comment"> * data for the test point; thus the area and perimeter returned are less</span>
+<a name="l00152"></a>00152 <span class="comment"> * accurate than if AddPoint and Compute are used.</span>
+<a name="l00153"></a>00153 <span class="comment"> *</span>
+<a name="l00154"></a>00154 <span class="comment"> * @param[in] lat the latitude of the test point (degrees).</span>
+<a name="l00155"></a>00155 <span class="comment"> * @param[in] lon the longitude of the test point (degrees).</span>
+<a name="l00156"></a>00156 <span class="comment"> * @param[in] reverse if true then clockwise (instead of counter-clockwise)</span>
+<a name="l00157"></a>00157 <span class="comment"> * traversal counts as a positive area.</span>
+<a name="l00158"></a>00158 <span class="comment"> * @param[in] sign if true then return a signed result for the area if</span>
+<a name="l00159"></a>00159 <span class="comment"> * the polygon is traversed in the "wrong" direction instead of returning</span>
+<a name="l00160"></a>00160 <span class="comment"> * the area for the rest of the earth.</span>
+<a name="l00161"></a>00161 <span class="comment"> * @param[out] perimeter the approximate perimeter of the polygon or length</span>
+<a name="l00162"></a>00162 <span class="comment"> * of the polyline (meters).</span>
+<a name="l00163"></a>00163 <span class="comment"> * @param[out] area the approximate area of the polygon (meters^2); only</span>
+<a name="l00164"></a>00164 <span class="comment"> * set if polyline is false in the constructor.</span>
+<a name="l00165"></a>00165 <span class="comment"> * @return the number of points.</span>
+<a name="l00166"></a>00166 <span class="comment"> *</span>
+<a name="l00167"></a>00167 <span class="comment"> * \e lat should be in the range [-90, 90] and \e lon should be in the</span>
+<a name="l00168"></a>00168 <span class="comment"> * range [-180, 360].</span>
+<a name="l00169"></a>00169 <span class="comment"> **********************************************************************/</span>
+<a name="l00170"></a>00170 <span class="keywordtype">unsigned</span> TestCompute(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon, <span class="keywordtype">bool</span> reverse, <span class="keywordtype">bool</span> sign,
+<a name="l00171"></a>00171 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& perimeter, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& area) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00172"></a>00172 <span class="comment"></span>
+<a name="l00173"></a>00173 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00174"></a>00174 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00175"></a>00175 <span class="comment"> ///@{</span>
+<a name="l00176"></a>00176 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00177"></a>00177 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00178"></a>00178 <span class="comment"> * the value inherited from the Geodesic object used in the constructor.</span>
+<a name="l00179"></a>00179 <span class="comment"> **********************************************************************/</span>
+<a name="l00180"></a>00180
+<a name="l00181"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#afcdd74fcb4a0f57aa193e5fd08239369">00181</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolygonArea.html#afcdd74fcb4a0f57aa193e5fd08239369">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.MajorRadius(); }
+<a name="l00182"></a>00182 <span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment"> /**</span>
+<a name="l00184"></a>00184 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value</span>
+<a name="l00185"></a>00185 <span class="comment"> * inherited from the Geodesic object used in the constructor.</span>
+<a name="l00186"></a>00186 <span class="comment"> **********************************************************************/</span>
+<a name="l00187"></a><a class="code" href="classGeographicLib_1_1PolygonArea.html#aba3543baed0f014b64890d174b8c62a0">00187</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1PolygonArea.html#aba3543baed0f014b64890d174b8c62a0">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _earth.Flattening(); }<span class="co [...]
+<a name="l00188"></a>00188 <span class="comment"> ///@}</span>
+<a name="l00189"></a>00189 <span class="comment"></span> };
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00192"></a>00192
+<a name="l00193"></a>00193 <span class="preprocessor">#endif // GEOGRAPHICLIB_POLYGONAREA_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalEngine_8cpp.html b/doc/html/SphericalEngine_8cpp.html
index d347d9b..4788635 100644
--- a/doc/html/SphericalEngine_8cpp.html
+++ b/doc/html/SphericalEngine_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalEngine.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -64,13 +79,11 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8cpp.html#acbb0476075cd231855709ab48c95fa7e">GEOGRAPHICLIB_SPHERICALENGINE_CPP</a> "$Id: e6444458fb284298889582ce5be3a9f201542e3a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8cpp.html#acbb0476075cd231855709ab48c95fa7e">GEOGRAPHICLIB_SPHERICALENGINE_CPP</a> "$Id: 861a718d09c83cdd9bf58939d938a25797b9f306 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
@@ -179,7 +192,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_SPHERICALENGINE_CPP "$Id: e6444458fb284298889582ce5be3a9f201542e3a $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_SPHERICALENGINE_CPP "$Id: 861a718d09c83cdd9bf58939d938a25797b9f306 $"</td>
</tr>
</table>
</div>
@@ -190,8 +203,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalEngine_8cpp_source.html b/doc/html/SphericalEngine_8cpp_source.html
index a73ff00..023a470 100644
--- a/doc/html/SphericalEngine_8cpp_source.html
+++ b/doc/html/SphericalEngine_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalEngine.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -186,7 +201,7 @@
<a name="l00137"></a>00137 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
<a name="l00138"></a>00138
<a name="l00139"></a><a class="code" href="SphericalEngine_8cpp.html#acbb0476075cd231855709ab48c95fa7e">00139</a> <span class="preprocessor">#define GEOGRAPHICLIB_SPHERICALENGINE_CPP \</span>
-<a name="l00140"></a>00140 <span class="preprocessor"> "$Id: e6444458fb284298889582ce5be3a9f201542e3a $"</span>
+<a name="l00140"></a>00140 <span class="preprocessor"> "$Id: 861a718d09c83cdd9bf58939d938a25797b9f306 $"</span>
<a name="l00141"></a>00141 <span class="preprocessor"></span>
<a name="l00142"></a>00142 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="SphericalEngine_8cpp.html#acbb0476075cd231855709ab48c95fa7e">GEOGRAPHICLIB_SPHERICALENGINE_CPP</a>)
<a name="l00143"></a>00143 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="SphericalEngine_8hpp.html#a46e29e0e930e205c8f9a059ae458b44e">GEOGRAPHICLIB_SPHERICALENGINE_HPP</a>)
@@ -195,17 +210,17 @@
<a name="l00146"></a>00146
<a name="l00147"></a>00147 <span class="keyword">using namespace </span>std;
<a name="l00148"></a>00148
-<a name="l00149"></a>00149 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> SphericalEngine::scale_ =
+<a name="l00149"></a>00149 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> SphericalEngine::scale_ =
<a name="l00150"></a>00150 pow(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(numeric_limits<real>::radix),
<a name="l00151"></a>00151 -3 * numeric_limits<real>::max_exponent / 5);
-<a name="l00152"></a>00152 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> SphericalEngine::eps_ =
+<a name="l00152"></a>00152 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> SphericalEngine::eps_ =
<a name="l00153"></a>00153 numeric_limits<real>::epsilon() * sqrt(numeric_limits<real>::epsilon());
<a name="l00154"></a>00154
<a name="l00155"></a>00155 <span class="keyword">const</span> vector<Math::real> SphericalEngine::Z_(0);
<a name="l00156"></a>00156 vector<Math::real> SphericalEngine::root_(0);
<a name="l00157"></a>00157
<a name="l00158"></a>00158 <span class="keyword">template</span><<span class="keywordtype">bool</span> gradp, SphericalEngine::normalization norm, <span class="keywordtype">int</span> L>
-<a name="l00159"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">00159</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> c[], <span class="keyword">const</span> real f[],
+<a name="l00159"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">00159</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real SphericalEngine::Value(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> c[], <span class="keyword">const</spa [...]
<a name="l00160"></a>00160 real x, real y, real z, real a,
<a name="l00161"></a>00161 real& gradx, real& grady, real& gradz)
<a name="l00162"></a>00162 <span class="keywordflow">throw</span>() {
@@ -298,7 +313,7 @@
<a name="l00249"></a>00249 v = A * vc + B * vc2 + wc ; vc2 = vc ; vc = v;
<a name="l00250"></a>00250 v = A * vs + B * vs2 + ws ; vs2 = vs ; vs = v;
<a name="l00251"></a>00251 <span class="keywordflow">if</span> (gradp) {
-<a name="l00252"></a>00252 <span class="comment">// Include the terms Sc[m] * P'[m,m](t) and Ss[m] * P'[m,m](t)</span>
+<a name="l00252"></a>00252 <span class="comment">// Include the terms Sc[m] * P'[m,m](t) and Ss[m] * P'[m,m](t)</span>
<a name="l00253"></a>00253 wtc += m * tu * wc; wts += m * tu * ws;
<a name="l00254"></a>00254 v = A * vrc + B * vrc2 + wrc; vrc2 = vrc; vrc = v;
<a name="l00255"></a>00255 v = A * vrs + B * vrs2 + wrs; vrs2 = vrs; vrs = v;
@@ -344,7 +359,7 @@
<a name="l00295"></a>00295 }
<a name="l00296"></a>00296
<a name="l00297"></a>00297 <span class="keyword">template</span><<span class="keywordtype">bool</span> gradp, SphericalEngine::normalization norm, <span class="keywordtype">int</span> L>
-<a name="l00298"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">00298</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> c[], <span class="keyword">const [...]
+<a name="l00298"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">00298</a> <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle(<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> c[], <span class="keyword">const [...]
<a name="l00299"></a>00299 real p, real z, real a) {
<a name="l00300"></a>00300
<a name="l00301"></a>00301 <a class="code" href="Constants_8hpp.html#a8f24445c1bccd69b63e365aa5d5bb129">STATIC_ASSERT</a>(L > 0, <span class="stringliteral">"L must be positive"</span>);
@@ -432,104 +447,109 @@
<a name="l00383"></a>00383 std::vector<real>& C,
<a name="l00384"></a>00384 std::vector<real>& S) {
<a name="l00385"></a>00385 <span class="keywordtype">int</span> nm[2];
-<a name="l00386"></a>00386 Utility::readarray<int, int, false>(stream, nm, 2);
+<a name="l00386"></a>00386 <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<int, int, false>(stream, nm, 2);
<a name="l00387"></a>00387 N = nm[0]; M = nm[1];
<a name="l00388"></a>00388 <span class="keywordflow">if</span> (!(N >= M && M >= -1 && N * M >= 0))
<a name="l00389"></a>00389 <span class="comment">// The last condition is that M = -1 implies N = -1 and vice versa.</span>
<a name="l00390"></a>00390 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad degree and order "</span> +
<a name="l00391"></a>00391 Utility::str(N) + <span class="stringliteral">" "</span> + Utility::str(M));
<a name="l00392"></a>00392 C.resize(SphericalEngine::coeff::Csize(N, M));
-<a name="l00393"></a>00393 Utility::readarray<double, real, false>(stream, C);
+<a name="l00393"></a>00393 <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<double, real, false>(stream, C);
<a name="l00394"></a>00394 S.resize(SphericalEngine::coeff::Ssize(N, M));
-<a name="l00395"></a>00395 Utility::readarray<double, real, false>(stream, S);
+<a name="l00395"></a>00395 <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::readarray<double, real, false>(stream, S);
<a name="l00396"></a>00396 <span class="keywordflow">return</span>;
<a name="l00397"></a>00397 }
<a name="l00398"></a>00398 <span class="comment"></span>
<a name="l00399"></a>00399 <span class="comment"> /// \cond SKIP</span>
<a name="l00400"></a>00400 <span class="comment"></span> <span class="keyword">template</span>
-<a name="l00401"></a>00401 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::FULL, 1>
+<a name="l00401"></a>00401 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 1>
<a name="l00402"></a>00402 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00403"></a>00403 <span class="keyword">template</span>
-<a name="l00404"></a>00404 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::FULL, 1>
+<a name="l00404"></a>00404 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 1>
<a name="l00405"></a>00405 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00406"></a>00406 <span class="keyword">template</span>
-<a name="l00407"></a>00407 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 1>
+<a name="l00407"></a>00407 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 1>
<a name="l00408"></a>00408 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00409"></a>00409 <span class="keyword">template</span>
-<a name="l00410"></a>00410 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 1>
+<a name="l00410"></a>00410 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 1>
<a name="l00411"></a>00411 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00412"></a>00412
<a name="l00413"></a>00413 <span class="keyword">template</span>
-<a name="l00414"></a>00414 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::FULL, 2>
+<a name="l00414"></a>00414 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 2>
<a name="l00415"></a>00415 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00416"></a>00416 <span class="keyword">template</span>
-<a name="l00417"></a>00417 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::FULL, 2>
+<a name="l00417"></a>00417 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 2>
<a name="l00418"></a>00418 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00419"></a>00419 <span class="keyword">template</span>
-<a name="l00420"></a>00420 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 2>
+<a name="l00420"></a>00420 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 2>
<a name="l00421"></a>00421 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00422"></a>00422 <span class="keyword">template</span>
-<a name="l00423"></a>00423 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 2>
+<a name="l00423"></a>00423 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 2>
<a name="l00424"></a>00424 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00425"></a>00425
<a name="l00426"></a>00426 <span class="keyword">template</span>
-<a name="l00427"></a>00427 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::FULL, 3>
+<a name="l00427"></a>00427 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 3>
<a name="l00428"></a>00428 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00429"></a>00429 <span class="keyword">template</span>
-<a name="l00430"></a>00430 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::FULL, 3>
+<a name="l00430"></a>00430 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 3>
<a name="l00431"></a>00431 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00432"></a>00432 <span class="keyword">template</span>
-<a name="l00433"></a>00433 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 3>
+<a name="l00433"></a>00433 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 3>
<a name="l00434"></a>00434 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00435"></a>00435 <span class="keyword">template</span>
-<a name="l00436"></a>00436 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 3>
+<a name="l00436"></a>00436 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 3>
<a name="l00437"></a>00437 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00438"></a>00438
<a name="l00439"></a>00439 <span class="keyword">template</span>
-<a name="l00440"></a>00440 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::FULL, 1>
+<a name="l00440"></a>00440 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 1>
<a name="l00441"></a>00441 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00442"></a>00442 <span class="keyword">template</span>
-<a name="l00443"></a>00443 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::FULL, 1>
+<a name="l00443"></a>00443 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::FULL, 1>
<a name="l00444"></a>00444 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00445"></a>00445 <span class="keyword">template</span>
-<a name="l00446"></a>00446 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 1>
+<a name="l00446"></a>00446 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 1>
<a name="l00447"></a>00447 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00448"></a>00448 <span class="keyword">template</span>
-<a name="l00449"></a>00449 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 1>
+<a name="l00449"></a>00449 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::SCHMIDT, 1>
<a name="l00450"></a>00450 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00451"></a>00451
<a name="l00452"></a>00452 <span class="keyword">template</span>
-<a name="l00453"></a>00453 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::FULL, 2>
+<a name="l00453"></a>00453 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 2>
<a name="l00454"></a>00454 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00455"></a>00455 <span class="keyword">template</span>
-<a name="l00456"></a>00456 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::FULL, 2>
+<a name="l00456"></a>00456 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::FULL, 2>
<a name="l00457"></a>00457 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00458"></a>00458 <span class="keyword">template</span>
-<a name="l00459"></a>00459 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 2>
+<a name="l00459"></a>00459 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 2>
<a name="l00460"></a>00460 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00461"></a>00461 <span class="keyword">template</span>
-<a name="l00462"></a>00462 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 2>
+<a name="l00462"></a>00462 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::SCHMIDT, 2>
<a name="l00463"></a>00463 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00464"></a>00464
<a name="l00465"></a>00465 <span class="keyword">template</span>
-<a name="l00466"></a>00466 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::FULL, 3>
+<a name="l00466"></a>00466 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 3>
<a name="l00467"></a>00467 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00468"></a>00468 <span class="keyword">template</span>
-<a name="l00469"></a>00469 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::FULL, 3>
+<a name="l00469"></a>00469 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::FULL, 3>
<a name="l00470"></a>00470 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00471"></a>00471 <span class="keyword">template</span>
-<a name="l00472"></a>00472 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 3>
+<a name="l00472"></a>00472 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 3>
<a name="l00473"></a>00473 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>);
<a name="l00474"></a>00474 <span class="keyword">template</span>
-<a name="l00475"></a>00475 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 3>
+<a name="l00475"></a>00475 <a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<false, SphericalEngine::SCHMIDT, 3>
<a name="l00476"></a>00476 (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a>[], <span class="keyword">const</span> real[], <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a [...]
<a name="l00477"></a>00477 <span class="comment"> /// \endcond</span>
<a name="l00478"></a>00478 <span class="comment"></span>
<a name="l00479"></a>00479 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalEngine_8hpp.html b/doc/html/SphericalEngine_8hpp.html
index 58a8598..ff67994 100644
--- a/doc/html/SphericalEngine_8hpp.html
+++ b/doc/html/SphericalEngine_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalEngine.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,13 +85,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8hpp.html#a46e29e0e930e205c8f9a059ae458b44e">GEOGRAPHICLIB_SPHERICALENGINE_HPP</a> "$Id: dae9ba0d660c070c0f28715de87ed20f79808793 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8hpp.html#a46e29e0e930e205c8f9a059ae458b44e">GEOGRAPHICLIB_SPHERICALENGINE_HPP</a> "$Id: f48320a694ecf901d997b23d32ea625e589f9534 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
@@ -89,7 +102,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_SPHERICALENGINE_HPP "$Id: dae9ba0d660c070c0f28715de87ed20f79808793 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_SPHERICALENGINE_HPP "$Id: f48320a694ecf901d997b23d32ea625e589f9534 $"</td>
</tr>
</table>
</div>
@@ -100,8 +113,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalEngine_8hpp_source.html b/doc/html/SphericalEngine_8hpp_source.html
index db2916a..cdb8098 100644
--- a/doc/html/SphericalEngine_8hpp_source.html
+++ b/doc/html/SphericalEngine_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalEngine.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_SPHERICALENGINE_HPP)</span>
<a name="l00011"></a><a class="code" href="SphericalEngine_8hpp.html#a46e29e0e930e205c8f9a059ae458b44e">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_SPHERICALENGINE_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: dae9ba0d660c070c0f28715de87ed20f79808793 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: f48320a694ecf901d997b23d32ea625e589f9534 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <vector></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <istream></span>
@@ -88,9 +103,9 @@
<a name="l00038"></a>00038 <span class="comment"> * \include example-SphericalEngine.cpp</span>
<a name="l00039"></a>00039 <span class="comment"> **********************************************************************/</span>
<a name="l00040"></a>00040
-<a name="l00041"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html">00041</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a> {
+<a name="l00041"></a>00041 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> SphericalEngine {
<a name="l00042"></a>00042 <span class="keyword">private</span>:
-<a name="l00043"></a>00043 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00043"></a>00043 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00044"></a>00044 <span class="comment">// A table of the square roots of integers</span>
<a name="l00045"></a>00045 <span class="keyword">static</span> std::vector<real> root_;
<a name="l00046"></a><a class="code" href="classGeographicLib_1_1SphericalEngine.html#a0c689dbf7b6bf2fb4cffb109085b1d3b">00046</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a>; <span class="comment">// CircularEngine needs access to root_, scale_</span>
@@ -100,7 +115,7 @@
<a name="l00050"></a>00050 <span class="comment">// Move latitudes near the pole off the axis by this amount.</span>
<a name="l00051"></a>00051 <span class="keyword">static</span> <span class="keyword">const</span> real eps_;
<a name="l00052"></a>00052 <span class="keyword">static</span> <span class="keyword">const</span> std::vector<real> Z_;
-<a name="l00053"></a>00053 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>(); <span class="comment">// Disable constructor</span>
+<a name="l00053"></a>00053 SphericalEngine(); <span class="comment">// Disable constructor</span>
<a name="l00054"></a>00054 <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00055"></a>00055 <span class="comment"> /**</span>
<a name="l00056"></a>00056 <span class="comment"> * Supported normalizations for associated Legendre polynomials.</span>
@@ -139,7 +154,7 @@
<a name="l00089"></a>00089 <span class="comment"> * The storage layout of the coefficients is documented in</span>
<a name="l00090"></a>00090 <span class="comment"> * SphericalHarmonic and SphericalHarmonic::SphericalHarmonic.</span>
<a name="l00091"></a>00091 <span class="comment"> **********************************************************************/</span>
-<a name="l00092"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">00092</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">coeff</a> {
+<a name="l00092"></a>00092 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> coeff {
<a name="l00093"></a>00093 <span class="keyword">private</span>:
<a name="l00094"></a>00094 <span class="keywordtype">int</span> _N, _nmx, _mmx;
<a name="l00095"></a>00095 std::vector<real>::const_iterator _Cnm;
@@ -174,7 +189,7 @@
<a name="l00124"></a>00124 , _nmx(nmx)
<a name="l00125"></a>00125 , _mmx(mmx)
<a name="l00126"></a>00126 , _Cnm(C.begin())
-<a name="l00127"></a>00127 , _Snm(S.begin() - (_N + 1))
+<a name="l00127"></a>00127 , _Snm(S.begin())
<a name="l00128"></a>00128 {
<a name="l00129"></a>00129 <span class="keywordflow">if</span> (!(_N >= _nmx && _nmx >= _mmx && _mmx >= -1))
<a name="l00130"></a>00130 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad indices for coeff"</span>);
@@ -200,7 +215,7 @@
<a name="l00150"></a>00150 , _nmx(N)
<a name="l00151"></a>00151 , _mmx(N)
<a name="l00152"></a>00152 , _Cnm(C.begin())
-<a name="l00153"></a>00153 , _Snm(S.begin() - (_N + 1))
+<a name="l00153"></a>00153 , _Snm(S.begin())
<a name="l00154"></a>00154 {
<a name="l00155"></a>00155 <span class="keywordflow">if</span> (!(_N >= -1))
<a name="l00156"></a>00156 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad indices for coeff"</span>);
@@ -236,14 +251,14 @@
<a name="l00186"></a>00186 <span class="comment"> * @param[in] k the one-dimensional index.</span>
<a name="l00187"></a>00187 <span class="comment"> * @return the value of the \e C coefficient.</span>
<a name="l00188"></a>00188 <span class="comment"> **********************************************************************/</span>
-<a name="l00189"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ab591ddf74f5653c16b58ed2f5bde5ffe">00189</a> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ab591ddf74f5653c16b58ed2f5bde5ffe">Cv</a>(<span class="keywordtype">int</span> k)<span class="keyword"> const </span>{ <span class=" [...]
+<a name="l00189"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ab591ddf74f5653c16b58ed2f5bde5ffe">00189</a> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ab591ddf74f5653c16b58ed2f5bde5ffe">Cv</a>(<span class="keywordtype">int</span> k)<span class="keyword"> const [...]
<a name="l00190"></a>00190 <span class="comment"> /**</span>
<a name="l00191"></a>00191 <span class="comment"> * An element of \e S.</span>
<a name="l00192"></a>00192 <span class="comment"> *</span>
<a name="l00193"></a>00193 <span class="comment"> * @param[in] k the one-dimensional index.</span>
<a name="l00194"></a>00194 <span class="comment"> * @return the value of the \e S coefficient.</span>
<a name="l00195"></a>00195 <span class="comment"> **********************************************************************/</span>
-<a name="l00196"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">00196</a> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">Sv</a>(<span class="keywordtype">int</span> k)<span class="keyword"> const </span>{ <span class=" [...]
+<a name="l00196"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">00196</a> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">Sv</a>(<span class="keywordtype">int</span> k)<span class="keyword"> const [...]
<a name="l00197"></a>00197 <span class="comment"> /**</span>
<a name="l00198"></a>00198 <span class="comment"> * An element of \e C with checking.</span>
<a name="l00199"></a>00199 <span class="comment"> *</span>
@@ -254,7 +269,7 @@
<a name="l00204"></a>00204 <span class="comment"> * @return the value of the \e C coefficient multiplied by \e f in \e n</span>
<a name="l00205"></a>00205 <span class="comment"> * and \e m are in range else 0.</span>
<a name="l00206"></a>00206 <span class="comment"> **********************************************************************/</span>
-<a name="l00207"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ad30081b2dfdee79652aacbc24bacb635">00207</a> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Cv(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, real f)<span class="keyword"> const</span>
+<a name="l00207"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ad30081b2dfdee79652aacbc24bacb635">00207</a> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Cv(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, real f)<span class="keyword"> const</span>
<a name="l00208"></a>00208 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m > _mmx || n > _nmx ? 0 : *(_Cnm + k) * f; }<span class="comment"></span>
<a name="l00209"></a>00209 <span class="comment"> /**</span>
<a name="l00210"></a>00210 <span class="comment"> * An element of \e S with checking.</span>
@@ -266,8 +281,8 @@
<a name="l00216"></a>00216 <span class="comment"> * @return the value of the \e S coefficient multiplied by \e f in \e n</span>
<a name="l00217"></a>00217 <span class="comment"> * and \e m are in range else 0.</span>
<a name="l00218"></a>00218 <span class="comment"> **********************************************************************/</span>
-<a name="l00219"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a4fc7e6c7faf3f5940ee8f3ab28216897">00219</a> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Sv(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, real f)<span class="keyword"> const</span>
-<a name="l00220"></a>00220 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m > _mmx || n > _nmx ? 0 : *(_Snm + k) * f; }
+<a name="l00219"></a><a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a4fc7e6c7faf3f5940ee8f3ab28216897">00219</a> <span class="keyword">inline</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Sv(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> m, real f)<span class="keyword"> const</span>
+<a name="l00220"></a>00220 <span class="keyword"> </span>{ <span class="keywordflow">return</span> m > _mmx || n > _nmx ? 0 : *(_Snm + (k - (_N + 1))) * f; }
<a name="l00221"></a>00221 <span class="comment"></span>
<a name="l00222"></a>00222 <span class="comment"> /**</span>
<a name="l00223"></a>00223 <span class="comment"> * The size of the coefficient vector for the cosine terms.</span>
@@ -342,7 +357,7 @@
<a name="l00292"></a>00292 <span class="comment"> * throws an exception.</span>
<a name="l00293"></a>00293 <span class="comment"> **********************************************************************/</span>
<a name="l00294"></a>00294 <span class="keyword">template</span><<span class="keywordtype">bool</span> gradp, normalization norm, <span class="keywordtype">int</span> L>
-<a name="l00295"></a>00295 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Value(<span class="keyword">const</span> coeff c[], <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f[],
+<a name="l00295"></a>00295 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> Value(<span class="keyword">const</span> coeff c[], <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f[],
<a name="l00296"></a>00296 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> z, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a,
<a name="l00297"></a>00297 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradx, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& grady, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gradz) <span class="keywordflow">throw</span>();
<a name="l00298"></a>00298 <span class="comment"></span>
@@ -412,8 +427,13 @@
<a name="l00362"></a>00362 <span class="preprocessor">#endif // GEOGRAPHICLIB_SPHERICALENGINE_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalHarmonic1_8hpp.html b/doc/html/SphericalHarmonic1_8hpp.html
index 53bffea..73bda18 100644
--- a/doc/html/SphericalHarmonic1_8hpp.html
+++ b/doc/html/SphericalHarmonic1_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalHarmonic1.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,10 +84,8 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic1_8hpp.html#a16f04a6cf043288bc2d78f51d9c42186">GEOGRAPHICLIB_SPHERICALHARMONIC1_HPP</a> "$Id: 9dd895ded08db0f7fdd82159399da511f40a17e1 $"</td></tr>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalHarmonic1_8hpp_source.html b/doc/html/SphericalHarmonic1_8hpp_source.html
index 8dd61b3..5bde964 100644
--- a/doc/html/SphericalHarmonic1_8hpp_source.html
+++ b/doc/html/SphericalHarmonic1_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalHarmonic1.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -79,7 +94,7 @@
<a name="l00029"></a>00029 <span class="comment"> * \include example-SphericalHarmonic1.cpp</span>
<a name="l00030"></a>00030 <span class="comment"> **********************************************************************/</span>
<a name="l00031"></a>00031
-<a name="l00032"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html">00032</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a> {
+<a name="l00032"></a>00032 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> SphericalHarmonic1 {
<a name="l00033"></a>00033 <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00034"></a>00034 <span class="comment"> /**</span>
<a name="l00035"></a>00035 <span class="comment"> * Supported normalizations for associate Legendre polynomials.</span>
@@ -91,14 +106,14 @@
<a name="l00041"></a>00041 <span class="comment"> *</span>
<a name="l00042"></a>00042 <span class="comment"> * @hideinitializer</span>
<a name="l00043"></a>00043 <span class="comment"> **********************************************************************/</span>
-<a name="l00044"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac4aaa81e0f753894ecef173c4d667916aafd320d946e992459e0013da6b769638">00044</a> FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">SphericalEngine::FULL</a>,<span class="comment"></span>
+<a name="l00044"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac4aaa81e0f753894ecef173c4d667916aafd320d946e992459e0013da6b769638">00044</a> FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::FULL,<span class="comment"></span>
<a name="l00045"></a>00045 <span class="comment"> /**</span>
<a name="l00046"></a>00046 <span class="comment"> * Schmidt semi-normalized associated Legendre polynomials. See</span>
<a name="l00047"></a>00047 <span class="comment"> * SphericalHarmonic::SCHMIDT for documentation.</span>
<a name="l00048"></a>00048 <span class="comment"> *</span>
<a name="l00049"></a>00049 <span class="comment"> * @hideinitializer</span>
<a name="l00050"></a>00050 <span class="comment"> **********************************************************************/</span>
-<a name="l00051"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac4aaa81e0f753894ecef173c4d667916aa1959e3e2bdf7c01f596692757858231">00051</a> SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SphericalEngine::SCHMIDT</a>,<span class="comment"></span>
+<a name="l00051"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac4aaa81e0f753894ecef173c4d667916aa1959e3e2bdf7c01f596692757858231">00051</a> SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::SCHMIDT,<span class="comment"></span>
<a name="l00052"></a>00052 <span class="comment"> /// \cond SKIP</span>
<a name="l00053"></a>00053 <span class="comment"></span> <span class="comment">// These are deprecated...</span>
<a name="l00054"></a>00054 full = FULL,
@@ -107,8 +122,8 @@
<a name="l00057"></a>00057 <span class="comment"></span> };
<a name="l00058"></a>00058
<a name="l00059"></a>00059 <span class="keyword">private</span>:
-<a name="l00060"></a>00060 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00061"></a>00061 <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> _c[2];
+<a name="l00060"></a>00060 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00061"></a>00061 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff _c[2];
<a name="l00062"></a>00062 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a;
<a name="l00063"></a>00063 <span class="keywordtype">unsigned</span> _norm;
<a name="l00064"></a>00064
@@ -136,7 +151,7 @@
<a name="l00086"></a>00086 <span class="comment"> * C', and \e S'. These arrays should not be altered or destroyed during</span>
<a name="l00087"></a>00087 <span class="comment"> * the lifetime of a SphericalHarmonic object.</span>
<a name="l00088"></a>00088 <span class="comment"> **********************************************************************/</span>
-<a name="l00089"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#aeb3299ea40b0bedae55fd0a6f0c1fa40">00089</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00089"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#aeb3299ea40b0bedae55fd0a6f0c1fa40">00089</a> SphericalHarmonic1(<span class="keyword">const</span> std::vector<real>& C,
<a name="l00090"></a>00090 <span class="keyword">const</span> std::vector<real>& S,
<a name="l00091"></a>00091 <span class="keywordtype">int</span> N,
<a name="l00092"></a>00092 <span class="keyword">const</span> std::vector<real>& C1,
@@ -177,7 +192,7 @@
<a name="l00127"></a>00127 <span class="comment"> * C', and \e S'. These arrays should not be altered or destroyed during</span>
<a name="l00128"></a>00128 <span class="comment"> * the lifetime of a SphericalHarmonic object.</span>
<a name="l00129"></a>00129 <span class="comment"> **********************************************************************/</span>
-<a name="l00130"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#aca472a143f7e000e232f4c261550b626">00130</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">SphericalHarmonic1</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00130"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#aca472a143f7e000e232f4c261550b626">00130</a> SphericalHarmonic1(<span class="keyword">const</span> std::vector<real>& C,
<a name="l00131"></a>00131 <span class="keyword">const</span> std::vector<real>& S,
<a name="l00132"></a>00132 <span class="keywordtype">int</span> N, <span class="keywordtype">int</span> nmx, <span class="keywordtype">int</span> mmx,
<a name="l00133"></a>00133 <span class="keyword">const</span> std::vector<real>& C1,
@@ -213,17 +228,17 @@
<a name="l00163"></a>00163 <span class="comment"> * This routine requires constant memory and thus never throws</span>
<a name="l00164"></a>00164 <span class="comment"> * an exception.</span>
<a name="l00165"></a>00165 <span class="comment"> **********************************************************************/</span>
-<a name="l00166"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">00166</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">operator()</a>(real tau, real x, real y, real z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00166"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">00166</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">operator()</a>(real tau, real x, real y, real z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00167"></a>00167 real f[] = {1, tau};
<a name="l00168"></a>00168 real v = 0;
<a name="l00169"></a>00169 real dummy;
<a name="l00170"></a>00170 <span class="keywordflow">switch</span> (_norm) {
<a name="l00171"></a>00171 <span class="keywordflow">case</span> FULL:
-<a name="l00172"></a>00172 v = SphericalEngine::Value<false, SphericalEngine::FULL, 2>
+<a name="l00172"></a>00172 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 2>
<a name="l00173"></a>00173 (_c, f, x, y, z, _a, dummy, dummy, dummy);
<a name="l00174"></a>00174 <span class="keywordflow">break</span>;
<a name="l00175"></a>00175 <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00176"></a>00176 v = SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 2>
+<a name="l00176"></a>00176 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 2>
<a name="l00177"></a>00177 (_c, f, x, y, z, _a, dummy, dummy, dummy);
<a name="l00178"></a>00178 <span class="keywordflow">break</span>;
<a name="l00179"></a>00179 }
@@ -248,17 +263,17 @@
<a name="l00198"></a>00198 <span class="comment"> * computed. This routine requires constant memory and thus never throws</span>
<a name="l00199"></a>00199 <span class="comment"> * an exception.</span>
<a name="l00200"></a>00200 <span class="comment"> **********************************************************************/</span>
-<a name="l00201"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac732f25af07eee71ad0ca288a2e86fbd">00201</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real tau, real x, real y, real z,
+<a name="l00201"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ac732f25af07eee71ad0ca288a2e86fbd">00201</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real tau, real x, real y, real z,
<a name="l00202"></a>00202 real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00203"></a>00203 real f[] = {1, tau};
<a name="l00204"></a>00204 real v = 0;
<a name="l00205"></a>00205 <span class="keywordflow">switch</span> (_norm) {
<a name="l00206"></a>00206 <span class="keywordflow">case</span> FULL:
-<a name="l00207"></a>00207 v = SphericalEngine::Value<true, SphericalEngine::FULL, 2>
+<a name="l00207"></a>00207 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 2>
<a name="l00208"></a>00208 (_c, f, x, y, z, _a, gradx, grady, gradz);
<a name="l00209"></a>00209 <span class="keywordflow">break</span>;
<a name="l00210"></a>00210 <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00211"></a>00211 v = SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 2>
+<a name="l00211"></a>00211 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 2>
<a name="l00212"></a>00212 (_c, f, x, y, z, _a, gradx, grady, gradz);
<a name="l00213"></a>00213 <span class="keywordflow">break</span>;
<a name="l00214"></a>00214 }
@@ -292,7 +307,7 @@
<a name="l00242"></a>00242 <span class="keywordflow">switch</span> (_norm) {
<a name="l00243"></a>00243 <span class="keywordflow">case</span> FULL:
<a name="l00244"></a>00244 <span class="keywordflow">return</span> gradp ?
-<a name="l00245"></a>00245 SphericalEngine::Circle<true, SphericalEngine::FULL, 2>
+<a name="l00245"></a>00245 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 2>
<a name="l00246"></a>00246 (_c, f, p, z, _a) :
<a name="l00247"></a>00247 SphericalEngine::Circle<false, SphericalEngine::FULL, 2>
<a name="l00248"></a>00248 (_c, f, p, z, _a);
@@ -300,7 +315,7 @@
<a name="l00250"></a>00250 <span class="keywordflow">case</span> SCHMIDT:
<a name="l00251"></a>00251 <span class="keywordflow">default</span>: <span class="comment">// To avoid compiler warnings</span>
<a name="l00252"></a>00252 <span class="keywordflow">return</span> gradp ?
-<a name="l00253"></a>00253 SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 2>
+<a name="l00253"></a>00253 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 2>
<a name="l00254"></a>00254 (_c, f, p, z, _a) :
<a name="l00255"></a>00255 SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 2>
<a name="l00256"></a>00256 (_c, f, p, z, _a);
@@ -311,12 +326,12 @@
<a name="l00261"></a>00261 <span class="comment"> /**</span>
<a name="l00262"></a>00262 <span class="comment"> * @return the zeroth SphericalEngine::coeff object.</span>
<a name="l00263"></a>00263 <span class="comment"> **********************************************************************/</span>
-<a name="l00264"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a67fe3c8ab08be94a300d07c98814aab0">00264</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients() <span class="keyword">const</span> throw()
+<a name="l00264"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#a67fe3c8ab08be94a300d07c98814aab0">00264</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients() <span class="keyword">const</span> throw()
<a name="l00265"></a>00265 { <span class="keywordflow">return</span> _c[0]; }<span class="comment"></span>
<a name="l00266"></a>00266 <span class="comment"> /**</span>
<a name="l00267"></a>00267 <span class="comment"> * @return the first SphericalEngine::coeff object.</span>
<a name="l00268"></a>00268 <span class="comment"> **********************************************************************/</span>
-<a name="l00269"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ad200e309790cd6e41bb79529d9076274">00269</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients1() <span class="keyword">const</span> throw()
+<a name="l00269"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic1.html#ad200e309790cd6e41bb79529d9076274">00269</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients1() <span class="keyword">const</span> throw()
<a name="l00270"></a>00270 { <span class="keywordflow">return</span> _c[1]; }
<a name="l00271"></a>00271 };
<a name="l00272"></a>00272
@@ -325,8 +340,13 @@
<a name="l00275"></a>00275 <span class="preprocessor">#endif // GEOGRAPHICLIB_SPHERICALHARMONIC1_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalHarmonic2_8hpp.html b/doc/html/SphericalHarmonic2_8hpp.html
index bed1bcd..28cd7ee 100644
--- a/doc/html/SphericalHarmonic2_8hpp.html
+++ b/doc/html/SphericalHarmonic2_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalHarmonic2.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,10 +84,8 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic2_8hpp.html#a15f930b306cf77dee059d32d2bb417ad">GEOGRAPHICLIB_SPHERICALHARMONIC2_HPP</a> "$Id: ce4cda614c1966dea65610bc73bc4db562677fa8 $"</td></tr>
@@ -99,8 +112,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalHarmonic2_8hpp_source.html b/doc/html/SphericalHarmonic2_8hpp_source.html
index bde58b2..ca3f00a 100644
--- a/doc/html/SphericalHarmonic2_8hpp_source.html
+++ b/doc/html/SphericalHarmonic2_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalHarmonic2.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -80,7 +95,7 @@
<a name="l00030"></a>00030 <span class="comment"> * \include example-SphericalHarmonic2.cpp</span>
<a name="l00031"></a>00031 <span class="comment"> **********************************************************************/</span>
<a name="l00032"></a>00032
-<a name="l00033"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html">00033</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a> {
+<a name="l00033"></a>00033 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> SphericalHarmonic2 {
<a name="l00034"></a>00034 <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00035"></a>00035 <span class="comment"> /**</span>
<a name="l00036"></a>00036 <span class="comment"> * Supported normalizations for associate Legendre polynomials.</span>
@@ -92,14 +107,14 @@
<a name="l00042"></a>00042 <span class="comment"> *</span>
<a name="l00043"></a>00043 <span class="comment"> * @hideinitializer</span>
<a name="l00044"></a>00044 <span class="comment"> **********************************************************************/</span>
-<a name="l00045"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#adbdc59ce4e6f1e4ce0fc7169c760f8bea4b8746ff0805a8a819130794c103e946">00045</a> FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">SphericalEngine::FULL</a>,<span class="comment"></span>
+<a name="l00045"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#adbdc59ce4e6f1e4ce0fc7169c760f8bea4b8746ff0805a8a819130794c103e946">00045</a> FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::FULL,<span class="comment"></span>
<a name="l00046"></a>00046 <span class="comment"> /**</span>
<a name="l00047"></a>00047 <span class="comment"> * Schmidt semi-normalized associated Legendre polynomials. See</span>
<a name="l00048"></a>00048 <span class="comment"> * SphericalHarmonic::SCHMIDT for documentation.</span>
<a name="l00049"></a>00049 <span class="comment"> *</span>
<a name="l00050"></a>00050 <span class="comment"> * @hideinitializer</span>
<a name="l00051"></a>00051 <span class="comment"> **********************************************************************/</span>
-<a name="l00052"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#adbdc59ce4e6f1e4ce0fc7169c760f8bea326a84d3094b558a1c43b4b61f9c2d58">00052</a> SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SphericalEngine::SCHMIDT</a>,<span class="comment"></span>
+<a name="l00052"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#adbdc59ce4e6f1e4ce0fc7169c760f8bea326a84d3094b558a1c43b4b61f9c2d58">00052</a> SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::SCHMIDT,<span class="comment"></span>
<a name="l00053"></a>00053 <span class="comment"> /// \cond SKIP</span>
<a name="l00054"></a>00054 <span class="comment"></span> <span class="comment">// These are deprecated...</span>
<a name="l00055"></a>00055 full = FULL,
@@ -108,8 +123,8 @@
<a name="l00058"></a>00058 <span class="comment"></span> };
<a name="l00059"></a>00059
<a name="l00060"></a>00060 <span class="keyword">private</span>:
-<a name="l00061"></a>00061 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00062"></a>00062 <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> _c[3];
+<a name="l00061"></a>00061 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00062"></a>00062 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff _c[3];
<a name="l00063"></a>00063 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a;
<a name="l00064"></a>00064 <span class="keywordtype">unsigned</span> _norm;
<a name="l00065"></a>00065
@@ -141,7 +156,7 @@
<a name="l00091"></a>00091 <span class="comment"> * C', \e S', \e C'', and \e S''. These arrays should not be altered or</span>
<a name="l00092"></a>00092 <span class="comment"> * destroyed during the lifetime of a SphericalHarmonic object.</span>
<a name="l00093"></a>00093 <span class="comment"> **********************************************************************/</span>
-<a name="l00094"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a897f6b15b82812e874a2b0927cfc3912">00094</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00094"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a897f6b15b82812e874a2b0927cfc3912">00094</a> SphericalHarmonic2(<span class="keyword">const</span> std::vector<real>& C,
<a name="l00095"></a>00095 <span class="keyword">const</span> std::vector<real>& S,
<a name="l00096"></a>00096 <span class="keywordtype">int</span> N,
<a name="l00097"></a>00097 <span class="keyword">const</span> std::vector<real>& C1,
@@ -192,7 +207,7 @@
<a name="l00142"></a>00142 <span class="comment"> * C', \e S', \e C'', and \e S''. These arrays should not be altered or</span>
<a name="l00143"></a>00143 <span class="comment"> * destroyed during the lifetime of a SphericalHarmonic object.</span>
<a name="l00144"></a>00144 <span class="comment"> **********************************************************************/</span>
-<a name="l00145"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a19300de2d629c014883026bf0042b6f0">00145</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">SphericalHarmonic2</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00145"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a19300de2d629c014883026bf0042b6f0">00145</a> SphericalHarmonic2(<span class="keyword">const</span> std::vector<real>& C,
<a name="l00146"></a>00146 <span class="keyword">const</span> std::vector<real>& S,
<a name="l00147"></a>00147 <span class="keywordtype">int</span> N, <span class="keywordtype">int</span> nmx, <span class="keywordtype">int</span> mmx,
<a name="l00148"></a>00148 <span class="keyword">const</span> std::vector<real>& C1,
@@ -233,18 +248,18 @@
<a name="l00183"></a>00183 <span class="comment"> * This routine requires constant memory and thus never throws an</span>
<a name="l00184"></a>00184 <span class="comment"> * exception.</span>
<a name="l00185"></a>00185 <span class="comment"> **********************************************************************/</span>
-<a name="l00186"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a48f85ac41417815e6735ff5aa7d74155">00186</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real tau1, real tau2, real x, real y, real z)
+<a name="l00186"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a48f85ac41417815e6735ff5aa7d74155">00186</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real tau1, real tau2, real x, real y, real z)
<a name="l00187"></a>00187 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00188"></a>00188 real f[] = {1, tau1, tau2};
<a name="l00189"></a>00189 real v = 0;
<a name="l00190"></a>00190 real dummy;
<a name="l00191"></a>00191 <span class="keywordflow">switch</span> (_norm) {
<a name="l00192"></a>00192 <span class="keywordflow">case</span> FULL:
-<a name="l00193"></a>00193 v = SphericalEngine::Value<false, SphericalEngine::FULL, 3>
+<a name="l00193"></a>00193 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 3>
<a name="l00194"></a>00194 (_c, f, x, y, z, _a, dummy, dummy, dummy);
<a name="l00195"></a>00195 <span class="keywordflow">break</span>;
<a name="l00196"></a>00196 <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00197"></a>00197 v = SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 3>
+<a name="l00197"></a>00197 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 3>
<a name="l00198"></a>00198 (_c, f, x, y, z, _a, dummy, dummy, dummy);
<a name="l00199"></a>00199 <span class="keywordflow">break</span>;
<a name="l00200"></a>00200 }
@@ -270,17 +285,17 @@
<a name="l00220"></a>00220 <span class="comment"> * computed. This routine requires constant memory and thus never throws</span>
<a name="l00221"></a>00221 <span class="comment"> * an exception.</span>
<a name="l00222"></a>00222 <span class="comment"> **********************************************************************/</span>
-<a name="l00223"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a762d48fc2c3dc902859286de4df7672c">00223</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real tau1, real tau2, real x, real y, real z,
+<a name="l00223"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a762d48fc2c3dc902859286de4df7672c">00223</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real tau1, real tau2, real x, real y, real z,
<a name="l00224"></a>00224 real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00225"></a>00225 real f[] = {1, tau1, tau2};
<a name="l00226"></a>00226 real v = 0;
<a name="l00227"></a>00227 <span class="keywordflow">switch</span> (_norm) {
<a name="l00228"></a>00228 <span class="keywordflow">case</span> FULL:
-<a name="l00229"></a>00229 v = SphericalEngine::Value<true, SphericalEngine::FULL, 3>
+<a name="l00229"></a>00229 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 3>
<a name="l00230"></a>00230 (_c, f, x, y, z, _a, gradx, grady, gradz);
<a name="l00231"></a>00231 <span class="keywordflow">break</span>;
<a name="l00232"></a>00232 <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00233"></a>00233 v = SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 3>
+<a name="l00233"></a>00233 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 3>
<a name="l00234"></a>00234 (_c, f, x, y, z, _a, gradx, grady, gradz);
<a name="l00235"></a>00235 <span class="keywordflow">break</span>;
<a name="l00236"></a>00236 }
@@ -316,7 +331,7 @@
<a name="l00266"></a>00266 <span class="keywordflow">switch</span> (_norm) {
<a name="l00267"></a>00267 <span class="keywordflow">case</span> FULL:
<a name="l00268"></a>00268 <span class="keywordflow">return</span> gradp ?
-<a name="l00269"></a>00269 SphericalEngine::Circle<true, SphericalEngine::FULL, 3>
+<a name="l00269"></a>00269 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 3>
<a name="l00270"></a>00270 (_c, f, p, z, _a) :
<a name="l00271"></a>00271 SphericalEngine::Circle<false, SphericalEngine::FULL, 3>
<a name="l00272"></a>00272 (_c, f, p, z, _a);
@@ -324,7 +339,7 @@
<a name="l00274"></a>00274 <span class="keywordflow">case</span> SCHMIDT:
<a name="l00275"></a>00275 <span class="keywordflow">default</span>: <span class="comment">// To avoid compiler warnings</span>
<a name="l00276"></a>00276 <span class="keywordflow">return</span> gradp ?
-<a name="l00277"></a>00277 SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 3>
+<a name="l00277"></a>00277 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 3>
<a name="l00278"></a>00278 (_c, f, p, z, _a) :
<a name="l00279"></a>00279 SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 3>
<a name="l00280"></a>00280 (_c, f, p, z, _a);
@@ -335,17 +350,17 @@
<a name="l00285"></a>00285 <span class="comment"> /**</span>
<a name="l00286"></a>00286 <span class="comment"> * @return the zeroth SphericalEngine::coeff object.</span>
<a name="l00287"></a>00287 <span class="comment"> **********************************************************************/</span>
-<a name="l00288"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a166338f0b4ccf89c48278bb9514046f0">00288</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients() <span class="keyword">const</span> throw()
+<a name="l00288"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a166338f0b4ccf89c48278bb9514046f0">00288</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients() <span class="keyword">const</span> throw()
<a name="l00289"></a>00289 { <span class="keywordflow">return</span> _c[0]; }<span class="comment"></span>
<a name="l00290"></a>00290 <span class="comment"> /**</span>
<a name="l00291"></a>00291 <span class="comment"> * @return the first SphericalEngine::coeff object.</span>
<a name="l00292"></a>00292 <span class="comment"> **********************************************************************/</span>
-<a name="l00293"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a51751279dc4e0b6e19886723f8e8b493">00293</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients1() <span class="keyword">const</span> throw()
+<a name="l00293"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a51751279dc4e0b6e19886723f8e8b493">00293</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients1() <span class="keyword">const</span> throw()
<a name="l00294"></a>00294 { <span class="keywordflow">return</span> _c[1]; }<span class="comment"></span>
<a name="l00295"></a>00295 <span class="comment"> /**</span>
<a name="l00296"></a>00296 <span class="comment"> * @return the second SphericalEngine::coeff object.</span>
<a name="l00297"></a>00297 <span class="comment"> **********************************************************************/</span>
-<a name="l00298"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a676b4c36923744bf5057b24484d9cf60">00298</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients2() <span class="keyword">const</span> throw()
+<a name="l00298"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic2.html#a676b4c36923744bf5057b24484d9cf60">00298</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients2() <span class="keyword">const</span> throw()
<a name="l00299"></a>00299 { <span class="keywordflow">return</span> _c[2]; }
<a name="l00300"></a>00300 };
<a name="l00301"></a>00301
@@ -354,8 +369,13 @@
<a name="l00304"></a>00304 <span class="preprocessor">#endif // GEOGRAPHICLIB_SPHERICALHARMONIC2_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalHarmonic_8hpp.html b/doc/html/SphericalHarmonic_8hpp.html
index 426108b..0ca715b 100644
--- a/doc/html/SphericalHarmonic_8hpp.html
+++ b/doc/html/SphericalHarmonic_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalHarmonic.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,13 +85,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic_8hpp.html#ab6742c760b0220c0a0d6423bed5b8bf8">GEOGRAPHICLIB_SPHERICALHARMONIC_HPP</a> "$Id: cd1abfd4b08774a17c141bb6fbb07b04d4658791 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic_8hpp.html#ab6742c760b0220c0a0d6423bed5b8bf8">GEOGRAPHICLIB_SPHERICALHARMONIC_HPP</a> "$Id: 6fa804c46efd01670cfb7835dd022791b60d2942 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">GeographicLib::SphericalHarmonic</a> class. </p>
@@ -89,7 +102,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_SPHERICALHARMONIC_HPP "$Id: cd1abfd4b08774a17c141bb6fbb07b04d4658791 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_SPHERICALHARMONIC_HPP "$Id: 6fa804c46efd01670cfb7835dd022791b60d2942 $"</td>
</tr>
</table>
</div>
@@ -100,8 +113,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/SphericalHarmonic_8hpp_source.html b/doc/html/SphericalHarmonic_8hpp_source.html
index 02dd603..0a8dc2d 100644
--- a/doc/html/SphericalHarmonic_8hpp_source.html
+++ b/doc/html/SphericalHarmonic_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: SphericalHarmonic.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_SPHERICALHARMONIC_HPP)</span>
<a name="l00011"></a><a class="code" href="SphericalHarmonic_8hpp.html#ab6742c760b0220c0a0d6423bed5b8bf8">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_SPHERICALHARMONIC_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: cd1abfd4b08774a17c141bb6fbb07b04d4658791 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 6fa804c46efd01670cfb7835dd022791b60d2942 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <vector></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -113,7 +128,7 @@
<a name="l00063"></a>00063 <span class="comment"> * \include example-SphericalHarmonic.cpp</span>
<a name="l00064"></a>00064 <span class="comment"> **********************************************************************/</span>
<a name="l00065"></a>00065
-<a name="l00066"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html">00066</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> {
+<a name="l00066"></a>00066 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> SphericalHarmonic {
<a name="l00067"></a>00067 <span class="keyword">public</span>:<span class="comment"></span>
<a name="l00068"></a>00068 <span class="comment"> /**</span>
<a name="l00069"></a>00069 <span class="comment"> * Supported normalizations for the associated Legendre polynomials.</span>
@@ -137,7 +152,7 @@
<a name="l00087"></a>00087 <span class="comment"> *</span>
<a name="l00088"></a>00088 <span class="comment"> * @hideinitializer</span>
<a name="l00089"></a>00089 <span class="comment"> **********************************************************************/</span>
-<a name="l00090"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">00090</a> FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">SphericalEngine::FULL</a>,<span class="comment"></span>
+<a name="l00090"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">00090</a> FULL = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::FULL,<span class="comment"></span>
<a name="l00091"></a>00091 <span class="comment"> /**</span>
<a name="l00092"></a>00092 <span class="comment"> * Schmidt semi-normalized associated Legendre polynomials.</span>
<a name="l00093"></a>00093 <span class="comment"> *</span>
@@ -156,7 +171,7 @@
<a name="l00106"></a>00106 <span class="comment"> *</span>
<a name="l00107"></a>00107 <span class="comment"> * @hideinitializer</span>
<a name="l00108"></a>00108 <span class="comment"> **********************************************************************/</span>
-<a name="l00109"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eba014c2f3300abd50ff65ea8d73ef3c69e">00109</a> SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SphericalEngine::SCHMIDT</a>,<span class="comment"></span>
+<a name="l00109"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104eba014c2f3300abd50ff65ea8d73ef3c69e">00109</a> SCHMIDT = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::SCHMIDT,<span class="comment"></span>
<a name="l00110"></a>00110 <span class="comment"> /// \cond SKIP</span>
<a name="l00111"></a>00111 <span class="comment"></span> <span class="comment">// These are deprecated...</span>
<a name="l00112"></a>00112 full = FULL,
@@ -165,8 +180,8 @@
<a name="l00115"></a>00115 <span class="comment"></span> };
<a name="l00116"></a>00116
<a name="l00117"></a>00117 <span class="keyword">private</span>:
-<a name="l00118"></a>00118 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00119"></a>00119 <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> _c[1];
+<a name="l00118"></a>00118 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00119"></a>00119 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff _c[1];
<a name="l00120"></a>00120 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a;
<a name="l00121"></a>00121 <span class="keywordtype">unsigned</span> _norm;
<a name="l00122"></a>00122
@@ -206,7 +221,7 @@
<a name="l00156"></a>00156 <span class="comment"> * These arrays should not be altered or destroyed during the lifetime of a</span>
<a name="l00157"></a>00157 <span class="comment"> * SphericalHarmonic object.</span>
<a name="l00158"></a>00158 <span class="comment"> **********************************************************************/</span>
-<a name="l00159"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#adb71d28aa60a813ca3384f9c58ef8fa1">00159</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00159"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#adb71d28aa60a813ca3384f9c58ef8fa1">00159</a> SphericalHarmonic(<span class="keyword">const</span> std::vector<real>& C,
<a name="l00160"></a>00160 <span class="keyword">const</span> std::vector<real>& S,
<a name="l00161"></a>00161 <span class="keywordtype">int</span> N, real a, <span class="keywordtype">unsigned</span> norm = FULL)
<a name="l00162"></a>00162 : _a(a)
@@ -233,7 +248,7 @@
<a name="l00183"></a>00183 <span class="comment"> * These arrays should not be altered or destroyed during the lifetime of a</span>
<a name="l00184"></a>00184 <span class="comment"> * SphericalHarmonic object.</span>
<a name="l00185"></a>00185 <span class="comment"> **********************************************************************/</span>
-<a name="l00186"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a2ed62c0ad8fb1ab36d5a331a3f33c3d7">00186</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a>(<span class="keyword">const</span> std::vector<real>& C,
+<a name="l00186"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a2ed62c0ad8fb1ab36d5a331a3f33c3d7">00186</a> SphericalHarmonic(<span class="keyword">const</span> std::vector<real>& C,
<a name="l00187"></a>00187 <span class="keyword">const</span> std::vector<real>& S,
<a name="l00188"></a>00188 <span class="keywordtype">int</span> N, <span class="keywordtype">int</span> nmx, <span class="keywordtype">int</span> mmx,
<a name="l00189"></a>00189 real a, <span class="keywordtype">unsigned</span> norm = FULL)
@@ -259,17 +274,17 @@
<a name="l00209"></a>00209 <span class="comment"> * This routine requires constant memory and thus never throws an</span>
<a name="l00210"></a>00210 <span class="comment"> * exception.</span>
<a name="l00211"></a>00211 <span class="comment"> **********************************************************************/</span>
-<a name="l00212"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">00212</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">operator()</a>(real x, real y, real z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00212"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">00212</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">operator()</a>(real x, real y, real z) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00213"></a>00213 real f[] = {1};
<a name="l00214"></a>00214 real v = 0;
<a name="l00215"></a>00215 real dummy;
<a name="l00216"></a>00216 <span class="keywordflow">switch</span> (_norm) {
<a name="l00217"></a>00217 <span class="keywordflow">case</span> FULL:
-<a name="l00218"></a>00218 v = SphericalEngine::Value<false, SphericalEngine::FULL, 1>
+<a name="l00218"></a>00218 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::FULL, 1>
<a name="l00219"></a>00219 (_c, f, x, y, z, _a, dummy, dummy, dummy);
<a name="l00220"></a>00220 <span class="keywordflow">break</span>;
<a name="l00221"></a>00221 <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00222"></a>00222 v = SphericalEngine::Value<false, SphericalEngine::SCHMIDT, 1>
+<a name="l00222"></a>00222 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<false, SphericalEngine::SCHMIDT, 1>
<a name="l00223"></a>00223 (_c, f, x, y, z, _a, dummy, dummy, dummy);
<a name="l00224"></a>00224 <span class="keywordflow">break</span>;
<a name="l00225"></a>00225 }
@@ -292,17 +307,17 @@
<a name="l00242"></a>00242 <span class="comment"> * computed. This routine requires constant memory and thus never throws</span>
<a name="l00243"></a>00243 <span class="comment"> * an exception.</span>
<a name="l00244"></a>00244 <span class="comment"> **********************************************************************/</span>
-<a name="l00245"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a5046d787c241c5216cfeb0062673cbd7">00245</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> operator()(real x, real y, real z,
+<a name="l00245"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#a5046d787c241c5216cfeb0062673cbd7">00245</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real operator()(real x, real y, real z,
<a name="l00246"></a>00246 real& gradx, real& grady, real& gradz) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00247"></a>00247 real f[] = {1};
<a name="l00248"></a>00248 real v = 0;
<a name="l00249"></a>00249 <span class="keywordflow">switch</span> (_norm) {
<a name="l00250"></a>00250 <span class="keywordflow">case</span> FULL:
-<a name="l00251"></a>00251 v = SphericalEngine::Value<true, SphericalEngine::FULL, 1>
+<a name="l00251"></a>00251 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 1>
<a name="l00252"></a>00252 (_c, f, x, y, z, _a, gradx, grady, gradz);
<a name="l00253"></a>00253 <span class="keywordflow">break</span>;
<a name="l00254"></a>00254 <span class="keywordflow">case</span> SCHMIDT:
-<a name="l00255"></a>00255 v = SphericalEngine::Value<true, SphericalEngine::SCHMIDT, 1>
+<a name="l00255"></a>00255 v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::SCHMIDT, 1>
<a name="l00256"></a>00256 (_c, f, x, y, z, _a, gradx, grady, gradz);
<a name="l00257"></a>00257 <span class="keywordflow">break</span>;
<a name="l00258"></a>00258 }
@@ -364,7 +379,7 @@
<a name="l00314"></a>00314 <span class="keywordflow">switch</span> (_norm) {
<a name="l00315"></a>00315 <span class="keywordflow">case</span> FULL:
<a name="l00316"></a>00316 <span class="keywordflow">return</span> gradp ?
-<a name="l00317"></a>00317 SphericalEngine::Circle<true, SphericalEngine::FULL, 1>
+<a name="l00317"></a>00317 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::FULL, 1>
<a name="l00318"></a>00318 (_c, f, p, z, _a) :
<a name="l00319"></a>00319 SphericalEngine::Circle<false, SphericalEngine::FULL, 1>
<a name="l00320"></a>00320 (_c, f, p, z, _a);
@@ -372,7 +387,7 @@
<a name="l00322"></a>00322 <span class="keywordflow">case</span> SCHMIDT:
<a name="l00323"></a>00323 <span class="keywordflow">default</span>: <span class="comment">// To avoid compiler warnings</span>
<a name="l00324"></a>00324 <span class="keywordflow">return</span> gradp ?
-<a name="l00325"></a>00325 SphericalEngine::Circle<true, SphericalEngine::SCHMIDT, 1>
+<a name="l00325"></a>00325 <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Circle<true, SphericalEngine::SCHMIDT, 1>
<a name="l00326"></a>00326 (_c, f, p, z, _a) :
<a name="l00327"></a>00327 SphericalEngine::Circle<false, SphericalEngine::SCHMIDT, 1>
<a name="l00328"></a>00328 (_c, f, p, z, _a);
@@ -383,7 +398,7 @@
<a name="l00333"></a>00333 <span class="comment"> /**</span>
<a name="l00334"></a>00334 <span class="comment"> * @return the zeroth SphericalEngine::coeff object.</span>
<a name="l00335"></a>00335 <span class="comment"> **********************************************************************/</span>
-<a name="l00336"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#ac8886de1d1400ecf6482f6441c76a8a0">00336</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>& Coefficients() <span class="keyword">const</span> throw()
+<a name="l00336"></a><a class="code" href="classGeographicLib_1_1SphericalHarmonic.html#ac8886de1d1400ecf6482f6441c76a8a0">00336</a> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff& Coefficients() <span class="keyword">const</span> throw()
<a name="l00337"></a>00337 { <span class="keywordflow">return</span> _c[0]; }
<a name="l00338"></a>00338 };
<a name="l00339"></a>00339
@@ -392,8 +407,13 @@
<a name="l00342"></a>00342 <span class="preprocessor">#endif // GEOGRAPHICLIB_SPHERICALHARMONIC_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercatorExact_8cpp.html b/doc/html/TransverseMercatorExact_8cpp.html
index 5f69fcf..1d73286 100644
--- a/doc/html/TransverseMercatorExact_8cpp.html
+++ b/doc/html/TransverseMercatorExact_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercatorExact.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8cpp.html#a019dc2a5f6ac9aa9ba03ad8dd974e438">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP</a> "$Id: 6f1cf279b6f0c3fa2b05877d73a3f9260844fdf5 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8cpp.html#a019dc2a5f6ac9aa9ba03ad8dd974e438">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP</a> "$Id: 125a2d11919018a84fb0c09ea2e77011a35a4a2d $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>The relevant section of Lee's paper is part V, pp 67–101, <a href="http://dx.doi.org/10.3138/X687-1574-4325-WM62">Conformal Projections Based On Jacobian Elliptic Functions</a>.</p>
<p>The method entails using the Thompson Transverse Mercator as an intermediate projection. The projections from the intermediate coordinates to [<em>phi</em>, <em>lam</em>] and [<em>x</em>, <em>y</em>] are given by elliptic functions. The inverse of these projections are found by Newton's method with a suitable starting guess.</p>
<p>This implementation and notation closely follows Lee, with the following exceptions: </p>
@@ -109,7 +122,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP "$Id: 6f1cf279b6f0c3fa2b05877d73a3f9260844fdf5 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP "$Id: 125a2d11919018a84fb0c09ea2e77011a35a4a2d $"</td>
</tr>
</table>
</div>
@@ -120,8 +133,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercatorExact_8cpp_source.html b/doc/html/TransverseMercatorExact_8cpp_source.html
index f0d36ee..1e72f8f 100644
--- a/doc/html/TransverseMercatorExact_8cpp_source.html
+++ b/doc/html/TransverseMercatorExact_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercatorExact.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercatorExact.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::TransverseMercatorExact class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * The relevant section of Lee's paper is part V, pp 67–101,</span>
@@ -91,7 +106,7 @@
<a name="l00042"></a>00042 <span class="preprocessor">#include <<a class="code" href="TransverseMercatorExact_8hpp.html" title="Header for GeographicLib::TransverseMercatorExact class.">GeographicLib/TransverseMercatorExact.hpp</a>></span>
<a name="l00043"></a>00043
<a name="l00044"></a><a class="code" href="TransverseMercatorExact_8cpp.html#a019dc2a5f6ac9aa9ba03ad8dd974e438">00044</a> <span class="preprocessor">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP \</span>
-<a name="l00045"></a>00045 <span class="preprocessor"> "$Id: 6f1cf279b6f0c3fa2b05877d73a3f9260844fdf5 $"</span>
+<a name="l00045"></a>00045 <span class="preprocessor"> "$Id: 125a2d11919018a84fb0c09ea2e77011a35a4a2d $"</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span>
<a name="l00047"></a>00047 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="TransverseMercatorExact_8cpp.html#a019dc2a5f6ac9aa9ba03ad8dd974e438">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP</a>)
<a name="l00048"></a>00048 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="TransverseMercatorExact_8hpp.html#a33c80ffd2f74ea9ed9dd4c11bf9e1198">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</a>)
@@ -100,13 +115,13 @@
<a name="l00051"></a>00051
<a name="l00052"></a>00052 <span class="keyword">using namespace </span>std;
<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::tol_ =
+<a name="l00054"></a>00054 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::tol_ =
<a name="l00055"></a>00055 numeric_limits<real>::epsilon();
-<a name="l00056"></a>00056 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::tol1_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * sqrt(tol_);
-<a name="l00057"></a>00057 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::tol2_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * tol_;
-<a name="l00058"></a>00058 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::taytol_ = pow(tol_, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.6));
+<a name="l00056"></a>00056 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::tol1_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * sqrt(tol_);
+<a name="l00057"></a>00057 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::tol2_ = <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1) * tol_;
+<a name="l00058"></a>00058 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::taytol_ = pow(tol_, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.6));
<a name="l00059"></a>00059 <span class="comment">// Overflow value s.t. atan(overflow_) = pi/2</span>
-<a name="l00060"></a>00060 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercatorExact::overflow_ = 1 / Math::sq(tol_);
+<a name="l00060"></a>00060 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::overflow_ = 1 / Math::sq(tol_);
<a name="l00061"></a>00061
<a name="l00062"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a72ffcc89eee6f30a6d1f4d061518a6f1">00062</a> TransverseMercatorExact::TransverseMercatorExact(real a, real f, real k0,
<a name="l00063"></a>00063 <span class="keywordtype">bool</span> extendp)
@@ -121,13 +136,13 @@
<a name="l00072"></a>00072 , _Eu(_mu)
<a name="l00073"></a>00073 , _Ev(_mv)
<a name="l00074"></a>00074 {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00075"></a>00075 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00076"></a>00076 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
<a name="l00077"></a>00077 <span class="keywordflow">if</span> (!(_f > 0))
<a name="l00078"></a>00078 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Flattening is not positive"</span>);
<a name="l00079"></a>00079 <span class="keywordflow">if</span> (!(_f < 1))
<a name="l00080"></a>00080 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00081"></a>00081 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_k0) && _k0 > 0))
+<a name="l00081"></a>00081 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_k0) && _k0 > 0))
<a name="l00082"></a>00082 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00083"></a>00083 }
<a name="l00084"></a>00084
@@ -137,14 +152,14 @@
<a name="l00088"></a>00088 Constants::UTM_k0<real>());
<a name="l00089"></a>00089
<a name="l00090"></a>00090 <span class="comment">// tau = tan(phi), taup = sinh(psi)</span>
-<a name="l00091"></a>00091 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> TransverseMercatorExact::taup(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tau) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00091"></a>00091 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::taup(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tau) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00092"></a>00092 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00093"></a>00093 tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
-<a name="l00094"></a>00094 sig = sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * tau / tau1) );
-<a name="l00095"></a>00095 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1;
+<a name="l00093"></a>00093 tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00094"></a>00094 sig = sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * tau / tau1) );
+<a name="l00095"></a>00095 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1;
<a name="l00096"></a>00096 }
<a name="l00097"></a>00097
-<a name="l00098"></a>00098 <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> TransverseMercatorExact::taupinv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00098"></a>00098 Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercatorExact::taupinv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00099"></a>00099 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00100"></a>00100 <span class="comment">// See comment in TransverseMercator.cpp about the initial guess</span>
<a name="l00101"></a>00101 tau = taup/_mv,
@@ -152,11 +167,11 @@
<a name="l00103"></a>00103 <span class="comment">// min iterations = 1, max iterations = 2; mean = 1.94</span>
<a name="l00104"></a>00104 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < numit_; ++i) {
<a name="l00105"></a>00105 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00106"></a>00106 tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
-<a name="l00107"></a>00107 sig = sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * tau / tau1 ) ),
-<a name="l00108"></a>00108 taupa = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
-<a name="l00109"></a>00109 dtau = (taup - taupa) * (1 + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tau)) /
-<a name="l00110"></a>00110 ( _mv * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
+<a name="l00106"></a>00106 tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00107"></a>00107 sig = sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * tau / tau1 ) ),
+<a name="l00108"></a>00108 taupa = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
+<a name="l00109"></a>00109 dtau = (taup - taupa) * (1 + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tau)) /
+<a name="l00110"></a>00110 ( _mv * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
<a name="l00111"></a>00111 tau += dtau;
<a name="l00112"></a>00112 <span class="keywordflow">if</span> (!(abs(dtau) >= stol))
<a name="l00113"></a>00113 <span class="keywordflow">break</span>;
@@ -172,14 +187,14 @@
<a name="l00123"></a>00123 <span class="comment">// atanh(_e * snu / dnv) =</span>
<a name="l00124"></a>00124 <span class="comment">// asinh(_e * snu / sqrt(_mu * cnu^2 + _mv * cnv^2))</span>
<a name="l00125"></a>00125 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00126"></a>00126 d1 = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snu * snv)),
-<a name="l00127"></a>00127 d2 = sqrt(_mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv)),
+<a name="l00126"></a>00126 d1 = sqrt(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snu * snv)),
+<a name="l00127"></a>00127 d2 = sqrt(_mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv)),
<a name="l00128"></a>00128 t1 = (d1 ? snu * dnv / d1 : (snu < 0 ? -overflow_ : overflow_)),
-<a name="l00129"></a>00129 t2 = (d2 ? sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(_e * snu / d2) ) :
+<a name="l00129"></a>00129 t2 = (d2 ? sinh( _e * <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(_e * snu / d2) ) :
<a name="l00130"></a>00130 (snu < 0 ? -overflow_ : overflow_));
<a name="l00131"></a>00131 <span class="comment">// psi = asinh(t1) - asinh(t2)</span>
<a name="l00132"></a>00132 <span class="comment">// taup = sinh(psi)</span>
-<a name="l00133"></a>00133 taup = t1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), t2) - t2 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), t1);
+<a name="l00133"></a>00133 taup = t1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), t2) - t2 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), t1);
<a name="l00134"></a>00134 lam = (d1 != 0 && d2 != 0) ?
<a name="l00135"></a>00135 atan2(dnu * snv, cnu * cnv) - _e * atan2(_e * cnu * snv, dnu * cnv) :
<a name="l00136"></a>00136 0;
@@ -192,9 +207,9 @@
<a name="l00143"></a>00143 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& du, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00144"></a>00144 <span class="comment">// Lee 54.21 but write (1 - dnu^2 * snv^2) = (cnv^2 + _mu * snu^2 * snv^2)</span>
<a name="l00145"></a>00145 <span class="comment">// (see A+S 16.21.4)</span>
-<a name="l00146"></a>00146 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snu * snv));
-<a name="l00147"></a>00147 du = cnu * dnu * dnv * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv) - _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snu * snv)) / d;
-<a name="l00148"></a>00148 dv = -snu * snv * cnv * (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(dnu * dnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu)) / d;
+<a name="l00146"></a>00146 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snu * snv));
+<a name="l00147"></a>00147 du = cnu * dnu * dnv * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv) - _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snu * snv)) / d;
+<a name="l00148"></a>00148 dv = -snu * snv * cnv * (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(dnu * dnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu)) / d;
<a name="l00149"></a>00149 }
<a name="l00150"></a>00150
<a name="l00151"></a>00151 <span class="comment">// Starting point for zetainv</span>
@@ -216,7 +231,7 @@
<a name="l00167"></a>00167 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00168"></a>00168 psix = 1 - psi / _e,
<a name="l00169"></a>00169 lamx = (Math::pi<real>()/2 - lam) / _e;
-<a name="l00170"></a>00170 u = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(sin(lamx) / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(cos(lamx), sinh(psix))) *
+<a name="l00170"></a>00170 u = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(sin(lamx) / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(cos(lamx), sinh(psix))) *
<a name="l00171"></a>00171 (1 + _mu/2);
<a name="l00172"></a>00172 v = atan2(cos(lamx), sinh(psix)) * (1 + _mu/2);
<a name="l00173"></a>00173 u = _Eu.K() - u;
@@ -236,7 +251,7 @@
<a name="l00187"></a>00187 <span class="comment">// arg(zeta - zeta0) = [-90, 180]</span>
<a name="l00188"></a>00188 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00189"></a>00189 dlam = lam - (1 - _e) * Math::pi<real>()/2,
-<a name="l00190"></a>00190 rad = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(psi, dlam),
+<a name="l00190"></a>00190 rad = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(psi, dlam),
<a name="l00191"></a>00191 <span class="comment">// atan2(dlam-psi, psi+dlam) + 45d gives arg(zeta - zeta0) in range</span>
<a name="l00192"></a>00192 <span class="comment">// [-135, 225). Subtracting 180 (since multiplier is negative) makes</span>
<a name="l00193"></a>00193 <span class="comment">// range [-315, 45). Multiplying by 1/3 (for cube root) gives range</span>
@@ -245,7 +260,7 @@
<a name="l00196"></a>00196 ang = atan2(dlam-psi, psi+dlam) - <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * Math::pi<real>();
<a name="l00197"></a>00197 <span class="comment">// Error using this guess is about 0.21 * (rad/e)^(5/3)</span>
<a name="l00198"></a>00198 retval = rad < _e * taytol_;
-<a name="l00199"></a>00199 rad = <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">Math::cbrt</a>(3 / (_mv * _e) * rad);
+<a name="l00199"></a>00199 rad = <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">Math::cbrt</a>(3 / (_mv * _e) * rad);
<a name="l00200"></a>00200 ang /= 3;
<a name="l00201"></a>00201 u = rad * cos(ang);
<a name="l00202"></a>00202 v = rad * sin(ang) + _Ev.K();
@@ -253,7 +268,7 @@
<a name="l00204"></a>00204 <span class="comment">// Use spherical TM, Lee 12.6 -- writing atanh(sin(lam) / cosh(psi)) =</span>
<a name="l00205"></a>00205 <span class="comment">// asinh(sin(lam) / hypot(cos(lam), sinh(psi))). This takes care of the</span>
<a name="l00206"></a>00206 <span class="comment">// log singularity at zeta = Eu.K() (corresponding to the north pole)</span>
-<a name="l00207"></a>00207 v = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(sin(lam) / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(cos(lam), sinh(psi)));
+<a name="l00207"></a>00207 v = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(sin(lam) / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(cos(lam), sinh(psi)));
<a name="l00208"></a>00208 u = atan2(sinh(psi), cos(lam));
<a name="l00209"></a>00209 <span class="comment">// But scale to put 90,0 on the right place</span>
<a name="l00210"></a>00210 u *= _Eu.K() / (Math::pi<real>()/2);
@@ -266,11 +281,11 @@
<a name="l00217"></a>00217 <span class="keywordtype">void</span> TransverseMercatorExact::zetainv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v)
<a name="l00218"></a>00218 <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00219"></a>00219 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00220"></a>00220 psi = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(taup),
-<a name="l00221"></a>00221 scal = 1/<a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup);
+<a name="l00220"></a>00220 psi = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(taup),
+<a name="l00221"></a>00221 scal = 1/<a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup);
<a name="l00222"></a>00222 <span class="keywordflow">if</span> (zetainv0(psi, lam, u, v))
<a name="l00223"></a>00223 <span class="keywordflow">return</span>;
-<a name="l00224"></a>00224 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stol2 = tol2_ / <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(max(psi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)));
+<a name="l00224"></a>00224 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> stol2 = tol2_ / <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(max(psi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1)));
<a name="l00225"></a>00225 <span class="comment">// min iterations = 2, max iterations = 6; mean = 4.0</span>
<a name="l00226"></a>00226 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0, trip = 0; i < numit_; ++i) {
<a name="l00227"></a>00227 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, cnu, dnu, snv, cnv, dnv;
@@ -289,7 +304,7 @@
<a name="l00240"></a>00240 v -= delv;
<a name="l00241"></a>00241 <span class="keywordflow">if</span> (trip)
<a name="l00242"></a>00242 <span class="keywordflow">break</span>;
-<a name="l00243"></a>00243 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> delw2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(delu) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(delv);
+<a name="l00243"></a>00243 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> delw2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(delu) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(delv);
<a name="l00244"></a>00244 <span class="keywordflow">if</span> (!(delw2 >= stol2))
<a name="l00245"></a>00245 ++trip;
<a name="l00246"></a>00246 }
@@ -300,7 +315,7 @@
<a name="l00251"></a>00251 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00252"></a>00252 <span class="comment">// Lee 55.4 writing</span>
<a name="l00253"></a>00253 <span class="comment">// dnu^2 + dnv^2 - 1 = _mu * cnu^2 + _mv * cnv^2</span>
-<a name="l00254"></a>00254 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv);
+<a name="l00254"></a>00254 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv);
<a name="l00255"></a>00255 xi = _Eu.E(snu, cnu, dnu) - _mu * snu * cnu * dnu / d;
<a name="l00256"></a>00256 eta = v - _Ev.E(snv, cnv, dnv) + _mv * snv * cnv * dnv / d;
<a name="l00257"></a>00257 }
@@ -312,11 +327,11 @@
<a name="l00263"></a>00263 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& du, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
<a name="l00264"></a>00264 <span class="comment">// Reciprocal of 55.9: dw/ds = dn(w)^2/_mv, expanding complex dn(w) using</span>
<a name="l00265"></a>00265 <span class="comment">// A+S 16.21.4</span>
-<a name="l00266"></a>00266 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snu * snv));
+<a name="l00266"></a>00266 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> d = _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv) + _mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snu * snv));
<a name="l00267"></a>00267 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00268"></a>00268 dnr = dnu * cnv * dnv,
<a name="l00269"></a>00269 dni = - _mu * snu * cnu * snv;
-<a name="l00270"></a>00270 du = (<a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(dnr) - <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(dni)) / d;
+<a name="l00270"></a>00270 du = (<a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(dnr) - <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(dni)) / d;
<a name="l00271"></a>00271 dv = 2 * dnr * dni / d;
<a name="l00272"></a>00272 }
<a name="l00273"></a>00273
@@ -333,7 +348,7 @@
<a name="l00284"></a>00284 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00285"></a>00285 x = xi - _Eu.E(),
<a name="l00286"></a>00286 y = eta - _Ev.KE(),
-<a name="l00287"></a>00287 r2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(x) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(y);
+<a name="l00287"></a>00287 r2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(x) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(y);
<a name="l00288"></a>00288 u = _Eu.K() + x/r2;
<a name="l00289"></a>00289 v = _Ev.K() - y/r2;
<a name="l00290"></a>00290 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((eta > <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * _Ev.KE() && xi < <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.25) * _Eu.E())
@@ -352,13 +367,13 @@
<a name="l00303"></a>00303 <span class="comment">// mapping arg = [-pi/2, -pi/6] to [-pi/2, pi/2]</span>
<a name="l00304"></a>00304 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
<a name="l00305"></a>00305 deta = eta - _Ev.KE(),
-<a name="l00306"></a>00306 rad = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(xi, deta),
+<a name="l00306"></a>00306 rad = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(xi, deta),
<a name="l00307"></a>00307 <span class="comment">// Map the range [-90, 180] in sigma space to [-90, 0] in w space. See</span>
<a name="l00308"></a>00308 <span class="comment">// discussion in zetainv0 on the cut for ang.</span>
<a name="l00309"></a>00309 ang = atan2(deta-xi, xi+deta) - <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.75) * Math::pi<real>();
<a name="l00310"></a>00310 <span class="comment">// Error using this guess is about 0.068 * rad^(5/3)</span>
<a name="l00311"></a>00311 retval = rad < 2 * taytol_;
-<a name="l00312"></a>00312 rad = <a class="code" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">Math::cbrt</a>(3 / _mv * rad);
+<a name="l00312"></a>00312 rad = <a class="code" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">Math::cbrt</a>(3 / _mv * rad);
<a name="l00313"></a>00313 ang /= 3;
<a name="l00314"></a>00314 u = rad * cos(ang);
<a name="l00315"></a>00315 v = rad * sin(ang) + _Ev.K();
@@ -392,7 +407,7 @@
<a name="l00343"></a>00343 v -= delv;
<a name="l00344"></a>00344 <span class="keywordflow">if</span> (trip)
<a name="l00345"></a>00345 <span class="keywordflow">break</span>;
-<a name="l00346"></a>00346 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> delw2 = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(delu) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(delv);
+<a name="l00346"></a>00346 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> delw2 = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(delu) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(delv);
<a name="l00347"></a>00347 <span class="keywordflow">if</span> (!(delw2 >= tol2_))
<a name="l00348"></a>00348 ++trip;
<a name="l00349"></a>00349 }
@@ -402,7 +417,7 @@
<a name="l00353"></a>00353 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
<a name="l00354"></a>00354 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
<a name="l00355"></a>00355 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00356"></a>00356 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sec2 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tau); <span class="comment">// sec(phi)^2</span>
+<a name="l00356"></a>00356 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> sec2 = 1 + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tau); <span class="comment">// sec(phi)^2</span>
<a name="l00357"></a>00357 <span class="comment">// Lee 55.12 -- negated for our sign convention. gamma gives the bearing</span>
<a name="l00358"></a>00358 <span class="comment">// (clockwise from true north) of grid north</span>
<a name="l00359"></a>00359 gamma = atan2(_mv * snu * snv * cnv, cnu * dnu * dnv);
@@ -420,8 +435,8 @@
<a name="l00371"></a>00371 <span class="comment">//</span>
<a name="l00372"></a>00372 <span class="comment">// _mv + _mu * c^2 instead of 1 - _mu * sin(phi)^2</span>
<a name="l00373"></a>00373 k = sqrt(_mv + _mu / sec2) * sqrt(sec2) *
-<a name="l00374"></a>00374 sqrt( (_mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(snv) + <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu * dnv)) /
-<a name="l00375"></a>00375 (_mu * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cnv)) );
+<a name="l00374"></a>00374 sqrt( (_mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(snv) + <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu * dnv)) /
+<a name="l00375"></a>00375 (_mu * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnu) + _mv * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cnv)) );
<a name="l00376"></a>00376 }
<a name="l00377"></a>00377
<a name="l00378"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">00378</a> <span class="keywordtype">void</span> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">TransverseMercatorExact::Forward</a>(real lon0, real lat, real lon,
@@ -448,7 +463,7 @@
<a name="l00399"></a>00399 lon = 180 - lon;
<a name="l00400"></a>00400 }
<a name="l00401"></a>00401 real
-<a name="l00402"></a>00402 phi = lat * Math::degree<real>(),
+<a name="l00402"></a>00402 phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00403"></a>00403 lam = lon * Math::degree<real>(),
<a name="l00404"></a>00404 tau = tanx(phi);
<a name="l00405"></a>00405
@@ -478,7 +493,7 @@
<a name="l00429"></a>00429 zeta(u, snu, cnu, dnu, v, snv, cnv, dnv, tau, lam);
<a name="l00430"></a>00430 tau=taupinv(tau);
<a name="l00431"></a>00431 Scale(tau, lam, snu, cnu, dnu, snv, cnv, dnv, gamma, k);
-<a name="l00432"></a>00432 gamma /= Math::degree<real>();
+<a name="l00432"></a>00432 gamma /= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00433"></a>00433 <span class="keywordflow">if</span> (backside)
<a name="l00434"></a>00434 gamma = 180 - gamma;
<a name="l00435"></a>00435 gamma *= latsign * lonsign;
@@ -519,16 +534,16 @@
<a name="l00470"></a>00470 zeta(u, snu, cnu, dnu, v, snv, cnv, dnv, tau, lam);
<a name="l00471"></a>00471 tau = taupinv(tau);
<a name="l00472"></a>00472 phi = atan(tau);
-<a name="l00473"></a>00473 lat = phi / Math::degree<real>();
-<a name="l00474"></a>00474 lon = lam / Math::degree<real>();
+<a name="l00473"></a>00473 lat = phi / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00474"></a>00474 lon = lam / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00475"></a>00475 } <span class="keywordflow">else</span> {
<a name="l00476"></a>00476 tau = overflow_;
-<a name="l00477"></a>00477 phi = Math::pi<real>()/2;
+<a name="l00477"></a>00477 phi = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>()/2;
<a name="l00478"></a>00478 lat = 90;
<a name="l00479"></a>00479 lon = lam = 0;
<a name="l00480"></a>00480 }
<a name="l00481"></a>00481 Scale(tau, lam, snu, cnu, dnu, snv, cnv, dnv, gamma, k);
-<a name="l00482"></a>00482 gamma /= Math::degree<real>();
+<a name="l00482"></a>00482 gamma /= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00483"></a>00483 <span class="keywordflow">if</span> (backside)
<a name="l00484"></a>00484 lon = 180 - lon;
<a name="l00485"></a>00485 lon *= lonsign;
@@ -553,8 +568,13 @@
<a name="l00504"></a>00504 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercatorExact_8hpp.html b/doc/html/TransverseMercatorExact_8hpp.html
index 9eea3d4..3e2c11f 100644
--- a/doc/html/TransverseMercatorExact_8hpp.html
+++ b/doc/html/TransverseMercatorExact_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercatorExact.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8hpp.html#a33c80ffd2f74ea9ed9dd4c11bf9e1198">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</a> "$Id: 6e85377964a67cffd3f69758de39a7a1d9aae42a $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8hpp.html#a33c80ffd2f74ea9ed9dd4c11bf9e1198">GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</a> "$Id: bd96340b9dc3e7bfd09d4374296a75f4c6e00fc3 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP "$Id: 6e85377964a67cffd3f69758de39a7a1d9aae42a $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP "$Id: bd96340b9dc3e7bfd09d4374296a75f4c6e00fc3 $"</td>
</tr>
</table>
</div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercatorExact_8hpp_source.html b/doc/html/TransverseMercatorExact_8hpp_source.html
index 5c28e7c..5021c1a 100644
--- a/doc/html/TransverseMercatorExact_8hpp_source.html
+++ b/doc/html/TransverseMercatorExact_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercatorExact.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercatorExact.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::TransverseMercatorExact class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP)</span>
<a name="l00011"></a><a class="code" href="TransverseMercatorExact_8hpp.html#a33c80ffd2f74ea9ed9dd4c11bf9e1198">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 6e85377964a67cffd3f69758de39a7a1d9aae42a $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: bd96340b9dc3e7bfd09d4374296a75f4c6e00fc3 $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="EllipticFunction_8hpp.html" title="Header for GeographicLib::EllipticFunction class.">GeographicLib/EllipticFunction.hpp</a>></span>
@@ -120,205 +135,216 @@
<a name="l00070"></a>00070 <span class="comment"> *</span>
<a name="l00071"></a>00071 <span class="comment"> * Example of use:</span>
<a name="l00072"></a>00072 <span class="comment"> * \include example-TransverseMercatorExact.cpp</span>
-<a name="l00073"></a>00073 <span class="comment"> **********************************************************************/</span>
-<a name="l00074"></a>00074
-<a name="l00075"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html">00075</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> {
-<a name="l00076"></a>00076 <span class="keyword">private</span>:
-<a name="l00077"></a>00077 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00079"></a>00079 <span class="keyword">static</span> <span class="keyword">const</span> real tol1_;
-<a name="l00080"></a>00080 <span class="keyword">static</span> <span class="keyword">const</span> real tol2_;
-<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keyword">const</span> real taytol_;
-<a name="l00082"></a>00082 <span class="keyword">static</span> <span class="keyword">const</span> real overflow_;
-<a name="l00083"></a>00083 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 10;
-<a name="l00084"></a>00084 real _a, _f, _k0, _mu, _mv, _e, _ep2;
-<a name="l00085"></a>00085 <span class="keywordtype">bool</span> _extendp;
-<a name="l00086"></a>00086 <a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a> _Eu, _Ev;
-<a name="l00087"></a>00087 <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
-<a name="l00088"></a>00088 <span class="keyword">static</span> <span class="keyword">inline</span> real tanx(real x) <span class="keywordflow">throw</span>() {
-<a name="l00089"></a>00089 real t = std::tan(x);
-<a name="l00090"></a>00090 <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
-<a name="l00091"></a>00091 <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
-<a name="l00092"></a>00092 }
-<a name="l00093"></a>00093
-<a name="l00094"></a>00094 real taup(real tau) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00095"></a>00095 real taupinv(real taup) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00096"></a>00096
-<a name="l00097"></a>00097 <span class="keywordtype">void</span> zeta(real u, real snu, real cnu, real dnu,
-<a name="l00098"></a>00098 real v, real snv, real cnv, real dnv,
-<a name="l00099"></a>00099 real& taup, real& lam) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00073"></a>00073 <span class="comment"> *</span>
+<a name="l00074"></a>00074 <span class="comment"> * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a</span>
+<a name="l00075"></a>00075 <span class="comment"> * command-line utility providing access to the functionality of</span>
+<a name="l00076"></a>00076 <span class="comment"> * TransverseMercator and TransverseMercatorExact.</span>
+<a name="l00077"></a>00077 <span class="comment"> **********************************************************************/</span>
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> TransverseMercatorExact {
+<a name="l00080"></a>00080 <span class="keyword">private</span>:
+<a name="l00081"></a>00081 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00082"></a>00082 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00083"></a>00083 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol1_;
+<a name="l00084"></a>00084 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol2_;
+<a name="l00085"></a>00085 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taytol_;
+<a name="l00086"></a>00086 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> overflow_;
+<a name="l00087"></a>00087 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 10;
+<a name="l00088"></a>00088 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _k0, _mu, _mv, _e, _ep2;
+<a name="l00089"></a>00089 <span class="keywordtype">bool</span> _extendp;
+<a name="l00090"></a>00090 EllipticFunction _Eu, _Ev;
+<a name="l00091"></a>00091 <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
+<a name="l00092"></a>00092 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tanx(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00093"></a>00093 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = std::tan(x);
+<a name="l00094"></a>00094 <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
+<a name="l00095"></a>00095 <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
+<a name="l00096"></a>00096 }
+<a name="l00097"></a>00097
+<a name="l00098"></a>00098 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tau) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00099"></a>00099 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taupinv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00100"></a>00100
-<a name="l00101"></a>00101 <span class="keywordtype">void</span> dwdzeta(real u, real snu, real cnu, real dnu,
-<a name="l00102"></a>00102 real v, real snv, real cnv, real dnv,
-<a name="l00103"></a>00103 real& du, real& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00101"></a>00101 <span class="keywordtype">void</span> zeta(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00102"></a>00102 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00103"></a>00103 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& taup, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lam) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00104"></a>00104
-<a name="l00105"></a>00105 <span class="keywordtype">bool</span> zetainv0(real psi, real lam, real& u, real& v) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00106"></a>00106 <span class="keywordtype">void</span> zetainv(real taup, real lam, real& u, real& v) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00107"></a>00107
-<a name="l00108"></a>00108 <span class="keywordtype">void</span> sigma(real u, real snu, real cnu, real dnu,
-<a name="l00109"></a>00109 real v, real snv, real cnv, real dnv,
-<a name="l00110"></a>00110 real& xi, real& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00105"></a>00105 <span class="keywordtype">void</span> dwdzeta(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00106"></a>00106 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00107"></a>00107 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& du, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 <span class="keywordtype">bool</span> zetainv0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> psi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v) <span class="keyword">const</span> <span class="keywordflow">thr [...]
+<a name="l00110"></a>00110 <span class="keywordtype">void</span> zetainv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> taup, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v) <span class="keyword">const</span> <span class="keywordflow">thr [...]
<a name="l00111"></a>00111
-<a name="l00112"></a>00112 <span class="keywordtype">void</span> dwdsigma(real u, real snu, real cnu, real dnu,
-<a name="l00113"></a>00113 real v, real snv, real cnv, real dnv,
-<a name="l00114"></a>00114 real& du, real& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00112"></a>00112 <span class="keywordtype">void</span> sigma(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00113"></a>00113 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00114"></a>00114 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& eta) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
<a name="l00115"></a>00115
-<a name="l00116"></a>00116 <span class="keywordtype">bool</span> sigmainv0(real xi, real eta, real& u, real& v) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00117"></a>00117 <span class="keywordtype">void</span> sigmainv(real xi, real eta, real& u, real& v) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00118"></a>00118
-<a name="l00119"></a>00119 <span class="keywordtype">void</span> Scale(real tau, real lam,
-<a name="l00120"></a>00120 real snu, real cnu, real dnu,
-<a name="l00121"></a>00121 real snv, real cnv, real dnv,
-<a name="l00122"></a>00122 real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00123"></a>00123
-<a name="l00124"></a>00124 <span class="keyword">public</span>:
-<a name="l00125"></a>00125 <span class="comment"></span>
-<a name="l00126"></a>00126 <span class="comment"> /**</span>
-<a name="l00127"></a>00127 <span class="comment"> * Constructor for a ellipsoid with</span>
-<a name="l00128"></a>00128 <span class="comment"> *</span>
-<a name="l00129"></a>00129 <span class="comment"> * @param[in] a equatorial radius (meters).</span>
-<a name="l00130"></a>00130 <span class="comment"> * @param[in] f flattening of ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00131"></a>00131 <span class="comment"> * to 1/\e f.</span>
-<a name="l00132"></a>00132 <span class="comment"> * @param[in] k0 central scale factor.</span>
-<a name="l00133"></a>00133 <span class="comment"> * @param[in] extendp use extended domain.</span>
-<a name="l00134"></a>00134 <span class="comment"> *</span>
-<a name="l00135"></a>00135 <span class="comment"> * The transverse Mercator projection has a branch point singularity at \e</span>
-<a name="l00136"></a>00136 <span class="comment"> * lat = 0 and \e lon - \e lon0 = 90 (1 - \e e) or (for</span>
-<a name="l00137"></a>00137 <span class="comment"> * TransverseMercatorExact::UTM) x = 18381 km, y = 0m. The \e extendp</span>
-<a name="l00138"></a>00138 <span class="comment"> * argument governs where the branch cut is placed. With \e extendp =</span>
-<a name="l00139"></a>00139 <span class="comment"> * false, the "standard" convention is followed, namely the cut is placed</span>
-<a name="l00140"></a>00140 <span class="comment"> * along x > 18381 km, y = 0m. Forward can be called with any \e lat and</span>
-<a name="l00141"></a>00141 <span class="comment"> * \e lon then produces the transformation shown in Lee, Fig 46. Reverse</span>
-<a name="l00142"></a>00142 <span class="comment"> * analytically continues this in the +/- \e x direction. As a</span>
-<a name="l00143"></a>00143 <span class="comment"> * consequence, Reverse may map multiple points to the same geographic</span>
-<a name="l00144"></a>00144 <span class="comment"> * location; for example, for TransverseMercatorExact::UTM, \e x =</span>
-<a name="l00145"></a>00145 <span class="comment"> * 22051449.037349 m, \e y = -7131237.022729 m and \e x = 29735142.378357</span>
-<a name="l00146"></a>00146 <span class="comment"> * m, \e y = 4235043.607933 m both map to \e lat = -2 deg, \e lon = 88 deg.</span>
-<a name="l00147"></a>00147 <span class="comment"> *</span>
-<a name="l00148"></a>00148 <span class="comment"> * With \e extendp = true, the branch cut is moved to the lower left</span>
-<a name="l00149"></a>00149 <span class="comment"> * quadrant. The various symmetries of the transverse Mercator projection</span>
-<a name="l00150"></a>00150 <span class="comment"> * can be used to explore the projection on any sheet. In this mode the</span>
-<a name="l00151"></a>00151 <span class="comment"> * domains of \e lat, \e lon, \e x, and \e y are restricted to</span>
-<a name="l00152"></a>00152 <span class="comment"> * - the union of</span>
-<a name="l00153"></a>00153 <span class="comment"> * - \e lat in [0, 90] and \e lon - \e lon0 in [0, 90]</span>
-<a name="l00154"></a>00154 <span class="comment"> * - \e lat in (-90, 0] and \e lon - \e lon0 in [90 (1 - \e e), 90]</span>
-<a name="l00155"></a>00155 <span class="comment"> * - the union of</span>
-<a name="l00156"></a>00156 <span class="comment"> * - <i>x</i>/(\e k0 \e a) in [0, inf) and</span>
-<a name="l00157"></a>00157 <span class="comment"> * <i>y</i>/(\e k0 \e a) in [0, E(<i>e</i><sup>2</sup>)]</span>
-<a name="l00158"></a>00158 <span class="comment"> * - <i>x</i>/(\e k0 \e a) in [K(1 - <i>e</i><sup>2</sup>) - E(1 -</span>
-<a name="l00159"></a>00159 <span class="comment"> * <i>e</i><sup>2</sup>), inf) and <i>y</i>/(\e k0 \e a) in (-inf, 0]</span>
-<a name="l00160"></a>00160 <span class="comment"> * .</span>
-<a name="l00161"></a>00161 <span class="comment"> * See Sec. 5 of</span>
-<a name="l00162"></a>00162 <span class="comment"> * <a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a> for a full</span>
-<a name="l00163"></a>00163 <span class="comment"> * discussion of the treatment of the branch cut.</span>
-<a name="l00164"></a>00164 <span class="comment"> *</span>
-<a name="l00165"></a>00165 <span class="comment"> * The method will work for all ellipsoids used in terrestrial geodesy.</span>
-<a name="l00166"></a>00166 <span class="comment"> * The method cannot be applied directly to the case of a sphere (\e f = 0)</span>
-<a name="l00167"></a>00167 <span class="comment"> * because some the constants characterizing this method diverge in that</span>
-<a name="l00168"></a>00168 <span class="comment"> * limit, and in practice, \e f should be larger than about numeric_limits<</span>
-<a name="l00169"></a>00169 <span class="comment"> * real >::%epsilon(). However, TransverseMercator treats the sphere</span>
-<a name="l00170"></a>00170 <span class="comment"> * exactly. An exception is thrown if either axis of the ellipsoid or \e</span>
-<a name="l00171"></a>00171 <span class="comment"> * k0 is not positive or if \e f <= 0.</span>
-<a name="l00172"></a>00172 <span class="comment"> **********************************************************************/</span>
-<a name="l00173"></a>00173 <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>(real a, real f, real k0, <span class="keywordtype">bool</span> extendp = <span class="keyword">false</span>);
-<a name="l00174"></a>00174 <span class="comment"></span>
-<a name="l00175"></a>00175 <span class="comment"> /**</span>
-<a name="l00176"></a>00176 <span class="comment"> * Forward projection, from geographic to transverse Mercator.</span>
-<a name="l00177"></a>00177 <span class="comment"> *</span>
-<a name="l00178"></a>00178 <span class="comment"> * @param[in] lon0 central meridian of the projection (degrees).</span>
-<a name="l00179"></a>00179 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00180"></a>00180 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00181"></a>00181 <span class="comment"> * @param[out] x easting of point (meters).</span>
-<a name="l00182"></a>00182 <span class="comment"> * @param[out] y northing of point (meters).</span>
-<a name="l00183"></a>00183 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00184"></a>00184 <span class="comment"> * @param[out] k scale of projection at point.</span>
-<a name="l00185"></a>00185 <span class="comment"> *</span>
-<a name="l00186"></a>00186 <span class="comment"> * No false easting or northing is added. \e lat should be in the range</span>
-<a name="l00187"></a>00187 <span class="comment"> * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].</span>
-<a name="l00188"></a>00188 <span class="comment"> **********************************************************************/</span>
-<a name="l00189"></a>00189 <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00190"></a>00190 real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00191"></a>00191 <span class="comment"></span>
-<a name="l00192"></a>00192 <span class="comment"> /**</span>
-<a name="l00193"></a>00193 <span class="comment"> * Reverse projection, from transverse Mercator to geographic.</span>
-<a name="l00194"></a>00194 <span class="comment"> *</span>
-<a name="l00195"></a>00195 <span class="comment"> * @param[in] lon0 central meridian of the projection (degrees).</span>
-<a name="l00196"></a>00196 <span class="comment"> * @param[in] x easting of point (meters).</span>
-<a name="l00197"></a>00197 <span class="comment"> * @param[in] y northing of point (meters).</span>
-<a name="l00198"></a>00198 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00199"></a>00199 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00200"></a>00200 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00201"></a>00201 <span class="comment"> * @param[out] k scale of projection at point.</span>
-<a name="l00202"></a>00202 <span class="comment"> *</span>
-<a name="l00203"></a>00203 <span class="comment"> * No false easting or northing is added. \e lon0 should be in the range</span>
-<a name="l00204"></a>00204 <span class="comment"> * [-180, 360]. The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00205"></a>00205 <span class="comment"> **********************************************************************/</span>
-<a name="l00206"></a>00206 <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00207"></a>00207 real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00208"></a>00208 <span class="comment"></span>
-<a name="l00209"></a>00209 <span class="comment"> /**</span>
-<a name="l00210"></a>00210 <span class="comment"> * TransverseMercatorExact::Forward without returning the convergence and</span>
-<a name="l00211"></a>00211 <span class="comment"> * scale.</span>
-<a name="l00212"></a>00212 <span class="comment"> **********************************************************************/</span>
-<a name="l00213"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a39c294a3389af325c41a8de51fd9228a">00213</a> <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00214"></a>00214 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00215"></a>00215 real gamma, k;
-<a name="l00216"></a>00216 Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00217"></a>00217 }
-<a name="l00218"></a>00218 <span class="comment"></span>
-<a name="l00219"></a>00219 <span class="comment"> /**</span>
-<a name="l00220"></a>00220 <span class="comment"> * TransverseMercatorExact::Reverse without returning the convergence and</span>
-<a name="l00221"></a>00221 <span class="comment"> * scale.</span>
-<a name="l00222"></a>00222 <span class="comment"> **********************************************************************/</span>
-<a name="l00223"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a56ff2f371d59e2ca0da8644571706169">00223</a> <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00224"></a>00224 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00225"></a>00225 real gamma, k;
-<a name="l00226"></a>00226 Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00227"></a>00227 }
-<a name="l00228"></a>00228 <span class="comment"></span>
-<a name="l00229"></a>00229 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00230"></a>00230 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00231"></a>00231 <span class="comment"> ///@{</span>
-<a name="l00232"></a>00232 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00233"></a>00233 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00234"></a>00234 <span class="comment"> * the value used in the constructor.</span>
-<a name="l00235"></a>00235 <span class="comment"> **********************************************************************/</span>
-<a name="l00236"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">00236</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00237"></a>00237 <span class="comment"></span>
-<a name="l00238"></a>00238 <span class="comment"> /**</span>
-<a name="l00239"></a>00239 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value used in</span>
-<a name="l00240"></a>00240 <span class="comment"> * the constructor.</span>
-<a name="l00241"></a>00241 <span class="comment"> **********************************************************************/</span>
-<a name="l00242"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">00242</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00243"></a>00243 <span class="comment"></span>
-<a name="l00244"></a>00244 <span class="comment"> /**</span>
-<a name="l00245"></a>00245 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00246"></a>00246 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00247"></a>00247 <span class="comment"> **********************************************************************/</span>
-<a name="l00248"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">00248</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00249"></a>00249 <span class="comment"></span>
-<a name="l00250"></a>00250 <span class="comment"> /**</span>
-<a name="l00251"></a>00251 <span class="comment"> * @return \e k0 central scale for the projection. This is the value of \e</span>
-<a name="l00252"></a>00252 <span class="comment"> * k0 used in the constructor and is the scale on the central meridian.</span>
-<a name="l00253"></a>00253 <span class="comment"> **********************************************************************/</span>
-<a name="l00254"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">00254</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00255"></a>00255 <span class="comment"> ///@}</span>
-<a name="l00256"></a>00256 <span class="comment"></span><span class="comment"></span>
-<a name="l00257"></a>00257 <span class="comment"> /**</span>
-<a name="l00258"></a>00258 <span class="comment"> * A global instantiation of TransverseMercatorExact with the WGS84</span>
-<a name="l00259"></a>00259 <span class="comment"> * ellipsoid and the UTM scale factor. However, unlike UTM, no false</span>
-<a name="l00260"></a>00260 <span class="comment"> * easting or northing is added.</span>
-<a name="l00261"></a>00261 <span class="comment"> **********************************************************************/</span>
-<a name="l00262"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">00262</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634 [...]
-<a name="l00263"></a>00263 };
-<a name="l00264"></a>00264
-<a name="l00265"></a>00265 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00266"></a>00266
-<a name="l00267"></a>00267 <span class="preprocessor">#endif // GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</span>
+<a name="l00116"></a>00116 <span class="keywordtype">void</span> dwdsigma(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00117"></a>00117 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> v, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00118"></a>00118 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& du, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& dv) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="keywordtype">bool</span> sigmainv0(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eta, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v) <span class="keyword">const</span> <span class="keywordflow">thr [...]
+<a name="l00121"></a>00121 <span class="keywordtype">void</span> sigmainv(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> xi, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eta, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& u, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& v) <span class="keyword">const</span> <span class="keywordflow">thro [...]
+<a name="l00122"></a>00122
+<a name="l00123"></a>00123 <span class="keywordtype">void</span> Scale(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tau, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lam,
+<a name="l00124"></a>00124 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnu, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnu,
+<a name="l00125"></a>00125 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> snv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> cnv, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> dnv,
+<a name="l00126"></a>00126 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00127"></a>00127
+<a name="l00128"></a>00128 <span class="keyword">public</span>:
+<a name="l00129"></a>00129 <span class="comment"></span>
+<a name="l00130"></a>00130 <span class="comment"> /**</span>
+<a name="l00131"></a>00131 <span class="comment"> * Constructor for a ellipsoid with</span>
+<a name="l00132"></a>00132 <span class="comment"> *</span>
+<a name="l00133"></a>00133 <span class="comment"> * @param[in] a equatorial radius (meters).</span>
+<a name="l00134"></a>00134 <span class="comment"> * @param[in] f flattening of ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00135"></a>00135 <span class="comment"> * to 1/\e f.</span>
+<a name="l00136"></a>00136 <span class="comment"> * @param[in] k0 central scale factor.</span>
+<a name="l00137"></a>00137 <span class="comment"> * @param[in] extendp use extended domain.</span>
+<a name="l00138"></a>00138 <span class="comment"> *</span>
+<a name="l00139"></a>00139 <span class="comment"> * The transverse Mercator projection has a branch point singularity at \e</span>
+<a name="l00140"></a>00140 <span class="comment"> * lat = 0 and \e lon - \e lon0 = 90 (1 - \e e) or (for</span>
+<a name="l00141"></a>00141 <span class="comment"> * TransverseMercatorExact::UTM) x = 18381 km, y = 0m. The \e extendp</span>
+<a name="l00142"></a>00142 <span class="comment"> * argument governs where the branch cut is placed. With \e extendp =</span>
+<a name="l00143"></a>00143 <span class="comment"> * false, the "standard" convention is followed, namely the cut is placed</span>
+<a name="l00144"></a>00144 <span class="comment"> * along x > 18381 km, y = 0m. Forward can be called with any \e lat and</span>
+<a name="l00145"></a>00145 <span class="comment"> * \e lon then produces the transformation shown in Lee, Fig 46. Reverse</span>
+<a name="l00146"></a>00146 <span class="comment"> * analytically continues this in the +/- \e x direction. As a</span>
+<a name="l00147"></a>00147 <span class="comment"> * consequence, Reverse may map multiple points to the same geographic</span>
+<a name="l00148"></a>00148 <span class="comment"> * location; for example, for TransverseMercatorExact::UTM, \e x =</span>
+<a name="l00149"></a>00149 <span class="comment"> * 22051449.037349 m, \e y = -7131237.022729 m and \e x = 29735142.378357</span>
+<a name="l00150"></a>00150 <span class="comment"> * m, \e y = 4235043.607933 m both map to \e lat = -2 deg, \e lon = 88 deg.</span>
+<a name="l00151"></a>00151 <span class="comment"> *</span>
+<a name="l00152"></a>00152 <span class="comment"> * With \e extendp = true, the branch cut is moved to the lower left</span>
+<a name="l00153"></a>00153 <span class="comment"> * quadrant. The various symmetries of the transverse Mercator projection</span>
+<a name="l00154"></a>00154 <span class="comment"> * can be used to explore the projection on any sheet. In this mode the</span>
+<a name="l00155"></a>00155 <span class="comment"> * domains of \e lat, \e lon, \e x, and \e y are restricted to</span>
+<a name="l00156"></a>00156 <span class="comment"> * - the union of</span>
+<a name="l00157"></a>00157 <span class="comment"> * - \e lat in [0, 90] and \e lon - \e lon0 in [0, 90]</span>
+<a name="l00158"></a>00158 <span class="comment"> * - \e lat in (-90, 0] and \e lon - \e lon0 in [90 (1 - \e e), 90]</span>
+<a name="l00159"></a>00159 <span class="comment"> * - the union of</span>
+<a name="l00160"></a>00160 <span class="comment"> * - <i>x</i>/(\e k0 \e a) in [0, inf) and</span>
+<a name="l00161"></a>00161 <span class="comment"> * <i>y</i>/(\e k0 \e a) in [0, E(<i>e</i><sup>2</sup>)]</span>
+<a name="l00162"></a>00162 <span class="comment"> * - <i>x</i>/(\e k0 \e a) in [K(1 - <i>e</i><sup>2</sup>) - E(1 -</span>
+<a name="l00163"></a>00163 <span class="comment"> * <i>e</i><sup>2</sup>), inf) and <i>y</i>/(\e k0 \e a) in (-inf, 0]</span>
+<a name="l00164"></a>00164 <span class="comment"> * .</span>
+<a name="l00165"></a>00165 <span class="comment"> * See Sec. 5 of</span>
+<a name="l00166"></a>00166 <span class="comment"> * <a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a> for a full</span>
+<a name="l00167"></a>00167 <span class="comment"> * discussion of the treatment of the branch cut.</span>
+<a name="l00168"></a>00168 <span class="comment"> *</span>
+<a name="l00169"></a>00169 <span class="comment"> * The method will work for all ellipsoids used in terrestrial geodesy.</span>
+<a name="l00170"></a>00170 <span class="comment"> * The method cannot be applied directly to the case of a sphere (\e f = 0)</span>
+<a name="l00171"></a>00171 <span class="comment"> * because some the constants characterizing this method diverge in that</span>
+<a name="l00172"></a>00172 <span class="comment"> * limit, and in practice, \e f should be larger than about numeric_limits<</span>
+<a name="l00173"></a>00173 <span class="comment"> * real >::%epsilon(). However, TransverseMercator treats the sphere</span>
+<a name="l00174"></a>00174 <span class="comment"> * exactly. An exception is thrown if either axis of the ellipsoid or \e</span>
+<a name="l00175"></a>00175 <span class="comment"> * k0 is not positive or if \e f <= 0.</span>
+<a name="l00176"></a>00176 <span class="comment"> **********************************************************************/</span>
+<a name="l00177"></a>00177 TransverseMercatorExact(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0, <span class="keywordtype">bool</span> extendp = <span class="keyword">false</span>);
+<a name="l00178"></a>00178 <span class="comment"></span>
+<a name="l00179"></a>00179 <span class="comment"> /**</span>
+<a name="l00180"></a>00180 <span class="comment"> * Forward projection, from geographic to transverse Mercator.</span>
+<a name="l00181"></a>00181 <span class="comment"> *</span>
+<a name="l00182"></a>00182 <span class="comment"> * @param[in] lon0 central meridian of the projection (degrees).</span>
+<a name="l00183"></a>00183 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00184"></a>00184 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00185"></a>00185 <span class="comment"> * @param[out] x easting of point (meters).</span>
+<a name="l00186"></a>00186 <span class="comment"> * @param[out] y northing of point (meters).</span>
+<a name="l00187"></a>00187 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00188"></a>00188 <span class="comment"> * @param[out] k scale of projection at point.</span>
+<a name="l00189"></a>00189 <span class="comment"> *</span>
+<a name="l00190"></a>00190 <span class="comment"> * No false easting or northing is added. \e lat should be in the range</span>
+<a name="l00191"></a>00191 <span class="comment"> * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].</span>
+<a name="l00192"></a>00192 <span class="comment"> **********************************************************************/</span>
+<a name="l00193"></a>00193 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00194"></a>00194 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00195"></a>00195 <span class="comment"></span>
+<a name="l00196"></a>00196 <span class="comment"> /**</span>
+<a name="l00197"></a>00197 <span class="comment"> * Reverse projection, from transverse Mercator to geographic.</span>
+<a name="l00198"></a>00198 <span class="comment"> *</span>
+<a name="l00199"></a>00199 <span class="comment"> * @param[in] lon0 central meridian of the projection (degrees).</span>
+<a name="l00200"></a>00200 <span class="comment"> * @param[in] x easting of point (meters).</span>
+<a name="l00201"></a>00201 <span class="comment"> * @param[in] y northing of point (meters).</span>
+<a name="l00202"></a>00202 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00203"></a>00203 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00204"></a>00204 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00205"></a>00205 <span class="comment"> * @param[out] k scale of projection at point.</span>
+<a name="l00206"></a>00206 <span class="comment"> *</span>
+<a name="l00207"></a>00207 <span class="comment"> * No false easting or northing is added. \e lon0 should be in the range</span>
+<a name="l00208"></a>00208 <span class="comment"> * [-180, 360]. The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00209"></a>00209 <span class="comment"> **********************************************************************/</span>
+<a name="l00210"></a>00210 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00211"></a>00211 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00212"></a>00212 <span class="comment"></span>
+<a name="l00213"></a>00213 <span class="comment"> /**</span>
+<a name="l00214"></a>00214 <span class="comment"> * TransverseMercatorExact::Forward without returning the convergence and</span>
+<a name="l00215"></a>00215 <span class="comment"> * scale.</span>
+<a name="l00216"></a>00216 <span class="comment"> **********************************************************************/</span>
+<a name="l00217"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a39c294a3389af325c41a8de51fd9228a">00217</a> <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
+<a name="l00218"></a>00218 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00219"></a>00219 real gamma, k;
+<a name="l00220"></a>00220 Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00221"></a>00221 }
+<a name="l00222"></a>00222 <span class="comment"></span>
+<a name="l00223"></a>00223 <span class="comment"> /**</span>
+<a name="l00224"></a>00224 <span class="comment"> * TransverseMercatorExact::Reverse without returning the convergence and</span>
+<a name="l00225"></a>00225 <span class="comment"> * scale.</span>
+<a name="l00226"></a>00226 <span class="comment"> **********************************************************************/</span>
+<a name="l00227"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a56ff2f371d59e2ca0da8644571706169">00227</a> <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
+<a name="l00228"></a>00228 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00229"></a>00229 real gamma, k;
+<a name="l00230"></a>00230 Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00231"></a>00231 }
+<a name="l00232"></a>00232 <span class="comment"></span>
+<a name="l00233"></a>00233 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00234"></a>00234 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00235"></a>00235 <span class="comment"> ///@{</span>
+<a name="l00236"></a>00236 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00237"></a>00237 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00238"></a>00238 <span class="comment"> * the value used in the constructor.</span>
+<a name="l00239"></a>00239 <span class="comment"> **********************************************************************/</span>
+<a name="l00240"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">00240</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00241"></a>00241 <span class="comment"></span>
+<a name="l00242"></a>00242 <span class="comment"> /**</span>
+<a name="l00243"></a>00243 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value used in</span>
+<a name="l00244"></a>00244 <span class="comment"> * the constructor.</span>
+<a name="l00245"></a>00245 <span class="comment"> **********************************************************************/</span>
+<a name="l00246"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">00246</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00247"></a>00247 <span class="comment"></span>
+<a name="l00248"></a>00248 <span class="comment"> /// \cond SKIP</span>
+<a name="l00249"></a>00249 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00250"></a>00250 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00251"></a>00251 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00252"></a>00252 <span class="comment"> **********************************************************************/</span>
+<a name="l00253"></a>00253 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00254"></a>00254 <span class="comment"> /// \endcond</span>
+<a name="l00255"></a>00255 <span class="comment"></span><span class="comment"></span>
+<a name="l00256"></a>00256 <span class="comment"> /**</span>
+<a name="l00257"></a>00257 <span class="comment"> * @return \e k0 central scale for the projection. This is the value of \e</span>
+<a name="l00258"></a>00258 <span class="comment"> * k0 used in the constructor and is the scale on the central meridian.</span>
+<a name="l00259"></a>00259 <span class="comment"> **********************************************************************/</span>
+<a name="l00260"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">00260</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span [...]
+<a name="l00261"></a>00261 <span class="comment"> ///@}</span>
+<a name="l00262"></a>00262 <span class="comment"></span><span class="comment"></span>
+<a name="l00263"></a>00263 <span class="comment"> /**</span>
+<a name="l00264"></a>00264 <span class="comment"> * A global instantiation of TransverseMercatorExact with the WGS84</span>
+<a name="l00265"></a>00265 <span class="comment"> * ellipsoid and the UTM scale factor. However, unlike UTM, no false</span>
+<a name="l00266"></a>00266 <span class="comment"> * easting or northing is added.</span>
+<a name="l00267"></a>00267 <span class="comment"> **********************************************************************/</span>
+<a name="l00268"></a><a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">00268</a> <span class="keyword">static</span> <span class="keyword">const</span> TransverseMercatorExact <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">UTM</a>;
+<a name="l00269"></a>00269 };
+<a name="l00270"></a>00270
+<a name="l00271"></a>00271 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00272"></a>00272
+<a name="l00273"></a>00273 <span class="preprocessor">#endif // GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercatorProj.1.html b/doc/html/TransverseMercatorProj.1.html
index 10cf80f..c3868d4 100644
--- a/doc/html/TransverseMercatorProj.1.html
+++ b/doc/html/TransverseMercatorProj.1.html
@@ -46,8 +46,11 @@
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>TransverseMercatorProj</strong> [ <strong>-s</strong> | <strong>-t</strong> ]
[ <strong>-l</strong> <em>lon0</em> ] [ <strong>-k</strong> <em>k1</em> ] [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -109,6 +112,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
<em>f</em> = 1/298.257223563. If the exact algorithm is used, <em>f</em> must be
positive.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -134,8 +146,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/doc/html/TransverseMercatorProj_8cpp.html b/doc/html/TransverseMercatorProj_8cpp.html
index 5816576..fd048f4 100644
--- a/doc/html/TransverseMercatorProj_8cpp.html
+++ b/doc/html/TransverseMercatorProj_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercatorProj.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,7 +86,7 @@ Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Command line utility for transverse Mercator projections. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2008-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>Compile and link with g++ -g -O3 -I../include -I../man -o TransverseMercatorProj \ <a class="el" href="TransverseMercatorProj_8cpp.html" title="Command line utility for transverse Mercator projections.">TransverseMercatorProj.cpp</a> \ ../src/DMS.cpp \ ../src/EllipticFunction.cpp \ ../src/TransverseMercator.cpp \ ../src/TransverseMercatorExact.cpp</p>
<p>See the <a href="TransverseMercatorProj.1.html">man page</a> for usage information. </p>
@@ -104,13 +119,18 @@ Functions</h2></td></tr>
<p>Definition at line <a class="el" href="TransverseMercatorProj_8cpp_source.html#l00034">34</a> of file <a class="el" href="TransverseMercatorProj_8cpp_source.html">TransverseMercatorProj.cpp</a>.</p>
-<p>References <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>, and <a class="el" href="DMS_8hpp_source.html#l00073">GeographicLib::DMS::LATITUDE</a>.</p>
+<p>References <a class="el" href="DMS_8cpp_source.html#l00031">GeographicLib::DMS::Decode()</a>, <a class="el" href="DMS_8hpp_source.html#l00073">GeographicLib::DMS::LATITUDE</a>, and <a class="el" href="DMS_8cpp_source.html#l00207">GeographicLib::DMS::DecodeLatLon()</a>.</p>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercatorProj_8cpp_source.html b/doc/html/TransverseMercatorProj_8cpp_source.html
index 02dc203..86f2b73 100644
--- a/doc/html/TransverseMercatorProj_8cpp_source.html
+++ b/doc/html/TransverseMercatorProj_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercatorProj.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercatorProj.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Command line utility for transverse Mercator projections</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * Compile and link with</span>
@@ -83,186 +98,210 @@
<a name="l00034"></a><a class="code" href="TransverseMercatorProj_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">00034</a> <span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
<a name="l00035"></a>00035 <span class="keywordflow">try</span> {
<a name="l00036"></a>00036 <span class="keyword">using namespace </span>GeographicLib;
-<a name="l00037"></a>00037 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00037"></a>00037 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
<a name="l00038"></a>00038 <span class="keywordtype">bool</span> exact = <span class="keyword">true</span>, extended = <span class="keyword">false</span>, series = <span class="keyword">false</span>, reverse = <span class="keyword">false</span>;
<a name="l00039"></a>00039 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>
-<a name="l00040"></a>00040 a = Constants::WGS84_a<real>(),
+<a name="l00040"></a>00040 a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(),
<a name="l00041"></a>00041 f = Constants::WGS84_f<real>(),
-<a name="l00042"></a>00042 k0 = Constants::UTM_k0<real>(),
+<a name="l00042"></a>00042 k0 = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::UTM_k0<real>(),
<a name="l00043"></a>00043 lon0 = 0;
-<a name="l00044"></a>00044 std::string istring, ifile, ofile;
-<a name="l00045"></a>00045
-<a name="l00046"></a>00046 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
-<a name="l00047"></a>00047 std::string arg(argv[m]);
-<a name="l00048"></a>00048 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
-<a name="l00049"></a>00049 reverse = <span class="keyword">true</span>;
-<a name="l00050"></a>00050 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>) {
-<a name="l00051"></a>00051 exact = <span class="keyword">true</span>;
-<a name="l00052"></a>00052 extended = <span class="keyword">true</span>;
-<a name="l00053"></a>00053 series = <span class="keyword">false</span>;
-<a name="l00054"></a>00054 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>) {
-<a name="l00055"></a>00055 exact = <span class="keyword">false</span>;
-<a name="l00056"></a>00056 extended = <span class="keyword">false</span>;
-<a name="l00057"></a>00057 series = <span class="keyword">true</span>;
-<a name="l00058"></a>00058 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
-<a name="l00059"></a>00059 <span class="keywordflow">if</span> (++m >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00060"></a>00060 <span class="keywordflow">try</span> {
-<a name="l00061"></a>00061 <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> ind;
-<a name="l00062"></a>00062 lon0 = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m]), ind);
-<a name="l00063"></a>00063 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
-<a name="l00064"></a>00064 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
-<a name="l00065"></a>00065 <span class="keywordflow">if</span> (!(lon0 >= -180 && lon0 <= 360))
-<a name="l00066"></a>00066 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad longitude"</span>);
-<a name="l00067"></a>00067 <span class="keywordflow">if</span> (lon0 >= 180) lon0 -= 360;
-<a name="l00068"></a>00068 }
-<a name="l00069"></a>00069 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00070"></a>00070 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00071"></a>00071 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00072"></a>00072 <span class="keywordflow">return</span> 1;
-<a name="l00073"></a>00073 }
-<a name="l00074"></a>00074 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-k"</span>) {
-<a name="l00075"></a>00075 <span class="keywordflow">if</span> (++m >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00076"></a>00076 <span class="keywordflow">try</span> {
-<a name="l00077"></a>00077 k0 = Utility::num<real>(std::string(argv[m]));
-<a name="l00078"></a>00078 }
-<a name="l00079"></a>00079 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00080"></a>00080 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
-<a name="l00081"></a>00081 << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00082"></a>00082 <span class="keywordflow">return</span> 1;
-<a name="l00083"></a>00083 }
-<a name="l00084"></a>00084 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
-<a name="l00085"></a>00085 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00086"></a>00086 <span class="keywordflow">try</span> {
-<a name="l00087"></a>00087 a = Utility::num<real>(std::string(argv[m + 1]));
-<a name="l00088"></a>00088 f = Utility::fract<real>(std::string(argv[m + 2]));
-<a name="l00089"></a>00089 }
-<a name="l00090"></a>00090 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00091"></a>00091 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00092"></a>00092 <span class="keywordflow">return</span> 1;
-<a name="l00093"></a>00093 }
-<a name="l00094"></a>00094 m += 2;
-<a name="l00095"></a>00095 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
-<a name="l00096"></a>00096 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00097"></a>00097 istring = argv[m];
-<a name="l00098"></a>00098 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
-<a name="l00099"></a>00099 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00100"></a>00100 ifile = argv[m];
-<a name="l00101"></a>00101 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
-<a name="l00102"></a>00102 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
-<a name="l00103"></a>00103 ofile = argv[m];
-<a name="l00104"></a>00104 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
-<a name="l00105"></a>00105 std::cout
-<a name="l00106"></a>00106 << argv[0]
-<a name="l00107"></a>00107 << <span class="stringliteral">": $Id: 9b13c08c33190c03afbd6fbab75246eb16e249cb $\n"</span>
-<a name="l00108"></a>00108 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
-<a name="l00109"></a>00109 <span class="keywordflow">return</span> 0;
-<a name="l00110"></a>00110 } <span class="keywordflow">else</span>
-<a name="l00111"></a>00111 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
-<a name="l00112"></a>00112 }
-<a name="l00113"></a>00113
-<a name="l00114"></a>00114 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
-<a name="l00115"></a>00115 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
-<a name="l00116"></a>00116 <span class="keywordflow">return</span> 1;
-<a name="l00117"></a>00117 }
-<a name="l00118"></a>00118 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
-<a name="l00119"></a>00119 std::ifstream infile;
-<a name="l00120"></a>00120 std::istringstream instring;
-<a name="l00121"></a>00121 <span class="keywordflow">if</span> (!ifile.empty()) {
-<a name="l00122"></a>00122 infile.open(ifile.c_str());
-<a name="l00123"></a>00123 <span class="keywordflow">if</span> (!infile.is_open()) {
-<a name="l00124"></a>00124 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
-<a name="l00125"></a>00125 <span class="keywordflow">return</span> 1;
-<a name="l00126"></a>00126 }
-<a name="l00127"></a>00127 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
-<a name="l00128"></a>00128 std::string::size_type m = 0;
-<a name="l00129"></a>00129 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
-<a name="l00130"></a>00130 m = istring.find(<span class="charliteral">';'</span>, m);
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (m == std::string::npos)
-<a name="l00132"></a>00132 <span class="keywordflow">break</span>;
-<a name="l00133"></a>00133 istring[m] = <span class="charliteral">'\n'</span>;
-<a name="l00134"></a>00134 }
-<a name="l00135"></a>00135 instring.str(istring);
-<a name="l00136"></a>00136 }
-<a name="l00137"></a>00137 std::istream* input = !ifile.empty() ? &infile :
-<a name="l00138"></a>00138 (!istring.empty() ? &instring : &std::cin);
-<a name="l00139"></a>00139
-<a name="l00140"></a>00140 std::ofstream outfile;
-<a name="l00141"></a>00141 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
-<a name="l00142"></a>00142 <span class="keywordflow">if</span> (!ofile.empty()) {
-<a name="l00143"></a>00143 outfile.open(ofile.c_str());
-<a name="l00144"></a>00144 <span class="keywordflow">if</span> (!outfile.is_open()) {
-<a name="l00145"></a>00145 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
-<a name="l00146"></a>00146 <span class="keywordflow">return</span> 1;
-<a name="l00147"></a>00147 }
-<a name="l00148"></a>00148 }
-<a name="l00149"></a>00149 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00044"></a>00044 std::string istring, ifile, ofile, cdelim;
+<a name="l00045"></a>00045 <span class="keywordtype">char</span> lsep = <span class="charliteral">';'</span>;
+<a name="l00046"></a>00046
+<a name="l00047"></a>00047 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> m = 1; m < argc; ++m) {
+<a name="l00048"></a>00048 std::string arg(argv[m]);
+<a name="l00049"></a>00049 <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-r"</span>)
+<a name="l00050"></a>00050 reverse = <span class="keyword">true</span>;
+<a name="l00051"></a>00051 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-t"</span>) {
+<a name="l00052"></a>00052 exact = <span class="keyword">true</span>;
+<a name="l00053"></a>00053 extended = <span class="keyword">true</span>;
+<a name="l00054"></a>00054 series = <span class="keyword">false</span>;
+<a name="l00055"></a>00055 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-s"</span>) {
+<a name="l00056"></a>00056 exact = <span class="keyword">false</span>;
+<a name="l00057"></a>00057 extended = <span class="keyword">false</span>;
+<a name="l00058"></a>00058 series = <span class="keyword">true</span>;
+<a name="l00059"></a>00059 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-l"</span>) {
+<a name="l00060"></a>00060 <span class="keywordflow">if</span> (++m >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00061"></a>00061 <span class="keywordflow">try</span> {
+<a name="l00062"></a>00062 <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a>::flag ind;
+<a name="l00063"></a>00063 lon0 = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(std::string(argv[m]), ind);
+<a name="l00064"></a>00064 <span class="keywordflow">if</span> (ind == <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>)
+<a name="l00065"></a>00065 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad hemisphere"</span>);
+<a name="l00066"></a>00066 <span class="keywordflow">if</span> (!(lon0 >= -180 && lon0 <= 360))
+<a name="l00067"></a>00067 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Bad longitude"</span>);
+<a name="l00068"></a>00068 <span class="keywordflow">if</span> (lon0 >= 180) lon0 -= 360;
+<a name="l00069"></a>00069 }
+<a name="l00070"></a>00070 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00071"></a>00071 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00072"></a>00072 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00073"></a>00073 <span class="keywordflow">return</span> 1;
+<a name="l00074"></a>00074 }
+<a name="l00075"></a>00075 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-k"</span>) {
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (++m >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00077"></a>00077 <span class="keywordflow">try</span> {
+<a name="l00078"></a>00078 k0 = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m]));
+<a name="l00079"></a>00079 }
+<a name="l00080"></a>00080 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00081"></a>00081 std::cerr << <span class="stringliteral">"Error decoding argument of "</span> << arg << <span class="stringliteral">": "</span>
+<a name="l00082"></a>00082 << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00083"></a>00083 <span class="keywordflow">return</span> 1;
+<a name="l00084"></a>00084 }
+<a name="l00085"></a>00085 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"-e"</span>) {
+<a name="l00086"></a>00086 <span class="keywordflow">if</span> (m + 2 >= argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00087"></a>00087 <span class="keywordflow">try</span> {
+<a name="l00088"></a>00088 a = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(std::string(argv[m + 1]));
+<a name="l00089"></a>00089 f = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::fract<real>(std::string(argv[m + 2]));
+<a name="l00090"></a>00090 }
+<a name="l00091"></a>00091 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00092"></a>00092 std::cerr << <span class="stringliteral">"Error decoding arguments of -e: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00093"></a>00093 <span class="keywordflow">return</span> 1;
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 m += 2;
+<a name="l00096"></a>00096 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-string"</span>) {
+<a name="l00097"></a>00097 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00098"></a>00098 istring = argv[m];
+<a name="l00099"></a>00099 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--input-file"</span>) {
+<a name="l00100"></a>00100 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00101"></a>00101 ifile = argv[m];
+<a name="l00102"></a>00102 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--output-file"</span>) {
+<a name="l00103"></a>00103 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00104"></a>00104 ofile = argv[m];
+<a name="l00105"></a>00105 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--line-separator"</span>) {
+<a name="l00106"></a>00106 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00107"></a>00107 <span class="keywordflow">if</span> (std::string(argv[m]).size() != 1) {
+<a name="l00108"></a>00108 std::cerr << <span class="stringliteral">"Line separator must be a single character\n"</span>;
+<a name="l00109"></a>00109 <span class="keywordflow">return</span> 1;
+<a name="l00110"></a>00110 }
+<a name="l00111"></a>00111 lsep = argv[m][0];
+<a name="l00112"></a>00112 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--comment-delimiter"</span>) {
+<a name="l00113"></a>00113 <span class="keywordflow">if</span> (++m == argc) <span class="keywordflow">return</span> usage(1, <span class="keyword">true</span>);
+<a name="l00114"></a>00114 cdelim = argv[m];
+<a name="l00115"></a>00115 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (arg == <span class="stringliteral">"--version"</span>) {
+<a name="l00116"></a>00116 std::cout
+<a name="l00117"></a>00117 << argv[0]
+<a name="l00118"></a>00118 << <span class="stringliteral">": $Id: dd2a53288a82171129091d16bec6d1457568eb4d $\n"</span>
+<a name="l00119"></a>00119 << <span class="stringliteral">"GeographicLib version "</span> << GEOGRAPHICLIB_VERSION_STRING << <span class="stringliteral">"\n"</span>;
+<a name="l00120"></a>00120 <span class="keywordflow">return</span> 0;
+<a name="l00121"></a>00121 } <span class="keywordflow">else</span>
+<a name="l00122"></a>00122 <span class="keywordflow">return</span> usage(!(arg == <span class="stringliteral">"-h"</span> || arg == <span class="stringliteral">"--help"</span>), arg != <span class="stringliteral">"--help"</span>);
+<a name="l00123"></a>00123 }
+<a name="l00124"></a>00124
+<a name="l00125"></a>00125 <span class="keywordflow">if</span> (!ifile.empty() && !istring.empty()) {
+<a name="l00126"></a>00126 std::cerr << <span class="stringliteral">"Cannot specify --input-string and --input-file together\n"</span>;
+<a name="l00127"></a>00127 <span class="keywordflow">return</span> 1;
+<a name="l00128"></a>00128 }
+<a name="l00129"></a>00129 <span class="keywordflow">if</span> (ifile == <span class="stringliteral">"-"</span>) ifile.clear();
+<a name="l00130"></a>00130 std::ifstream infile;
+<a name="l00131"></a>00131 std::istringstream instring;
+<a name="l00132"></a>00132 <span class="keywordflow">if</span> (!ifile.empty()) {
+<a name="l00133"></a>00133 infile.open(ifile.c_str());
+<a name="l00134"></a>00134 <span class="keywordflow">if</span> (!infile.is_open()) {
+<a name="l00135"></a>00135 std::cerr << <span class="stringliteral">"Cannot open "</span> << ifile << <span class="stringliteral">" for reading\n"</span>;
+<a name="l00136"></a>00136 <span class="keywordflow">return</span> 1;
+<a name="l00137"></a>00137 }
+<a name="l00138"></a>00138 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!istring.empty()) {
+<a name="l00139"></a>00139 std::string::size_type m = 0;
+<a name="l00140"></a>00140 <span class="keywordflow">while</span> (<span class="keyword">true</span>) {
+<a name="l00141"></a>00141 m = istring.find(lsep, m);
+<a name="l00142"></a>00142 <span class="keywordflow">if</span> (m == std::string::npos)
+<a name="l00143"></a>00143 <span class="keywordflow">break</span>;
+<a name="l00144"></a>00144 istring[m] = <span class="charliteral">'\n'</span>;
+<a name="l00145"></a>00145 }
+<a name="l00146"></a>00146 instring.str(istring);
+<a name="l00147"></a>00147 }
+<a name="l00148"></a>00148 std::istream* input = !ifile.empty() ? &infile :
+<a name="l00149"></a>00149 (!istring.empty() ? &instring : &std::cin);
<a name="l00150"></a>00150
-<a name="l00151"></a>00151 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>& TMS =
-<a name="l00152"></a>00152 series ? <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>(a, f, k0) : TransverseMercator(1, 0, 1);
-<a name="l00153"></a>00153
-<a name="l00154"></a>00154 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>& TME =
-<a name="l00155"></a>00155 exact ? <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>(a, f, k0, extended)
-<a name="l00156"></a>00156 : TransverseMercatorExact(1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1), 1, <span class="keyword">false</span>);
-<a name="l00157"></a>00157
-<a name="l00158"></a>00158 std::string s;
-<a name="l00159"></a>00159 <span class="keywordtype">int</span> retval = 0;
-<a name="l00160"></a>00160 std::cout << std::fixed;
-<a name="l00161"></a>00161 <span class="keywordflow">while</span> (std::getline(*input, s)) {
-<a name="l00162"></a>00162 <span class="keywordflow">try</span> {
-<a name="l00163"></a>00163 std::istringstream str(s);
-<a name="l00164"></a>00164 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y;
-<a name="l00165"></a>00165 std::string stra, strb;
-<a name="l00166"></a>00166 <span class="keywordflow">if</span> (!(str >> stra >> strb))
-<a name="l00167"></a>00167 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
-<a name="l00168"></a>00168 <span class="keywordflow">if</span> (reverse) {
-<a name="l00169"></a>00169 x = Utility::num<real>(stra);
-<a name="l00170"></a>00170 y = Utility::num<real>(strb);
-<a name="l00171"></a>00171 } <span class="keywordflow">else</span>
-<a name="l00172"></a>00172 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
-<a name="l00173"></a>00173 std::string strc;
-<a name="l00174"></a>00174 <span class="keywordflow">if</span> (str >> strc)
-<a name="l00175"></a>00175 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
-<a name="l00176"></a>00176 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gamma, k;
-<a name="l00177"></a>00177 <span class="keywordflow">if</span> (reverse) {
-<a name="l00178"></a>00178 <span class="keywordflow">if</span> (series)
-<a name="l00179"></a>00179 TMS.Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00180"></a>00180 <span class="keywordflow">else</span>
-<a name="l00181"></a>00181 TME.Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00182"></a>00182 *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
-<a name="l00183"></a>00183 << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
-<a name="l00184"></a>00184 << Utility::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
-<a name="l00185"></a>00185 << Utility::str<real>(k, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00186"></a>00186 } <span class="keywordflow">else</span> {
-<a name="l00187"></a>00187 <span class="keywordflow">if</span> (series)
-<a name="l00188"></a>00188 TMS.Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00189"></a>00189 <span class="keywordflow">else</span>
-<a name="l00190"></a>00190 TME.Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00191"></a>00191 *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
-<a name="l00192"></a>00192 << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
-<a name="l00193"></a>00193 << Utility::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
-<a name="l00194"></a>00194 << Utility::str<real>(k, 16) << <span class="stringliteral">"\n"</span>;
-<a name="l00195"></a>00195 }
-<a name="l00196"></a>00196 }
-<a name="l00197"></a>00197 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00198"></a>00198 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00199"></a>00199 retval = 1;
-<a name="l00200"></a>00200 }
-<a name="l00201"></a>00201 }
-<a name="l00202"></a>00202 <span class="keywordflow">return</span> retval;
-<a name="l00203"></a>00203 }
-<a name="l00204"></a>00204 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
-<a name="l00205"></a>00205 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
-<a name="l00206"></a>00206 <span class="keywordflow">return</span> 1;
-<a name="l00207"></a>00207 }
-<a name="l00208"></a>00208 <span class="keywordflow">catch</span> (...) {
-<a name="l00209"></a>00209 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
-<a name="l00210"></a>00210 <span class="keywordflow">return</span> 1;
-<a name="l00211"></a>00211 }
-<a name="l00212"></a>00212 }
+<a name="l00151"></a>00151 std::ofstream outfile;
+<a name="l00152"></a>00152 <span class="keywordflow">if</span> (ofile == <span class="stringliteral">"-"</span>) ofile.clear();
+<a name="l00153"></a>00153 <span class="keywordflow">if</span> (!ofile.empty()) {
+<a name="l00154"></a>00154 outfile.open(ofile.c_str());
+<a name="l00155"></a>00155 <span class="keywordflow">if</span> (!outfile.is_open()) {
+<a name="l00156"></a>00156 std::cerr << <span class="stringliteral">"Cannot open "</span> << ofile << <span class="stringliteral">" for writing\n"</span>;
+<a name="l00157"></a>00157 <span class="keywordflow">return</span> 1;
+<a name="l00158"></a>00158 }
+<a name="l00159"></a>00159 }
+<a name="l00160"></a>00160 std::ostream* output = !ofile.empty() ? &outfile : &std::cout;
+<a name="l00161"></a>00161
+<a name="l00162"></a>00162 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>& TMS =
+<a name="l00163"></a>00163 series ? <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>(a, f, k0) : TransverseMercator(1, 0, 1);
+<a name="l00164"></a>00164
+<a name="l00165"></a>00165 <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>& TME =
+<a name="l00166"></a>00166 exact ? <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>(a, f, k0, extended)
+<a name="l00167"></a>00167 : TransverseMercatorExact(1, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1), 1, <span class="keyword">false</span>);
+<a name="l00168"></a>00168
+<a name="l00169"></a>00169 std::string s;
+<a name="l00170"></a>00170 <span class="keywordtype">int</span> retval = 0;
+<a name="l00171"></a>00171 std::cout << std::fixed;
+<a name="l00172"></a>00172 <span class="keywordflow">while</span> (std::getline(*input, s)) {
+<a name="l00173"></a>00173 <span class="keywordflow">try</span> {
+<a name="l00174"></a>00174 std::string eol(<span class="stringliteral">"\n"</span>);
+<a name="l00175"></a>00175 <span class="keywordflow">if</span> (!cdelim.empty()) {
+<a name="l00176"></a>00176 std::string::size_type m = s.find(cdelim);
+<a name="l00177"></a>00177 <span class="keywordflow">if</span> (m != std::string::npos) {
+<a name="l00178"></a>00178 eol = <span class="stringliteral">" "</span> + s.substr(m) + <span class="stringliteral">"\n"</span>;
+<a name="l00179"></a>00179 s = s.substr(0, m);
+<a name="l00180"></a>00180 }
+<a name="l00181"></a>00181 }
+<a name="l00182"></a>00182 std::istringstream str(s);
+<a name="l00183"></a>00183 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, lon, x, y;
+<a name="l00184"></a>00184 std::string stra, strb;
+<a name="l00185"></a>00185 <span class="keywordflow">if</span> (!(str >> stra >> strb))
+<a name="l00186"></a>00186 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Incomplete input: "</span> + s);
+<a name="l00187"></a>00187 <span class="keywordflow">if</span> (reverse) {
+<a name="l00188"></a>00188 x = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(stra);
+<a name="l00189"></a>00189 y = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<real>(strb);
+<a name="l00190"></a>00190 } <span class="keywordflow">else</span>
+<a name="l00191"></a>00191 <a class="code" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DMS::DecodeLatLon</a>(stra, strb, lat, lon);
+<a name="l00192"></a>00192 std::string strc;
+<a name="l00193"></a>00193 <span class="keywordflow">if</span> (str >> strc)
+<a name="l00194"></a>00194 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Extraneous input: "</span> + strc);
+<a name="l00195"></a>00195 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> gamma, k;
+<a name="l00196"></a>00196 <span class="keywordflow">if</span> (reverse) {
+<a name="l00197"></a>00197 <span class="keywordflow">if</span> (series)
+<a name="l00198"></a>00198 TMS.Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00199"></a>00199 <span class="keywordflow">else</span>
+<a name="l00200"></a>00200 TME.Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00201"></a>00201 *output << Utility::str<real>(lat, 15) << <span class="stringliteral">" "</span>
+<a name="l00202"></a>00202 << Utility::str<real>(lon, 15) << <span class="stringliteral">" "</span>
+<a name="l00203"></a>00203 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
+<a name="l00204"></a>00204 << Utility::str<real>(k, 16) << eol;
+<a name="l00205"></a>00205 } <span class="keywordflow">else</span> {
+<a name="l00206"></a>00206 <span class="keywordflow">if</span> (series)
+<a name="l00207"></a>00207 TMS.Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00208"></a>00208 <span class="keywordflow">else</span>
+<a name="l00209"></a>00209 TME.Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00210"></a>00210 *output << Utility::str<real>(x, 10) << <span class="stringliteral">" "</span>
+<a name="l00211"></a>00211 << Utility::str<real>(y, 10) << <span class="stringliteral">" "</span>
+<a name="l00212"></a>00212 << <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::str<real>(gamma, 16) << <span class="stringliteral">" "</span>
+<a name="l00213"></a>00213 << Utility::str<real>(k, 16) << eol;
+<a name="l00214"></a>00214 }
+<a name="l00215"></a>00215 }
+<a name="l00216"></a>00216 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00217"></a>00217 *output << <span class="stringliteral">"ERROR: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00218"></a>00218 retval = 1;
+<a name="l00219"></a>00219 }
+<a name="l00220"></a>00220 }
+<a name="l00221"></a>00221 <span class="keywordflow">return</span> retval;
+<a name="l00222"></a>00222 }
+<a name="l00223"></a>00223 <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::exception& e) {
+<a name="l00224"></a>00224 std::cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+<a name="l00225"></a>00225 <span class="keywordflow">return</span> 1;
+<a name="l00226"></a>00226 }
+<a name="l00227"></a>00227 <span class="keywordflow">catch</span> (...) {
+<a name="l00228"></a>00228 std::cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+<a name="l00229"></a>00229 <span class="keywordflow">return</span> 1;
+<a name="l00230"></a>00230 }
+<a name="l00231"></a>00231 }
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercator_8cpp.html b/doc/html/TransverseMercator_8cpp.html
index 3f14033..e51df6c 100644
--- a/doc/html/TransverseMercator_8cpp.html
+++ b/doc/html/TransverseMercator_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercator.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,17 +75,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8cpp.html#ab09ba83d5531a4ca91dc8ce82ae98084">GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP</a> "$Id: 07ae5b935a611df70b64c57bd6b171ce2a380436 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8cpp.html#ab09ba83d5531a4ca91dc8ce82ae98084">GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP</a> "$Id: 7b5a1854a015da061b8fdad0a4b35be7e06fcb9a $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a></p>
<p>This implementation follows closely <a href="http://www.jhs-suositukset.fi/suomi/jhs154">JHS 154, ETRS89 - järjestelmään liittyvät karttaprojektiot, tasokoordinaatistot ja karttalehtijako</a> (Map projections, plane coordinates, and map sheet index for ETRS89), published by JUHTA, Finnish Geodetic Institute, and the National Land Survey of Finland (2006).</p>
<p>The relevant section is available as the 2008 PDF file <a href="http://docs.jhs-suositukset.fi/jhs-suositukset/JHS154/JHS154_liite1.pdf">http://docs.jhs-suositukset.fi/jhs-suositukset/JHS154/JHS154_liite1.pdf</a></p>
<p>This is a straight transcription of the formulas in this paper with the following exceptions:</p>
@@ -95,7 +108,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP "$Id: 07ae5b935a611df70b64c57bd6b171ce2a380436 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP "$Id: 7b5a1854a015da061b8fdad0a4b35be7e06fcb9a $"</td>
</tr>
</table>
</div>
@@ -106,8 +119,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercator_8cpp_source.html b/doc/html/TransverseMercator_8cpp_source.html
index 8b93234..737aeef 100644
--- a/doc/html/TransverseMercator_8cpp_source.html
+++ b/doc/html/TransverseMercator_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercator.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercator.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::TransverseMercator class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> *</span>
<a name="l00009"></a>00009 <span class="comment"> * This implementation follows closely</span>
@@ -91,7 +106,7 @@
<a name="l00042"></a>00042 <span class="preprocessor">#include <<a class="code" href="TransverseMercator_8hpp.html" title="Header for GeographicLib::TransverseMercator class.">GeographicLib/TransverseMercator.hpp</a>></span>
<a name="l00043"></a>00043
<a name="l00044"></a><a class="code" href="TransverseMercator_8cpp.html#ab09ba83d5531a4ca91dc8ce82ae98084">00044</a> <span class="preprocessor">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP \</span>
-<a name="l00045"></a>00045 <span class="preprocessor"> "$Id: 07ae5b935a611df70b64c57bd6b171ce2a380436 $"</span>
+<a name="l00045"></a>00045 <span class="preprocessor"> "$Id: 7b5a1854a015da061b8fdad0a4b35be7e06fcb9a $"</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span>
<a name="l00047"></a>00047 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="TransverseMercator_8cpp.html#ab09ba83d5531a4ca91dc8ce82ae98084">GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP</a>)
<a name="l00048"></a>00048 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="TransverseMercator_8hpp.html#abbbe2faaff284db3183ddf3afcbf5623">GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</a>)
@@ -100,10 +115,10 @@
<a name="l00051"></a>00051
<a name="l00052"></a>00052 <span class="keyword">using namespace </span>std;
<a name="l00053"></a>00053
-<a name="l00054"></a>00054 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercator::tol_ =
+<a name="l00054"></a>00054 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercator::tol_ =
<a name="l00055"></a>00055 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0.1)*sqrt(numeric_limits<real>::epsilon());
<a name="l00056"></a>00056 <span class="comment">// Overflow value s.t. atan(overflow_) = pi/2</span>
-<a name="l00057"></a>00057 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> TransverseMercator::overflow_ =
+<a name="l00057"></a>00057 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> TransverseMercator::overflow_ =
<a name="l00058"></a>00058 1 / Math::sq(numeric_limits<real>::epsilon());
<a name="l00059"></a>00059
<a name="l00060"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a9a4074c9d0ea35f0ebfc9c9f73bd3183">00060</a> TransverseMercator::TransverseMercator(real a, real f, real k0)
@@ -118,15 +133,15 @@
<a name="l00069"></a>00069 , _c( sqrt(_e2m) * exp(eatanhe(real(1))) )
<a name="l00070"></a>00070 , _n(_f / (2 - _f))
<a name="l00071"></a>00071 {
-<a name="l00072"></a>00072 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_a) && _a > 0))
+<a name="l00072"></a>00072 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_a) && _a > 0))
<a name="l00073"></a>00073 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Major radius is not positive"</span>);
-<a name="l00074"></a>00074 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_f) && _f < 1))
+<a name="l00074"></a>00074 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_f) && _f < 1))
<a name="l00075"></a>00075 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Minor radius is not positive"</span>);
-<a name="l00076"></a>00076 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">Math::isfinite</a>(_k0) && _k0 > 0))
+<a name="l00076"></a>00076 <span class="keywordflow">if</span> (!(<a class="code" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">Math::isfinite</a>(_k0) && _k0 > 0))
<a name="l00077"></a>00077 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Scale is not positive"</span>);
<a name="l00078"></a>00078 <span class="comment">// If coefficents might overflow_ an int, convert them to double (and they</span>
<a name="l00079"></a>00079 <span class="comment">// are all exactly representable as doubles).</span>
-<a name="l00080"></a>00080 real nx = <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(_n);
+<a name="l00080"></a>00080 real nx = <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(_n);
<a name="l00081"></a>00081 <span class="keywordflow">switch</span> (maxpow_) {
<a name="l00082"></a>00082 <span class="keywordflow">case</span> 4:
<a name="l00083"></a>00083 _b1 = 1/(1+_n)*(nx*(nx+16)+64)/64;
@@ -287,7 +302,7 @@
<a name="l00238"></a>00238 lon = 180 - lon;
<a name="l00239"></a>00239 }
<a name="l00240"></a>00240 real
-<a name="l00241"></a>00241 phi = lat * Math::degree<real>(),
+<a name="l00241"></a>00241 phi = lat * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>(),
<a name="l00242"></a>00242 lam = lon * Math::degree<real>();
<a name="l00243"></a>00243 <span class="comment">// phi = latitude</span>
<a name="l00244"></a>00244 <span class="comment">// phi' = conformal latitude</span>
@@ -311,18 +326,18 @@
<a name="l00262"></a>00262 real
<a name="l00263"></a>00263 c = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), cos(lam)), <span class="comment">// cos(pi/2) might be negative</span>
<a name="l00264"></a>00264 tau = tan(phi),
-<a name="l00265"></a>00265 secphi = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00265"></a>00265 secphi = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
<a name="l00266"></a>00266 sig = sinh( eatanhe(tau / secphi) ),
-<a name="l00267"></a>00267 taup = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * secphi;
+<a name="l00267"></a>00267 taup = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * secphi;
<a name="l00268"></a>00268 xip = atan2(taup, c);
<a name="l00269"></a>00269 <span class="comment">// Used to be</span>
<a name="l00270"></a>00270 <span class="comment">// etap = Math::atanh(sin(lam) / cosh(psi));</span>
-<a name="l00271"></a>00271 etap = <a class="code" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">Math::asinh</a>(sin(lam) / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(taup, c));
+<a name="l00271"></a>00271 etap = <a class="code" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">Math::asinh</a>(sin(lam) / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(taup, c));
<a name="l00272"></a>00272 <span class="comment">// convergence and scale for Gauss-Schreiber TM (xip, etap) -- gamma0 =</span>
<a name="l00273"></a>00273 <span class="comment">// atan(tan(xip) * tanh(etap)) = atan(tan(lam) * sin(phi'));</span>
<a name="l00274"></a>00274 <span class="comment">// sin(phi') = tau'/sqrt(1 + tau'^2)</span>
<a name="l00275"></a>00275 gamma = atan(tanx(lam) *
-<a name="l00276"></a>00276 taup / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup)); <span class="comment">// Krueger p 22 (44)</span>
+<a name="l00276"></a>00276 taup / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taup)); <span class="comment">// Krueger p 22 (44)</span>
<a name="l00277"></a>00277 <span class="comment">// k0 = sqrt(1 - _e2 * sin(phi)^2) * (cos(phi') / cos(phi)) * cosh(etap)</span>
<a name="l00278"></a>00278 <span class="comment">// Note 1/cos(phi) = cosh(psip);</span>
<a name="l00279"></a>00279 <span class="comment">// and cos(phi') * cosh(etap) = 1/hypot(sinh(psi), cos(lam))</span>
@@ -330,9 +345,9 @@
<a name="l00281"></a>00281 <span class="comment">// This form has cancelling errors. This property is lost if cosh(psip)</span>
<a name="l00282"></a>00282 <span class="comment">// is replaced by 1/cos(phi), even though it's using "primary" data (phi</span>
<a name="l00283"></a>00283 <span class="comment">// instead of psip).</span>
-<a name="l00284"></a>00284 k = sqrt(_e2m + _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cos(phi))) * secphi / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(taup, c);
+<a name="l00284"></a>00284 k = sqrt(_e2m + _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cos(phi))) * secphi / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(taup, c);
<a name="l00285"></a>00285 } <span class="keywordflow">else</span> {
-<a name="l00286"></a>00286 xip = Math::pi<real>()/2;
+<a name="l00286"></a>00286 xip = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>()/2;
<a name="l00287"></a>00287 etap = 0;
<a name="l00288"></a>00288 gamma = lam;
<a name="l00289"></a>00289 k = _c;
@@ -423,9 +438,9 @@
<a name="l00374"></a>00374 <span class="comment">// Fold in change in convergence and scale for Gauss-Schreiber TM to</span>
<a name="l00375"></a>00375 <span class="comment">// Gauss-Krueger TM.</span>
<a name="l00376"></a>00376 gamma -= atan2(yi1, yr1);
-<a name="l00377"></a>00377 k *= _b1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(yr1, yi1);
-<a name="l00378"></a>00378 gamma /= Math::degree<real>();
-<a name="l00379"></a>00379 y = _a1 * _k0 * (backside ? Math::pi<real>() - xi : xi) * latsign;
+<a name="l00377"></a>00377 k *= _b1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(yr1, yi1);
+<a name="l00378"></a>00378 gamma /= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
+<a name="l00379"></a>00379 y = _a1 * _k0 * (backside ? <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>() - xi : xi) * latsign;
<a name="l00380"></a>00380 x = _a1 * _k0 * eta * lonsign;
<a name="l00381"></a>00381 <span class="keywordflow">if</span> (backside)
<a name="l00382"></a>00382 gamma = 180 - gamma;
@@ -448,9 +463,9 @@
<a name="l00399"></a>00399 etasign = eta < 0 ? -1 : 1;
<a name="l00400"></a>00400 xi *= xisign;
<a name="l00401"></a>00401 eta *= etasign;
-<a name="l00402"></a>00402 <span class="keywordtype">bool</span> backside = xi > Math::pi<real>()/2;
+<a name="l00402"></a>00402 <span class="keywordtype">bool</span> backside = xi > <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>()/2;
<a name="l00403"></a>00403 <span class="keywordflow">if</span> (backside)
-<a name="l00404"></a>00404 xi = Math::pi<real>() - xi;
+<a name="l00404"></a>00404 xi = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>() - xi;
<a name="l00405"></a>00405 real
<a name="l00406"></a>00406 c0 = cos(2 * xi), ch0 = cosh(2 * eta),
<a name="l00407"></a>00407 s0 = sin(2 * xi), sh0 = sinh(2 * eta),
@@ -483,7 +498,7 @@
<a name="l00434"></a>00434 etap = eta + ai * xip0 + ar * etap0;
<a name="l00435"></a>00435 <span class="comment">// Convergence and scale for Gauss-Schreiber TM to Gauss-Krueger TM.</span>
<a name="l00436"></a>00436 gamma = atan2(yi1, yr1);
-<a name="l00437"></a>00437 k = _b1 / <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(yr1, yi1);
+<a name="l00437"></a>00437 k = _b1 / <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(yr1, yi1);
<a name="l00438"></a>00438 <span class="comment">// JHS 154 has</span>
<a name="l00439"></a>00439 <span class="comment">//</span>
<a name="l00440"></a>00440 <span class="comment">// phi' = asin(sin(xi') / cosh(eta')) (Krueger p 17 (25))</span>
@@ -493,7 +508,7 @@
<a name="l00444"></a>00444 real
<a name="l00445"></a>00445 s = sinh(etap),
<a name="l00446"></a>00446 c = max(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(0), cos(xip)), <span class="comment">// cos(pi/2) might be negative</span>
-<a name="l00447"></a>00447 r = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(s, c);
+<a name="l00447"></a>00447 r = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(s, c);
<a name="l00448"></a>00448 <span class="keywordflow">if</span> (r != 0) {
<a name="l00449"></a>00449 lam = atan2(s, c); <span class="comment">// Krueger p 17 (25)</span>
<a name="l00450"></a>00450 <span class="comment">// Use Newton's method to solve for tau</span>
@@ -509,11 +524,11 @@
<a name="l00460"></a>00460 <span class="comment">// min iterations = 1, max iterations = 2; mean = 1.94</span>
<a name="l00461"></a>00461 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < numit_; ++i) {
<a name="l00462"></a>00462 real
-<a name="l00463"></a>00463 tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
+<a name="l00463"></a>00463 tau1 = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau),
<a name="l00464"></a>00464 sig = sinh( eatanhe( tau / tau1 ) ),
-<a name="l00465"></a>00465 taupa = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
-<a name="l00466"></a>00466 dtau = (taup - taupa) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(tau)) /
-<a name="l00467"></a>00467 ( _e2m * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
+<a name="l00465"></a>00465 taupa = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), sig) * tau - sig * tau1,
+<a name="l00466"></a>00466 dtau = (taup - taupa) * (1 + _e2m * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(tau)) /
+<a name="l00467"></a>00467 ( _e2m * tau1 * <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), taupa) );
<a name="l00468"></a>00468 tau += dtau;
<a name="l00469"></a>00469 <span class="keywordflow">if</span> (!(abs(dtau) >= stol))
<a name="l00470"></a>00470 <span class="keywordflow">break</span>;
@@ -521,15 +536,15 @@
<a name="l00472"></a>00472 phi = atan(tau);
<a name="l00473"></a>00473 gamma += atan(tanx(xip) * tanh(etap)); <span class="comment">// Krueger p 19 (31)</span>
<a name="l00474"></a>00474 <span class="comment">// Note cos(phi') * cosh(eta') = r</span>
-<a name="l00475"></a>00475 k *= sqrt(_e2m + _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(cos(phi))) *
-<a name="l00476"></a>00476 <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau) * r;
+<a name="l00475"></a>00475 k *= sqrt(_e2m + _e2 * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(cos(phi))) *
+<a name="l00476"></a>00476 <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(1), tau) * r;
<a name="l00477"></a>00477 } <span class="keywordflow">else</span> {
-<a name="l00478"></a>00478 phi = Math::pi<real>()/2;
+<a name="l00478"></a>00478 phi = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::pi<real>()/2;
<a name="l00479"></a>00479 lam = 0;
<a name="l00480"></a>00480 k *= _c;
<a name="l00481"></a>00481 }
-<a name="l00482"></a>00482 lat = phi / Math::degree<real>() * xisign;
-<a name="l00483"></a>00483 lon = lam / Math::degree<real>();
+<a name="l00482"></a>00482 lat = phi / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>() * xisign;
+<a name="l00483"></a>00483 lon = lam / <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00484"></a>00484 <span class="keywordflow">if</span> (backside)
<a name="l00485"></a>00485 lon = 180 - lon;
<a name="l00486"></a>00486 lon *= etasign;
@@ -540,7 +555,7 @@
<a name="l00491"></a>00491 lon += lon0 + 360;
<a name="l00492"></a>00492 <span class="keywordflow">else</span>
<a name="l00493"></a>00493 lon += lon0;
-<a name="l00494"></a>00494 gamma /= Math::degree<real>();
+<a name="l00494"></a>00494 gamma /= <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::degree<real>();
<a name="l00495"></a>00495 <span class="keywordflow">if</span> (backside)
<a name="l00496"></a>00496 gamma = 180 - gamma;
<a name="l00497"></a>00497 gamma *= xisign * etasign;
@@ -550,8 +565,13 @@
<a name="l00501"></a>00501 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercator_8hpp.html b/doc/html/TransverseMercator_8hpp.html
index c378128..af144ca 100644
--- a/doc/html/TransverseMercator_8hpp.html
+++ b/doc/html/TransverseMercator_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercator.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -66,18 +81,16 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8hpp.html#abbbe2faaff284db3183ddf3afcbf5623">GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</a> "$Id: 565dc83110421e3bc14d7f402359c850c6649c57 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8hpp.html#abbbe2faaff284db3183ddf3afcbf5623">GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</a> "$Id: 94bb078aa13d2d7392cee5498aae7df6e9914e4a $"</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8hpp.html#a823820984cba9dabe0517925bf18c77b">TM_TX_MAXPOW</a> (GEOGRAPHICLIB_PREC == 1 ? 6 : (GEOGRAPHICLIB_PREC == 0 ? 4 : 8))</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP "$Id: 565dc83110421e3bc14d7f402359c850c6649c57 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP "$Id: 94bb078aa13d2d7392cee5498aae7df6e9914e4a $"</td>
</tr>
</table>
</div>
@@ -113,8 +126,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/TransverseMercator_8hpp_source.html b/doc/html/TransverseMercator_8hpp_source.html
index ebc7b80..de93497 100644
--- a/doc/html/TransverseMercator_8hpp_source.html
+++ b/doc/html/TransverseMercator_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: TransverseMercator.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file TransverseMercator.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::TransverseMercator class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP)</span>
<a name="l00011"></a><a class="code" href="TransverseMercator_8hpp.html#abbbe2faaff284db3183ddf3afcbf5623">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 565dc83110421e3bc14d7f402359c850c6649c57 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 94bb078aa13d2d7392cee5498aae7df6e9914e4a $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
<a name="l00015"></a>00015
@@ -120,140 +135,151 @@
<a name="l00070"></a>00070 <span class="comment"> *</span>
<a name="l00071"></a>00071 <span class="comment"> * Example of use:</span>
<a name="l00072"></a>00072 <span class="comment"> * \include example-TransverseMercator.cpp</span>
-<a name="l00073"></a>00073 <span class="comment"> **********************************************************************/</span>
-<a name="l00074"></a>00074
-<a name="l00075"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html">00075</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> {
-<a name="l00076"></a>00076 <span class="keyword">private</span>:
-<a name="l00077"></a>00077 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> maxpow_ = <a class="code" href="TransverseMercator_8hpp.html#a823820984cba9dabe0517925bf18c77b">TM_TX_MAXPOW</a>;
-<a name="l00079"></a>00079 <span class="keyword">static</span> <span class="keyword">const</span> real tol_;
-<a name="l00080"></a>00080 <span class="keyword">static</span> <span class="keyword">const</span> real overflow_;
-<a name="l00081"></a>00081 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
-<a name="l00082"></a>00082 real _a, _f, _k0, _e2, _e, _e2m, _c, _n;
-<a name="l00083"></a>00083 <span class="comment">// _alp[0] and _bet[0] unused</span>
-<a name="l00084"></a>00084 real _a1, _b1, _alp[maxpow_ + 1], _bet[maxpow_ + 1];
-<a name="l00085"></a>00085 <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
-<a name="l00086"></a>00086 <span class="keyword">static</span> <span class="keyword">inline</span> real tanx(real x) <span class="keywordflow">throw</span>() {
-<a name="l00087"></a>00087 real t = std::tan(x);
-<a name="l00088"></a>00088 <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
-<a name="l00089"></a>00089 <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
-<a name="l00090"></a>00090 }
-<a name="l00091"></a>00091 <span class="comment">// Return e * atanh(e * x) for f >= 0, else return</span>
-<a name="l00092"></a>00092 <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x) for f < 0</span>
-<a name="l00093"></a>00093 <span class="keyword">inline</span> real eatanhe(real x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00094"></a>00094 <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
-<a name="l00095"></a>00095 }
-<a name="l00096"></a>00096 <span class="keyword">public</span>:
-<a name="l00097"></a>00097 <span class="comment"></span>
-<a name="l00098"></a>00098 <span class="comment"> /**</span>
-<a name="l00099"></a>00099 <span class="comment"> * Constructor for a ellipsoid with</span>
-<a name="l00100"></a>00100 <span class="comment"> *</span>
-<a name="l00101"></a>00101 <span class="comment"> * @param[in] a equatorial radius (meters).</span>
-<a name="l00102"></a>00102 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
-<a name="l00103"></a>00103 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
-<a name="l00104"></a>00104 <span class="comment"> * to 1/\e f.</span>
-<a name="l00105"></a>00105 <span class="comment"> * @param[in] k0 central scale factor.</span>
-<a name="l00106"></a>00106 <span class="comment"> *</span>
-<a name="l00107"></a>00107 <span class="comment"> * An exception is thrown if either of the axes of the ellipsoid or \e k0</span>
-<a name="l00108"></a>00108 <span class="comment"> * is not positive.</span>
-<a name="l00109"></a>00109 <span class="comment"> **********************************************************************/</span>
-<a name="l00110"></a>00110 <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>(real a, real f, real k0);
-<a name="l00111"></a>00111 <span class="comment"></span>
-<a name="l00112"></a>00112 <span class="comment"> /**</span>
-<a name="l00113"></a>00113 <span class="comment"> * Forward projection, from geographic to transverse Mercator.</span>
-<a name="l00114"></a>00114 <span class="comment"> *</span>
-<a name="l00115"></a>00115 <span class="comment"> * @param[in] lon0 central meridian of the projection (degrees).</span>
-<a name="l00116"></a>00116 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
-<a name="l00117"></a>00117 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
-<a name="l00118"></a>00118 <span class="comment"> * @param[out] x easting of point (meters).</span>
-<a name="l00119"></a>00119 <span class="comment"> * @param[out] y northing of point (meters).</span>
-<a name="l00120"></a>00120 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00121"></a>00121 <span class="comment"> * @param[out] k scale of projection at point.</span>
-<a name="l00122"></a>00122 <span class="comment"> *</span>
-<a name="l00123"></a>00123 <span class="comment"> * No false easting or northing is added. \e lat should be in the range</span>
-<a name="l00124"></a>00124 <span class="comment"> * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].</span>
-<a name="l00125"></a>00125 <span class="comment"> **********************************************************************/</span>
-<a name="l00126"></a>00126 <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00127"></a>00127 real& x, real& y, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00128"></a>00128 <span class="comment"></span>
-<a name="l00129"></a>00129 <span class="comment"> /**</span>
-<a name="l00130"></a>00130 <span class="comment"> * Reverse projection, from transverse Mercator to geographic.</span>
-<a name="l00131"></a>00131 <span class="comment"> *</span>
-<a name="l00132"></a>00132 <span class="comment"> * @param[in] lon0 central meridian of the projection (degrees).</span>
-<a name="l00133"></a>00133 <span class="comment"> * @param[in] x easting of point (meters).</span>
-<a name="l00134"></a>00134 <span class="comment"> * @param[in] y northing of point (meters).</span>
-<a name="l00135"></a>00135 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
-<a name="l00136"></a>00136 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
-<a name="l00137"></a>00137 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
-<a name="l00138"></a>00138 <span class="comment"> * @param[out] k scale of projection at point.</span>
-<a name="l00139"></a>00139 <span class="comment"> *</span>
-<a name="l00140"></a>00140 <span class="comment"> * No false easting or northing is added. \e lon0 should be in the range</span>
-<a name="l00141"></a>00141 <span class="comment"> * [-180, 360]. The value of \e lon returned is in the range [-180, 180).</span>
-<a name="l00142"></a>00142 <span class="comment"> **********************************************************************/</span>
-<a name="l00143"></a>00143 <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00144"></a>00144 real& lat, real& lon, real& gamma, real& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
-<a name="l00145"></a>00145 <span class="comment"></span>
-<a name="l00146"></a>00146 <span class="comment"> /**</span>
-<a name="l00147"></a>00147 <span class="comment"> * TransverseMercator::Forward without returning the convergence and scale.</span>
-<a name="l00148"></a>00148 <span class="comment"> **********************************************************************/</span>
-<a name="l00149"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#af689c212234963734354347d56bf12f6">00149</a> <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
-<a name="l00150"></a>00150 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00151"></a>00151 real gamma, k;
-<a name="l00152"></a>00152 Forward(lon0, lat, lon, x, y, gamma, k);
-<a name="l00153"></a>00153 }
-<a name="l00154"></a>00154 <span class="comment"></span>
-<a name="l00155"></a>00155 <span class="comment"> /**</span>
-<a name="l00156"></a>00156 <span class="comment"> * TransverseMercator::Reverse without returning the convergence and scale.</span>
-<a name="l00157"></a>00157 <span class="comment"> **********************************************************************/</span>
-<a name="l00158"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#ac3bd58646dd6c06731a9baadee11f7e5">00158</a> <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
-<a name="l00159"></a>00159 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
-<a name="l00160"></a>00160 real gamma, k;
-<a name="l00161"></a>00161 Reverse(lon0, x, y, lat, lon, gamma, k);
-<a name="l00162"></a>00162 }
-<a name="l00163"></a>00163 <span class="comment"></span>
-<a name="l00164"></a>00164 <span class="comment"> /** \name Inspector functions</span>
-<a name="l00165"></a>00165 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
-<a name="l00166"></a>00166 <span class="comment"> ///@{</span>
-<a name="l00167"></a>00167 <span class="comment"></span><span class="comment"> /**</span>
-<a name="l00168"></a>00168 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
-<a name="l00169"></a>00169 <span class="comment"> * the value used in the constructor.</span>
-<a name="l00170"></a>00170 <span class="comment"> **********************************************************************/</span>
-<a name="l00171"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">00171</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
-<a name="l00172"></a>00172 <span class="comment"></span>
-<a name="l00173"></a>00173 <span class="comment"> /**</span>
-<a name="l00174"></a>00174 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value used in</span>
-<a name="l00175"></a>00175 <span class="comment"> * the constructor.</span>
-<a name="l00176"></a>00176 <span class="comment"> **********************************************************************/</span>
-<a name="l00177"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">00177</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
-<a name="l00178"></a>00178 <span class="comment"></span>
-<a name="l00179"></a>00179 <span class="comment"> /**</span>
-<a name="l00180"></a>00180 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00181"></a>00181 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
-<a name="l00182"></a>00182 <span class="comment"> **********************************************************************/</span>
-<a name="l00183"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">00183</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">InverseFlattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }
-<a name="l00184"></a>00184 <span class="comment"></span>
-<a name="l00185"></a>00185 <span class="comment"> /**</span>
-<a name="l00186"></a>00186 <span class="comment"> * @return \e k0 central scale for the projection. This is the value of \e</span>
-<a name="l00187"></a>00187 <span class="comment"> * k0 used in the constructor and is the scale on the central meridian.</span>
-<a name="l00188"></a>00188 <span class="comment"> **********************************************************************/</span>
-<a name="l00189"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">00189</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="comment"></span>
-<a name="l00190"></a>00190 <span class="comment"> ///@}</span>
-<a name="l00191"></a>00191 <span class="comment"></span><span class="comment"></span>
-<a name="l00192"></a>00192 <span class="comment"> /**</span>
-<a name="l00193"></a>00193 <span class="comment"> * A global instantiation of TransverseMercator with the WGS84 ellipsoid</span>
-<a name="l00194"></a>00194 <span class="comment"> * and the UTM scale factor. However, unlike UTM, no false easting or</span>
-<a name="l00195"></a>00195 <span class="comment"> * northing is added.</span>
-<a name="l00196"></a>00196 <span class="comment"> **********************************************************************/</span>
-<a name="l00197"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">00197</a> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> <a class="code" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">UTM</a>;
-<a name="l00198"></a>00198 };
-<a name="l00199"></a>00199
-<a name="l00200"></a>00200 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00201"></a>00201
-<a name="l00202"></a>00202 <span class="preprocessor">#endif // GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</span>
+<a name="l00073"></a>00073 <span class="comment"> *</span>
+<a name="l00074"></a>00074 <span class="comment"> * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a</span>
+<a name="l00075"></a>00075 <span class="comment"> * command-line utility providing access to the functionality of</span>
+<a name="l00076"></a>00076 <span class="comment"> * TransverseMercator and TransverseMercatorExact.</span>
+<a name="l00077"></a>00077 <span class="comment"> **********************************************************************/</span>
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> TransverseMercator {
+<a name="l00080"></a>00080 <span class="keyword">private</span>:
+<a name="l00081"></a>00081 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00082"></a>00082 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> maxpow_ = <a class="code" href="TransverseMercator_8hpp.html#a823820984cba9dabe0517925bf18c77b">TM_TX_MAXPOW</a>;
+<a name="l00083"></a>00083 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tol_;
+<a name="l00084"></a>00084 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> overflow_;
+<a name="l00085"></a>00085 <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> numit_ = 5;
+<a name="l00086"></a>00086 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a, _f, _k0, _e2, _e, _e2m, _c, _n;
+<a name="l00087"></a>00087 <span class="comment">// _alp[0] and _bet[0] unused</span>
+<a name="l00088"></a>00088 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> _a1, _b1, _alp[maxpow_ + 1], _bet[maxpow_ + 1];
+<a name="l00089"></a>00089 <span class="comment">// tan(x) for x in [-pi/2, pi/2] ensuring that the sign is right</span>
+<a name="l00090"></a>00090 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> tanx(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keywordflow">throw</span>() {
+<a name="l00091"></a>00091 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> t = std::tan(x);
+<a name="l00092"></a>00092 <span class="comment">// Write the tests this way to ensure that tanx(NaN()) is NaN()</span>
+<a name="l00093"></a>00093 <span class="keywordflow">return</span> x >= 0 ? (!(t < 0) ? t : overflow_) : (!(t >= 0) ? t : -overflow_);
+<a name="l00094"></a>00094 }
+<a name="l00095"></a>00095 <span class="comment">// Return e * atanh(e * x) for f >= 0, else return</span>
+<a name="l00096"></a>00096 <span class="comment">// - sqrt(-e2) * atan( sqrt(-e2) * x) for f < 0</span>
+<a name="l00097"></a>00097 <span class="keyword">inline</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> eatanhe(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00098"></a>00098 <span class="keywordflow">return</span> _f >= 0 ? _e * <a class="code" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">Math::atanh</a>(_e * x) : - _e * std::atan(_e * x);
+<a name="l00099"></a>00099 }
+<a name="l00100"></a>00100 <span class="keyword">public</span>:
+<a name="l00101"></a>00101 <span class="comment"></span>
+<a name="l00102"></a>00102 <span class="comment"> /**</span>
+<a name="l00103"></a>00103 <span class="comment"> * Constructor for a ellipsoid with</span>
+<a name="l00104"></a>00104 <span class="comment"> *</span>
+<a name="l00105"></a>00105 <span class="comment"> * @param[in] a equatorial radius (meters).</span>
+<a name="l00106"></a>00106 <span class="comment"> * @param[in] f flattening of ellipsoid. Setting \e f = 0 gives a sphere.</span>
+<a name="l00107"></a>00107 <span class="comment"> * Negative \e f gives a prolate ellipsoid. If \e f > 1, set flattening</span>
+<a name="l00108"></a>00108 <span class="comment"> * to 1/\e f.</span>
+<a name="l00109"></a>00109 <span class="comment"> * @param[in] k0 central scale factor.</span>
+<a name="l00110"></a>00110 <span class="comment"> *</span>
+<a name="l00111"></a>00111 <span class="comment"> * An exception is thrown if either of the axes of the ellipsoid or \e k0</span>
+<a name="l00112"></a>00112 <span class="comment"> * is not positive.</span>
+<a name="l00113"></a>00113 <span class="comment"> **********************************************************************/</span>
+<a name="l00114"></a>00114 TransverseMercator(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> a, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> f, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> k0);
+<a name="l00115"></a>00115 <span class="comment"></span>
+<a name="l00116"></a>00116 <span class="comment"> /**</span>
+<a name="l00117"></a>00117 <span class="comment"> * Forward projection, from geographic to transverse Mercator.</span>
+<a name="l00118"></a>00118 <span class="comment"> *</span>
+<a name="l00119"></a>00119 <span class="comment"> * @param[in] lon0 central meridian of the projection (degrees).</span>
+<a name="l00120"></a>00120 <span class="comment"> * @param[in] lat latitude of point (degrees).</span>
+<a name="l00121"></a>00121 <span class="comment"> * @param[in] lon longitude of point (degrees).</span>
+<a name="l00122"></a>00122 <span class="comment"> * @param[out] x easting of point (meters).</span>
+<a name="l00123"></a>00123 <span class="comment"> * @param[out] y northing of point (meters).</span>
+<a name="l00124"></a>00124 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00125"></a>00125 <span class="comment"> * @param[out] k scale of projection at point.</span>
+<a name="l00126"></a>00126 <span class="comment"> *</span>
+<a name="l00127"></a>00127 <span class="comment"> * No false easting or northing is added. \e lat should be in the range</span>
+<a name="l00128"></a>00128 <span class="comment"> * [-90, 90]; \e lon and \e lon0 should be in the range [-180, 360].</span>
+<a name="l00129"></a>00129 <span class="comment"> **********************************************************************/</span>
+<a name="l00130"></a>00130 <span class="keywordtype">void</span> Forward(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon,
+<a name="l00131"></a>00131 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& y, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00132"></a>00132 <span class="comment"></span>
+<a name="l00133"></a>00133 <span class="comment"> /**</span>
+<a name="l00134"></a>00134 <span class="comment"> * Reverse projection, from transverse Mercator to geographic.</span>
+<a name="l00135"></a>00135 <span class="comment"> *</span>
+<a name="l00136"></a>00136 <span class="comment"> * @param[in] lon0 central meridian of the projection (degrees).</span>
+<a name="l00137"></a>00137 <span class="comment"> * @param[in] x easting of point (meters).</span>
+<a name="l00138"></a>00138 <span class="comment"> * @param[in] y northing of point (meters).</span>
+<a name="l00139"></a>00139 <span class="comment"> * @param[out] lat latitude of point (degrees).</span>
+<a name="l00140"></a>00140 <span class="comment"> * @param[out] lon longitude of point (degrees).</span>
+<a name="l00141"></a>00141 <span class="comment"> * @param[out] gamma meridian convergence at point (degrees).</span>
+<a name="l00142"></a>00142 <span class="comment"> * @param[out] k scale of projection at point.</span>
+<a name="l00143"></a>00143 <span class="comment"> *</span>
+<a name="l00144"></a>00144 <span class="comment"> * No false easting or northing is added. \e lon0 should be in the range</span>
+<a name="l00145"></a>00145 <span class="comment"> * [-180, 360]. The value of \e lon returned is in the range [-180, 180).</span>
+<a name="l00146"></a>00146 <span class="comment"> **********************************************************************/</span>
+<a name="l00147"></a>00147 <span class="keywordtype">void</span> Reverse(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon0, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
+<a name="l00148"></a>00148 <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& lon, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& gamma, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>& k) <span class="keyword">const</span> <span class="keywordflow">throw</span>();
+<a name="l00149"></a>00149 <span class="comment"></span>
+<a name="l00150"></a>00150 <span class="comment"> /**</span>
+<a name="l00151"></a>00151 <span class="comment"> * TransverseMercator::Forward without returning the convergence and scale.</span>
+<a name="l00152"></a>00152 <span class="comment"> **********************************************************************/</span>
+<a name="l00153"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#af689c212234963734354347d56bf12f6">00153</a> <span class="keywordtype">void</span> Forward(real lon0, real lat, real lon,
+<a name="l00154"></a>00154 real& x, real& y) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00155"></a>00155 real gamma, k;
+<a name="l00156"></a>00156 Forward(lon0, lat, lon, x, y, gamma, k);
+<a name="l00157"></a>00157 }
+<a name="l00158"></a>00158 <span class="comment"></span>
+<a name="l00159"></a>00159 <span class="comment"> /**</span>
+<a name="l00160"></a>00160 <span class="comment"> * TransverseMercator::Reverse without returning the convergence and scale.</span>
+<a name="l00161"></a>00161 <span class="comment"> **********************************************************************/</span>
+<a name="l00162"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#ac3bd58646dd6c06731a9baadee11f7e5">00162</a> <span class="keywordtype">void</span> Reverse(real lon0, real x, real y,
+<a name="l00163"></a>00163 real& lat, real& lon) <span class="keyword">const</span> <span class="keywordflow">throw</span>() {
+<a name="l00164"></a>00164 real gamma, k;
+<a name="l00165"></a>00165 Reverse(lon0, x, y, lat, lon, gamma, k);
+<a name="l00166"></a>00166 }
+<a name="l00167"></a>00167 <span class="comment"></span>
+<a name="l00168"></a>00168 <span class="comment"> /** \name Inspector functions</span>
+<a name="l00169"></a>00169 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
+<a name="l00170"></a>00170 <span class="comment"> ///@{</span>
+<a name="l00171"></a>00171 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00172"></a>00172 <span class="comment"> * @return \e a the equatorial radius of the ellipsoid (meters). This is</span>
+<a name="l00173"></a>00173 <span class="comment"> * the value used in the constructor.</span>
+<a name="l00174"></a>00174 <span class="comment"> **********************************************************************/</span>
+<a name="l00175"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">00175</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">MajorRadius</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _a; }
+<a name="l00176"></a>00176 <span class="comment"></span>
+<a name="l00177"></a>00177 <span class="comment"> /**</span>
+<a name="l00178"></a>00178 <span class="comment"> * @return \e f the flattening of the ellipsoid. This is the value used in</span>
+<a name="l00179"></a>00179 <span class="comment"> * the constructor.</span>
+<a name="l00180"></a>00180 <span class="comment"> **********************************************************************/</span>
+<a name="l00181"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">00181</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">Flattening</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _f; }
+<a name="l00182"></a>00182 <span class="comment"></span>
+<a name="l00183"></a>00183 <span class="comment"> /// \cond SKIP</span>
+<a name="l00184"></a>00184 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00185"></a>00185 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00186"></a>00186 <span class="comment"> * @return \e r the inverse flattening of the ellipsoid.</span>
+<a name="l00187"></a>00187 <span class="comment"> **********************************************************************/</span>
+<a name="l00188"></a>00188 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> 1/_f; }<span class="comment"></span>
+<a name="l00189"></a>00189 <span class="comment"> /// \endcond</span>
+<a name="l00190"></a>00190 <span class="comment"></span><span class="comment"></span>
+<a name="l00191"></a>00191 <span class="comment"> /**</span>
+<a name="l00192"></a>00192 <span class="comment"> * @return \e k0 central scale for the projection. This is the value of \e</span>
+<a name="l00193"></a>00193 <span class="comment"> * k0 used in the constructor and is the scale on the central meridian.</span>
+<a name="l00194"></a>00194 <span class="comment"> **********************************************************************/</span>
+<a name="l00195"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">00195</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real <a class="code" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">CentralScale</a>() <span class="keyword">const</span> throw() { <span class="keywordflow">return</span> _k0; }<span class="co [...]
+<a name="l00196"></a>00196 <span class="comment"> ///@}</span>
+<a name="l00197"></a>00197 <span class="comment"></span><span class="comment"></span>
+<a name="l00198"></a>00198 <span class="comment"> /**</span>
+<a name="l00199"></a>00199 <span class="comment"> * A global instantiation of TransverseMercator with the WGS84 ellipsoid</span>
+<a name="l00200"></a>00200 <span class="comment"> * and the UTM scale factor. However, unlike UTM, no false easting or</span>
+<a name="l00201"></a>00201 <span class="comment"> * northing is added.</span>
+<a name="l00202"></a>00202 <span class="comment"> **********************************************************************/</span>
+<a name="l00203"></a><a class="code" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">00203</a> <span class="keyword">static</span> <span class="keyword">const</span> TransverseMercator <a class="code" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">UTM</a>;
+<a name="l00204"></a>00204 };
+<a name="l00205"></a>00205
+<a name="l00206"></a>00206 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="preprocessor">#endif // GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/UTMUPS_8cpp.html b/doc/html/UTMUPS_8cpp.html
index 22a6707..1ff7596 100644
--- a/doc/html/UTMUPS_8cpp.html
+++ b/doc/html/UTMUPS_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: UTMUPS.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -65,17 +80,15 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8cpp.html#af7026e1ac5bb37428765d957f2f14a6b">GEOGRAPHICLIB_UTMUPS_CPP</a> "$Id: 7308a2a52885238b84816ff380b85c6f090aa1d2 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8cpp.html#af7026e1ac5bb37428765d957f2f14a6b">GEOGRAPHICLIB_UTMUPS_CPP</a> "$Id: 5672b003ee47cd660377c111e3fca2b81da86323 $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Implementation for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2012) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -84,7 +97,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_UTMUPS_CPP "$Id: 7308a2a52885238b84816ff380b85c6f090aa1d2 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_UTMUPS_CPP "$Id: 5672b003ee47cd660377c111e3fca2b81da86323 $"</td>
</tr>
</table>
</div>
@@ -95,8 +108,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/UTMUPS_8cpp_source.html b/doc/html/UTMUPS_8cpp_source.html
index d1a5ca4..ca13e6b 100644
--- a/doc/html/UTMUPS_8cpp_source.html
+++ b/doc/html/UTMUPS_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: UTMUPS.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,8 @@
<a name="l00002"></a>00002 <span class="comment"> * \file UTMUPS.cpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Implementation for GeographicLib::UTMUPS class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
@@ -64,7 +79,7 @@
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
<a name="l00016"></a>00016
<a name="l00017"></a><a class="code" href="UTMUPS_8cpp.html#af7026e1ac5bb37428765d957f2f14a6b">00017</a> <span class="preprocessor">#define GEOGRAPHICLIB_UTMUPS_CPP \</span>
-<a name="l00018"></a>00018 <span class="preprocessor"> "$Id: 7308a2a52885238b84816ff380b85c6f090aa1d2 $"</span>
+<a name="l00018"></a>00018 <span class="preprocessor"> "$Id: 5672b003ee47cd660377c111e3fca2b81da86323 $"</span>
<a name="l00019"></a>00019 <span class="preprocessor"></span>
<a name="l00020"></a>00020 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="UTMUPS_8cpp.html#af7026e1ac5bb37428765d957f2f14a6b">GEOGRAPHICLIB_UTMUPS_CPP</a>)
<a name="l00021"></a>00021 <a class="code" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">RCSID_DECL</a>(<a class="code" href="UTMUPS_8hpp.html#aab4dce5d203c0d98ae740800332ed9d9">GEOGRAPHICLIB_UTMUPS_HPP</a>)
@@ -73,30 +88,30 @@
<a name="l00024"></a>00024
<a name="l00025"></a>00025 <span class="keyword">using namespace </span>std;
<a name="l00026"></a>00026
-<a name="l00027"></a>00027 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::falseeasting_[4] =
+<a name="l00027"></a>00027 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::falseeasting_[4] =
<a name="l00028"></a>00028 { MGRS::upseasting_ * MGRS::tile_, MGRS::upseasting_ * MGRS::tile_,
<a name="l00029"></a>00029 MGRS::utmeasting_ * MGRS::tile_, MGRS::utmeasting_ * MGRS::tile_ };
-<a name="l00030"></a>00030 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::falsenorthing_[4] =
+<a name="l00030"></a>00030 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::falsenorthing_[4] =
<a name="l00031"></a>00031 { MGRS::upseasting_ * MGRS::tile_, MGRS::upseasting_ * MGRS::tile_,
<a name="l00032"></a>00032 MGRS::maxutmSrow_ * MGRS::tile_, MGRS::minutmNrow_ * MGRS::tile_ };
-<a name="l00033"></a>00033 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::mineasting_[4] =
-<a name="l00034"></a>00034 { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
-<a name="l00035"></a>00035 MGRS::minutmcol_ * MGRS::tile_, MGRS::minutmcol_ * MGRS::tile_ };
-<a name="l00036"></a>00036 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::maxeasting_[4] =
-<a name="l00037"></a>00037 { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
-<a name="l00038"></a>00038 MGRS::maxutmcol_ * MGRS::tile_, MGRS::maxutmcol_ * MGRS::tile_ };
-<a name="l00039"></a>00039 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::minnorthing_[4] =
-<a name="l00040"></a>00040 { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
+<a name="l00033"></a>00033 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::mineasting_[4] =
+<a name="l00034"></a>00034 { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
+<a name="l00035"></a>00035 MGRS::minutmcol_ * MGRS::tile_, MGRS::minutmcol_ * MGRS::tile_ };
+<a name="l00036"></a>00036 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::maxeasting_[4] =
+<a name="l00037"></a>00037 { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
+<a name="l00038"></a>00038 MGRS::maxutmcol_ * MGRS::tile_, MGRS::maxutmcol_ * MGRS::tile_ };
+<a name="l00039"></a>00039 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::minnorthing_[4] =
+<a name="l00040"></a>00040 { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
<a name="l00041"></a>00041 MGRS::minutmSrow_ * MGRS::tile_,
<a name="l00042"></a>00042 (MGRS::minutmNrow_ + MGRS::minutmSrow_ - MGRS::maxutmSrow_)
<a name="l00043"></a>00043 * MGRS::tile_ };
-<a name="l00044"></a>00044 <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">Math::real</a> UTMUPS::maxnorthing_[4] =
-<a name="l00045"></a>00045 { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
+<a name="l00044"></a>00044 <span class="keyword">const</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMUPS::maxnorthing_[4] =
+<a name="l00045"></a>00045 { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
<a name="l00046"></a>00046 (MGRS::maxutmSrow_ + MGRS::maxutmNrow_ - MGRS::minutmNrow_) * MGRS::tile_,
<a name="l00047"></a>00047 MGRS::maxutmNrow_ * MGRS::tile_ };
<a name="l00048"></a>00048
<a name="l00049"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">00049</a> <span class="keywordtype">int</span> UTMUPS::StandardZone(real lat, real lon, <span class="keywordtype">int</span> setzone) {
-<a name="l00050"></a>00050 <span class="keywordflow">if</span> (setzone < MINPSEUDOZONE || setzone > MAXZONE)
+<a name="l00050"></a>00050 <span class="keywordflow">if</span> (!(setzone >= MINPSEUDOZONE && setzone <= MAXZONE))
<a name="l00051"></a>00051 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Illegal zone requested "</span> + Utility::str(setzone));
<a name="l00052"></a>00052 <span class="keywordflow">if</span> (setzone >= MINZONE || setzone == INVALID)
<a name="l00053"></a>00053 <span class="keywordflow">return</span> setzone;
@@ -129,7 +144,7 @@
<a name="l00080"></a>00080 <span class="keywordflow">if</span> (zone1 == INVALID) {
<a name="l00081"></a>00081 zone = zone1;
<a name="l00082"></a>00082 northp = northp1;
-<a name="l00083"></a>00083 x = y = gamma = k = Math::NaN<real>();
+<a name="l00083"></a>00083 x = y = gamma = k = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00084"></a>00084 <span class="keywordflow">return</span>;
<a name="l00085"></a>00085 }
<a name="l00086"></a>00086 real x1, y1, gamma1, k1;
@@ -145,14 +160,14 @@
<a name="l00096"></a>00096 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Longitude "</span> + Utility::str(lon)
<a name="l00097"></a>00097 + <span class="stringliteral">"d more than 60d from center of UTM zone "</span>
<a name="l00098"></a>00098 + Utility::str(zone1));
-<a name="l00099"></a>00099 TransverseMercator::UTM.Forward(lon0, lat, lon, x1, y1, gamma1, k1);
+<a name="l00099"></a>00099 <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>::UTM.<a class="code" href="classGeographicLib_1_1TransverseMercator.html#a07d73a6d94e2434cbb937978d61a5ae7">Forward</a>(lon0, lat, lon, x1, y1, gamma1, k1);
<a name="l00100"></a>00100 } <span class="keywordflow">else</span> {
<a name="l00101"></a>00101 <span class="keywordflow">if</span> (abs(lat) < 70)
<a name="l00102"></a>00102 <span class="comment">// Check isn't really necessary ... (see above).</span>
<a name="l00103"></a>00103 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Latitude "</span> + Utility::str(lat)
<a name="l00104"></a>00104 + <span class="stringliteral">"d more than 20d from "</span>
<a name="l00105"></a>00105 + (northp1 ? <span class="stringliteral">"N"</span> : <span class="stringliteral">"S"</span>) + <span class="stringliteral">" pole"</span>);
-<a name="l00106"></a>00106 PolarStereographic::UPS.Forward(northp1, lat, lon, x1, y1, gamma1, k1);
+<a name="l00106"></a>00106 <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a>::UPS.<a class="code" href="classGeographicLib_1_1PolarStereographic.html#a30ef1a1f906ee389e2a5f7e5fd7d8fa4">Forward</a>(northp1, lat, lon, x1, y1, gamma1, k1);
<a name="l00107"></a>00107 }
<a name="l00108"></a>00108 <span class="keywordtype">int</span> ind = (utmp ? 2 : 0) + (northp1 ? 1 : 0);
<a name="l00109"></a>00109 x1 += falseeasting_[ind];
@@ -174,10 +189,10 @@
<a name="l00125"></a>00125 real& lat, real& lon, real& gamma, real& k,
<a name="l00126"></a>00126 <span class="keywordtype">bool</span> mgrslimits) {
<a name="l00127"></a>00127 <span class="keywordflow">if</span> (zone == INVALID || Math::isnan(x) || Math::isnan(y)) {
-<a name="l00128"></a>00128 lat = lon = gamma = k = Math::NaN<real>();
+<a name="l00128"></a>00128 lat = lon = gamma = k = <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<real>();
<a name="l00129"></a>00129 <span class="keywordflow">return</span>;
<a name="l00130"></a>00130 }
-<a name="l00131"></a>00131 <span class="keywordflow">if</span> (! (zone >= MINZONE && zone <= MAXZONE))
+<a name="l00131"></a>00131 <span class="keywordflow">if</span> (!(zone >= MINZONE && zone <= MAXZONE))
<a name="l00132"></a>00132 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Zone "</span> + Utility::str(zone)
<a name="l00133"></a>00133 + <span class="stringliteral">" not in range [0, 60]"</span>);
<a name="l00134"></a>00134 <span class="keywordtype">bool</span> utmp = zone != UPS;
@@ -186,10 +201,10 @@
<a name="l00137"></a>00137 x -= falseeasting_[ind];
<a name="l00138"></a>00138 y -= falsenorthing_[ind];
<a name="l00139"></a>00139 <span class="keywordflow">if</span> (utmp)
-<a name="l00140"></a>00140 TransverseMercator::UTM.Reverse(CentralMeridian(zone),
+<a name="l00140"></a>00140 <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a>::UTM.<a class="code" href="classGeographicLib_1_1TransverseMercator.html#a15611aee4e3707e155278bab02403a07">Reverse</a>(CentralMeridian(zone),
<a name="l00141"></a>00141 x, y, lat, lon, gamma, k);
<a name="l00142"></a>00142 <span class="keywordflow">else</span>
-<a name="l00143"></a>00143 PolarStereographic::UPS.Reverse(northp, x, y, lat, lon, gamma, k);
+<a name="l00143"></a>00143 <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a>::UPS.<a class="code" href="classGeographicLib_1_1PolarStereographic.html#a01302b8dba43c57e3c3849f94123a157">Reverse</a>(northp, x, y, lat, lon, gamma, k);
<a name="l00144"></a>00144 }
<a name="l00145"></a>00145
<a name="l00146"></a>00146 <span class="keywordtype">void</span> UTMUPS::CheckLatLon(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon) {
@@ -279,7 +294,7 @@
<a name="l00230"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a3410e1e221158962f34147255653818f">00230</a> std::string UTMUPS::EncodeZone(<span class="keywordtype">int</span> zone, <span class="keywordtype">bool</span> northp) {
<a name="l00231"></a>00231 <span class="keywordflow">if</span> (zone == INVALID)
<a name="l00232"></a>00232 <span class="keywordflow">return</span> string(<span class="stringliteral">"INV"</span>);
-<a name="l00233"></a>00233 <span class="keywordflow">if</span> (! (zone >= MINZONE && zone <= MAXZONE))
+<a name="l00233"></a>00233 <span class="keywordflow">if</span> (!(zone >= MINZONE && zone <= MAXZONE))
<a name="l00234"></a>00234 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Zone "</span> + Utility::str(zone)
<a name="l00235"></a>00235 + <span class="stringliteral">" not in range [0, 60]"</span>);
<a name="l00236"></a>00236 ostringstream os;
@@ -289,13 +304,18 @@
<a name="l00240"></a>00240 <span class="keywordflow">return</span> os.str();
<a name="l00241"></a>00241 }
<a name="l00242"></a>00242
-<a name="l00243"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#abd70d3f90f5c79a09bdd217b67e6729b">00243</a> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> UTMUPS::UTMShift() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(MGRS::utmNshift_); }
+<a name="l00243"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#abd70d3f90f5c79a09bdd217b67e6729b">00243</a> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real UTMUPS::UTMShift() throw() { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(MGRS::utmNshift_); }
<a name="l00244"></a>00244
<a name="l00245"></a>00245 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/UTMUPS_8hpp.html b/doc/html/UTMUPS_8hpp.html
index c6ab45d..ebbe8df 100644
--- a/doc/html/UTMUPS_8hpp.html
+++ b/doc/html/UTMUPS_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: UTMUPS.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,17 +82,15 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8hpp.html#aab4dce5d203c0d98ae740800332ed9d9">GEOGRAPHICLIB_UTMUPS_HPP</a> "$Id: 617b521c07044fd4d88b74e716ba7751fb1fdfdc $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8hpp.html#aab4dce5d203c0d98ae740800332ed9d9">GEOGRAPHICLIB_UTMUPS_HPP</a> "$Id: a529ed8aeaeffb02994254bbc7eb1209aa41b9ca $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
-<p>Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
+<p>Copyright (c) Charles Karney (2008-2011) <<a href="mailto:charles at karney.com">charles at karney.com</a>> and licensed under the MIT/X11 License. For more information, see <a href="http://geographiclib.sourceforge.net/">http://geographiclib.sourceforge.net/</a> </p>
<p>Definition in file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
</div><hr/><h2>Define Documentation</h2>
@@ -86,7 +99,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_UTMUPS_HPP "$Id: 617b521c07044fd4d88b74e716ba7751fb1fdfdc $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_UTMUPS_HPP "$Id: a529ed8aeaeffb02994254bbc7eb1209aa41b9ca $"</td>
</tr>
</table>
</div>
@@ -97,8 +110,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/UTMUPS_8hpp_source.html b/doc/html/UTMUPS_8hpp_source.html
index f81e668..4585af9 100644
--- a/doc/html/UTMUPS_8hpp_source.html
+++ b/doc/html/UTMUPS_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: UTMUPS.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,14 +67,14 @@
<a name="l00002"></a>00002 <span class="comment"> * \file UTMUPS.hpp</span>
<a name="l00003"></a>00003 <span class="comment"> * \brief Header for GeographicLib::UTMUPS class</span>
<a name="l00004"></a>00004 <span class="comment"> *</span>
-<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com></span>
-<a name="l00006"></a>00006 <span class="comment"> * and licensed under the MIT/X11 License. For more information, see</span>
+<a name="l00005"></a>00005 <span class="comment"> * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed</span>
+<a name="l00006"></a>00006 <span class="comment"> * under the MIT/X11 License. For more information, see</span>
<a name="l00007"></a>00007 <span class="comment"> * http://geographiclib.sourceforge.net/</span>
<a name="l00008"></a>00008 <span class="comment"> **********************************************************************/</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_UTMUPS_HPP)</span>
<a name="l00011"></a><a class="code" href="UTMUPS_8hpp.html#aab4dce5d203c0d98ae740800332ed9d9">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_UTMUPS_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 617b521c07044fd4d88b74e716ba7751fb1fdfdc $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: a529ed8aeaeffb02994254bbc7eb1209aa41b9ca $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <sstream></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
@@ -110,23 +125,23 @@
<a name="l00060"></a>00060 <span class="comment"> * Example of use:</span>
<a name="l00061"></a>00061 <span class="comment"> * \include example-UTMUPS.cpp</span>
<a name="l00062"></a>00062 <span class="comment"> **********************************************************************/</span>
-<a name="l00063"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html">00063</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a> {
+<a name="l00063"></a>00063 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> UTMUPS {
<a name="l00064"></a>00064 <span class="keyword">private</span>:
-<a name="l00065"></a>00065 <span class="keyword">typedef</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
-<a name="l00066"></a>00066 <span class="keyword">static</span> <span class="keyword">const</span> real falseeasting_[4];
-<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">const</span> real falsenorthing_[4];
-<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keyword">const</span> real mineasting_[4];
-<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keyword">const</span> real maxeasting_[4];
-<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">const</span> real minnorthing_[4];
-<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">const</span> real maxnorthing_[4];
-<a name="l00072"></a>00072 <span class="keyword">static</span> real CentralMeridian(<span class="keywordtype">int</span> zone) <span class="keywordflow">throw</span>()
+<a name="l00065"></a>00065 <span class="keyword">typedef</span> Math<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>;
+<a name="l00066"></a>00066 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> falseeasting_[4];
+<a name="l00067"></a>00067 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> falsenorthing_[4];
+<a name="l00068"></a>00068 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> mineasting_[4];
+<a name="l00069"></a>00069 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> maxeasting_[4];
+<a name="l00070"></a>00070 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> minnorthing_[4];
+<a name="l00071"></a>00071 <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> maxnorthing_[4];
+<a name="l00072"></a>00072 <span class="keyword">static</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> CentralMeridian(<span class="keywordtype">int</span> zone) <span class="keywordflow">throw</span>()
<a name="l00073"></a>00073 { <span class="keywordflow">return</span> <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a>(6 * zone - 183); }
-<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keywordtype">void</span> CheckLatLon(real lat, real lon);
+<a name="l00074"></a>00074 <span class="keyword">static</span> <span class="keywordtype">void</span> CheckLatLon(<a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lat, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> lon);
<a name="l00075"></a>00075 <span class="comment">// Throw an error if easting or northing are outside standard ranges. If</span>
<a name="l00076"></a>00076 <span class="comment">// throwp = false, return bool instead.</span>
-<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keywordtype">bool</span> CheckCoords(<span class="keywordtype">bool</span> utmp, <span class="keywordtype">bool</span> northp, real x, real y,
+<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keywordtype">bool</span> CheckCoords(<span class="keywordtype">bool</span> utmp, <span class="keywordtype">bool</span> northp, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> x, <a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">real</a> y,
<a name="l00078"></a>00078 <span class="keywordtype">bool</span> msgrlimits = <span class="keyword">false</span>, <span class="keywordtype">bool</span> throwp = <span class="keyword">true</span>);
-<a name="l00079"></a>00079 <a class="code" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">UTMUPS</a>(); <span class="comment">// Disable constructor</span>
+<a name="l00079"></a>00079 UTMUPS(); <span class="comment">// Disable constructor</span>
<a name="l00080"></a>00080
<a name="l00081"></a>00081 <span class="keyword">public</span>:
<a name="l00082"></a>00082 <span class="comment"></span>
@@ -331,7 +346,7 @@
<a name="l00281"></a>00281 <span class="comment"> * @return shift (meters) necessary to align N and S halves of a UTM zone</span>
<a name="l00282"></a>00282 <span class="comment"> * (10<sup>7</sup>).</span>
<a name="l00283"></a>00283 <span class="comment"> **********************************************************************/</span>
-<a name="l00284"></a>00284 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> UTMShift() throw();
+<a name="l00284"></a>00284 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> UTMShift() throw();
<a name="l00285"></a>00285 <span class="comment"></span>
<a name="l00286"></a>00286 <span class="comment"> /** \name Inspector functions</span>
<a name="l00287"></a>00287 <span class="comment"> **********************************************************************/</span><span class="comment"></span>
@@ -343,7 +358,7 @@
<a name="l00293"></a>00293 <span class="comment"> * based on this ellipsoid.)</span>
<a name="l00294"></a>00294 <span class="comment"> **********************************************************************/</span>
<a name="l00295"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a293aa30508096d49db77a23917ea1092">00295</a> static <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real MajorRadius() throw()
-<a name="l00296"></a>00296 { <span class="keywordflow">return</span> Constants::WGS84_a<real>(); }
+<a name="l00296"></a>00296 { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<real>(); }
<a name="l00297"></a>00297 <span class="comment"></span>
<a name="l00298"></a>00298 <span class="comment"> /**</span>
<a name="l00299"></a>00299 <span class="comment"> * @return \e f the flattening of the WGS84 ellipsoid.</span>
@@ -351,25 +366,32 @@
<a name="l00301"></a>00301 <span class="comment"> * (The WGS84 value is returned because the UTM and UPS projections are</span>
<a name="l00302"></a>00302 <span class="comment"> * based on this ellipsoid.)</span>
<a name="l00303"></a>00303 <span class="comment"> **********************************************************************/</span>
-<a name="l00304"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a182de2e29f1181c55a266777039b8a9d">00304</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> Flattening() throw()
-<a name="l00305"></a>00305 { <span class="keywordflow">return</span> Constants::WGS84_f<real>(); }
-<a name="l00306"></a>00306 <span class="comment"></span>
-<a name="l00307"></a>00307 <span class="comment"> /**</span>
-<a name="l00308"></a>00308 <span class="comment"> * <b>DEPRECATED</b></span>
-<a name="l00309"></a>00309 <span class="comment"> * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
-<a name="l00310"></a>00310 <span class="comment"> **********************************************************************/</span>
-<a name="l00311"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">00311</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> InverseFlattening() throw()
-<a name="l00312"></a>00312 { <span class="keywordflow">return</span> 1/Constants::WGS84_f<real>(); }<span class="comment"></span>
-<a name="l00313"></a>00313 <span class="comment"> ///@}</span>
-<a name="l00314"></a>00314 <span class="comment"></span> };
-<a name="l00315"></a>00315
-<a name="l00316"></a>00316 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00304"></a><a class="code" href="classGeographicLib_1_1UTMUPS.html#a182de2e29f1181c55a266777039b8a9d">00304</a> <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::real Flattening() throw()
+<a name="l00305"></a>00305 { <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>(); }<span class="comment"></span>
+<a name="l00306"></a>00306 <span class="comment"> ///@}</span>
+<a name="l00307"></a>00307 <span class="comment"></span><span class="comment"></span>
+<a name="l00308"></a>00308 <span class="comment"> /// \cond SKIP</span>
+<a name="l00309"></a>00309 <span class="comment"></span><span class="comment"> /**</span>
+<a name="l00310"></a>00310 <span class="comment"> * <b>DEPRECATED</b></span>
+<a name="l00311"></a>00311 <span class="comment"> * @return \e r the inverse flattening of the WGS84 ellipsoid.</span>
+<a name="l00312"></a>00312 <span class="comment"> **********************************************************************/</span>
+<a name="l00313"></a>00313 <span class="keyword">static</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a><a class="code" href="Geod_8cpp.html#a5caf95d46b184d9ca1d3764b3781b3c9">::real</a> InverseFlattening() throw()
+<a name="l00314"></a>00314 { <span class="keywordflow">return</span> 1/<a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_f<real>(); }<span class="comment"></span>
+<a name="l00315"></a>00315 <span class="comment"> /// \endcond</span>
+<a name="l00316"></a>00316 <span class="comment"></span> };
<a name="l00317"></a>00317
-<a name="l00318"></a>00318 <span class="preprocessor">#endif // GEOGRAPHICLIB_UTMUPS_HPP</span>
+<a name="l00318"></a>00318 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00319"></a>00319
+<a name="l00320"></a>00320 <span class="preprocessor">#endif // GEOGRAPHICLIB_UTMUPS_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Utility_8cpp.html b/doc/html/Utility_8cpp.html
index 6addb90..1ed907d 100644
--- a/doc/html/Utility_8cpp.html
+++ b/doc/html/Utility_8cpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Utility.cpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,10 +75,8 @@
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8cpp.html#a572751ca8465c95b9e157dc20175f6bc">GEOGRAPHICLIB_UTILITY_CPP</a> "$Id: 6f06d5d8fa9d731dc5a5fa4516838f639a2ba40b $"</td></tr>
@@ -90,8 +103,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Utility_8cpp_source.html b/doc/html/Utility_8cpp_source.html
index 4ba8610..e996271 100644
--- a/doc/html/Utility_8cpp_source.html
+++ b/doc/html/Utility_8cpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Utility.cpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,10 +86,10 @@
<a name="l00022"></a><a class="code" href="classGeographicLib_1_1Utility.html#a96252f445a912b77517bff04d4d6ea74">00022</a> <span class="keywordtype">bool</span> Utility::ParseLine(<span class="keyword">const</span> std::string& line,
<a name="l00023"></a>00023 std::string& key, std::string& val) {
<a name="l00024"></a>00024 <span class="keyword">const</span> <span class="keywordtype">char</span>* spaces = <span class="stringliteral">" \t\n\v\f\r"</span>;
-<a name="l00025"></a>00025 string::size_type n0 = line.find_first_not_of(spaces);
+<a name="l00025"></a>00025 <span class="keywordtype">string</span>::size_type n0 = line.find_first_not_of(spaces);
<a name="l00026"></a>00026 <span class="keywordflow">if</span> (n0 == string::npos)
<a name="l00027"></a>00027 <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Blank line</span>
-<a name="l00028"></a>00028 string::size_type n1 = line.find_first_of(<span class="charliteral">'#'</span>, n0);
+<a name="l00028"></a>00028 <span class="keywordtype">string</span>::size_type n1 = line.find_first_of(<span class="charliteral">'#'</span>, n0);
<a name="l00029"></a>00029 <span class="keywordflow">if</span> (n0 == n1)
<a name="l00030"></a>00030 <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Only a comment</span>
<a name="l00031"></a>00031 val = line.substr(n0, n1 == string::npos ? n1 : n1 - n0);
@@ -97,8 +112,13 @@
<a name="l00048"></a>00048 } <span class="comment">// namespace GeographicLib</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Utility_8hpp.html b/doc/html/Utility_8hpp.html
index a7a73f5..5cd5ed6 100644
--- a/doc/html/Utility_8hpp.html
+++ b/doc/html/Utility_8hpp.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Utility.hpp File Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,13 +87,11 @@ Classes</h2></td></tr>
<tr><td colspan="2"><h2><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Namespace for GeographicLib. </p>
<br/></td></tr>
-</p>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8hpp.html#aba45651243cd7449a073dd2c8b11a88a">GEOGRAPHICLIB_UTILITY_HPP</a> "$Id: 8a1cdf4f0de95da280d56bbf8ea299dad043f0b2 $"</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8hpp.html#aba45651243cd7449a073dd2c8b11a88a">GEOGRAPHICLIB_UTILITY_HPP</a> "$Id: 92c92fcb8ea92116fed01909c2611934b708e4cd $"</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Header for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
@@ -91,7 +104,7 @@ Defines</h2></td></tr>
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">#define GEOGRAPHICLIB_UTILITY_HPP "$Id: 8a1cdf4f0de95da280d56bbf8ea299dad043f0b2 $"</td>
+ <td class="memname">#define GEOGRAPHICLIB_UTILITY_HPP "$Id: 92c92fcb8ea92116fed01909c2611934b708e4cd $"</td>
</tr>
</table>
</div>
@@ -102,8 +115,13 @@ Defines</h2></td></tr>
</div>
</div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/Utility_8hpp_source.html b/doc/html/Utility_8hpp_source.html
index 6e7ad48..26af483 100644
--- a/doc/html/Utility_8hpp_source.html
+++ b/doc/html/Utility_8hpp_source.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Utility.hpp Source File</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,7 +74,7 @@
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#if !defined(GEOGRAPHICLIB_UTILITY_HPP)</span>
<a name="l00011"></a><a class="code" href="Utility_8hpp.html#aba45651243cd7449a073dd2c8b11a88a">00011</a> <span class="preprocessor"></span><span class="preprocessor">#define GEOGRAPHICLIB_UTILITY_HPP \</span>
-<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 8a1cdf4f0de95da280d56bbf8ea299dad043f0b2 $"</span>
+<a name="l00012"></a>00012 <span class="preprocessor"> "$Id: 92c92fcb8ea92116fed01909c2611934b708e4cd $"</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <<a class="code" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">GeographicLib/Constants.hpp</a>></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <iomanip></span>
@@ -77,7 +92,7 @@
<a name="l00027"></a>00027 <span class="comment"> * Example of use:</span>
<a name="l00028"></a>00028 <span class="comment"> * \include example-Utility.cpp</span>
<a name="l00029"></a>00029 <span class="comment"> **********************************************************************/</span>
-<a name="l00030"></a><a class="code" href="classGeographicLib_1_1Utility.html">00030</a> <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a> {
+<a name="l00030"></a>00030 <span class="keyword">class </span><a class="code" href="Constants_8hpp.html#a59a204dcc2942f86d7b24b4233aad719">GEOGRAPHIC_EXPORT</a> Utility {
<a name="l00031"></a>00031 <span class="keyword">private</span>:
<a name="l00032"></a>00032 <span class="keyword">static</span> <span class="keywordtype">bool</span> gregorian(<span class="keywordtype">int</span> y, <span class="keywordtype">int</span> m, <span class="keywordtype">int</span> d) {
<a name="l00033"></a>00033 <span class="comment">// The original cut over to the Gregorian calendar in Pope Gregory XIII's</span>
@@ -283,7 +298,7 @@
<a name="l00233"></a>00233 <span class="comment"> * should be of the form yyyy-mm or yyyy-mm-dd and this is converted to a</span>
<a name="l00234"></a>00234 <span class="comment"> * number with 2010-01-01 giving 2010.0 and 2012-07-03 giving 2012.5.</span>
<a name="l00235"></a>00235 <span class="comment"> **********************************************************************/</span>
-<a name="l00236"></a><a class="code" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">00236</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">fractionalyear</a>(<span class="keyword">const</span> std::string& s) {
+<a name="l00236"></a><a class="code" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">00236</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">fractionalyear</a>(<span class="keyword">const</span> std::string& s) {
<a name="l00237"></a>00237 <span class="keywordflow">try</span> {
<a name="l00238"></a>00238 <span class="keywordflow">return</span> num<T>(s);
<a name="l00239"></a>00239 }
@@ -306,7 +321,7 @@
<a name="l00256"></a>00256 <span class="comment"> * If \e p >= 0, then the number fixed format is used with p bits of</span>
<a name="l00257"></a>00257 <span class="comment"> * precision. With p < 0, there is no manipulation of the format.</span>
<a name="l00258"></a>00258 <span class="comment"> **********************************************************************/</span>
-<a name="l00259"></a><a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">00259</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> std::string <a class="code" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">str</a>(T x, <span class="keywordtype">int</span> p = -1) {
+<a name="l00259"></a><a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">00259</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> std::string <a class="code" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">str</a>(T x, <span class="keywordtype">int</span> p = -1) {
<a name="l00260"></a>00260 <span class="keywordflow">if</span> (!std::numeric_limits<T>::is_integer && !Math::isfinite<T>(x))
<a name="l00261"></a>00261 <span class="keywordflow">return</span> x < 0 ? std::string(<span class="stringliteral">"-inf"</span>) :
<a name="l00262"></a>00262 (x > 0 ? std::string(<span class="stringliteral">"inf"</span>) : std::string(<span class="stringliteral">"nan"</span>));
@@ -322,7 +337,7 @@
<a name="l00272"></a>00272 <span class="comment"> * @param[in] s the string to be converted.</span>
<a name="l00273"></a>00273 <span class="comment"> * @return object of type T</span>
<a name="l00274"></a>00274 <span class="comment"> **********************************************************************/</span>
-<a name="l00275"></a><a class="code" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">00275</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">num</a>(<span class="keyword">const</span> std::string& s) {
+<a name="l00275"></a><a class="code" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">00275</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">num</a>(<span class="keyword">const</span> std::string& s) {
<a name="l00276"></a>00276 T x;
<a name="l00277"></a>00277 std::string errmsg;
<a name="l00278"></a>00278 <span class="keywordflow">do</span> { <span class="comment">// Executed once (provides the ability to break)</span>
@@ -351,7 +366,7 @@
<a name="l00301"></a>00301 <span class="comment"> * @param[in] s the string to be matched.</span>
<a name="l00302"></a>00302 <span class="comment"> * @return appropriate special value (+/-inf, nan) or 0 is none is found.</span>
<a name="l00303"></a>00303 <span class="comment"> **********************************************************************/</span>
-<a name="l00304"></a><a class="code" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">00304</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">nummatch</a>(<span class="keyword">const</span> std::string& s) {
+<a name="l00304"></a><a class="code" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">00304</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">nummatch</a>(<span class="keyword">const</span> std::string& s) {
<a name="l00305"></a>00305 <span class="keywordflow">if</span> (s.length() < 3)
<a name="l00306"></a>00306 <span class="keywordflow">return</span> 0;
<a name="l00307"></a>00307 std::string t;
@@ -368,9 +383,9 @@
<a name="l00318"></a>00318 t = t.substr(p0, p1 + 1 - p0); <span class="comment">// Length at least 3</span>
<a name="l00319"></a>00319 <span class="keywordflow">if</span> (t == <span class="stringliteral">"NAN"</span> || t == <span class="stringliteral">"1.#QNAN"</span> || t == <span class="stringliteral">"1.#SNAN"</span> || t == <span class="stringliteral">"1.#IND"</span> ||
<a name="l00320"></a>00320 t == <span class="stringliteral">"1.#R"</span>)
-<a name="l00321"></a>00321 <span class="keywordflow">return</span> Math::NaN<T>();
+<a name="l00321"></a>00321 <span class="keywordflow">return</span> <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::NaN<T>();
<a name="l00322"></a>00322 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == <span class="stringliteral">"INF"</span> || t == <span class="stringliteral">"1.#INF"</span>)
-<a name="l00323"></a>00323 <span class="keywordflow">return</span> sign * Math::infinity<T>();
+<a name="l00323"></a>00323 <span class="keywordflow">return</span> sign * <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::infinity<T>();
<a name="l00324"></a>00324 <span class="keywordflow">return</span> 0;
<a name="l00325"></a>00325 }
<a name="l00326"></a>00326 <span class="comment"></span>
@@ -381,7 +396,7 @@
<a name="l00331"></a>00331 <span class="comment"> * @param[in] s the string to be converted.</span>
<a name="l00332"></a>00332 <span class="comment"> * @return object of type T</span>
<a name="l00333"></a>00333 <span class="comment"> **********************************************************************/</span>
-<a name="l00334"></a><a class="code" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">00334</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">fract</a>(<span class="keyword">const</span> std::string& s) {
+<a name="l00334"></a><a class="code" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">00334</a> <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keyword">static</span> T <a class="code" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">fract</a>(<span class="keyword">const</span> std::string& s) {
<a name="l00335"></a>00335 std::string::size_type delim = s.find(<span class="charliteral">'/'</span>);
<a name="l00336"></a>00336 <span class="keywordflow">return</span>
<a name="l00337"></a>00337 !(delim != std::string::npos && delim >= 1 && delim + 2 <= s.size()) ?
@@ -419,7 +434,7 @@
<a name="l00369"></a>00369 <span class="comment"> * @param[in] num the size of the array.</span>
<a name="l00370"></a>00370 <span class="comment"> **********************************************************************/</span>
<a name="l00371"></a>00371 <span class="keyword">template</span><<span class="keyword">typename</span> ExtT, <span class="keyword">typename</span> IntT, <span class="keywordtype">bool</span> bigendp>
-<a name="l00372"></a><a class="code" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">00372</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> readarray(std::istream& str,
+<a name="l00372"></a><a class="code" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">00372</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> readarray(std::istream& str,
<a name="l00373"></a>00373 IntT array[], <span class="keywordtype">size_t</span> num) {
<a name="l00374"></a>00374 <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(IntT) == <span class="keyword">sizeof</span>(ExtT) &&
<a name="l00375"></a>00375 std::numeric_limits<IntT>::is_integer ==
@@ -445,7 +460,7 @@
<a name="l00395"></a>00395 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < n; ++j)
<a name="l00396"></a>00396 <span class="comment">// fix endian-ness and cast to IntT</span>
<a name="l00397"></a>00397 array[i++] = IntT(bigendp == <a class="code" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">Math::bigendian</a> ? buffer[j] :
-<a name="l00398"></a>00398 Math::swab<IntT>(buffer[j]));
+<a name="l00398"></a>00398 Math::swab<ExtT>(buffer[j]));
<a name="l00399"></a>00399 k -= n;
<a name="l00400"></a>00400 }
<a name="l00401"></a>00401 }
@@ -465,36 +480,99 @@
<a name="l00415"></a>00415 <span class="comment"> * @param[out] array the output vector of type IntT (internal).</span>
<a name="l00416"></a>00416 <span class="comment"> **********************************************************************/</span>
<a name="l00417"></a>00417 <span class="keyword">template</span><<span class="keyword">typename</span> ExtT, <span class="keyword">typename</span> IntT, <span class="keywordtype">bool</span> bigendp>
-<a name="l00418"></a><a class="code" href="classGeographicLib_1_1Utility.html#a3acad0c1faffcd87292776d1cae26290">00418</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> readarray(std::istream& str,
+<a name="l00418"></a><a class="code" href="classGeographicLib_1_1Utility.html#a044796b4fc14a952abec27da27fc20be">00418</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> readarray(std::istream& str,
<a name="l00419"></a>00419 std::vector<IntT>& array) {
<a name="l00420"></a>00420 readarray<ExtT, IntT, bigendp>(str, &array[0], array.size());
<a name="l00421"></a>00421 }
<a name="l00422"></a>00422 <span class="comment"></span>
<a name="l00423"></a>00423 <span class="comment"> /**</span>
-<a name="l00424"></a>00424 <span class="comment"> * Parse a KEY VALUE line.</span>
-<a name="l00425"></a>00425 <span class="comment"> *</span>
-<a name="l00426"></a>00426 <span class="comment"> * @param[in] line the input line.</span>
-<a name="l00427"></a>00427 <span class="comment"> * @param[out] key the key.</span>
-<a name="l00428"></a>00428 <span class="comment"> * @param[out] val the value.</span>
-<a name="l00429"></a>00429 <span class="comment"> * @return whether a key was found.</span>
-<a name="l00430"></a>00430 <span class="comment"> *</span>
-<a name="l00431"></a>00431 <span class="comment"> * A # character and everything after it are discarded. If the results is</span>
-<a name="l00432"></a>00432 <span class="comment"> * just white space, the routine returns false (and \e key and \e val are</span>
-<a name="l00433"></a>00433 <span class="comment"> * not set). Otherwise the first token is taken to be the key and the rest</span>
-<a name="l00434"></a>00434 <span class="comment"> * of the line (trimmed of leading and trailing white space) is the value.</span>
-<a name="l00435"></a>00435 <span class="comment"> **********************************************************************/</span>
-<a name="l00436"></a>00436 <span class="keyword">static</span> <span class="keywordtype">bool</span> ParseLine(<span class="keyword">const</span> std::string& line,
-<a name="l00437"></a>00437 std::string& key, std::string& val);
-<a name="l00438"></a>00438
-<a name="l00439"></a>00439 };
-<a name="l00440"></a>00440
-<a name="l00441"></a>00441 } <span class="comment">// namespace GeographicLib</span>
-<a name="l00442"></a>00442
-<a name="l00443"></a>00443 <span class="preprocessor">#endif // GEOGRAPHICLIB_UTILITY_HPP</span>
+<a name="l00424"></a>00424 <span class="comment"> * Write data in an array of type IntT as type ExtT to a binary stream.</span>
+<a name="l00425"></a>00425 <span class="comment"> * The data in the file is in (bigendp ? big : little)-endian format.</span>
+<a name="l00426"></a>00426 <span class="comment"> *</span>
+<a name="l00427"></a>00427 <span class="comment"> * @tparam ExtT the type of the objects in the binary stream (external).</span>
+<a name="l00428"></a>00428 <span class="comment"> * @tparam IntT the type of the objects in the array (internal).</span>
+<a name="l00429"></a>00429 <span class="comment"> * @tparam bigendp true if the external storage format is big-endian.</span>
+<a name="l00430"></a>00430 <span class="comment"> * @param[out] str the output stream for the data of type ExtT (external).</span>
+<a name="l00431"></a>00431 <span class="comment"> * @param[in] array the input array of type IntT (internal).</span>
+<a name="l00432"></a>00432 <span class="comment"> * @param[in] num the size of the array.</span>
+<a name="l00433"></a>00433 <span class="comment"> **********************************************************************/</span>
+<a name="l00434"></a>00434 <span class="keyword">template</span><<span class="keyword">typename</span> ExtT, <span class="keyword">typename</span> IntT, <span class="keywordtype">bool</span> bigendp>
+<a name="l00435"></a><a class="code" href="classGeographicLib_1_1Utility.html#a276eb20ace49c5260e1878c7d8aefd31">00435</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> writearray(std::ostream& str,
+<a name="l00436"></a>00436 <span class="keyword">const</span> IntT array[], <span class="keywordtype">size_t</span> num) {
+<a name="l00437"></a>00437 <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(IntT) == <span class="keyword">sizeof</span>(ExtT) &&
+<a name="l00438"></a>00438 std::numeric_limits<IntT>::is_integer ==
+<a name="l00439"></a>00439 std::numeric_limits<ExtT>::is_integer &&
+<a name="l00440"></a>00440 bigendp == <a class="code" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">Math::bigendian</a>) {
+<a name="l00441"></a>00441 <span class="comment">// Data is compatible (including endian-ness).</span>
+<a name="l00442"></a>00442 str.write(reinterpret_cast<const char *>(array), num * <span class="keyword">sizeof</span>(ExtT));
+<a name="l00443"></a>00443 <span class="keywordflow">if</span> (!str.good())
+<a name="l00444"></a>00444 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Failure writing data"</span>);
+<a name="l00445"></a>00445 } <span class="keywordflow">else</span> {
+<a name="l00446"></a>00446 <span class="keyword">const</span> <span class="keywordtype">int</span> bufsize = 1024; <span class="comment">// write this many values at a time</span>
+<a name="l00447"></a>00447 ExtT buffer[bufsize]; <span class="comment">// temporary buffer</span>
+<a name="l00448"></a>00448 <span class="keywordtype">int</span> k = int(num); <span class="comment">// data values left to write</span>
+<a name="l00449"></a>00449 <span class="keywordtype">int</span> i = 0; <span class="comment">// index into output array</span>
+<a name="l00450"></a>00450 <span class="keywordflow">while</span> (k) {
+<a name="l00451"></a>00451 <span class="keywordtype">int</span> n = (std::min)(k, bufsize);
+<a name="l00452"></a>00452 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j < n; ++j)
+<a name="l00453"></a>00453 <span class="comment">// cast to ExtT and fix endian-ness</span>
+<a name="l00454"></a>00454 buffer[j] = bigendp == <a class="code" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">Math::bigendian</a> ? ExtT(array[i++]) :
+<a name="l00455"></a>00455 <a class="code" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">Math</a>::swab<ExtT>(ExtT(array[i++]));
+<a name="l00456"></a>00456 str.write(reinterpret_cast<const char *>(buffer), n * <span class="keyword">sizeof</span>(ExtT));
+<a name="l00457"></a>00457 <span class="keywordflow">if</span> (!str.good())
+<a name="l00458"></a>00458 <span class="keywordflow">throw</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>(<span class="stringliteral">"Failure writing data"</span>);
+<a name="l00459"></a>00459 k -= n;
+<a name="l00460"></a>00460 }
+<a name="l00461"></a>00461 }
+<a name="l00462"></a>00462 <span class="keywordflow">return</span>;
+<a name="l00463"></a>00463 }
+<a name="l00464"></a>00464 <span class="comment"></span>
+<a name="l00465"></a>00465 <span class="comment"> /**</span>
+<a name="l00466"></a>00466 <span class="comment"> * Write data in an array of type IntT as type ExtT to a binary stream.</span>
+<a name="l00467"></a>00467 <span class="comment"> * The data in the file is in (bigendp ? big : little)-endian format.</span>
+<a name="l00468"></a>00468 <span class="comment"> *</span>
+<a name="l00469"></a>00469 <span class="comment"> * @tparam ExtT the type of the objects in the binary stream (external).</span>
+<a name="l00470"></a>00470 <span class="comment"> * @tparam IntT the type of the objects in the array (internal).</span>
+<a name="l00471"></a>00471 <span class="comment"> * @tparam bigendp true if the external storage format is big-endian.</span>
+<a name="l00472"></a>00472 <span class="comment"> * @param[out] str the output stream for the data of type ExtT (external).</span>
+<a name="l00473"></a>00473 <span class="comment"> * @param[in] array the input vector of type IntT (internal).</span>
+<a name="l00474"></a>00474 <span class="comment"> **********************************************************************/</span>
+<a name="l00475"></a>00475 <span class="keyword">template</span><<span class="keyword">typename</span> ExtT, <span class="keyword">typename</span> IntT, <span class="keywordtype">bool</span> bigendp>
+<a name="l00476"></a><a class="code" href="classGeographicLib_1_1Utility.html#a0621066e4aa146a2c100802375e70389">00476</a> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> writearray(std::ostream& str,
+<a name="l00477"></a>00477 std::vector<IntT>& array) {
+<a name="l00478"></a>00478 writearray<ExtT, IntT, bigendp>(str, &array[0], array.size());
+<a name="l00479"></a>00479 }
+<a name="l00480"></a>00480 <span class="comment"></span>
+<a name="l00481"></a>00481 <span class="comment"> /**</span>
+<a name="l00482"></a>00482 <span class="comment"> * Parse a KEY VALUE line.</span>
+<a name="l00483"></a>00483 <span class="comment"> *</span>
+<a name="l00484"></a>00484 <span class="comment"> * @param[in] line the input line.</span>
+<a name="l00485"></a>00485 <span class="comment"> * @param[out] key the key.</span>
+<a name="l00486"></a>00486 <span class="comment"> * @param[out] val the value.</span>
+<a name="l00487"></a>00487 <span class="comment"> * @return whether a key was found.</span>
+<a name="l00488"></a>00488 <span class="comment"> *</span>
+<a name="l00489"></a>00489 <span class="comment"> * A # character and everything after it are discarded. If the results is</span>
+<a name="l00490"></a>00490 <span class="comment"> * just white space, the routine returns false (and \e key and \e val are</span>
+<a name="l00491"></a>00491 <span class="comment"> * not set). Otherwise the first token is taken to be the key and the rest</span>
+<a name="l00492"></a>00492 <span class="comment"> * of the line (trimmed of leading and trailing white space) is the value.</span>
+<a name="l00493"></a>00493 <span class="comment"> **********************************************************************/</span>
+<a name="l00494"></a>00494 <span class="keyword">static</span> <span class="keywordtype">bool</span> ParseLine(<span class="keyword">const</span> std::string& line,
+<a name="l00495"></a>00495 std::string& key, std::string& val);
+<a name="l00496"></a>00496
+<a name="l00497"></a>00497 };
+<a name="l00498"></a>00498
+<a name="l00499"></a>00499 } <span class="comment">// namespace GeographicLib</span>
+<a name="l00500"></a>00500
+<a name="l00501"></a>00501 <span class="preprocessor">#endif // GEOGRAPHICLIB_UTILITY_HPP</span>
</pre></div></div>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
index 962226f..d19faf0 100644
--- a/doc/html/annotated.html
+++ b/doc/html/annotated.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -43,7 +58,7 @@
</div>
<div class="contents">
<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><table>
- <tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td class="indexvalue">An accumulator for sums </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td class="indexvalue">An accumulator for sums </td></tr>
<tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td class="indexvalue">Albers Equal Area Conic Projection </td></tr>
<tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td class="indexvalue">Azimuthal Equidistant Projection </td></tr>
<tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td class="indexvalue">Cassini-Soldner Projection </td></tr>
@@ -81,8 +96,13 @@
<tr><td class="indexkey"><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td class="indexvalue">Convert between Geographic coordinates and UTM/UPS </td></tr>
</table>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Accumulator-members.html b/doc/html/classGeographicLib_1_1Accumulator-members.html
index 341e997..f4d44e3 100644
--- a/doc/html/classGeographicLib_1_1Accumulator-members.html
+++ b/doc/html/classGeographicLib_1_1Accumulator-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,26 +60,31 @@
</div>
<div class="header">
<div class="headertitle">
-<div class="title">GeographicLib::Accumulator< T > Member List</div> </div>
+<div class="title">GeographicLib::Accumulator Member List</div> </div>
</div>
<div class="contents">
-This is the complete list of members for <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">Accumulator</a>(T y=T(0))</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">operator!=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">operator()</a>() const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">operator()</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">operator*=</a>(int n)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">operator+=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">operator-=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">operator<</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">operator<=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">operator=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">operator==</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">operator></a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">operator>=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator< T ></a></td><td><code> [inline]</code></td></tr>
+This is the complete list of members for <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>, including all inherited members.<table>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">Accumulator</a>(T y=T(0))</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">operator!=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">operator()</a>() const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">operator()</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">operator*=</a>(int n)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">operator+=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">operator-=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">operator<</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">operator<=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">operator=</a>(T y)</td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">operator==</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">operator></a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">operator>=</a>(T y) const </td><td><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Accumulator.html b/doc/html/classGeographicLib_1_1Accumulator.html
index 666da4e..e97f1d6 100644
--- a/doc/html/classGeographicLib_1_1Accumulator.html
+++ b/doc/html/classGeographicLib_1_1Accumulator.html
@@ -2,24 +2,39 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: GeographicLib::Accumulator< T > Class Template Reference</title>
+<title>GeographicLib: GeographicLib::Accumulator Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -47,7 +62,7 @@
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> </div>
<div class="headertitle">
-<div class="title">GeographicLib::Accumulator< T > Class Template Reference</div> </div>
+<div class="title">GeographicLib::Accumulator Class Reference</div> </div>
</div>
<div class="contents">
<!-- doxytag: class="GeographicLib::Accumulator" -->
@@ -60,25 +75,22 @@
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">Accumulator</a> (T y=T(0)) throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">operator=</a> (T y) throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">operator()</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">operator()</a> (T y) const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">operator+=</a> (T y) throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">operator-=</a> (T y) throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">operator*=</a> (int n) throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">operator==</a> (T y) const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">operator!=</a> (T y) const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">operator<</a> (T y) const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">operator<=</a> (T y) const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">operator></a> (T y) const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">operator>=</a> (T y) const throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">Accumulator</a> (T y=T(0)) throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">operator=</a> (T y) throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">operator()</a> () const throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">T </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">operator()</a> (T y) const throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">operator+=</a> (T y) throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">operator-=</a> (T y) throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">operator*=</a> (int n) throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">operator==</a> (T y) const throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">operator!=</a> (T y) const throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">operator<</a> (T y) const throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">operator<=</a> (T y) const throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">operator></a> (T y) const throw ()</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">operator>=</a> (T y) const throw ()</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
-<div class="textblock"><h3>template<typename T = Math::real><br/>
-class GeographicLib::Accumulator< T ></h3>
-
-<p>An accumulator for sums. </p>
+<div class="textblock"><p>An accumulator for sums. </p>
<p>This allow many numbers of floating point type <em>T</em> to be added together with twice the normal precision. Thus if <em>T</em> is double, the effective precision of the sum is 106 bits or about 32 decimal places. The core idea is the error free transformation of a sum, D. E. Knuth, TAOCP, Vol 2, 4.2.2, Theorem B.</p>
<p>The implementation follows J. R. Shewchuk, <a href="http://dx.doi.org/10.1007/PL00009321">Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates</a>, Discrete & Computational Geometry 18(3) 305-363 (1997).</p>
<p>Approximate timings (summing a vector<double>)</p>
@@ -114,17 +126,13 @@ class GeographicLib::Accumulator< T ></h3>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Accumulator_8hpp_source.html#l00043">43</a> of file <a class="el" href="Accumulator_8hpp_source.html">Accumulator.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
-<a class="anchor" id="a14d98e366933e0997c1954290f9d0fc3"></a><!-- doxytag: member="GeographicLib::Accumulator::Accumulator" ref="a14d98e366933e0997c1954290f9d0fc3" args="(T y=T(0))" -->
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
+<a class="anchor" id="a6d30e4a792644ffc78546dda4b5d0022"></a><!-- doxytag: member="GeographicLib::Accumulator::Accumulator" ref="a6d30e4a792644ffc78546dda4b5d0022" args="(T y=T(0))" -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::<a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> </td>
+ <td class="memname">GeographicLib::Accumulator::Accumulator </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em> = <code>T(0)</code></td><td>)</td>
@@ -146,14 +154,12 @@ template<typename T = Math::real> </div>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="acb3c1aa458551c474bd8d487c3488789"></a><!-- doxytag: member="GeographicLib::Accumulator::operator=" ref="acb3c1aa458551c474bd8d487c3488789" args="(T y)" -->
+<a class="anchor" id="a9cd31c9155208a2de0fdd9810f2a9dd8"></a><!-- doxytag: member="GeographicLib::Accumulator::operator=" ref="a9cd31c9155208a2de0fdd9810f2a9dd8" args="(T y)" -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator= </td>
+ <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& GeographicLib::Accumulator::operator= </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -174,14 +180,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a7da3f417100387abd140f4f6fd541f3c"></a><!-- doxytag: member="GeographicLib::Accumulator::operator()" ref="a7da3f417100387abd140f4f6fd541f3c" args="() const " -->
+<a class="anchor" id="af74ec2f9a77fcc82819111e6bb87b375"></a><!-- doxytag: member="GeographicLib::Accumulator::operator()" ref="af74ec2f9a77fcc82819111e6bb87b375" args="() const " -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname">T <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator() </td>
+ <td class="memname">T GeographicLib::Accumulator::operator() </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const throw ()<code> [inline]</code></td>
@@ -196,14 +200,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a34cc7a21a2163fe7865734f9c2995f34"></a><!-- doxytag: member="GeographicLib::Accumulator::operator()" ref="a34cc7a21a2163fe7865734f9c2995f34" args="(T y) const " -->
+<a class="anchor" id="a1a2b7ac3fd3b067a1c9930cb02a102b2"></a><!-- doxytag: member="GeographicLib::Accumulator::operator()" ref="a1a2b7ac3fd3b067a1c9930cb02a102b2" args="(T y) const " -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname">T <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator() </td>
+ <td class="memname">T GeographicLib::Accumulator::operator() </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -225,14 +227,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="acdefeaf2aa13cfc78109bdcf4b2cc5d9"></a><!-- doxytag: member="GeographicLib::Accumulator::operator+=" ref="acdefeaf2aa13cfc78109bdcf4b2cc5d9" args="(T y)" -->
+<a class="anchor" id="adc56d12f08b8a61b19dd78ce532285d4"></a><!-- doxytag: member="GeographicLib::Accumulator::operator+=" ref="adc56d12f08b8a61b19dd78ce532285d4" args="(T y)" -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator+= </td>
+ <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& GeographicLib::Accumulator::operator+= </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -253,14 +253,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a1add8644c70e445b32c11f269a0345ef"></a><!-- doxytag: member="GeographicLib::Accumulator::operator-=" ref="a1add8644c70e445b32c11f269a0345ef" args="(T y)" -->
+<a class="anchor" id="abf3e43f38791c48d1fa09e4fb569827b"></a><!-- doxytag: member="GeographicLib::Accumulator::operator-=" ref="abf3e43f38791c48d1fa09e4fb569827b" args="(T y)" -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator-= </td>
+ <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& GeographicLib::Accumulator::operator-= </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -281,14 +279,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a400f473aa76225662c0493679c1a9072"></a><!-- doxytag: member="GeographicLib::Accumulator::operator*=" ref="a400f473aa76225662c0493679c1a9072" args="(int n)" -->
+<a class="anchor" id="a2b0bc40e9722e1ffac89ecfeb601fb23"></a><!-- doxytag: member="GeographicLib::Accumulator::operator*=" ref="a2b0bc40e9722e1ffac89ecfeb601fb23" args="(int n)" -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator*= </td>
+ <td class="memname"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a>& GeographicLib::Accumulator::operator*= </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>n</em></td><td>)</td>
@@ -309,14 +305,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a826d30c1794c242628121d528461a383"></a><!-- doxytag: member="GeographicLib::Accumulator::operator==" ref="a826d30c1794c242628121d528461a383" args="(T y) const " -->
+<a class="anchor" id="a6ea5d769a36e01327f3633b39cd38290"></a><!-- doxytag: member="GeographicLib::Accumulator::operator==" ref="a6ea5d769a36e01327f3633b39cd38290" args="(T y) const " -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator== </td>
+ <td class="memname">bool GeographicLib::Accumulator::operator== </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -331,14 +325,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a64df6698b929c36ef2ea53762b1ca93b"></a><!-- doxytag: member="GeographicLib::Accumulator::operator!=" ref="a64df6698b929c36ef2ea53762b1ca93b" args="(T y) const " -->
+<a class="anchor" id="a4102ce7aac36753c2b0390c4fc951a42"></a><!-- doxytag: member="GeographicLib::Accumulator::operator!=" ref="a4102ce7aac36753c2b0390c4fc951a42" args="(T y) const " -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator!= </td>
+ <td class="memname">bool GeographicLib::Accumulator::operator!= </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -353,14 +345,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a3852660b49bef6eb2d92f1296a86459b"></a><!-- doxytag: member="GeographicLib::Accumulator::operator<" ref="a3852660b49bef6eb2d92f1296a86459b" args="(T y) const " -->
+<a class="anchor" id="a9a7299c02ec8805d951309fdae60e57f"></a><!-- doxytag: member="GeographicLib::Accumulator::operator<" ref="a9a7299c02ec8805d951309fdae60e57f" args="(T y) const " -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator< </td>
+ <td class="memname">bool GeographicLib::Accumulator::operator< </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -375,14 +365,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a04aea3f9aad7dd1599bb419e7cf4529a"></a><!-- doxytag: member="GeographicLib::Accumulator::operator<=" ref="a04aea3f9aad7dd1599bb419e7cf4529a" args="(T y) const " -->
+<a class="anchor" id="afb83bdb43b78e20f76e2a7e5e2440386"></a><!-- doxytag: member="GeographicLib::Accumulator::operator<=" ref="afb83bdb43b78e20f76e2a7e5e2440386" args="(T y) const " -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator<= </td>
+ <td class="memname">bool GeographicLib::Accumulator::operator<= </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -397,14 +385,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a3f1172477b4c225e064fb87753d567ef"></a><!-- doxytag: member="GeographicLib::Accumulator::operator>" ref="a3f1172477b4c225e064fb87753d567ef" args="(T y) const " -->
+<a class="anchor" id="af0e4a35c09b0b179ebf1e2f6912ddeb3"></a><!-- doxytag: member="GeographicLib::Accumulator::operator>" ref="af0e4a35c09b0b179ebf1e2f6912ddeb3" args="(T y) const " -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator> </td>
+ <td class="memname">bool GeographicLib::Accumulator::operator> </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -419,14 +405,12 @@ template<typename T = Math::real> </div>
</div>
</div>
-<a class="anchor" id="a4d509a497da83624d913ed00649644c1"></a><!-- doxytag: member="GeographicLib::Accumulator::operator>=" ref="a4d509a497da83624d913ed00649644c1" args="(T y) const " -->
+<a class="anchor" id="aeafc5d10683648d37fe18ec75725196b"></a><!-- doxytag: member="GeographicLib::Accumulator::operator>=" ref="aeafc5d10683648d37fe18ec75725196b" args="(T y) const " -->
<div class="memitem">
<div class="memproto">
-<div class="memtemplate">
-template<typename T = Math::real> </div>
<table class="memname">
<tr>
- <td class="memname">bool <a class="el" href="classGeographicLib_1_1Accumulator.html">GeographicLib::Accumulator</a>< T >::operator>= </td>
+ <td class="memname">bool GeographicLib::Accumulator::operator>= </td>
<td>(</td>
<td class="paramtype">T </td>
<td class="paramname"><em>y</em></td><td>)</td>
@@ -445,8 +429,13 @@ template<typename T = Math::real> </div>
<li><a class="el" href="Accumulator_8hpp_source.html">Accumulator.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1AlbersEqualArea-members.html b/doc/html/classGeographicLib_1_1AlbersEqualArea-members.html
index bc33ba4..6ef50a4 100644
--- a/doc/html/classGeographicLib_1_1AlbersEqualArea-members.html
+++ b/doc/html/classGeographicLib_1_1AlbersEqualArea-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,15 +74,19 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#aac57f3a9c0c08fb897a1e37034d127c1">Forward</a>(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a68a13780a73bcf9c8e50a3ce4eae3086">Forward</a>(real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">OriginLatitude</a>() const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a577a9f43be8c1e238a4d56158acf8625">Reverse</a>(real lon0, real x, real y, real &lat, real &lon, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a871246cba03145512f3f12ceb3e3e3a8">Reverse</a>(real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a0c00022edeb6b67dcd4e00f087b412c4">SetScale</a>(real lat, real k=real(1))</td><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">GeographicLib::AlbersEqualArea</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1AlbersEqualArea.html b/doc/html/classGeographicLib_1_1AlbersEqualArea.html
index 64b1215..7edfc1d 100644
--- a/doc/html/classGeographicLib_1_1AlbersEqualArea.html
+++ b/doc/html/classGeographicLib_1_1AlbersEqualArea.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::AlbersEqualArea Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,7 +87,6 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a55d5ca45e7c80a96b3faf0094714ac59">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a565c63954715204781ae458db0d6b1f7">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">InverseFlattening</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#ad780e943e9a9ba168b350d809d0bfe08">OriginLatitude</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">CentralScale</a> () const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
@@ -103,7 +117,7 @@ Static Public Attributes</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
<span class="keyword">const</span> <span class="keywordtype">double</span>
- a = Constants::WGS84_a<double>(),
+ a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<double>(),
f = Constants::WGS84_f<double>(),
lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, <span class="comment">// standard parallels</span>
k1 = 1, <span class="comment">// scale</span>
@@ -131,8 +145,7 @@ Static Public Attributes</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00058">58</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+</pre></div><p><a href="ConicProj.1.html">ConicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> and <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a08edd228ba175a5ae71d783c4a712e50"></a><!-- doxytag: member="GeographicLib::AlbersEqualArea::AlbersEqualArea" ref="a08edd228ba175a5ae71d783c4a712e50" args="(real a, real f, real stdlat, real k0)" -->
<div class="memitem">
@@ -361,7 +374,7 @@ Static Public Attributes</h2></td></tr>
<p>Definition at line <a class="el" href="AlbersEqualArea_8cpp_source.html#l00439">439</a> of file <a class="el" href="AlbersEqualArea_8cpp_source.html">AlbersEqualArea.cpp</a>.</p>
-<p>References <a class="el" href="AlbersEqualArea_8cpp_source.html#l00379">Forward()</a>, <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>, <a class="el" href="AlbersEqualArea_8cpp_source.html#l00379">Forward()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
</div>
</div>
@@ -561,7 +574,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#aac57f3a9c0c08fb897a1e37034d127c1">AlbersEqualArea::Forward</a> without returning the convergence and scale. </p>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00229">229</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00233">233</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -609,7 +622,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a577a9f43be8c1e238a4d56158acf8625">AlbersEqualArea::Reverse</a> without returning the convergence and scale. </p>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00239">239</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00243">243</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -628,7 +641,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00252">252</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00256">256</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -647,27 +660,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00258">258</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a1d0ad953a852d4cdb9faa731b5530d70"></a><!-- doxytag: member="GeographicLib::AlbersEqualArea::InverseFlattening" ref="a1d0ad953a852d4cdb9faa731b5530d70" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::AlbersEqualArea::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00264">264</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00262">262</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -687,7 +680,7 @@ Static Public Attributes</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>latitude of the origin for the projection (degrees).</dd></dl>
<p>This is the latitude of minimum azimuthal scale and equals the <em>stdlat</em> in the 1-parallel constructor and lies between <em>stdlat1</em> and <em>stdlat2</em> in the 2-parallel constructors. </p>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00273">273</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00279">279</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -706,7 +699,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>central scale for the projection. This is the azimuthal scale on the latitude of origin. </dd></dl>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00279">279</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00285">285</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -723,7 +716,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> with the WGS84 ellipsoid, <em>stdlat</em> = 0, and <em>k0</em> = 1. This degenerates to the cylindrical equal area projection. </p>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00287">287</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00293">293</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -739,7 +732,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> with the WGS84 ellipsoid, <em>stdlat</em> = 90<sup>o</sup>, and <em>k0</em> = 1. This degenerates to the Lambert azimuthal equal area projection. </p>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00294">294</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00300">300</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -755,7 +748,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a> with the WGS84 ellipsoid, <em>stdlat</em> = -90<sup>o</sup>, and <em>k0</em> = 1. This degenerates to the Lambert azimuthal equal area projection. </p>
-<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00301">301</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AlbersEqualArea_8hpp_source.html#l00307">307</a> of file <a class="el" href="AlbersEqualArea_8hpp_source.html">AlbersEqualArea.hpp</a>.</p>
</div>
</div>
@@ -764,8 +757,13 @@ Static Public Attributes</h2></td></tr>
<li><a class="el" href="AlbersEqualArea_8cpp_source.html">AlbersEqualArea.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1AzimuthalEquidistant-members.html b/doc/html/classGeographicLib_1_1AzimuthalEquidistant-members.html
index f53c2d4..7bb45e5 100644
--- a/doc/html/classGeographicLib_1_1AzimuthalEquidistant-members.html
+++ b/doc/html/classGeographicLib_1_1AzimuthalEquidistant-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,13 +68,17 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">Forward</a>(real lat0, real lon0, real lat, real lon, real &x, real &y, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a950431c3d269fb82e9410f332c401786">Forward</a>(real lat0, real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a26d1b6fe3af8750babaeb60efdfec062">Reverse</a>(real lat0, real lon0, real x, real y, real &lat, real &lon, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a6b86b19f2e1c773e028e386a0f5e00e0">Reverse</a>(real lat0, real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">GeographicLib::AzimuthalEquidistant</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1AzimuthalEquidistant.html b/doc/html/classGeographicLib_1_1AzimuthalEquidistant.html
index 3b5f38a..00304d7 100644
--- a/doc/html/classGeographicLib_1_1AzimuthalEquidistant.html
+++ b/doc/html/classGeographicLib_1_1AzimuthalEquidistant.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::AzimuthalEquidistant Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,12 +83,11 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a42c4103265af804395b8b5260a4c25e0">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a3f300fcc10aeee9dc88ff93fb991f191">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">InverseFlattening</a> () const throw ()</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Azimuthal Equidistant Projection. </p>
<p>Azimuthal equidistant projection centered at an arbitrary position on the ellipsoid. For a point in projected space (<em>x</em>, <em>y</em>), the geodesic distance from the center position is hypot(<em>x</em>, <em>y</em>) and the azimuth of the geodesic from the center point is atan2(<em>x</em>, <em>y</em>). The Forward and Reverse methods also return the azimuth <em>azi</em> of the geodesic at (<em>x</em>, <em>y</em>) and reciprocal scale <em>rk</em> in the azimuthal direction which, [...]
-<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>.</p>
+<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>.</p>
<p>Example of use: </p>
<div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::AzimuthalEquidistant class</span>
<span class="comment">// $Id: d018fda4dc3289b06b9e6fe8cda16638430d9213 $</span>
@@ -88,7 +102,7 @@ Public Member Functions</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+ <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
<span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
<span class="keyword">const</span> <span class="keywordtype">double</span> lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; <span class="comment">// Paris</span>
<a class="code" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a> proj(geod);
@@ -113,8 +127,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00039">39</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+</pre></div><p><a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a>, <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a>, and <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a125571cdeed68d10192611cc12e221ce"></a><!-- doxytag: member="GeographicLib::AzimuthalEquidistant::AzimuthalEquidistant" ref="a125571cdeed68d10192611cc12e221ce" args="(const Geodesic &earth=Geodesic::WGS84)" -->
<div class="memitem">
@@ -138,7 +151,7 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00052">52</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00056">56</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
</div>
</div>
@@ -357,7 +370,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a8b4951b7c732f97aedeb8e869c9349d2">AzimuthalEquidistant::Forward</a> without returning the azimuth and scale. </p>
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00103">103</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00107">107</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
</div>
</div>
@@ -411,7 +424,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#a26d1b6fe3af8750babaeb60efdfec062">AzimuthalEquidistant::Reverse</a> without returning the azimuth and scale. </p>
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00112">112</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00116">116</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
</div>
</div>
@@ -430,7 +443,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00125">125</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00129">129</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
</div>
</div>
@@ -449,27 +462,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00131">131</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ac4ec606131221d3eb0acc1ae00a34c63"></a><!-- doxytag: member="GeographicLib::AzimuthalEquidistant::InverseFlattening" ref="ac4ec606131221d3eb0acc1ae00a34c63" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::AzimuthalEquidistant::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00137">137</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
+<p>Definition at line <a class="el" href="AzimuthalEquidistant_8hpp_source.html#l00135">135</a> of file <a class="el" href="AzimuthalEquidistant_8hpp_source.html">AzimuthalEquidistant.hpp</a>.</p>
</div>
</div>
@@ -478,8 +471,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="AzimuthalEquidistant_8cpp_source.html">AzimuthalEquidistant.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1CassiniSoldner-members.html b/doc/html/classGeographicLib_1_1CassiniSoldner-members.html
index 5856cf1..bf7e568 100644
--- a/doc/html/classGeographicLib_1_1CassiniSoldner-members.html
+++ b/doc/html/classGeographicLib_1_1CassiniSoldner-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -55,7 +70,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a37656c7551b10ad75a40758d0bba570d">Forward</a>(real lat, real lon, real &x, real &y, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a87bf8d3b416bbfd8b7a2c5269245e693">Forward</a>(real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">Init</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a2aa51120af199603f57d54b8c9a0bdde">LatitudeOrigin</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">LongitudeOrigin</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
@@ -63,8 +77,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aea917b790f577026184a0bb262102db4">Reverse</a>(real x, real y, real &lat, real &lon, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a27a675e995d2c1fdd0ab4c0ab397e065">Reverse</a>(real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">GeographicLib::CassiniSoldner</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1CassiniSoldner.html b/doc/html/classGeographicLib_1_1CassiniSoldner.html
index f910b37..4e80438 100644
--- a/doc/html/classGeographicLib_1_1CassiniSoldner.html
+++ b/doc/html/classGeographicLib_1_1CassiniSoldner.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::CassiniSoldner Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,13 +88,12 @@ Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">LongitudeOrigin</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a0019eeb70b5493de687c5cc36ae7f43c">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a8d618d5abe71a49fc5ec4f2801d22555">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">InverseFlattening</a> () const throw ()</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Cassini-Soldner Projection. </p>
<p>Cassini-Soldner projection centered at an arbitrary position, <em>lat0</em>, <em>lon0</em>, on the ellipsoid. This projection is a transverse cylindrical equidistant projection. The projection from (<em>lat</em>, <em>lon</em>) to easting and northing (<em>x</em>, <em>y</em>) is defined by geodesics as follows. Go north along a geodesic a distance <em>y</em> from the central point; then turn clockwise 90<sup>o</sup> and go a distance <em>x</em> along a geodesic. (Although the initial h [...]
<p>Because of the properties of geodesics, the (<em>x</em>, <em>y</em>) grid is orthogonal. The scale in the easting direction is unity. The scale, <em>k</em>, in the northing direction is unity on the central meridian and increases away from the central meridian. The projection routines return <em>azi</em>, the true bearing of the easting direction, and <em>rk</em> = 1/<em>k</em>, the reciprocal of the scale in the northing direction.</p>
-<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. The determination of (<em>lat1</em>, <em>lon1</em>) in the forward projection is by solving the inverse geodesic [...]
+<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. The determination of (<em>lat1</em>, <em>lon1</em>) in the forward projection is by solving the inverse geodesic [...]
<p>Example of use: </p>
<div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::CassiniSoldner class</span>
<span class="comment">// $Id: f1d1d192c9449d198226a19cfbdc37d0b14ea52f $</span>
@@ -94,7 +108,7 @@ Public Member Functions</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+ <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
<span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
<span class="keyword">const</span> <span class="keywordtype">double</span> lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; <span class="comment">// Paris</span>
<a class="code" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a> proj(lat0, lon0, geod);
@@ -119,8 +133,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00066">66</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+</pre></div><p><a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a>, <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a>, and <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a948f9d934615c4120eb23740635200bc"></a><!-- doxytag: member="GeographicLib::CassiniSoldner::CassiniSoldner" ref="a948f9d934615c4120eb23740635200bc" args="(const Geodesic &earth=Geodesic::WGS84)" -->
<div class="memitem">
@@ -145,7 +158,7 @@ Public Member Functions</h2></td></tr>
</dl>
<p>This constructor makes an "uninitialized" object. Call Reset to set the central latitude and longitude, prior to calling Forward and Reverse. </p>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00109">109</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00113">113</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -190,7 +203,7 @@ Public Member Functions</h2></td></tr>
</dl>
<p><em>lat0</em> should be in the range [-90, 90] and <em>lon0</em> should be in the range [-180, 360]. </p>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00123">123</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00127">127</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -405,7 +418,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a37656c7551b10ad75a40758d0bba570d">CassiniSoldner::Forward</a> without returning the azimuth and scale. </p>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00179">179</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00183">183</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -447,7 +460,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aea917b790f577026184a0bb262102db4">CassiniSoldner::Reverse</a> without returning the azimuth and scale. </p>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00188">188</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00192">192</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -466,7 +479,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00200">200</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00204">204</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -485,7 +498,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>lat0</em> the latitude of origin (degrees). </dd></dl>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00205">205</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00209">209</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -504,7 +517,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>lon0</em> the longitude of origin (degrees). </dd></dl>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00211">211</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00215">215</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -523,7 +536,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00218">218</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00222">222</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -542,27 +555,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00224">224</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aae869d96e9267c13e675e3a3804eb0e2"></a><!-- doxytag: member="GeographicLib::CassiniSoldner::InverseFlattening" ref="aae869d96e9267c13e675e3a3804eb0e2" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::CassiniSoldner::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00230">230</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
+<p>Definition at line <a class="el" href="CassiniSoldner_8hpp_source.html#l00228">228</a> of file <a class="el" href="CassiniSoldner_8hpp_source.html">CassiniSoldner.hpp</a>.</p>
</div>
</div>
@@ -571,8 +564,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="CassiniSoldner_8cpp_source.html">CassiniSoldner.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1CircularEngine-members.html b/doc/html/classGeographicLib_1_1CircularEngine-members.html
index c041a05..055384e 100644
--- a/doc/html/classGeographicLib_1_1CircularEngine-members.html
+++ b/doc/html/classGeographicLib_1_1CircularEngine-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -58,8 +73,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">operator()</a>(real lon, real &gradx, real &grady, real &gradz) const </td><td><a class="el" href="classGeographicLib_1_1CircularEngine.html">GeographicLib::CircularEngine</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1CircularEngine.html#ab89064f7f3c32a745c72d8c3188f7485">SphericalEngine</a> class</td><td><a class="el" href="classGeographicLib_1_1CircularEngine.html">GeographicLib::CircularEngine</a></td><td><code> [friend]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1CircularEngine.html b/doc/html/classGeographicLib_1_1CircularEngine.html
index b427771..a2767e4 100644
--- a/doc/html/classGeographicLib_1_1CircularEngine.html
+++ b/doc/html/classGeographicLib_1_1CircularEngine.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::CircularEngine Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -74,7 +89,7 @@ Friends</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Spherical Harmonic sums for a circle. </p>
-<p>The class is a companion to <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>. If the results of a spherical harmonic sum are needed for several points on a circle of constant latitude <em>lat</em> and height <em>h</em>, then <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">SphericalEngine::Circle</a> can compute the inner sum, which is independent of [...]
+<p>The class is a companion to <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>. If the results of a spherical harmonic sum are needed for several points on a circle of constant latitude <em>lat</em> and height <em>h</em>, then <a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">SphericalEngine::Circle</a> can compute the inner sum, which is independent of [...]
<p><a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> is tightly linked to the internals of <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>. For that reason, the constructor for this class is private. Use <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a2b2b2ad35bba090a4956693ba5ef0f32">SphericalHarmonic::Ci [...]
<p><a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> stores the coefficients needed to allow the summation over order to be performed in 2 or 6 vectors of length <em>M</em> + 1 (depending on whether gradients are to be calculated). For this reason the constructor may throw a bad_alloc exception.</p>
<p>Example of use: </p>
@@ -102,7 +117,7 @@ Friends</h2></td></tr>
vector<double> S(sa, sa + N * (N + 1) / 2);
<span class="keywordtype">double</span> a = 1;
<a class="code" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> h(C, S, N, a);
- <span class="keywordtype">double</span> x = 2, y = 3, z = 1, p = <a class="code" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">Math::hypot</a>(x, y);
+ <span class="keywordtype">double</span> x = 2, y = 3, z = 1, p = <a class="code" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">Math::hypot</a>(x, y);
<a class="code" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> circ = h.Circle(p, z, <span class="keyword">true</span>);
<span class="keywordtype">double</span> v, vx, vy, vz;
v = circ(x/p, y/p, vx, vy, vz);
@@ -114,9 +129,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="CircularEngine_8hpp_source.html#l00053">53</a> of file <a class="el" href="CircularEngine_8hpp_source.html">CircularEngine.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a91dd2b9cc408e35f8cb6482cdf3aadbf"></a><!-- doxytag: member="GeographicLib::CircularEngine::CircularEngine" ref="a91dd2b9cc408e35f8cb6482cdf3aadbf" args="()" -->
<div class="memitem">
<div class="memproto">
@@ -367,8 +380,13 @@ Friends</h2></td></tr>
<li><a class="el" href="CircularEngine_8cpp_source.html">CircularEngine.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Constants-members.html b/doc/html/classGeographicLib_1_1Constants-members.html
index b855b0e..b44d03e 100644
--- a/doc/html/classGeographicLib_1_1Constants-members.html
+++ b/doc/html/classGeographicLib_1_1Constants-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,38 +72,42 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a51cf3e97984ac301b1f27b667b360be0">fathom</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ac69f40e7e56c71bc72011c7591f7bef9">foot</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">furlong</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">GRS80_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">GRS80_GM</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">GRS80_J2</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">GRS80_omega</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">GRS80_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">GRS80_GM</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">GRS80_J2</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">GRS80_omega</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a4cc4ae77e3136d7784cd7c69d6927adc">hectare</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a4ec5a9d91ab0ccbd3bd921cda4bfc836">kilometer</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a49cb7b828f7c85c36761d47b8db6518c">mile</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">nauticalmile</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">square_kilometer</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">square_meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">square_meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a702b928c9a29dbcc7324b9d835b38d94">square_meter</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">square_mile</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a5acf6b2c23d1c9ddf140a6b4e588e88a">square_nauticalmile</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a7faf6e7435791c0a8061296a79c0be08">surveyfoot</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">UPS_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">UPS_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">UPS_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">UTM_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">UTM_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">UTM_k0</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">WGS84_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">WGS84_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">WGS84_a</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">WGS84_f</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">WGS84_f</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">WGS84_f</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">WGS84_GM</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">WGS84_omega</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#aa886c9955848d0fe9204b1a14f7ae43f">WGS84_r</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">WGS84_GM</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">WGS84_omega</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">WGS84_r</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Constants.html#a00057328caa45bc216d18243786920c2">yard</a>()</td><td><a class="el" href="classGeographicLib_1_1Constants.html">GeographicLib::Constants</a></td><td><code> [inline, static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Constants.html b/doc/html/classGeographicLib_1_1Constants.html
index fd0676a..9773fc4 100644
--- a/doc/html/classGeographicLib_1_1Constants.html
+++ b/doc/html/classGeographicLib_1_1Constants.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::Constants Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -65,40 +80,38 @@ Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a04858f922295d2a04bb021eecac07179">arcsecond</a> () throw ()</td></tr>
<tr><td colspan="2"><div class="groupHeader">Ellipsoid parameters</div></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">WGS84_a</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">WGS84_a</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">WGS84_a</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">WGS84_f</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">WGS84_f</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#acd335c7f28440e0774666cedffed84f0">WGS84_f</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">WGS84_GM</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">WGS84_GM</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">WGS84_omega</a> () throw ()</td></tr>
-<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#aa886c9955848d0fe9204b1a14f7ae43f">WGS84_r</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">WGS84_omega</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">WGS84_r</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">GRS80_a</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">GRS80_a</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">GRS80_GM</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">GRS80_GM</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">GRS80_omega</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">GRS80_omega</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">GRS80_J2</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">GRS80_J2</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">UTM_k0</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">UTM_k0</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#aebbe37ebfb407a851f72caa95e5dc94f">UTM_k0</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">UPS_k0</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">UPS_k0</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">UPS_k0</a> () throw ()</td></tr>
<tr><td colspan="2"><div class="groupHeader">SI units</div></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">meter</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">meter</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#afeffc10d6b8171b39a50949cac149063">meter</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a4ec5a9d91ab0ccbd3bd921cda4bfc836">kilometer</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">nauticalmile</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">square_meter</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">square_meter</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a702b928c9a29dbcc7324b9d835b38d94">square_meter</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a4cc4ae77e3136d7784cd7c69d6927adc">hectare</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">square_kilometer</a> () throw ()</td></tr>
@@ -131,7 +144,7 @@ Static Public Member Functions</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- cout << <a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>() << <span class="stringliteral">" 1/"</span> << 1/<a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>() << <span class="stringliteral">"\n"</span>;
+ cout << <a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>() << <span class="stringliteral">" 1/"</span> << 1/<a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>() << <span class="stringliteral">"\n"</span>;
}
<span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
@@ -139,9 +152,7 @@ Static Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00072">72</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
-</div><hr/><h2>Member Function Documentation</h2>
+</pre></div> </div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a26ff02acd8141a815428cddf0ff3ff66"></a><!-- doxytag: member="GeographicLib::Constants::degree" ref="a26ff02acd8141a815428cddf0ff3ff66" args="()" -->
<div class="memitem">
<div class="memproto">
@@ -155,7 +166,7 @@ Static Public Member Functions</h2></td></tr>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">Math::degree<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">Math::degree<real>()</a>. </p>
<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00081">81</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
@@ -199,7 +210,7 @@ Static Public Member Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="af7abfdedede7d8180d0c2c4015b72194"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_a" ref="af7abfdedede7d8180d0c2c4015b72194" args="()" -->
+<a class="anchor" id="ae12127984ac6713823746d917b4abfa7"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_a" ref="ae12127984ac6713823746d917b4abfa7" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -239,13 +250,13 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">WGS84_a<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">WGS84_a<real>()</a>. </p>
<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00105">105</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a2e95ed8ac2738590348f9f3bbaa3fa41"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_f" ref="a2e95ed8ac2738590348f9f3bbaa3fa41" args="()" -->
+<a class="anchor" id="acc5244425bb484594be51b27d56cd335"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_f" ref="acc5244425bb484594be51b27d56cd335" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -285,13 +296,13 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">WGS84_f<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">WGS84_f<real>()</a>. </p>
<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00115">115</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aa6cbaa16e143ebbe8b2c226492c09fbc"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_GM" ref="aa6cbaa16e143ebbe8b2c226492c09fbc" args="()" -->
+<a class="anchor" id="af7806106d7bd289bb63d5290e79c87a6"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_GM" ref="af7806106d7bd289bb63d5290e79c87a6" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -318,7 +329,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="a60299d9299292f18312eee2870bdf9ba"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_omega" ref="a60299d9299292f18312eee2870bdf9ba" args="()" -->
+<a class="anchor" id="a98c114d5a6ca42d3e4ece8595a0c2180"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_omega" ref="a98c114d5a6ca42d3e4ece8595a0c2180" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -345,28 +356,6 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="aa886c9955848d0fe9204b1a14f7ae43f"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_r" ref="aa886c9955848d0fe9204b1a14f7ae43f" args="()" -->
-<div class="memitem">
-<div class="memproto">
-<div class="memtemplate">
-template<typename T > </div>
- <table class="memname">
- <tr>
- <td class="memname">static T GeographicLib::Constants::WGS84_r </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd>the reciprocal flattening of WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00134">134</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
-
-</div>
-</div>
<a class="anchor" id="a199810de7ff3351be6473d20ef045789"></a><!-- doxytag: member="GeographicLib::Constants::WGS84_r" ref="a199810de7ff3351be6473d20ef045789" args="()" -->
<div class="memitem">
<div class="memproto">
@@ -380,13 +369,12 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p><b>DEPRECATED</b> A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#aa886c9955848d0fe9204b1a14f7ae43f">WGS84_r<real>()</a>. </p>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00140">140</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00142">142</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ac0ae4c03001a7fb4dea386d7539d38d3"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_a" ref="ac0ae4c03001a7fb4dea386d7539d38d3" args="()" -->
+<a class="anchor" id="a9b955c3556dcfcebce6a2926bfeaf464"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_a" ref="a9b955c3556dcfcebce6a2926bfeaf464" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -409,11 +397,11 @@ template<typename T > </div>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the equatorial radius of GRS80 ellipsoid, <em>a</em>, in m. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00145">145</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00147">147</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a436996122a60fde693eef527c74b3f05"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_GM" ref="a436996122a60fde693eef527c74b3f05" args="()" -->
+<a class="anchor" id="a7541474ca70cbec7fccb08d3e3fbfe31"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_GM" ref="a7541474ca70cbec7fccb08d3e3fbfe31" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -436,11 +424,11 @@ template<typename T > </div>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the gravitational constant of the GRS80 ellipsoid, <em>GM</em>, in m<sup>3</sup> s<sup>-2</sup>. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00152">152</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00154">154</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ae714c61fde82178814973c94038b9b41"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_omega" ref="ae714c61fde82178814973c94038b9b41" args="()" -->
+<a class="anchor" id="a9caea97ab2be0959c7972155141bfd1b"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_omega" ref="a9caea97ab2be0959c7972155141bfd1b" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -464,11 +452,11 @@ template<typename T > </div>
<dl class="return"><dt><b>Returns:</b></dt><dd>the angular velocity of the the GRS80 ellipsoid, <em>omega</em>, in rad s<sup>-1</sup>.</dd></dl>
<p>This is about 2*pi*366.25 / (365.25*24*3600) rad s<sup>-1</sup>. 365.25 is the number of days in a Julian year and 365.35/366.25 converts from solar days to sidereal days. Using the number of days in a Gregorian year (365.2425) results in a worse approximation (because the Gregorian year includes the precession of the earth's axis). </p>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00165">165</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00167">167</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ae37450bc3e1137946cdf874affa2e44c"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_J2" ref="ae37450bc3e1137946cdf874affa2e44c" args="()" -->
+<a class="anchor" id="a59c7a1d298eb72256119894b67470974"></a><!-- doxytag: member="GeographicLib::Constants::GRS80_J2" ref="a59c7a1d298eb72256119894b67470974" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -491,11 +479,11 @@ template<typename T > </div>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the dynamical form factor of the GRS80 ellipsoid, <em>J</em><sub>2</sub>. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00172">172</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00174">174</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a76c804fc143b26086a296d05ed09fe4f"></a><!-- doxytag: member="GeographicLib::Constants::UTM_k0" ref="a76c804fc143b26086a296d05ed09fe4f" args="()" -->
+<a class="anchor" id="ab5cc487ab160c0a213fdf8e12cde198a"></a><!-- doxytag: member="GeographicLib::Constants::UTM_k0" ref="ab5cc487ab160c0a213fdf8e12cde198a" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -518,7 +506,7 @@ template<typename T > </div>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the central scale factor for UTM (0.9996). </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00178">178</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00180">180</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -535,13 +523,13 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">UTM_k0<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">UTM_k0<real>()</a>. </p>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00183">183</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00185">185</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="ae48baa0a561e58acb2574f07e7acda1f"></a><!-- doxytag: member="GeographicLib::Constants::UPS_k0" ref="ae48baa0a561e58acb2574f07e7acda1f" args="()" -->
+<a class="anchor" id="a3fe287ab1a0847f5392c1aaf9c5e635a"></a><!-- doxytag: member="GeographicLib::Constants::UPS_k0" ref="a3fe287ab1a0847f5392c1aaf9c5e635a" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -564,7 +552,7 @@ template<typename T > </div>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the central scale factor for UPS (0.994). </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00188">188</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00190">190</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -581,13 +569,13 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">UPS_k0<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">UPS_k0<real>()</a>. </p>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00193">193</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00195">195</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aa1f90367063bc442ef165907650ef1f0"></a><!-- doxytag: member="GeographicLib::Constants::meter" ref="aa1f90367063bc442ef165907650ef1f0" args="()" -->
+<a class="anchor" id="ac1b17e7cf67ef42b9b91f3677c2eaa75"></a><!-- doxytag: member="GeographicLib::Constants::meter" ref="ac1b17e7cf67ef42b9b91f3677c2eaa75" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -611,7 +599,7 @@ template<typename T > </div>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a meter.</dd></dl>
<p>This is unity, but this lets the internal system of units be changed if necessary. </p>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00206">206</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00208">208</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -628,9 +616,9 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#aa1f90367063bc442ef165907650ef1f0">meter<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ac1b17e7cf67ef42b9b91f3677c2eaa75">meter<real>()</a>. </p>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00210">210</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00212">212</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -649,7 +637,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a kilometer. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00214">214</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00216">216</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -668,11 +656,11 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a nautical mile (approximately 1 arc minute) </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00220">220</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00222">222</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a69b9a03f52615661b8e16f4aaa05425a"></a><!-- doxytag: member="GeographicLib::Constants::square_meter" ref="a69b9a03f52615661b8e16f4aaa05425a" args="()" -->
+<a class="anchor" id="ab92200b36f9d306a2710738c6d9bc705"></a><!-- doxytag: member="GeographicLib::Constants::square_meter" ref="ab92200b36f9d306a2710738c6d9bc705" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -696,7 +684,7 @@ template<typename T > </div>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a square meter.</dd></dl>
<p>This is unity, but this lets the internal system of units be changed if necessary. </p>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00230">230</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00232">232</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -713,9 +701,9 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">square_meter<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">square_meter<real>()</a>. </p>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00235">235</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00237">237</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -734,7 +722,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a hectare. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00240">240</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00242">242</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -753,7 +741,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a square kilometer. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00245">245</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00247">247</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -772,7 +760,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a square nautical mile. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00250">250</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00252">252</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -791,7 +779,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in an international foot. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00260">260</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00262">262</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -810,7 +798,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a yard. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00265">265</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00267">267</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -829,7 +817,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a fathom. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00269">269</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00271">271</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -848,7 +836,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a chain. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00273">273</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00275">275</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -867,7 +855,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a furlong. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00277">277</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00279">279</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -886,7 +874,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a statute mile. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00281">281</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00283">283</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -905,7 +893,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in an acre. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00285">285</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00287">287</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -924,7 +912,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of square meters in a square statute mile. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00289">289</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00291">291</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -943,7 +931,7 @@ template<typename T > </div>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of meters in a US survey foot. </dd></dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00298">298</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00300">300</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -951,8 +939,13 @@ template<typename T > </div>
<li><a class="el" href="Constants_8hpp_source.html">Constants.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1DMS-members.html b/doc/html/classGeographicLib_1_1DMS-members.html
index 2bc893f..f825568 100644
--- a/doc/html/classGeographicLib_1_1DMS-members.html
+++ b/doc/html/classGeographicLib_1_1DMS-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,14 +68,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> enum name</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">Decode</a>(const std::string &dms, flag &ind)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a4987f8eb6c1ba5402eb25d6225ab58e1">Decode</a>(real d, real m=0, real s=0)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#aab2493a4f9bcf1b8fa8b636361feca47">Decode</a>(const std::string &str)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">DecodeAngle</a>(const std::string &angstr)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DecodeAzimuth</a>(const std::string &azistr)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">DecodeFraction</a>(const std::string &str)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DecodeLatLon</a>(const std::string &dmsa, const std::string &dmsb, real &lat, real &lon, bool swaplatlong=false)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09a8ee59944227e74901b71f27410d70781">DEGREE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">Encode</a>(real angle, component trailing, unsigned prec, flag ind, char dmssep)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">Encode</a>(real angle, component trailing, unsigned prec, flag ind=NONE)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a87dd4a3eea0be6d3a45c8390e725aeb9">Encode</a>(real angle, unsigned prec, flag ind=NONE)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#aeb9d338b12e885092a611bda7e52f9f4">Encode</a>(real angle, unsigned prec, flag ind=NONE, char dmssep=char(0))</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">Encode</a>(real ang, real &d, real &m)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">Encode</a>(real ang, real &d, real &m, real &s)</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> enum name</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
@@ -71,8 +85,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">NUMBER</a> enum value</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09a10c28c85ddfa71db5f1d46d362333075">SECOND</a> enum value</td><td><a class="el" href="classGeographicLib_1_1DMS.html">GeographicLib::DMS</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1DMS.html b/doc/html/classGeographicLib_1_1DMS.html
index 49b2ec7..c873efe 100644
--- a/doc/html/classGeographicLib_1_1DMS.html
+++ b/doc/html/classGeographicLib_1_1DMS.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::DMS Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -78,13 +93,12 @@ Public Types</h2></td></tr>
Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">Decode</a> (const std::string &dms, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> &ind)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a4987f8eb6c1ba5402eb25d6225ab58e1">Decode</a> (real d, real m=0, real s=0) throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#aab2493a4f9bcf1b8fa8b636361feca47">Decode</a> (const std::string &str)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">DecodeFraction</a> (const std::string &str)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">DecodeLatLon</a> (const std::string &dmsa, const std::string &dmsb, real &lat, real &lon, bool swaplatlong=false)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">DecodeAngle</a> (const std::string &angstr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">DecodeAzimuth</a> (const std::string &azistr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">Encode</a> (real angle, <a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, unsigned prec, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind, char dmssep)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">Encode</a> (real angle, <a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> trailing, unsigned prec, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind=NONE)</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a87dd4a3eea0be6d3a45c8390e725aeb9">Encode</a> (real angle, unsigned prec, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind=NONE)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#aeb9d338b12e885092a611bda7e52f9f4">Encode</a> (real angle, unsigned prec, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> ind=NONE, char dmssep=char(0))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">Encode</a> (real ang, real &d, real &m) throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1DMS.html#af27df7ef6ac42bf0e6341749b4b96eec">Encode</a> (real ang, real &d, real &m, real &s) throw ()</td></tr>
</table>
@@ -106,13 +120,13 @@ Static Public Member Functions</h2></td></tr>
<span class="keywordflow">try</span> {
{
<span class="keywordtype">string</span> dms = <span class="stringliteral">"30d14'45.6\"S"</span>;
- <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> type;
+ <a class="code" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a><a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">::flag</a> type;
<span class="keywordtype">double</span> ang = <a class="code" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">DMS::Decode</a>(dms, type);
cout << type << <span class="stringliteral">" "</span> << ang << <span class="stringliteral">"\n"</span>;
}
{
<span class="keywordtype">double</span> ang = -30.245715;
- <span class="keywordtype">string</span> dms = <a class="code" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a>(ang, 6, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>);
+ <span class="keywordtype">string</span> dms = <a class="code" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a>(ang, 6, <a class="code" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a6b5a0451ce4c199bd82f5d87d50b523b">DMS::LATITUDE</a>);
cout << dms << <span class="stringliteral">"\n"</span>;
}
}
@@ -122,9 +136,7 @@ Static Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00036">36</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a7a1101fd2577636863753baae3e54869"></a><!-- doxytag: member="GeographicLib::DMS::flag" ref="a7a1101fd2577636863753baae3e54869" args="" -->
<div class="memitem">
<div class="memproto">
@@ -312,60 +324,6 @@ Static Public Member Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="aab2493a4f9bcf1b8fa8b636361feca47"></a><!-- doxytag: member="GeographicLib::DMS::Decode" ref="aab2493a4f9bcf1b8fa8b636361feca47" args="(const std::string &str)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::DMS::Decode </td>
- <td>(</td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"><em>str</em></td><td>)</td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> (use <a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">Utility::num</a>, instead). Convert a string to a real number.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>string input. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>decoded number. </dd></dl>
-
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00201">201</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="adb889bc03d4370fbc99c6f8fd34b12f9"></a><!-- doxytag: member="GeographicLib::DMS::DecodeFraction" ref="adb889bc03d4370fbc99c6f8fd34b12f9" args="(const std::string &str)" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::DMS::DecodeFraction </td>
- <td>(</td>
- <td class="paramtype">const std::string & </td>
- <td class="paramname"><em>str</em></td><td>)</td>
- <td><code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> (use <a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">Utility::fract</a>, instead). Convert a string to a real number treating the case where the string is a simple fraction.</p>
-<dl><dt><b>Parameters:</b></dt><dd>
- <table class="params">
- <tr><td class="paramdir">[in]</td><td class="paramname">str</td><td>string input. </td></tr>
- </table>
- </dd>
-</dl>
-<dl class="return"><dt><b>Returns:</b></dt><dd>decoded number. </dd></dl>
-
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00213">213</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
-
-</div>
-</div>
<a class="anchor" id="a2d38adcfecb7a41865092e870e19730f"></a><!-- doxytag: member="GeographicLib::DMS::DecodeLatLon" ref="a2d38adcfecb7a41865092e870e19730f" args="(const std::string &dmsa, const std::string &dmsb, real &lat, real &lon, bool swaplatlong=false)" -->
<div class="memitem">
<div class="memproto">
@@ -487,7 +445,7 @@ Static Public Member Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a3e36baa6114d46f82a8900d002784369"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="a3e36baa6114d46f82a8900d002784369" args="(real angle, component trailing, unsigned prec, flag ind=NONE)" -->
+<a class="anchor" id="a0777e26ef4507f8123549723bf3cb56f"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="a0777e26ef4507f8123549723bf3cb56f" args="(real angle, component trailing, unsigned prec, flag ind, char dmssep)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -513,7 +471,13 @@ Static Public Member Functions</h2></td></tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> </td>
- <td class="paramname"><em>ind</em> = <code>NONE</code> </td>
+ <td class="paramname"><em>ind</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char </td>
+ <td class="paramname"><em>dmssep</em> </td>
</tr>
<tr>
<td></td>
@@ -530,6 +494,7 @@ Static Public Member Functions</h2></td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">trailing</td><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">DMS::component</a> value indicating the trailing units on the string and this is given as a decimal number if necessary. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>the number of digits after the decimal point for the trailing component. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ind</td><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> value indicated additional formatting. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dmssep</td><td>if non-null, use as the <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> separator character (instead of d, ', " delimiters). </td></tr>
</table>
</dd>
</dl>
@@ -545,16 +510,16 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="DMS_8cpp_source.html#l00261">261</a> of file <a class="el" href="DMS_8cpp_source.html">DMS.cpp</a>.</p>
-<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00043">AzimuthString()</a>, <a class="el" href="Geod_8cpp_source.html#l00049">DistanceStrings()</a>, <a class="el" href="Geod_8cpp_source.html#l00034">LatLonString()</a>, and <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
+<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00034">LatLonString()</a>, <a class="el" href="Geod_8cpp_source.html#l00043">AzimuthString()</a>, <a class="el" href="Geod_8cpp_source.html#l00049">DistanceStrings()</a>, and <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
</div>
</div>
-<a class="anchor" id="a87dd4a3eea0be6d3a45c8390e725aeb9"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="a87dd4a3eea0be6d3a45c8390e725aeb9" args="(real angle, unsigned prec, flag ind=NONE)" -->
+<a class="anchor" id="a3e36baa6114d46f82a8900d002784369"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="a3e36baa6114d46f82a8900d002784369" args="(real angle, component trailing, unsigned prec, flag ind=NONE)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">static std::string GeographicLib::DMS::Encode </td>
+ <td class="memname">string GeographicLib::DMS::Encode </td>
<td>(</td>
<td class="paramtype">real </td>
<td class="paramname"><em>angle</em>, </td>
@@ -562,6 +527,12 @@ Static Public Member Functions</h2></td></tr>
<tr>
<td class="paramkey"></td>
<td></td>
+ <td class="paramtype"><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">component</a> </td>
+ <td class="paramname"><em>trailing</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>prec</em>, </td>
</tr>
@@ -574,6 +545,59 @@ Static Public Member Functions</h2></td></tr>
<tr>
<td></td>
<td>)</td>
+ <td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Convert angle (in degrees) into a <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> string (using d, ', and ").</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">angle</td><td>input angle (degrees) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">trailing</td><td><a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09">DMS::component</a> value indicating the trailing units on the string and this is given as a decimal number if necessary. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>the number of digits after the decimal point for the trailing component. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ind</td><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> value indicated additional formatting. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd>formatted string</dd></dl>
+<p><b>COMPATIBILITY NOTE:</b> This function calls <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">Encode(real, component, unsigned, flag, char)</a> with a 5th argument of char(0). At some point, <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">Encode(real, component, unsigned, flag)</a> and will be withdrawn and the interface to <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f"> [...]
+
+<p>Definition at line <a class="el" href="DMS_8cpp_source.html#l00338">338</a> of file <a class="el" href="DMS_8cpp_source.html">DMS.cpp</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aeb9d338b12e885092a611bda7e52f9f4"></a><!-- doxytag: member="GeographicLib::DMS::Encode" ref="aeb9d338b12e885092a611bda7e52f9f4" args="(real angle, unsigned prec, flag ind=NONE, char dmssep=char(0))" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static std::string GeographicLib::DMS::Encode </td>
+ <td>(</td>
+ <td class="paramtype">real </td>
+ <td class="paramname"><em>angle</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">unsigned </td>
+ <td class="paramname"><em>prec</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">flag</a> </td>
+ <td class="paramname"><em>ind</em> = <code>NONE</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char </td>
+ <td class="paramname"><em>dmssep</em> = <code>char(0)</code> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
<td></td><td><code> [inline, static]</code></td>
</tr>
</table>
@@ -585,13 +609,14 @@ Static Public Member Functions</h2></td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">angle</td><td>input angle (degrees) </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>the precision relative to 1 degree. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">ind</td><td><a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869">DMS::flag</a> value indicated additional formatting. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dmssep</td><td>if non-null, use as the <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> separator character (instead of d, ', " delimiters). </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>formatted string</dd></dl>
-<p><em>prec</em> indicates the precision relative to 1 degree, e.g., <em>prec</em> = 3 gives a result accurate to 0.1' and <em>prec</em> = 4 gives a result accurate to 1". <em>ind</em> is interpreted as in <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">DMS::Encode</a> with the additional facility that <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a> represents <em> [...]
+<p><em>prec</em> indicates the precision relative to 1 degree, e.g., <em>prec</em> = 3 gives a result accurate to 0.1' and <em>prec</em> = 4 gives a result accurate to 1". <em>ind</em> is interpreted as in <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">DMS::Encode</a> with the additional facility that <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">DMS::NUMBER</a> represents <em> [...]
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00305">305</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
+<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00332">332</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
</div>
</div>
@@ -635,7 +660,7 @@ Static Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00320">320</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
+<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00348">348</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
</div>
</div>
@@ -686,7 +711,7 @@ Static Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00332">332</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
+<p>Definition at line <a class="el" href="DMS_8hpp_source.html#l00360">360</a> of file <a class="el" href="DMS_8hpp_source.html">DMS.hpp</a>.</p>
</div>
</div>
@@ -695,8 +720,13 @@ Static Public Member Functions</h2></td></tr>
<li><a class="el" href="DMS_8cpp_source.html">DMS.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1EllipticFunction-members.html b/doc/html/classGeographicLib_1_1EllipticFunction-members.html
index 65553f1..99e4449 100644
--- a/doc/html/classGeographicLib_1_1EllipticFunction-members.html
+++ b/doc/html/classGeographicLib_1_1EllipticFunction-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -59,8 +74,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html#ad1fbe801f6731285462d35d874a149ba">m1</a>() const </td><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html">GeographicLib::EllipticFunction</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html#a0b8d63970c4276503d03d4133ee6c321">sncndn</a>(real x, real &sn, real &cn, real &dn) const </td><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html">GeographicLib::EllipticFunction</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1EllipticFunction.html b/doc/html/classGeographicLib_1_1EllipticFunction.html
index 671421e..46a7808 100644
--- a/doc/html/classGeographicLib_1_1EllipticFunction.html
+++ b/doc/html/classGeographicLib_1_1EllipticFunction.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::EllipticFunction Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -99,11 +114,11 @@ Public Member Functions</h2></td></tr>
<a class="code" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">EllipticFunction</a> ell(0.1); <span class="comment">// parameter m = 0.1</span>
<span class="comment">// See Abramowitz and Stegun, table 17.1</span>
cout << ell.K() << <span class="stringliteral">" "</span> << ell.E() << <span class="stringliteral">"\n"</span>;
- <span class="keywordtype">double</span> phi = 20 * <a class="code" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">Math::degree</a>();
+ <span class="keywordtype">double</span> phi = 20 * <a class="code" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">Math::degree</a>();
<span class="comment">// See Abramowitz and Stegun, table 17.6 with</span>
<span class="comment">// alpha = asin(sqrt(m)) = 18.43 deg and phi = 20 deg</span>
cout << ell.E(phi) << <span class="stringliteral">" "</span>
- << ell.E(sin(phi), cos(phi), sqrt(1 - ell.m() * <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(sin(phi))))
+ << ell.E(sin(phi), cos(phi), sqrt(1 - ell.m() * <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(sin(phi))))
<< <span class="stringliteral">"\n"</span>;
}
<span class="keywordflow">catch</span> (<span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GeographicErr.html" title="Exception handling for GeographicLib.">GeographicErr</a>& e) {
@@ -111,9 +126,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="EllipticFunction_8hpp_source.html#l00046">46</a> of file <a class="el" href="EllipticFunction_8hpp_source.html">EllipticFunction.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="ada122111b55eb0ab9c7b9fafb0a4b1e6"></a><!-- doxytag: member="GeographicLib::EllipticFunction::EllipticFunction" ref="ada122111b55eb0ab9c7b9fafb0a4b1e6" args="(real m)" -->
<div class="memitem">
<div class="memproto">
@@ -365,8 +378,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="EllipticFunction_8cpp_source.html">EllipticFunction.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GeoCoords-members.html b/doc/html/classGeographicLib_1_1GeoCoords-members.html
index 68a9721..2821e11 100644
--- a/doc/html/classGeographicLib_1_1GeoCoords-members.html
+++ b/doc/html/classGeographicLib_1_1GeoCoords-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,6 +72,7 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a020732ccba257d7f5248692afd318b93">AltUTMUPSRepresentation</a>(int prec=0) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a590600b600395c7914e4854faee08f8e">AltZone</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#ad92c8fa1b34bd11dbd908dfffbb836a8">Convergence</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">DMSRepresentation</a>(int prec, bool swaplatlong, char dmssep) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">DMSRepresentation</a>(int prec=0, bool swaplatlong=false) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a9a84801f0b383860b24cc1344e4015fb">Easting</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
@@ -66,7 +82,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">GeoCoords</a>(int zone, bool northp, real easting, real northing)</td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a79af2d72afdfeede78f2ba65b809d6b3">GeoRepresentation</a>(int prec=0, bool swaplatlong=false) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">Hemisphere</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a1bc1bb3a2377fa6b70be046dcf5d3e97">Latitude</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">Longitude</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
@@ -81,8 +96,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">UTMUPSRepresentation</a>(int prec=0) const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeoCoords.html#a3ce32259b53a9ea9a5346d9e418ad6a5">Zone</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeographicLib::GeoCoords</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GeoCoords.html b/doc/html/classGeographicLib_1_1GeoCoords.html
index fea548a..60b2d87 100644
--- a/doc/html/classGeographicLib_1_1GeoCoords.html
+++ b/doc/html/classGeographicLib_1_1GeoCoords.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::GeoCoords Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -85,6 +100,7 @@ Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a299131cd5383ad0adc5af92c84dc6afe">AltScale</a> () const throw ()</td></tr>
<tr><td colspan="2"><div class="groupHeader">String representations of the GeoCoords object</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a79af2d72afdfeede78f2ba65b809d6b3">GeoRepresentation</a> (int prec=0, bool swaplatlong=false) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">DMSRepresentation</a> (int prec, bool swaplatlong, char dmssep) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">DMSRepresentation</a> (int prec=0, bool swaplatlong=false) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a36594aaa4f293b0ddf00b1c78bb04595">MGRSRepresentation</a> (int prec=0) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">UTMUPSRepresentation</a> (int prec=0) const </td></tr>
@@ -93,7 +109,6 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a897e6bbfb71f78b0646045bf47e09696">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a4d892f5e55df8cbb597d1a693da4783c">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">InverseFlattening</a> () const throw ()</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Conversion between geographic coordinates. </p>
@@ -137,8 +152,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00047">47</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+</pre></div><p><a href="GeoConvert.1.html">GeoConvert</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeoCoords</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a8b3f4a919ba4478c4fec0e7b01e84c57"></a><!-- doxytag: member="GeographicLib::GeoCoords::GeoCoords" ref="a8b3f4a919ba4478c4fec0e7b01e84c57" args="()" -->
<div class="memitem">
@@ -155,7 +169,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p>The default constructor is equivalent to <em>latitude</em> = 90<sup>o</sup>, <em>longitude</em> = 0<sup>o</sup>. </p>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00075">75</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00078">78</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -210,6 +224,7 @@ Public Member Functions</h2></td></tr>
<li>33.44 43.27</li>
<li>N33d26.4' E43d16.2'</li>
<li>43d16'12"E 33d26'24"N</li>
+<li>43:16:12E 33:26:24</li>
</ul>
</li>
<li><a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a><ul>
@@ -233,12 +248,14 @@ Public Member Functions</h2></td></tr>
<li>75W 40N</li>
<li>E-75 -40S</li>
</ul>
-<p>are all the same position. The coordinates may be given in decimal degrees, degrees and decimal minutes, degrees, minutes, seconds, etc. Use d, ', and " to make off the degrees, minutes and seconds. Thus
- - 40d30'30"</p>
+<p>are all the same position. The coordinates may be given in decimal degrees, degrees and decimal minutes, degrees, minutes, seconds, etc. Use d, ', and " to mark off the degrees, minutes and seconds. Alternatively, use : to separate these components. Thus</p>
<ul>
+<li>40d30'30"</li>
<li>40d30'30</li>
<li>40d30.5'</li>
<li>40d30.5</li>
+<li>40:30:30</li>
+<li>40:30.5</li>
<li>40.508333333</li>
</ul>
<p>all specify the same angle. The leading sign applies to all components so -1d30 is -(1+30/60) = -1.5. Latitudes must be in the range [-90, 90] and longitudes in the range [-180, 360]. Internally longitudes are reduced to the range [-180, 180).</p>
@@ -256,7 +273,7 @@ Public Member Functions</h2></td></tr>
<li>38SMB44148470 = 38N 444140 3684700 </li>
</ul>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00161">161</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00169">169</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -300,7 +317,7 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00173">173</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00181">181</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -351,7 +368,7 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00185">185</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00193">193</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -390,7 +407,7 @@ Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00027">27</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
-<p>Referenced by <a class="el" href="GeoConvert_8cpp_source.html#l00034">main()</a>.</p>
+<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
</div>
</div>
@@ -426,7 +443,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p>Reset the location in terms of geographic coordinates. See <a class="el" href="classGeographicLib_1_1GeoCoords.html#a7bde6a5cba74adf66d831788e6be8e65">GeoCoords(real latitude, real longitude, int zone)</a>. </p>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00200">200</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00208">208</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
<p>References <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>.</p>
@@ -470,7 +487,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p>Reset the location in terms of UPS/UPS coordinates. See <a class="el" href="classGeographicLib_1_1GeoCoords.html#aaab765054416e1243f2d7b36edc8e0d4">GeoCoords(int zone, bool northp, real easting, real northing)</a>. </p>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00215">215</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00223">223</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
<p>References <a class="el" href="UTMUPS_8cpp_source.html#l00124">GeographicLib::UTMUPS::Reverse()</a>.</p>
@@ -491,7 +508,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>latitude (degrees) </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00233">233</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00241">241</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -512,7 +529,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>longitude (degrees) </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00238">238</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00246">246</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -533,7 +550,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>easting (meters) </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00243">243</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00251">251</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -552,7 +569,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>northing (meters) </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00248">248</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00256">256</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -571,7 +588,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>meridian convergence (degrees) for the UTM/UPS projection. </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00253">253</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00261">261</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -590,7 +607,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>scale for the UTM/UPS projection. </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00258">258</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00266">266</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -609,7 +626,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>hemisphere (false means south, true means north). </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00263">263</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00271">271</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -628,7 +645,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>hemisphere letter N or S. </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00268">268</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00276">276</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -647,7 +664,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the zone corresponding to the input (return 0 for UPS). </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00273">273</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00281">281</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -674,9 +691,9 @@ Public Member Functions</h2></td></tr>
</dl>
<p>See <a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7">UTMUPS::zonespec</a> for more information on the interpretation of <em>zone</em>. Note that <em>zone</em> == <a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7adf96495ab4bfbf495f1fe31aebb9e406">UTMUPS::STANDARD</a> (the default) use the standard UPS or UTM zone, <a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3 [...]
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00291">291</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00299">299</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
-<p>References <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>, <a class="el" href="UTMUPS_8hpp_source.html#l00104">GeographicLib::UTMUPS::MATCH</a>, and <a class="el" href="UTMUPS_8cpp_source.html#l00049">GeographicLib::UTMUPS::StandardZone()</a>.</p>
+<p>References <a class="el" href="UTMUPS_8hpp_source.html#l00104">GeographicLib::UTMUPS::MATCH</a>, <a class="el" href="UTMUPS_8cpp_source.html#l00049">GeographicLib::UTMUPS::StandardZone()</a>, and <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>.</p>
</div>
</div>
@@ -695,7 +712,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>current alternate zone (return 0 for UPS). </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00309">309</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00317">317</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -714,7 +731,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>easting (meters) for alternate zone. </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00314">314</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00322">322</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -733,7 +750,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>northing (meters) for alternate zone. </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00319">319</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00327">327</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -752,7 +769,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>meridian convergence (degrees) for alternate zone. </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00324">324</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00332">332</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -771,7 +788,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>scale for alternate zone. </dd></dl>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00329">329</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00337">337</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
</div>
</div>
@@ -820,7 +837,7 @@ Public Member Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="ab37746606876eb77335268054589390a"></a><!-- doxytag: member="GeographicLib::GeoCoords::DMSRepresentation" ref="ab37746606876eb77335268054589390a" args="(int prec=0, bool swaplatlong=false) const " -->
+<a class="anchor" id="af6e9f9087a407b01dc24401df8610257"></a><!-- doxytag: member="GeographicLib::GeoCoords::DMSRepresentation" ref="af6e9f9087a407b01dc24401df8610257" args="(int prec, bool swaplatlong, char dmssep) const " -->
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -828,13 +845,19 @@ Public Member Functions</h2></td></tr>
<td class="memname">string GeographicLib::GeoCoords::DMSRepresentation </td>
<td>(</td>
<td class="paramtype">int </td>
- <td class="paramname"><em>prec</em> = <code>0</code>, </td>
+ <td class="paramname"><em>prec</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool </td>
- <td class="paramname"><em>swaplatlong</em> = <code>false</code> </td>
+ <td class="paramname"><em>swaplatlong</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">char </td>
+ <td class="paramname"><em>dmssep</em> </td>
</tr>
<tr>
<td></td>
@@ -849,6 +872,7 @@ Public Member Functions</h2></td></tr>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>precision (relative to about 1m) </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">swaplatlong</td><td>if true give longitude first (default = false) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dmssep</td><td>if non-null, use as the <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> separator character (instead of d, ', " delimiters). </td></tr>
</table>
</dd>
</dl>
@@ -859,16 +883,55 @@ Public Member Functions</h2></td></tr>
<li>prec = -4, 0.1d</li>
<li>prec = -3, 1'</li>
<li>prec = -2, 0.1'</li>
-<li>prec = -1, 1"
- - prec = 0, 0.1" (about 3m)</li>
-<li>prec = 1, 0.01"
- - prec = 10 (max), 10<sup>-11</sup>" </li>
+<li>prec = -1, 1"</li>
+<li>prec = 0, 0.1" (about 3m)</li>
+<li>prec = 1, 0.01"</li>
+<li>prec = 10 (max), 10<sup>-11</sup>" </li>
</ul>
<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00088">88</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
</div>
</div>
+<a class="anchor" id="ab37746606876eb77335268054589390a"></a><!-- doxytag: member="GeographicLib::GeoCoords::DMSRepresentation" ref="ab37746606876eb77335268054589390a" args="(int prec=0, bool swaplatlong=false) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">string GeographicLib::GeoCoords::DMSRepresentation </td>
+ <td>(</td>
+ <td class="paramtype">int </td>
+ <td class="paramname"><em>prec</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool </td>
+ <td class="paramname"><em>swaplatlong</em> = <code>false</code> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>String representation with latitude and longitude as degrees, minutes, seconds, and hemisphere.</p>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">prec</td><td>precision (relative to about 1m) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">swaplatlong</td><td>if true give longitude first (default = false) </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">DMS</a> latitude/longitude string representation.</dd></dl>
+<p><b>COMPATIBILITY NOTE:</b> This function calls <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">DMSRepresentation(int, bool, char) const </a>with a 3rd argument of char(0). At some point, <a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">DMSRepresentation(int, bool) const </a>and will be withdrawn and the interface to <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8 [...]
+
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00097">97</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a36594aaa4f293b0ddf00b1c78bb04595"></a><!-- doxytag: member="GeographicLib::GeoCoords::MGRSRepresentation" ref="a36594aaa4f293b0ddf00b1c78bb04595" args="(int prec=0) const " -->
<div class="memitem">
<div class="memproto">
@@ -903,7 +966,7 @@ Public Member Functions</h2></td></tr>
<li>prec = 6 (max), 1um </li>
</ul>
-<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00096">96</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00100">100</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
</div>
</div>
@@ -939,7 +1002,7 @@ Public Member Functions</h2></td></tr>
<li>prec = 9 (max), 1nm </li>
</ul>
-<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00134">134</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00138">138</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
</div>
</div>
@@ -959,7 +1022,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">MGRS</a> string for the alternate zone. See <a class="el" href="classGeographicLib_1_1GeoCoords.html#a36594aaa4f293b0ddf00b1c78bb04595">GeoCoords::MGRSRepresentation</a>. </p>
-<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00104">104</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00108">108</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
</div>
</div>
@@ -979,7 +1042,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p>UTM/UPS string for the alternate zone. See <a class="el" href="classGeographicLib_1_1GeoCoords.html#a056efc42fe4c653aad40be5d5b865ea3">GeoCoords::UTMUPSRepresentation</a>. </p>
-<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00140">140</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8cpp_source.html#l00144">144</a> of file <a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a>.</p>
</div>
</div>
@@ -999,7 +1062,7 @@ Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the WGS84 ellipsoid (meters).</dd></dl>
<p>(The WGS84 value is returned because the UTM and UPS projections are based on this ellipsoid.) </p>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00430">430</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00459">459</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
<p>References <a class="el" href="UTMUPS_8hpp_source.html#l00295">GeographicLib::UTMUPS::MajorRadius()</a>.</p>
@@ -1021,41 +1084,24 @@ Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the WGS84 ellipsoid.</dd></dl>
<p>(The WGS84 value is returned because the UTM and UPS projections are based on this ellipsoid.) </p>
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00438">438</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00467">467</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
<p>References <a class="el" href="UTMUPS_8hpp_source.html#l00304">GeographicLib::UTMUPS::Flattening()</a>.</p>
</div>
</div>
-<a class="anchor" id="a8f653a04eb087280cd020466213c9cac"></a><!-- doxytag: member="GeographicLib::GeoCoords::InverseFlattening" ref="a8f653a04eb087280cd020466213c9cac" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::GeoCoords::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="GeoCoords_8hpp_source.html#l00444">444</a> of file <a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a>.</p>
-
-<p>References <a class="el" href="UTMUPS_8hpp_source.html#l00311">GeographicLib::UTMUPS::InverseFlattening()</a>.</p>
-
-</div>
-</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="GeoCoords_8hpp_source.html">GeoCoords.hpp</a></li>
<li><a class="el" href="GeoCoords_8cpp_source.html">GeoCoords.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Geocentric-members.html b/doc/html/classGeographicLib_1_1Geocentric-members.html
index e50f28d..1193b09 100644
--- a/doc/html/classGeographicLib_1_1Geocentric-members.html
+++ b/doc/html/classGeographicLib_1_1Geocentric-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,7 +72,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a243c90a7f9bf3f7aa96877a4b0667a89">GravityCircle</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#ada1db1d9f480d8044753ed869c995519">GravityModel</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">Init</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a8904c4eadcf94e3803743e8cd9ffbc1c">LocalCartesian</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a7294f6a1cc932f8fd1562a15602e9e86">MagneticCircle</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#af6619ebe4c078705fc49a0d9f950b431">MagneticModel</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
@@ -70,8 +84,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a3eabc426b6edd718324c791ef3536360">SphericalHarmonic2</a> class</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">WGS84</a></td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">GeographicLib::Geocentric</a></td><td><code> [static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Geocentric.html b/doc/html/classGeographicLib_1_1Geocentric.html
index eb196ec..c3492c2 100644
--- a/doc/html/classGeographicLib_1_1Geocentric.html
+++ b/doc/html/classGeographicLib_1_1Geocentric.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::Geocentric Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,7 +87,6 @@ Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#a7d2e34d1be6009caf4576c6cc884a589">Init</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#ae20c62c298f1724412fec581285cf269">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#a30ba434524b5836c9852d454e61d795f">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">InverseFlattening</a> () const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classGeographicLib_1_1Geocentric.html">Geocentric</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">WGS84</a></td></tr>
@@ -115,7 +129,7 @@ Friends</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> earth(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+ <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> earth(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
<span class="comment">// Alternatively: const Geocentric& earth = Geocentric::WGS84;</span>
{
<span class="comment">// Sample forward calculation</span>
@@ -140,8 +154,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00060">60</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+</pre></div><p><a href="CartConvert.1.html">CartConvert</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a6527d3ab1df78de8277122581dbcdaff"></a><!-- doxytag: member="GeographicLib::Geocentric::Geocentric" ref="a6527d3ab1df78de8277122581dbcdaff" args="(real a, real f)" -->
<div class="memitem">
@@ -198,7 +211,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>A default constructor (for use by <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a>). </p>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00116">116</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00119">119</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -265,7 +278,7 @@ Friends</h2></td></tr>
</dl>
<p><em>lat</em> should be in the range [-90, 90]; <em>lon</em> and <em>lon0</em> should be in the range [-180, 360]. </p>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00131">131</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00134">134</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
<p>Referenced by <a class="el" href="CartConvert_8cpp_source.html#l00032">main()</a>.</p>
@@ -345,7 +358,7 @@ Friends</h2></td></tr>
</ul>
<p>Then we have <em>v0</em> = <em>M</em> . <em>v1</em>. </p>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00160">160</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00163">163</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -411,7 +424,7 @@ Friends</h2></td></tr>
</dl>
<p>In general there are multiple solutions and the result which maximizes <em>h</em> is returned. If there are still multiple solutions with different latitudes (applies only if <em>Z</em> = 0), then the solution with <em>lat</em> > 0 is returned. If there are still multiple solutions with different longitudes (applies only if <em>X</em> = <em>Y</em> = 0) then <em>lon</em> = 0 is returned. The value of <em>h</em> returned satisfies <em>h</em> >= - <em>a</em> (1 - <em>e</em><sup>2</ [...]
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00192">192</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00195">195</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
<p>Referenced by <a class="el" href="CartConvert_8cpp_source.html#l00032">main()</a>.</p>
@@ -491,7 +504,7 @@ Friends</h2></td></tr>
</ul>
<p>Then we have <em>v1</em> = <em>M^T</em> . <em>v0</em>, where <em>M^T</em> is the transpose of <em>M</em>. </p>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00221">221</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00224">224</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -510,7 +523,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00240">240</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00243">243</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -529,7 +542,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00245">245</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00248">248</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -548,27 +561,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00252">252</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="aa947dd7275c12692b03d6ff43d217d13"></a><!-- doxytag: member="GeographicLib::Geocentric::InverseFlattening" ref="aa947dd7275c12692b03d6ff43d217d13" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::Geocentric::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00259">259</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00255">255</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -584,7 +577,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00063">63</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00066">66</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -599,7 +592,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00064">64</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00067">67</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -614,7 +607,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00065">65</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00068">68</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -629,7 +622,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00066">66</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00069">69</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -644,7 +637,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00067">67</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00070">70</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -659,7 +652,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00068">68</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00071">71</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -674,7 +667,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00069">69</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00072">72</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -689,7 +682,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00070">70</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00073">73</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -704,7 +697,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00071">71</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00074">74</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -721,7 +714,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> with the parameters for the WGS84 ellipsoid. </p>
-<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00267">267</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geocentric_8hpp_source.html#l00272">272</a> of file <a class="el" href="Geocentric_8hpp_source.html">Geocentric.hpp</a>.</p>
</div>
</div>
@@ -730,8 +723,13 @@ Friends</h2></td></tr>
<li><a class="el" href="Geocentric_8cpp_source.html">Geocentric.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Geodesic-members.html b/doc/html/classGeographicLib_1_1Geodesic-members.html
index aeb2af1..ad83e1b 100644
--- a/doc/html/classGeographicLib_1_1Geodesic-members.html
+++ b/doc/html/classGeographicLib_1_1Geodesic-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -81,7 +96,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">Inverse</a>(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &m12) const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">Inverse</a>(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &M12, real &M21) const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#ad3f98a5f2adf39ff26cf3d6fe32258a8">Inverse</a>(real lat1, real lon1, real lat2, real lon2, real &s12, real &azi1, real &azi2, real &m12, real &M12, real &M21) const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7c1f4742e41ae5e75c8133ee7fb8fd90">LATITUDE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Line</a>(real lat1, real lon1, real azi1, unsigned caps=ALL) const </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">LONGITUDE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td></td></tr>
@@ -91,8 +105,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a7a27709e1377a8c34704cf1cec64db6c">REDUCEDLENGTH</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">WGS84</a></td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">GeographicLib::Geodesic</a></td><td><code> [static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Geodesic.html b/doc/html/classGeographicLib_1_1Geodesic.html
index 165bb26..c8614f4 100644
--- a/doc/html/classGeographicLib_1_1Geodesic.html
+++ b/doc/html/classGeographicLib_1_1Geodesic.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::Geodesic Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -113,7 +128,6 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions.</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geodesic.html#acd276bb113cfdf3fe59aa43fb3d7289b">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geodesic.html#a7abba09bec76f8f97f1e3bc81a7456e2">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">InverseFlattening</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geodesic.html#a0dde7d12d4bafedef63d371c5fe40f50">EllipsoidArea</a> () const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
@@ -147,7 +161,7 @@ Friends</h2></td></tr>
<li>C. F. F. Karney, <a href="http://arxiv.org/abs/1102.1215v1">Geodesics on an ellipsoid of revolution</a>, Feb. 2011; preprint <a href="http://arxiv.org/abs/1102.1215v1">arXiv:1102.1215v1</a>.</li>
<li>C. F. F. Karney, <a href="http://arxiv.org/abs/1109.4448">Algorithms for geodesics</a>, Sept. 2011; preprint <a href="http://arxiv.org/abs/1109.4448">arxiv:1109.4448</a>.</li>
</ul>
-<p>For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>.</p>
+<p>For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>.</p>
<p>Example of use: </p>
<div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::Geodesic class</span>
<span class="comment">// $Id: c825b2bc016f758b52995e446ac77aa42e0f3fda $</span>
@@ -162,7 +176,7 @@ Friends</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+ <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
<span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
{
<span class="comment">// Sample direct calculation, travelling about NE from JFK</span>
@@ -187,8 +201,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00126">126</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+</pre></div><p><a href="Geod.1.html">Geod</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>. </p>
</div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="aab966190e69651b86661fc2628d20828"></a><!-- doxytag: member="GeographicLib::Geodesic::mask" ref="aab966190e69651b86661fc2628d20828" args="" -->
<div class="memitem">
@@ -236,7 +249,7 @@ Friends</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00233">233</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00236">236</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -382,7 +395,7 @@ Friends</h2></td></tr>
<p>If either point is at a pole, the azimuth is defined by keeping the longitude fixed and writing <em>lat</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. An arc length greater that 180 degrees signifies a geodesic which is not a shortest path. (For a prolate ellipsoid, an additional condition is necessary for a shortest path: the longitudinal extent must not exceed of 180 degrees.)</p>
<p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a> which omit some of the output parameters. Note, however, that the arc length is always computed and returned as the function value. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00345">345</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00348">348</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
@@ -438,7 +451,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00359">359</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00362">362</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -498,7 +511,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00371">371</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00374">374</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -564,7 +577,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00383">383</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00386">386</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -636,7 +649,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00395">395</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00398">398</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -714,7 +727,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00408">408</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00411">411</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -824,7 +837,7 @@ Friends</h2></td></tr>
<p>If either point is at a pole, the azimuth is defined by keeping the longitude fixed and writing <em>lat</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. An arc length greater that 180 degrees signifies a geodesic which is not a shortest path. (For a prolate ellipsoid, an additional condition is necessary for a shortest path: the longitudinal extent must not exceed of 180 degrees.)</p>
<p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">Geodesic::Direct</a> which omit some of the output parameters. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00457">457</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00460">460</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
@@ -880,7 +893,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00470">470</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00473">473</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -940,7 +953,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00481">481</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00484">484</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1006,7 +1019,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00492">492</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00495">495</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1078,7 +1091,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00504">504</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00507">507</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1156,7 +1169,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00517">517</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00520">520</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1240,7 +1253,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#abfb6553227e1534b451900240b39d058">Geodesic::ArcDirect</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00530">530</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00533">533</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1373,7 +1386,7 @@ Friends</h2></td></tr>
</ul>
<p>The function value <em>a12</em> is always computed and returned and this equals <em>s12_a12</em> is <em>arcmode</em> is true. If <em>outmask</em> includes <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">Geodesic::DISTANCE</a> and <em>arcmode</em> is false, then <em>s12</em> = <em>s12_a12</em>. It is not necessary to include <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d208 [...]
-<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00109">109</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00110">110</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
</div>
</div>
@@ -1474,10 +1487,10 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a12</em> arc length of between point 1 and point 2 (degrees).</dd></dl>
<p><em>lat1</em> and <em>lat2</em> should be in the range [-90, 90]; <em>lon1</em> and <em>lon2</em> should be in the range [-180, 360]. The values of <em>azi1</em> and <em>azi2</em> returned are in the range [-180, 180).</p>
-<p>If either point is at a pole, the azimuth is defined by keeping the longitude fixed and writing <em>lat</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. If the routine fails to converge, then all the requested outputs are set to <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">Math::NaN()</a>. (Test for such results with <a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f7 [...]
+<p>If either point is at a pole, the azimuth is defined by keeping the longitude fixed and writing <em>lat</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. If the routine fails to converge, then all the requested outputs are set to <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">Math::NaN()</a>. (Test for such results with <a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a [...]
<p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a> which omit some of the output parameters. Note, however, that the arc length is always computed and returned as the function value. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00632">632</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00635">635</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
@@ -1527,7 +1540,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00644">644</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00647">647</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1581,7 +1594,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00655">655</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00658">658</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1641,7 +1654,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00666">666</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00669">669</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1707,7 +1720,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00678">678</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00681">681</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1779,7 +1792,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00690">690</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00693">693</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1857,7 +1870,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Geodesic::Inverse</a>. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00702">702</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00705">705</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -1974,9 +1987,9 @@ Friends</h2></td></tr>
</ul>
<p>The arc length is always computed and returned as the function value. </p>
-<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00122">122</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00123">123</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
-<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>, and <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>.</p>
</div>
</div>
@@ -2041,7 +2054,7 @@ Friends</h2></td></tr>
<p>The default value of <em>caps</em> is <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a30e0c9456c5df9e6ff23880014bd11e0">Geodesic::ALL</a> which turns on all the capabilities.</p>
<p>If the point is at a pole, the azimuth is defined by keeping the <em>lon1</em> fixed and writing <em>lat1</em> = 90 - <em>eps</em> or -90 + <em>eps</em> and taking the limit <em>eps</em> -> 0 from above. </p>
-<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00104">104</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8cpp_source.html#l00105">105</a> of file <a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a>.</p>
<p>Referenced by <a class="el" href="Geod_8cpp_source.html#l00067">main()</a>.</p>
@@ -2062,7 +2075,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00808">808</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00811">811</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -2081,27 +2094,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00814">814</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ab64c9662ce24d7a658924db0c85f8b2d"></a><!-- doxytag: member="GeographicLib::Geodesic::InverseFlattening" ref="ab64c9662ce24d7a658924db0c85f8b2d" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::Geodesic::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00820">820</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00817">817</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -2120,7 +2113,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>total area of ellipsoid in meters<sup>2</sup>. The area of a polygon encircling a pole can be found by adding <a class="el" href="classGeographicLib_1_1Geodesic.html#a0dde7d12d4bafedef63d371c5fe40f50">Geodesic::EllipsoidArea()</a>/2 to the sum of <em>S12</em> for each side of the polygon. </dd></dl>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00828">828</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00833">833</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -2136,7 +2129,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00129">129</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00132">132</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -2153,7 +2146,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> with the parameters for the WGS84 ellipsoid. </p>
-<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00836">836</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geodesic_8hpp_source.html#l00841">841</a> of file <a class="el" href="Geodesic_8hpp_source.html">Geodesic.hpp</a>.</p>
</div>
</div>
@@ -2162,8 +2155,13 @@ Friends</h2></td></tr>
<li><a class="el" href="Geodesic_8cpp_source.html">Geodesic.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GeodesicLine-members.html b/doc/html/classGeographicLib_1_1GeodesicLine-members.html
index 6cde87e..e004e6d 100644
--- a/doc/html/classGeographicLib_1_1GeodesicLine-members.html
+++ b/doc/html/classGeographicLib_1_1GeodesicLine-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,7 +88,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#ae5ad84103d70f252c66bf61afbda3fa0">GeodesicLine</a>()</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca74f896572150d24be4667cf66ed696a6">GEODESICSCALE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">Init</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a00a291e94d0c688a168a58623a360659">Latitude</a>() const </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca34e259b158b7fa5441e91d32eae20c23">LATITUDE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccac41b1e2e1d73c8d323f92b94e57a0cc9">LONGITUDE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td></td></tr>
@@ -89,8 +103,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#aa42e5028aa78ef3ce8fbcb01b25eb458">Position</a>(real s12, real &lat2, real &lon2, real &azi2, real &m12, real &M12, real &M21) const </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccab6649103de9393f5f18a5d2e44624411">REDUCEDLENGTH</a> enum value</td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeographicLib::GeodesicLine</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GeodesicLine.html b/doc/html/classGeographicLib_1_1GeodesicLine.html
index 833eb65..a3a242b 100644
--- a/doc/html/classGeographicLib_1_1GeodesicLine.html
+++ b/doc/html/classGeographicLib_1_1GeodesicLine.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::GeodesicLine Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -107,7 +122,6 @@ Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a308c7fb4f7c562a8c604453bf2ee2ca2">EquatorialArc</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#af8953029b9985a3929fe406f7530143b">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a42e1f97e3ed564f98b305450b0d04590">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">InverseFlattening</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a21d07549d1171ad05c7318533c4c8970">Capabilities</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1GeodesicLine.html#a4e12366c2ce02e7a96ee778eedb55bf9">Capabilities</a> (unsigned testcaps) const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="friends"></a>
@@ -124,10 +138,10 @@ Friends</h2></td></tr>
<li>C. F. F. Karney, <a href="http://arxiv.org/abs/1102.1215v1">Geodesics on an ellipsoid of revolution</a>, Feb. 2011; preprint <a href="http://arxiv.org/abs/1102.1215v1">arXiv:1102.1215v1</a>.</li>
<li>C. F. F. Karney, <a href="http://arxiv.org/abs/1109.4448">Algorithms for geodesics</a>, Sept. 2011; preprint <a href="http://arxiv.org/abs/1109.4448">arxiv:1109.4448</a>.</li>
</ul>
-<p>For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>.</p>
+<p>For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>.</p>
<p>Example of use: </p>
<div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::GeodesicLine class</span>
-<span class="comment">// $Id: 89118a11e5334de7be20d26aa9eaa7da48ae463c $</span>
+<span class="comment">// $Id: df5c5ffe6534d46e343544430de8c13fc8119bfb $</span>
<span class="preprocessor">#include <iostream></span>
<span class="preprocessor">#include <exception></span>
@@ -143,18 +157,18 @@ Friends</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
<span class="comment">// Print waypoints between JFK and SIN</span>
- <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
- <span class="comment">// Alternatively: const Geodesic& geodesic = Geodesic::WGS84;</span>
+ <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
+ <span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
<span class="keywordtype">double</span>
lat1 = 40.640, lon1 = -73.779, <span class="comment">// JFK</span>
- lat2 = 1.359, lon2 = 177.486; <span class="comment">// SIN</span>
+ lat2 = 1.359, lon2 = 103.989; <span class="comment">// SIN</span>
<span class="keywordtype">double</span> s12, azi1, azi2,
a12 = geod.<a class="code" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">Inverse</a>(lat1, lon1, lat2, lon2, s12, azi1, azi2);
- <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> line(geod, lat1, lon1, azi1);
+ <span class="keyword">const</span> GeographicLib<a class="code" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">::GeodesicLine</a> line(geod, lat1, lon1, azi1);
<span class="comment">// Alternatively</span>
<span class="comment">// const GeographicLib::GeodesicLine line = geod.Line(lat1, lon1, azi1);</span>
<span class="keywordtype">double</span> ds = 500e3; <span class="comment">// Nominal distance between points = 500 km</span>
- <span class="keywordtype">int</span> num = ceil(s12 / ds); <span class="comment">// The number of intervals</span>
+ <span class="keywordtype">int</span> num = int(ceil(s12 / ds)); <span class="comment">// The number of intervals</span>
cout << fixed << setprecision(3);
{
<span class="comment">// Use intervals of equal length</span>
@@ -181,8 +195,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00056">56</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+</pre></div><p><a href="Geod.1.html">Geod</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a>. </p>
</div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="adeec76cf92a8c30770e1199bdadacbcc"></a><!-- doxytag: member="GeographicLib::GeodesicLine::mask" ref="adeec76cf92a8c30770e1199bdadacbcc" args="" -->
<div class="memitem">
@@ -230,7 +243,7 @@ Friends</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00093">93</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00096">96</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -322,7 +335,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>A default constructor. If <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a> is called on the resulting object, it returns immediately (without doing any calculations). The object can be set with a call to <a class="el" href="classGeographicLib_1_1Geodesic.html#a3ac241c18897bb9bec4b839d7e1a7c59">Geodesic::Line</a>. Use <a class="el" href="classGeographicLib_1_1GeodesicLine.html#af7e248d7632f56cf7abc6eac4927a587">In [...]
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00204">204</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00207">207</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -403,10 +416,10 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a12</em> arc length of between point 1 and point 2 (degrees).</dd></dl>
<p>The values of <em>lon2</em> and <em>azi2</em> returned are in the range [-180, 180).</p>
-<p>The <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object <em>must</em> have been constructed with <em>caps</em> |= <a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca7929baa71a65e8399073f67382e4d0bc">GeodesicLine::DISTANCE_IN</a>; otherwise <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">Math::NaN()</a> is returned and no parameters are set. Reques [...]
+<p>The <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object <em>must</em> have been constructed with <em>caps</em> |= <a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca7929baa71a65e8399073f67382e4d0bc">GeodesicLine::DISTANCE_IN</a>; otherwise <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">Math::NaN()</a> is returned and no parameters are set. Reques [...]
<p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a> which omit some of the output parameters. Note, however, that the arc length is always computed and returned as the function value. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00249">249</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00252">252</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
<p>Referenced by <a class="el" href="Gnomonic_8cpp_source.html#l00044">GeographicLib::Gnomonic::Reverse()</a>.</p>
@@ -444,7 +457,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00263">263</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00266">266</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -486,7 +499,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00273">273</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00276">276</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -534,7 +547,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00284">284</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00287">287</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -588,7 +601,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00296">296</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00299">299</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -648,7 +661,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac9843cbfff45e8163b78e184a3126d82">GeodesicLine::Position</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00309">309</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00312">312</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -737,7 +750,7 @@ Friends</h2></td></tr>
<p>Requesting a value which the <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object is not capable of computing is not an error; the corresponding argument will not be altered.</p>
<p>The following functions are overloaded versions of <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a> which omit some of the output parameters. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00362">362</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00365">365</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -773,7 +786,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00374">374</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00377">377</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -815,7 +828,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00385">385</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00388">388</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -863,7 +876,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00397">397</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00400">400</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -917,7 +930,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00408">408</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00411">411</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -977,7 +990,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00420">420</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00423">423</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1043,7 +1056,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>See the documentation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a9270eecb58eaac3115a5f08879990482">GeodesicLine::ArcPosition</a>. </p>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00433">433</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00436">436</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1176,7 +1189,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00512">512</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00515">515</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1195,7 +1208,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>lat1</em> the latitude of point 1 (degrees). </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00517">517</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00520">520</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1214,7 +1227,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>lon1</em> the longitude of point 1 (degrees). </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00523">523</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00526">526</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1233,7 +1246,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>azi1</em> the azimuth (degrees) of the geodesic line at point 1. </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00529">529</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00532">532</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1252,7 +1265,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>azi0</em> the azimuth (degrees) of the geodesic line as it crosses the equator in a northward direction. </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00536">536</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00539">539</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1271,7 +1284,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a1</em> the arc length (degrees) between the northward equatorial crossing and point 1. </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00545">545</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00548">548</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1290,7 +1303,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00554">554</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00557">557</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1309,27 +1322,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00561">561</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad0d59a47c24d11229ab7ce4363d525ea"></a><!-- doxytag: member="GeographicLib::GeodesicLine::InverseFlattening" ref="ad0d59a47c24d11229ab7ce4363d525ea" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::GeodesicLine::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00568">568</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00564">564</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1348,7 +1341,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>caps</em> the computational capabilities that this object was constructed with. LATITUDE and AZIMUTH are always included. </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00575">575</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00580">580</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1374,7 +1367,7 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object has all these capabilities. </dd></dl>
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00581">581</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00586">586</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1390,7 +1383,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00059">59</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GeodesicLine_8hpp_source.html#l00062">62</a> of file <a class="el" href="GeodesicLine_8hpp_source.html">GeodesicLine.hpp</a>.</p>
</div>
</div>
@@ -1399,8 +1392,13 @@ Friends</h2></td></tr>
<li><a class="el" href="GeodesicLine_8cpp_source.html">GeodesicLine.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GeographicErr-members.html b/doc/html/classGeographicLib_1_1GeographicErr-members.html
index 7001033..1a93f94 100644
--- a/doc/html/classGeographicLib_1_1GeographicErr-members.html
+++ b/doc/html/classGeographicLib_1_1GeographicErr-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,8 +66,13 @@
This is the complete list of members for <a class="el" href="classGeographicLib_1_1GeographicErr.html">GeographicLib::GeographicErr</a>, including all inherited members.<table>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GeographicErr.html#ae0f338af58f073657b012c8a9a64b006">GeographicErr</a>(const std::string &msg)</td><td><a class="el" href="classGeographicLib_1_1GeographicErr.html">GeographicLib::GeographicErr</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GeographicErr.html b/doc/html/classGeographicLib_1_1GeographicErr.html
index 9b34878..cf7b6b7 100644
--- a/doc/html/classGeographicLib_1_1GeographicErr.html
+++ b/doc/html/classGeographicLib_1_1GeographicErr.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::GeographicErr Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,9 +99,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00312">312</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="ae0f338af58f073657b012c8a9a64b006"></a><!-- doxytag: member="GeographicLib::GeographicErr::GeographicErr" ref="ae0f338af58f073657b012c8a9a64b006" args="(const std::string &msg)" -->
<div class="memitem">
<div class="memproto">
@@ -109,7 +122,7 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00321">321</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Constants_8hpp_source.html#l00323">323</a> of file <a class="el" href="Constants_8hpp_source.html">Constants.hpp</a>.</p>
</div>
</div>
@@ -117,8 +130,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="Constants_8hpp_source.html">Constants.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Geoid-members.html b/doc/html/classGeographicLib_1_1Geoid-members.html
index cb1f67b..7282d20 100644
--- a/doc/html/classGeographicLib_1_1Geoid-members.html
+++ b/doc/html/classGeographicLib_1_1Geoid-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,7 +86,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#aa244668a189e35ce5ff248fb8fa2e57b">GeoidName</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">GEOIDTOELLIPSOID</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">Interpolation</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#aada99465d9ddfc1b34ccf2ef3d86dbd7">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#aff538da14578a02c551b411a899e567a">MaxError</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a677322ba74ea5494e67478c3dc1780d5">NONE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td></td></tr>
@@ -82,8 +96,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#ab2346300c12ff7e70d35e08479ecede1">Scale</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Geoid.html#a286e947c13592f21e45cbdd404b283c7">ThreadSafe</a>() const </td><td><a class="el" href="classGeographicLib_1_1Geoid.html">GeographicLib::Geoid</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Geoid.html b/doc/html/classGeographicLib_1_1Geoid.html
index f89d2f8..c47c5b0 100644
--- a/doc/html/classGeographicLib_1_1Geoid.html
+++ b/doc/html/classGeographicLib_1_1Geoid.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::Geoid Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -95,7 +110,6 @@ Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#aa3db8f9639eb231539376e4617a3d59e">CacheSouth</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#aada99465d9ddfc1b34ccf2ef3d86dbd7">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#abd2076cab3455b816e9477cdb410b187">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">InverseFlattening</a> () const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">DefaultGeoidPath</a> ()</td></tr>
@@ -132,7 +146,7 @@ Static Public Member Functions</h2></td></tr>
<span class="keywordtype">double</span>
geoid_height = egm96(lat, lon),
height_above_ellipsoid = (height_above_geoid +
- <a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">Geoid::GEOIDTOELLIPSOID</a> * geoid_height);
+ <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a><a class="code" href="classGeographicLib_1_1Geoid.html#a58ddbd0fd48c25b361f45bdb70dadb96a96385bcbc41f3d933588f6d6a9868473">::GEOIDTOELLIPSOID</a> * geoid_height);
cout << height_above_ellipsoid << <span class="stringliteral">"\n"</span>;
}
<span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
@@ -141,8 +155,7 @@ Static Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00071">71</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+</pre></div><p><a href="GeoidEval.1.html">GeoidEval</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>. </p>
</div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a58ddbd0fd48c25b361f45bdb70dadb96"></a><!-- doxytag: member="GeographicLib::Geoid::convertflag" ref="a58ddbd0fd48c25b361f45bdb70dadb96" args="" -->
<div class="memitem">
@@ -169,7 +182,7 @@ Static Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00155">155</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00185">185</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -222,9 +235,9 @@ Static Public Member Functions</h2></td></tr>
</dl>
<p>The data file is formed by appending ".pgm" to the name. If <em>path</em> is specified (and is non-empty), then the file is loaded from directory, <em>path</em>. Otherwise the path is given by <a class="el" href="classGeographicLib_1_1Geoid.html#a2daf81f5c648cf190a83981f441ab08f">DefaultGeoidPath()</a>. This may throw an exception because the file does not exist, is unreadable, or is corrupt. If the <em>threadsafe</em> parameter is true, the data set is read into memory (which this ma [...]
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00207">207</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00208">208</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
-<p>References <a class="el" href="Geoid_8hpp_source.html#l00228">CacheAll()</a>, and <a class="el" href="Geoid_8cpp_source.html#l00529">DefaultGeoidPath()</a>.</p>
+<p>References <a class="el" href="Constants_8hpp_source.html#l00025">STATIC_ASSERT</a>, <a class="el" href="Geoid_8cpp_source.html#l00529">DefaultGeoidPath()</a>, and <a class="el" href="Geoid_8hpp_source.html#l00258">CacheAll()</a>.</p>
</div>
</div>
@@ -277,9 +290,9 @@ Static Public Member Functions</h2></td></tr>
</dl>
<p>Cache the data for the specified "rectangular" area bounded by the parallels <em>south</em> and <em>north</em> and the meridians <em>west</em> and <em>east</em>. <em>east</em> is always interpreted as being east of <em>west</em>, if necessary by adding 360<sup>o</sup> to its value. This may throw an error because of insufficient memory or because of an error reading the data from the file. In this case, you can catch the error and either do nothing (you will have no cache in this case [...]
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00446">446</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00448">448</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
-<p>References <a class="el" href="Geoid_8cpp_source.html#l00433">CacheClear()</a>.</p>
+<p>References <a class="el" href="Geoid_8cpp_source.html#l00435">CacheClear()</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -300,9 +313,9 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<p>Cache all the data. On most computers, this is fast for data sets with grid resolution of 5' or coarser. For a 1' grid, the required RAM is 450MB; a 2.5' grid needs 72MB; and a 5' grid needs 18MB. This may throw an error because of insufficient memory or because of an error reading the data from the file. In this case, you can catch the error and either do nothing (you will have no cache in this case) or try using <a class="el" href="classGeographicLib_1_1Geoid.html#a52b5dc2d976796046 [...]
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00228">228</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00258">258</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
-<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00207">Geoid()</a>, and <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
+<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00208">Geoid()</a>, and <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
</div>
</div>
@@ -321,9 +334,9 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<p>Clear the cache. This never throws an error. (This does nothing with a thread safe <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">Geoid</a>.) </p>
-<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00433">433</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00435">435</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
-<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00446">CacheArea()</a>.</p>
+<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00448">CacheArea()</a>.</p>
</div>
</div>
@@ -362,7 +375,7 @@ Static Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>geoid height (meters).</dd></dl>
<p>The latitude should be in [-90, 90] and longitude should be in [-180,360]. This may throw an error because of an error reading data from disk. However, it will not throw if (<em>lat</em>, <em>lon</em>) is within a successfully cached area. </p>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00254">254</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00284">284</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -413,9 +426,9 @@ Static Public Member Functions</h2></td></tr>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>geoid height (meters).</dd></dl>
-<p>The latitude should be in [-90, 90] and longitude should be in [-180, 360]. This may throw an error because of an error reading data from disk. However, it will not throw if (<em>lat</em>, <em>lon</em>) is within a successfully cached area. </p>
+<p>The latitude should be in [-90, 90] and longitude should be in [-180, 360]. This may throw an error because of an error reading data from disk. However, it will not throw if (<em>lat</em>, <em>lon</em>) is within a successfully cached area. As a result of the way that the geoid data is stored, the calculation of gradients can result in large quantization errors. This is particularly acute for fine grids, at high latitudes, and for the easterly gradient. If you need to compute the dire [...]
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00273">273</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00308">308</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -467,7 +480,7 @@ Static Public Member Functions</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>converted height (meters). </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00290">290</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00325">325</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -486,7 +499,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>geoid description, if available, in the data file; if absent, return "NONE". </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00305">305</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00340">340</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -507,7 +520,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>date of the data file; if absent, return "UNKNOWN". </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00310">310</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00345">345</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -528,7 +541,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>full file name used to load the geoid data. </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00315">315</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00350">350</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -549,7 +562,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>"name" used to load the geoid data (from the first argument of the constructor). </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00321">321</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00356">356</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -568,7 +581,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>directory used to load the geoid data. </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00326">326</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00361">361</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -587,7 +600,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>interpolation method ("cubic" or "bilinear"). </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00331">331</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00366">366</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -609,7 +622,7 @@ Static Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>estimate of the maximum interpolation and quantization error (meters).</dd></dl>
<p>This relies on the value being stored in the data file. If the value is absent, return -1. </p>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00341">341</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00376">376</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -631,7 +644,7 @@ Static Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>estimate of the RMS interpolation and quantization error (meters).</dd></dl>
<p>This relies on the value being stored in the data file. If the value is absent, return -1. </p>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00350">350</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00385">385</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -653,7 +666,7 @@ Static Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>offset (meters).</dd></dl>
<p>This in used in converting from the pixel values in the data file to geoid heights. </p>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00358">358</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00393">393</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -675,7 +688,7 @@ Static Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>scale (meters).</dd></dl>
<p>This in used in converting from the pixel values in the data file to geoid heights. </p>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00366">366</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00401">401</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -696,7 +709,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object is constructed to be thread safe. </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00371">371</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00406">406</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -715,7 +728,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>true if a data cache is active. </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00376">376</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00411">411</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -736,7 +749,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>west edge of the cached area; the cache includes this edge. </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00381">381</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00416">416</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -757,7 +770,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>east edge of the cached area; the cache excludes this edge. </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00390">390</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00425">425</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -778,7 +791,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>north edge of the cached area; the cache includes this edge. </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00400">400</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00435">435</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -799,7 +812,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>south edge of the cached area; the cache excludes this edge unless it's the south pole. </dd></dl>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00408">408</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00443">443</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -821,7 +834,7 @@ Static Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the WGS84 ellipsoid (meters).</dd></dl>
<p>(The WGS84 value is returned because the supported geoid models are all based on this ellipsoid.) </p>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00418">418</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00453">453</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -841,27 +854,7 @@ Static Public Member Functions</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the WGS84 ellipsoid.</dd></dl>
<p>(The WGS84 value is returned because the supported geoid models are all based on this ellipsoid.) </p>
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00427">427</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a19fd88ada94ee9b3b063e9ff097fd2e5"></a><!-- doxytag: member="GeographicLib::Geoid::InverseFlattening" ref="a19fd88ada94ee9b3b063e9ff097fd2e5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::Geoid::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00433">433</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Geoid_8hpp_source.html#l00462">462</a> of file <a class="el" href="Geoid_8hpp_source.html">Geoid.hpp</a>.</p>
</div>
</div>
@@ -883,9 +876,9 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00529">529</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
-<p>References <a class="el" href="Geoid_8cpp_source.html#l00026">GEOGRAPHICLIB_DATA</a>.</p>
+<p>References <a class="el" href="Geoid_8cpp_source.html#l00027">GEOGRAPHICLIB_DATA</a>.</p>
-<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00207">Geoid()</a>, and <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
+<p>Referenced by <a class="el" href="Geoid_8cpp_source.html#l00208">Geoid()</a>, and <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
</div>
</div>
@@ -907,7 +900,7 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="Geoid_8cpp_source.html#l00542">542</a> of file <a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a>.</p>
-<p>References <a class="el" href="Geoid_8cpp_source.html#l00031">GEOID_DEFAULT_NAME</a>.</p>
+<p>References <a class="el" href="Geoid_8cpp_source.html#l00032">GEOID_DEFAULT_NAME</a>.</p>
<p>Referenced by <a class="el" href="GeoidEval_8cpp_source.html#l00035">main()</a>.</p>
@@ -918,8 +911,13 @@ Static Public Member Functions</h2></td></tr>
<li><a class="el" href="Geoid_8cpp_source.html">Geoid.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Gnomonic-members.html b/doc/html/classGeographicLib_1_1Gnomonic-members.html
index 015e379..280fc44 100644
--- a/doc/html/classGeographicLib_1_1Gnomonic-members.html
+++ b/doc/html/classGeographicLib_1_1Gnomonic-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,13 +68,17 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">Forward</a>(real lat0, real lon0, real lat, real lon, real &x, real &y, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a2c08cf2bad190ee9ab88f7d877223208">Forward</a>(real lat0, real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a2ac973ebbd7aaf18c451b152cd92db99">Gnomonic</a>(const Geodesic &earth=Geodesic::WGS84)</td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline, explicit]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#afccbed660a482ef73d33ad16406ee626">Reverse</a>(real lat0, real lon0, real x, real y, real &lat, real &lon, real &azi, real &rk) const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Gnomonic.html#a8700d59a1e244f8dd211e344587dfed3">Reverse</a>(real lat0, real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">GeographicLib::Gnomonic</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Gnomonic.html b/doc/html/classGeographicLib_1_1Gnomonic.html
index 36150fb..203df62 100644
--- a/doc/html/classGeographicLib_1_1Gnomonic.html
+++ b/doc/html/classGeographicLib_1_1Gnomonic.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::Gnomonic Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -68,7 +83,6 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Gnomonic.html#a8598fe6d8c3896fa3fd58d24023f78ee">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Gnomonic.html#a06b559fa72aa1e51da966c43d22b983d">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">InverseFlattening</a> () const throw ()</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Gnomonic Projection. </p>
@@ -88,7 +102,7 @@ Public Member Functions</h2></td></tr>
<br/>
where <em>K</em> is the Gaussian curvature.</p>
<p>This result applies for any surface. For an ellipsoid of revolution, consider all geodesics whose end points are within a distance <em>r</em> of <em>C</em>. For a given <em>r</em>, the deviation is maximum when the latitude of <em>C</em> is 45<sup>o</sup>, when endpoints are a distance <em>r</em> away, and when their azimuths from the center are +/- 45<sup>o</sup> or +/- 135<sup>o</sup>. To lowest order in <em>r</em> and the flattening <em>f</em>, the deviation is <em>f</em> (<em>r</e [...]
-<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>.</p>
+<p>The conversions all take place using a <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object (by default <a class="el" href="classGeographicLib_1_1Geodesic.html#ae918bb7e1555fba38483449cbbac0ca1">Geodesic::WGS84</a>). For more information on geodesics see <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>.</p>
<p><b>CAUTION:</b> The definition of this projection for a sphere is standard. However, there is no standard for how it should be extended to an ellipsoid. The choices are:</p>
<ul>
<li>Declare that the projection is undefined for an ellipsoid.</li>
@@ -110,7 +124,7 @@ Public Member Functions</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+ <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
<span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
<span class="keyword">const</span> <span class="keywordtype">double</span> lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; <span class="comment">// Paris</span>
<a class="code" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a> proj(geod);
@@ -135,8 +149,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00103">103</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+</pre></div><p><a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">AzimuthalEquidistant</a>, <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">Gnomonic</a>, and <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">CassiniSoldner</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a2ac973ebbd7aaf18c451b152cd92db99"></a><!-- doxytag: member="GeographicLib::Gnomonic::Gnomonic" ref="a2ac973ebbd7aaf18c451b152cd92db99" args="(const Geodesic &earth=Geodesic::WGS84)" -->
<div class="memitem">
@@ -160,7 +173,7 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00119">119</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00123">123</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
</div>
</div>
@@ -325,7 +338,7 @@ Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="Gnomonic_8cpp_source.html#l00044">44</a> of file <a class="el" href="Gnomonic_8cpp_source.html">Gnomonic.cpp</a>.</p>
-<p>References <a class="el" href="GeodesicLine_8hpp_source.html#l00249">GeographicLib::GeodesicLine::Position()</a>.</p>
+<p>References <a class="el" href="GeodesicLine_8hpp_source.html#l00252">GeographicLib::GeodesicLine::Position()</a>.</p>
<p>Referenced by <a class="el" href="GeodesicProj_8cpp_source.html#l00037">main()</a>.</p>
@@ -381,7 +394,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">Gnomonic::Forward</a> without returning the azimuth and scale. </p>
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00180">180</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00184">184</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
</div>
</div>
@@ -435,7 +448,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1Gnomonic.html#afccbed660a482ef73d33ad16406ee626">Gnomonic::Reverse</a> without returning the azimuth and scale. </p>
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00189">189</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00193">193</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
</div>
</div>
@@ -454,7 +467,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00202">202</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00206">206</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
</div>
</div>
@@ -473,27 +486,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00208">208</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a655eff8ef95f92902899459e8a5efe63"></a><!-- doxytag: member="GeographicLib::Gnomonic::InverseFlattening" ref="a655eff8ef95f92902899459e8a5efe63" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::Gnomonic::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00214">214</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="Gnomonic_8hpp_source.html#l00212">212</a> of file <a class="el" href="Gnomonic_8hpp_source.html">Gnomonic.hpp</a>.</p>
</div>
</div>
@@ -502,8 +495,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="Gnomonic_8cpp_source.html">Gnomonic.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GravityCircle-members.html b/doc/html/classGeographicLib_1_1GravityCircle-members.html
index 38f06bd..755f589 100644
--- a/doc/html/classGeographicLib_1_1GravityCircle-members.html
+++ b/doc/html/classGeographicLib_1_1GravityCircle-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,8 +82,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GravityCircle.html#aba5f3ec3cb7b620e13dafa6fa4e48ae0">V</a>(real lon, real &GX, real &GY, real &GZ) const </td><td><a class="el" href="classGeographicLib_1_1GravityCircle.html">GeographicLib::GravityCircle</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GravityCircle.html#a04ae0659ec2eb766ae360d3bcbe332c4">W</a>(real lon, real &gX, real &gY, real &gZ) const </td><td><a class="el" href="classGeographicLib_1_1GravityCircle.html">GeographicLib::GravityCircle</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GravityCircle.html b/doc/html/classGeographicLib_1_1GravityCircle.html
index b86325b..32ba8a9 100644
--- a/doc/html/classGeographicLib_1_1GravityCircle.html
+++ b/doc/html/classGeographicLib_1_1GravityCircle.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::GravityCircle Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -132,8 +147,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00040">40</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+</pre></div><p><a href="Gravity.1.html">Gravity</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> and <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a4a000e07f0856a130ab11f1b26c933ed"></a><!-- doxytag: member="GeographicLib::GravityCircle::GravityCircle" ref="a4a000e07f0856a130ab11f1b26c933ed" args="()" -->
<div class="memitem">
@@ -150,7 +164,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>A default constructor for the normal gravity. This sets up an uninitialized object which can be later replaced by the <a class="el" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">GravityModel::Circle</a>. </p>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00104">104</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00107">107</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -388,7 +402,7 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>W</em> = <em>V</em> + <em>Phi</em> the sum of the gravitational and centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00185">185</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00188">188</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -440,7 +454,7 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>V</em> = <em>W</em> - <em>Phi</em> the gravitational potential (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00205">205</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00208">208</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -492,7 +506,7 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>T</em> = <em>W</em> - <em>U</em> the disturbing potential (also called the anomalous potential) (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00226">226</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00229">229</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -519,7 +533,7 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>T</em> = <em>W</em> - <em>U</em> the disturbing potential (also called the anomalous potential) (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00240">240</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00243">243</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -538,7 +552,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00254">254</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00257">257</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -557,7 +571,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00261">261</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00264">264</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -576,7 +590,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00268">268</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00271">271</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -595,7 +609,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the latitude of the circle (degrees). </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00274">274</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00277">277</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -614,7 +628,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the height of the circle (meters). </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00280">280</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00283">283</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -633,7 +647,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>caps</em> the computational capabilities that this object was constructed with. </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00287">287</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00290">290</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -659,7 +673,7 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeodesicLine</a> object has all these capabilities. </dd></dl>
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00293">293</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00296">296</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -675,7 +689,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00090">90</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityCircle_8hpp_source.html#l00093">93</a> of file <a class="el" href="GravityCircle_8hpp_source.html">GravityCircle.hpp</a>.</p>
</div>
</div>
@@ -684,8 +698,13 @@ Friends</h2></td></tr>
<li><a class="el" href="GravityCircle_8cpp_source.html">GravityCircle.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GravityModel-members.html b/doc/html/classGeographicLib_1_1GravityModel-members.html
index 97c1995..fdf8ccd 100644
--- a/doc/html/classGeographicLib_1_1GravityModel-members.html
+++ b/doc/html/classGeographicLib_1_1GravityModel-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,8 +99,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GravityModel.html#a7aec9ecfa959b257dd0a965331598368">V</a>(real X, real Y, real Z, real &GX, real &GY, real &GZ) const </td><td><a class="el" href="classGeographicLib_1_1GravityModel.html">GeographicLib::GravityModel</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1GravityModel.html#ab6767f3833caa34095a7ef83c43a46f0">W</a>(real X, real Y, real Z, real &gX, real &gY, real &gZ) const </td><td><a class="el" href="classGeographicLib_1_1GravityModel.html">GeographicLib::GravityModel</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1GravityModel.html b/doc/html/classGeographicLib_1_1GravityModel.html
index 7f4cefa..825bc26 100644
--- a/doc/html/classGeographicLib_1_1GravityModel.html
+++ b/doc/html/classGeographicLib_1_1GravityModel.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::GravityModel Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -164,8 +179,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00084">84</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+</pre></div><p><a href="Gravity.1.html">Gravity</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> and <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a>. </p>
</div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="af8691d0f13d6d42278cd1e615903d365"></a><!-- doxytag: member="GeographicLib::GravityModel::mask" ref="af8691d0f13d6d42278cd1e615903d365" args="" -->
<div class="memitem">
@@ -204,7 +218,7 @@ Friends</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00119">119</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00122">122</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -246,7 +260,7 @@ Friends</h2></td></tr>
<p>Definition at line <a class="el" href="GravityModel_8cpp_source.html#l00043">43</a> of file <a class="el" href="GravityModel_8cpp_source.html">GravityModel.cpp</a>.</p>
-<p>References <a class="el" href="SphericalHarmonic_8hpp_source.html#l00336">GeographicLib::SphericalHarmonic::Coefficients()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00343">DefaultGravityPath()</a>, <a class="el" href="NormalGravity_8hpp_source.html#l00233">GeographicLib::NormalGravity::MassConstant()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00173">GeographicLib::SphericalEngine::coeff::mmx()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l001 [...]
+<p>References <a class="el" href="GravityModel_8cpp_source.html#l00343">DefaultGravityPath()</a>, <a class="el" href="SphericalEngine_8cpp_source.html#l00382">GeographicLib::SphericalEngine::coeff::readcoeffs()</a>, <a class="el" href="SphericalHarmonic_8hpp_source.html#l00336">GeographicLib::SphericalHarmonic::Coefficients()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00169">GeographicLib::SphericalEngine::coeff::nmx()</a>, <a class="el" href="Math_8hpp_source.html#l00130 [...]
</div>
</div>
@@ -696,7 +710,7 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>T</em> = <em>W</em> - <em>U</em> the disturbing potential (also called the anomalous potential) (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00319">319</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00322">322</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -741,7 +755,7 @@ Friends</h2></td></tr>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>T</em> = <em>W</em> - <em>U</em> the disturbing potential (also called the anomalous potential) (m<sup>2</sup> s<sup>-2</sup>). </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00332">332</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00335">335</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -808,7 +822,7 @@ Friends</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>U</em> = <em>V</em><sub>0</sub> + <em>Phi</em> the sum of the normal gravitational and centrifugal potentials (m<sup>2</sup> s<sup>-2</sup>).</dd></dl>
<p>This calls <a class="el" href="classGeographicLib_1_1NormalGravity.html#a258290ade5fd46c42fdc4199683cf563">NormalGravity::U</a> for <a class="el" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid()</a>. </p>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00356">356</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00359">359</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -861,7 +875,7 @@ Friends</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd><em>Phi</em> the centrifugal potential (m<sup>2</sup> s<sup>-2</sup>).</dd></dl>
<p>This calls <a class="el" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">NormalGravity::Phi</a> for <a class="el" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid()</a>. </p>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00373">373</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00376">376</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -918,7 +932,7 @@ Friends</h2></td></tr>
<p>Definition at line <a class="el" href="GravityModel_8cpp_source.html#l00309">309</a> of file <a class="el" href="GravityModel_8cpp_source.html">GravityModel.cpp</a>.</p>
-<p>References <a class="el" href="SphericalHarmonic1_8hpp_source.html#l00240">GeographicLib::SphericalHarmonic1::Circle()</a>, <a class="el" href="SphericalHarmonic_8hpp_source.html#l00312">GeographicLib::SphericalHarmonic::Circle()</a>, <a class="el" href="NormalGravity_8hpp_source.html#l00294">GeographicLib::NormalGravity::Earth()</a>, <a class="el" href="GravityModel_8hpp_source.html#l00087">GravityCircle</a>, <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypo [...]
+<p>References <a class="el" href="NormalGravity_8hpp_source.html#l00294">GeographicLib::NormalGravity::Earth()</a>, <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, <a class="el" href="NormalGravity_8cpp_source.html#l00155">GeographicLib::NormalGravity::SurfaceGravity()</a>, <a class="el" href="NormalGravity_8cpp_source.html#l00216">GeographicLib::NormalGravity::U()</a>, <a class="el" href="NormalGravity_8cpp_source.html#l00208">GeographicLib::NormalGra [...]
<p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
@@ -939,7 +953,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> object for the reference ellipsoid. </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00420">420</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00423">423</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -958,7 +972,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the description of the gravity model, if available, in the data file; if absent, return "NONE". </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00426">426</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00429">429</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
@@ -979,7 +993,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>date of the model; if absent, return "UNKNOWN". </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00431">431</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00434">434</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
@@ -1000,7 +1014,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>full file name used to load the gravity model. </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00436">436</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00439">439</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
@@ -1021,7 +1035,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>"name" used to load the gravity model (from the first argument of the constructor, but this may be overridden by the model file). </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00442">442</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00445">445</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
@@ -1042,7 +1056,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>directory used to load the gravity model. </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00447">447</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00450">450</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -1061,7 +1075,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00452">452</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00455">455</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -1080,7 +1094,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>GM</em> the mass constant of the model (m<sup>3</sup> s<sup>-2</sup>); this is the product of <em>G</em> the gravitational constant and <em>M</em> the mass of the earth (usually including the mass of the earth's atmosphere). </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00460">460</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00463">463</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -1099,7 +1113,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>GM</em> the mass constant of the <a class="el" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid()</a> (m<sup>3</sup> s<sup>-2</sup>). </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00466">466</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00469">469</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -1118,7 +1132,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>omega</em> the angular velocity of the model and the <a class="el" href="classGeographicLib_1_1GravityModel.html#a0467e44598b65fb403109ba0d0fbf182">ReferenceEllipsoid()</a> (rad s<sup>-1</sup>). </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00473">473</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00476">476</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -1137,7 +1151,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. </dd></dl>
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00479">479</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00482">482</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
</div>
</div>
@@ -1161,7 +1175,7 @@ Friends</h2></td></tr>
<p>References <a class="el" href="GravityModel_8cpp_source.html#l00026">GEOGRAPHICLIB_DATA</a>.</p>
-<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00043">GravityModel()</a>, and <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>.</p>
+<p>Referenced by <a class="el" href="Gravity_8cpp_source.html#l00036">main()</a>, and <a class="el" href="GravityModel_8cpp_source.html#l00043">GravityModel()</a>.</p>
</div>
</div>
@@ -1201,7 +1215,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00087">87</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="GravityModel_8hpp_source.html#l00090">90</a> of file <a class="el" href="GravityModel_8hpp_source.html">GravityModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00309">Circle()</a>.</p>
@@ -1212,8 +1226,13 @@ Friends</h2></td></tr>
<li><a class="el" href="GravityModel_8cpp_source.html">GravityModel.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1LambertConformalConic-members.html b/doc/html/classGeographicLib_1_1LambertConformalConic-members.html
index 85374ec..e28a1d4 100644
--- a/doc/html/classGeographicLib_1_1LambertConformalConic-members.html
+++ b/doc/html/classGeographicLib_1_1LambertConformalConic-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +68,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2bafb6c1a81d4b6cf04f172b9e96278c">Forward</a>(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a14a3757d85e81488afe476f7ceb8a720">Forward</a>(real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a21dc9fa160a5b96a1c11ab30af0eb129">LambertConformalConic</a>(real a, real f, real stdlat, real k0)</td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a6273d61ce32ad6016471a7bd0e155ca4">LambertConformalConic</a>(real a, real f, real stdlat1, real stdlat2, real k1)</td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a4d772372388f32029359b156dc43e4cd">LambertConformalConic</a>(real a, real f, real sinlat1, real coslat1, real sinlat2, real coslat2, real k1)</td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
@@ -64,8 +78,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a1bffe1259895569e6834a4b1df9b22ab">Reverse</a>(real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#aac6267f7f970b35043b17e12e4163ff2">SetScale</a>(real lat, real k=real(1))</td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">GeographicLib::LambertConformalConic</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1LambertConformalConic.html b/doc/html/classGeographicLib_1_1LambertConformalConic.html
index 6db7618..ff42bb7 100644
--- a/doc/html/classGeographicLib_1_1LambertConformalConic.html
+++ b/doc/html/classGeographicLib_1_1LambertConformalConic.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::LambertConformalConic Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,7 +87,6 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a21f9bc21f3f40c56d2f5d12fb4b7f75a">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#abd47e48c75ed958f5aa91bcaa80ddc8c">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">InverseFlattening</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f29d77">OriginLatitude</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2298a4e48e550cfd7346cf5f2dd175ad">CentralScale</a> () const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
@@ -88,7 +102,7 @@ Static Public Attributes</h2></td></tr>
<p>This is a implementation of the equations in Snyder except that divided differences have been used to transform the expressions into ones which may be evaluated accurately and that Newton's method is used to invert the projection. In this implementation, the projection correctly becomes the Mercator projection or the polar stereographic projection when the standard latitude is the equator or a pole. The accuracy of the projections is about 10 nm (10 nanometers).</p>
<p>The ellipsoid parameters, the standard parallels, and the scale on the standard parallels are set in the constructor. Internally, the case with two standard parallels is converted into a single standard parallel, the latitude of tangency (also the latitude of minimum scale), with a scale specified on this parallel. This latitude is also used as the latitude of origin which is returned by <a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a7c589335b43b2274d3a68c0f68f2 [...]
<div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::LambertConformalConic class</span>
-<span class="comment">// $Id: fee4349167387dc01f6253ec8d9cbd0172a7392b $</span>
+<span class="comment">// $Id: 5cb2532e2709bcafee50974307836930069b0cff $</span>
<span class="preprocessor">#include <iostream></span>
<span class="preprocessor">#include <exception></span>
@@ -100,35 +114,35 @@ Static Public Attributes</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
<span class="comment">// Define the Pennsylvania South state coordinate system EPSG:3364</span>
- <span class="keyword">const</span> <span class="keywordtype">double</span>
- a = Constants::WGS84_a<double>(),
- f = 1/298.257222101, <span class="comment">// GRS80</span>
- lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, <span class="comment">// standard parallels</span>
- k1 = 1, <span class="comment">// scale</span>
- lat0 = 39 + 20/60.0, lon0 =-77 - 45/60.0, <span class="comment">// origin</span>
- fe = 600000, fn = 0; <span class="comment">// false easting and northing</span>
- <span class="comment">// Set up basic projection</span>
- <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> PASouth(a, f, lat1, lat2, k1);
- <span class="keywordtype">double</span> x0, y0;
- <span class="comment">// Transform origin point</span>
- PASouth.Forward(lon0, lat0, lon0, x0, y0);
- x0 -= fe; y0 -= fn;
- {
- <span class="comment">// Sample conversion from geodetic to PASouth grid</span>
- <span class="keywordtype">double</span> lat = 39.95, lon = -75.17; <span class="comment">// Philadelphia</span>
- <span class="keywordtype">double</span> x, y;
- PASouth.Forward(lon0, lat, lon, x, y);
- x -= x0; y -= y0;
- std::cout << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">"\n"</span>;
- }
- {
- <span class="comment">// Sample conversion from PASouth grid to geodetic</span>
- <span class="keywordtype">double</span> x = 820e3, y = 72e3;
- <span class="keywordtype">double</span> lat, lon;
- x += x0; y += y0;
- PASouth.Reverse(lon0, x, y, lat, lon);
- std::cout << lat << <span class="stringliteral">" "</span> << lon << <span class="stringliteral">"\n"</span>;
- }
+ <span class="keyword">const</span> <span class="keywordtype">double</span>
+ a = <a class="code" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">Constants</a>::WGS84_a<double>(),
+ f = 1/298.257222101, <span class="comment">// GRS80</span>
+ lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, <span class="comment">// standard parallels</span>
+ k1 = 1, <span class="comment">// scale</span>
+ lat0 = 39 + 20/60.0, lon0 =-77 - 45/60.0, <span class="comment">// origin</span>
+ fe = 600000, fn = 0; <span class="comment">// false easting and northing</span>
+ <span class="comment">// Set up basic projection</span>
+ <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> PASouth(a, f, lat1, lat2, k1);
+ <span class="keywordtype">double</span> x0, y0;
+ <span class="comment">// Transform origin point</span>
+ PASouth.Forward(lon0, lat0, lon0, x0, y0);
+ x0 -= fe; y0 -= fn;
+ {
+ <span class="comment">// Sample conversion from geodetic to PASouth grid</span>
+ <span class="keywordtype">double</span> lat = 39.95, lon = -75.17; <span class="comment">// Philadelphia</span>
+ <span class="keywordtype">double</span> x, y;
+ PASouth.Forward(lon0, lat, lon, x, y);
+ x -= x0; y -= y0;
+ std::cout << x << <span class="stringliteral">" "</span> << y << <span class="stringliteral">"\n"</span>;
+ }
+ {
+ <span class="comment">// Sample conversion from PASouth grid to geodetic</span>
+ <span class="keywordtype">double</span> x = 820e3, y = 72e3;
+ <span class="keywordtype">double</span> lat, lon;
+ x += x0; y += y0;
+ PASouth.Reverse(lon0, x, y, lat, lon);
+ std::cout << lat << <span class="stringliteral">" "</span> << lon << <span class="stringliteral">"\n"</span>;
+ }
}
<span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
@@ -136,8 +150,7 @@ Static Public Attributes</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00055">55</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+</pre></div><p><a href="ConicProj.1.html">ConicProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> and <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">AlbersEqualArea</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a21dc9fa160a5b96a1c11ab30af0eb129"></a><!-- doxytag: member="GeographicLib::LambertConformalConic::LambertConformalConic" ref="a21dc9fa160a5b96a1c11ab30af0eb129" args="(real a, real f, real stdlat, real k0)" -->
<div class="memitem">
@@ -366,7 +379,7 @@ Static Public Attributes</h2></td></tr>
<p>Definition at line <a class="el" href="LambertConformalConic_8cpp_source.html#l00455">455</a> of file <a class="el" href="LambertConformalConic_8cpp_source.html">LambertConformalConic.cpp</a>.</p>
-<p>References <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">Forward()</a>, and <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>, and <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">Forward()</a>.</p>
</div>
</div>
@@ -518,7 +531,7 @@ Static Public Attributes</h2></td></tr>
<p>Definition at line <a class="el" href="LambertConformalConic_8cpp_source.html#l00371">371</a> of file <a class="el" href="LambertConformalConic_8cpp_source.html">LambertConformalConic.cpp</a>.</p>
-<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, <a class="el" href="Math_8hpp_source.html#l00224">GeographicLib::Math::log1p()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>, and <a class="el" href="Math_8hpp_source.html#l00224">GeographicLib::Math::log1p()</a>.</p>
</div>
</div>
@@ -566,7 +579,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2bafb6c1a81d4b6cf04f172b9e96278c">LambertConformalConic::Forward</a> without returning the convergence and scale. </p>
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00258">258</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00262">262</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
</div>
</div>
@@ -614,7 +627,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a085d37693f5e95fd650b7f59f61ab744">LambertConformalConic::Reverse</a> without returning the convergence and scale. </p>
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00268">268</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00272">272</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
</div>
</div>
@@ -633,7 +646,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00281">281</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00285">285</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
</div>
</div>
@@ -652,27 +665,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00287">287</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a2dcd66922112771c232d686e7bcc5f31"></a><!-- doxytag: member="GeographicLib::LambertConformalConic::InverseFlattening" ref="a2dcd66922112771c232d686e7bcc5f31" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::LambertConformalConic::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00293">293</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00291">291</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
</div>
</div>
@@ -692,7 +685,7 @@ Static Public Attributes</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>latitude of the origin for the projection (degrees).</dd></dl>
<p>This is the latitude of minimum scale and equals the <em>stdlat</em> in the 1-parallel constructor and lies between <em>stdlat1</em> and <em>stdlat2</em> in the 2-parallel constructors. </p>
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00302">302</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00308">308</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
</div>
</div>
@@ -711,7 +704,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>central scale for the projection. This is the scale on the latitude of origin. </dd></dl>
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00308">308</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00314">314</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
</div>
</div>
@@ -728,7 +721,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">LambertConformalConic</a> with the WGS84 ellipsoid, <em>stdlat</em> = 0, and <em>k0</em> = 1. This degenerates to the Mercator projection. </p>
-<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00316">316</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LambertConformalConic_8hpp_source.html#l00322">322</a> of file <a class="el" href="LambertConformalConic_8hpp_source.html">LambertConformalConic.hpp</a>.</p>
</div>
</div>
@@ -737,8 +730,13 @@ Static Public Attributes</h2></td></tr>
<li><a class="el" href="LambertConformalConic_8cpp_source.html">LambertConformalConic.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1LocalCartesian-members.html b/doc/html/classGeographicLib_1_1LocalCartesian-members.html
index 5c96cdc..9612c50 100644
--- a/doc/html/classGeographicLib_1_1LocalCartesian-members.html
+++ b/doc/html/classGeographicLib_1_1LocalCartesian-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +68,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a6426e95f904f224eabedb8fcd17fe537">Forward</a>(real lat, real lon, real h, real &x, real &y, real &z) const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a774332be14e894536f13b3cc7a8323c7">Forward</a>(real lat, real lon, real h, real &x, real &y, real &z, std::vector< real > &M) const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">HeightOrigin</a>() const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#af4905164de5157c7ae2678f7716cbad7">LatitudeOrigin</a>() const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad277a6798293d5d66168c3c1438d10a2">LocalCartesian</a>(real lat0, real lon0, real h0=0, const Geocentric &earth=Geocentric::WGS84)</td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a3474a0434b2ff8b258111fe6d8468f0d">LocalCartesian</a>(const Geocentric &earth=Geocentric::WGS84)</td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline, explicit]</code></td></tr>
@@ -63,8 +77,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ac34878de3ae995e7d54f0347a1f34118">Reverse</a>(real x, real y, real z, real &lat, real &lon, real &h) const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a7baa88b38b320d763f6cba3ece4f518d">Reverse</a>(real x, real y, real z, real &lat, real &lon, real &h, std::vector< real > &M) const </td><td><a class="el" href="classGeographicLib_1_1LocalCartesian.html">GeographicLib::LocalCartesian</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1LocalCartesian.html b/doc/html/classGeographicLib_1_1LocalCartesian.html
index c4fb03a..d59bcd7 100644
--- a/doc/html/classGeographicLib_1_1LocalCartesian.html
+++ b/doc/html/classGeographicLib_1_1LocalCartesian.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::LocalCartesian Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,7 +88,6 @@ Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ac8e00f262d70da122f45afa15b9381e2">HeightOrigin</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a795356c736f1170fe5ef075ebbf34354">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LocalCartesian.html#a99907eda4b863acbe8e7d159a6482abb">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">InverseFlattening</a> () const throw ()</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Local Cartesian coordinates. </p>
@@ -94,7 +108,7 @@ Public Member Functions</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> earth(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+ <a class="code" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> earth(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
<span class="comment">// Alternatively: const Geocentric& earth = Geocentric::WGS84;</span>
<span class="keyword">const</span> <span class="keywordtype">double</span> lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; <span class="comment">// Paris</span>
<a class="code" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a> proj(lat0, lon0, 0, earth);
@@ -119,8 +133,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00036">36</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+</pre></div><p><a href="CartConvert.1.html">CartConvert</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">LocalCartesian</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="ad277a6798293d5d66168c3c1438d10a2"></a><!-- doxytag: member="GeographicLib::LocalCartesian::LocalCartesian" ref="ad277a6798293d5d66168c3c1438d10a2" args="(real lat0, real lon0, real h0=0, const Geocentric &earth=Geocentric::WGS84)" -->
<div class="memitem">
@@ -169,7 +182,7 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00060">60</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00063">63</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -196,7 +209,7 @@ Public Member Functions</h2></td></tr>
</dl>
<p>Sets <em>lat0</em> = 0, <em>lon0</em> = 0, <em>h0</em> = 0. </p>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00073">73</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00076">76</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -307,7 +320,7 @@ Public Member Functions</h2></td></tr>
</dl>
<p><em>lat</em> should be in the range [-90, 90]; <em>lon</em> and <em>lon0</em> should be in the range [-180, 360]. </p>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00101">101</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00104">104</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
<p>Referenced by <a class="el" href="CartConvert_8cpp_source.html#l00032">main()</a>.</p>
@@ -387,7 +400,7 @@ Public Member Functions</h2></td></tr>
</ul>
<p>Then we have <em>v0</em> = <em>M</em> . <em>v1</em>. </p>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00130">130</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00133">133</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -453,7 +466,7 @@ Public Member Functions</h2></td></tr>
</dl>
<p>The value of <em>lon</em> returned is in the range [-180, 180). </p>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00153">153</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00156">156</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
<p>Referenced by <a class="el" href="CartConvert_8cpp_source.html#l00032">main()</a>.</p>
@@ -533,7 +546,7 @@ Public Member Functions</h2></td></tr>
</ul>
<p>Then we have <em>v1</em> = <em>M^T</em> . <em>v0</em>, where <em>M^T</em> is the transpose of <em>M</em>. </p>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00183">183</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00186">186</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -552,7 +565,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>latitude of the origin (degrees). </dd></dl>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00200">200</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00203">203</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -571,7 +584,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>longitude of the origin (degrees). </dd></dl>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00205">205</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00208">208</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -590,7 +603,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>height of the origin (meters). </dd></dl>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00210">210</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00213">213</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -609,7 +622,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value of <em>a</em> inherited from the <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00217">217</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00220">220</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -628,27 +641,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00223">223</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="ad6991a2dff56a460a650c757ffda8e94"></a><!-- doxytag: member="GeographicLib::LocalCartesian::InverseFlattening" ref="ad6991a2dff56a460a650c757ffda8e94" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::LocalCartesian::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00229">229</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
+<p>Definition at line <a class="el" href="LocalCartesian_8hpp_source.html#l00226">226</a> of file <a class="el" href="LocalCartesian_8hpp_source.html">LocalCartesian.hpp</a>.</p>
</div>
</div>
@@ -657,8 +650,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="LocalCartesian_8cpp_source.html">LocalCartesian.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1MGRS-members.html b/doc/html/classGeographicLib_1_1MGRS-members.html
index d01875f..8d8f74c 100644
--- a/doc/html/classGeographicLib_1_1MGRS-members.html
+++ b/doc/html/classGeographicLib_1_1MGRS-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,13 +67,17 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">Flattening</a>()</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a91de10ebde478dbb85b3c7d057ff97b9">Forward</a>(int zone, bool northp, real x, real y, int prec, std::string &mgrs)</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a37f9dd9b12dbc74381116d842be47ccd">Forward</a>(int zone, bool northp, real x, real y, real lat, int prec, std::string &mgrs)</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">InverseFlattening</a>()</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">MajorRadius</a>()</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a066b79e78cd85bf4b50df50808bed7e3">Reverse</a>(const std::string &mgrs, int &zone, bool &northp, real &x, real &y, int &prec, bool centerp=true)</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MGRS.html#a6a0cfac496024eaf645c7a2f98a02a75">UTMUPS</a> class</td><td><a class="el" href="classGeographicLib_1_1MGRS.html">GeographicLib::MGRS</a></td><td><code> [friend]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1MGRS.html b/doc/html/classGeographicLib_1_1MGRS.html
index d5eae15..62ce7c6 100644
--- a/doc/html/classGeographicLib_1_1MGRS.html
+++ b/doc/html/classGeographicLib_1_1MGRS.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::MGRS Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,7 +82,6 @@ Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1MGRS.html#a8942a1dfafa3ea845ccc5fafb6ca4dc2">MajorRadius</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1MGRS.html#a8eee27799bda8238d6d0525dffdddd4e">Flattening</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">InverseFlattening</a> () throw ()</td></tr>
<tr><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1MGRS.html#a6a0cfac496024eaf645c7a2f98a02a75">UTMUPS</a></td></tr>
@@ -136,9 +150,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="MGRS_8hpp_source.html#l00063">63</a> of file <a class="el" href="MGRS_8hpp_source.html">MGRS.hpp</a>.</p>
-</div><hr/><h2>Member Function Documentation</h2>
+</pre></div> </div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a91de10ebde478dbb85b3c7d057ff97b9"></a><!-- doxytag: member="GeographicLib::MGRS::Forward" ref="a91de10ebde478dbb85b3c7d057ff97b9" args="(int zone, bool northp, real x, real y, int prec, std::string &mgrs)" -->
<div class="memitem">
<div class="memproto">
@@ -420,28 +432,6 @@ Friends</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a32792f0e117641cb48d06786d4c6fdbc"></a><!-- doxytag: member="GeographicLib::MGRS::InverseFlattening" ref="a32792f0e117641cb48d06786d4c6fdbc" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::MGRS::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="MGRS_8hpp_source.html#l00279">279</a> of file <a class="el" href="MGRS_8hpp_source.html">MGRS.hpp</a>.</p>
-
-<p>References <a class="el" href="UTMUPS_8hpp_source.html#l00311">GeographicLib::UTMUPS::InverseFlattening()</a>.</p>
-
-</div>
-</div>
<hr/><h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a6a0cfac496024eaf645c7a2f98a02a75"></a><!-- doxytag: member="GeographicLib::MGRS::UTMUPS" ref="a6a0cfac496024eaf645c7a2f98a02a75" args="" -->
<div class="memitem">
@@ -463,8 +453,13 @@ Friends</h2></td></tr>
<li><a class="el" href="MGRS_8cpp_source.html">MGRS.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1MagneticCircle-members.html b/doc/html/classGeographicLib_1_1MagneticCircle-members.html
index 5d28981..a02a78b 100644
--- a/doc/html/classGeographicLib_1_1MagneticCircle-members.html
+++ b/doc/html/classGeographicLib_1_1MagneticCircle-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,8 +75,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">operator()</a>(real lon, real &Bx, real &By, real &Bz, real &Bxt, real &Byt, real &Bzt) const </td><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html">GeographicLib::MagneticCircle</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html#a44783c9e44f16bbd48cc5061b30ce8e9">Time</a>() const </td><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html">GeographicLib::MagneticCircle</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1MagneticCircle.html b/doc/html/classGeographicLib_1_1MagneticCircle.html
index 45c3944..f668272 100644
--- a/doc/html/classGeographicLib_1_1MagneticCircle.html
+++ b/doc/html/classGeographicLib_1_1MagneticCircle.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::MagneticCircle Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -124,8 +139,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00036">36</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+</pre></div><p><a href="MagneticField.1.html">MagneticField</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> and <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a49170460b1833722ad9bc45b92c86e5a"></a><!-- doxytag: member="GeographicLib::MagneticCircle::MagneticCircle" ref="a49170460b1833722ad9bc45b92c86e5a" args="()" -->
<div class="memitem">
@@ -142,7 +156,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<p>A default constructor for the normal gravity. This sets up an uninitialized object which can be later replaced by the <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00075">75</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00078">78</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -194,7 +208,7 @@ Friends</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00090">90</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00093">93</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -266,7 +280,7 @@ Friends</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00108">108</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00111">111</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -285,7 +299,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object has been initialized. </dd></dl>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00120">120</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00123">123</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -304,7 +318,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00126">126</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00129">129</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -323,7 +337,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00132">132</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00135">135</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -342,7 +356,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the latitude of the circle (degrees). </dd></dl>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00137">137</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00140">140</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -361,7 +375,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the height of the circle (meters). </dd></dl>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00142">142</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00145">145</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -380,7 +394,7 @@ Friends</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the time (fractional years). </dd></dl>
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00147">147</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00150">150</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -396,7 +410,7 @@ Friends</h2></td></tr>
</div>
<div class="memdoc">
-<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00066">66</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticCircle_8hpp_source.html#l00069">69</a> of file <a class="el" href="MagneticCircle_8hpp_source.html">MagneticCircle.hpp</a>.</p>
</div>
</div>
@@ -405,8 +419,13 @@ Friends</h2></td></tr>
<li><a class="el" href="MagneticCircle_8cpp_source.html">MagneticCircle.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1MagneticModel-members.html b/doc/html/classGeographicLib_1_1MagneticModel-members.html
index c24a16e..b2ffb1f 100644
--- a/doc/html/classGeographicLib_1_1MagneticModel-members.html
+++ b/doc/html/classGeographicLib_1_1MagneticModel-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,8 +84,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">operator()</a>(real t, real lat, real lon, real h, real &Bx, real &By, real &Bz) const </td><td><a class="el" href="classGeographicLib_1_1MagneticModel.html">GeographicLib::MagneticModel</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1MagneticModel.html#a11fed1ca7a45947f6f43f6ba7897250f">operator()</a>(real t, real lat, real lon, real h, real &Bx, real &By, real &Bz, real &Bxt, real &Byt, real &Bzt) const </td><td><a class="el" href="classGeographicLib_1_1MagneticModel.html">GeographicLib::MagneticModel</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1MagneticModel.html b/doc/html/classGeographicLib_1_1MagneticModel.html
index 6f12732..5cb66ac 100644
--- a/doc/html/classGeographicLib_1_1MagneticModel.html
+++ b/doc/html/classGeographicLib_1_1MagneticModel.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::MagneticModel Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -140,8 +155,7 @@ Compute the magnetic field</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00061">61</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+</pre></div><p><a href="MagneticField.1.html">MagneticField</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> and <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">MagneticCircle</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a84a020586d58c4da61ec6ffbc7b4fa37"></a><!-- doxytag: member="GeographicLib::MagneticModel::MagneticModel" ref="a84a020586d58c4da61ec6ffbc7b4fa37" args="(const std::string &name, const std::string &path="", const Geocentric &earth=Geocentric::WGS84)" -->
<div class="memitem">
@@ -261,7 +275,7 @@ Compute the magnetic field</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00128">128</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00131">131</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
</div>
</div>
@@ -354,7 +368,7 @@ Compute the magnetic field</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00150">150</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00153">153</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
</div>
</div>
@@ -474,7 +488,7 @@ Compute the magnetic field</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00187">187</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00190">190</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -618,7 +632,7 @@ Compute the magnetic field</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>the description of the magnetic model, if available, from the Description file in the data file; if absent, return "NONE". </dd></dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00228">228</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00231">231</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -639,7 +653,7 @@ Compute the magnetic field</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>date of the model, if available, from the ReleaseDate field in the data file; if absent, return "UNKNOWN". </dd></dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00234">234</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00237">237</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -660,7 +674,7 @@ Compute the magnetic field</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>full file name used to load the magnetic model. </dd></dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00239">239</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00242">242</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -681,7 +695,7 @@ Compute the magnetic field</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>"name" used to load the magnetic model (from the first argument of the constructor, but this may be overridden by the model file). </dd></dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00245">245</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00248">248</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -702,7 +716,7 @@ Compute the magnetic field</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>directory used to load the magnetic model. </dd></dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00250">250</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00253">253</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
</div>
</div>
@@ -722,7 +736,7 @@ Compute the magnetic field</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>the minimum height above the ellipsoid (in meters) for which this <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> should be used.</dd></dl>
<p>Because the model will typically provide useful results slightly outside the range of allowed heights, no check of <em>t</em> argument is made by <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">MagneticModel::operator()()</a> or <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00261">261</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00264">264</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -744,7 +758,7 @@ Compute the magnetic field</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>the maximum height above the ellipsoid (in meters) for which this <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> should be used.</dd></dl>
<p>Because the model will typically provide useful results slightly outside the range of allowed heights, no check of <em>t</em> argument is made by <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">MagneticModel::operator()()</a> or <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00272">272</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00275">275</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -766,7 +780,7 @@ Compute the magnetic field</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>the minimum time (in years) for which this <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> should be used.</dd></dl>
<p>Because the model will typically provide useful results slightly outside the range of allowed times, no check of <em>t</em> argument is made by <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">MagneticModel::operator()()</a> or <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00283">283</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00286">286</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -788,7 +802,7 @@ Compute the magnetic field</h2></td></tr>
<dl class="return"><dt><b>Returns:</b></dt><dd>the maximum time (in years) for which this <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">MagneticModel</a> should be used.</dd></dl>
<p>Because the model will typically provide useful results slightly outside the range of allowed times, no check of <em>t</em> argument is made by <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">MagneticModel::operator()()</a> or <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">MagneticModel::Circle</a>. </p>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00294">294</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00297">297</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
@@ -809,7 +823,7 @@ Compute the magnetic field</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value of <em>a</em> inherited from the <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00301">301</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00304">304</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
</div>
</div>
@@ -828,7 +842,7 @@ Compute the magnetic field</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">Geocentric</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00307">307</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
+<p>Definition at line <a class="el" href="MagneticModel_8hpp_source.html#l00310">310</a> of file <a class="el" href="MagneticModel_8hpp_source.html">MagneticModel.hpp</a>.</p>
</div>
</div>
@@ -852,7 +866,7 @@ Compute the magnetic field</h2></td></tr>
<p>References <a class="el" href="MagneticModel_8cpp_source.html#l00027">GEOGRAPHICLIB_DATA</a>.</p>
-<p>Referenced by <a class="el" href="MagneticModel_8cpp_source.html#l00044">MagneticModel()</a>, and <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>.</p>
+<p>Referenced by <a class="el" href="MagneticField_8cpp_source.html#l00035">main()</a>, and <a class="el" href="MagneticModel_8cpp_source.html#l00044">MagneticModel()</a>.</p>
</div>
</div>
@@ -885,8 +899,13 @@ Compute the magnetic field</h2></td></tr>
<li><a class="el" href="MagneticModel_8cpp_source.html">MagneticModel.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Math-members.html b/doc/html/classGeographicLib_1_1Math-members.html
index cdd5691..3cb8dc5 100644
--- a/doc/html/classGeographicLib_1_1Math-members.html
+++ b/doc/html/classGeographicLib_1_1Math-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -49,30 +64,35 @@
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">asinh</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">atanh</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">asinh</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">atanh</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">bigendian</a></td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">cbrt</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">degree</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">cbrt</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">degree</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a5bb8bea024e11eb402ecbcf9bae28bb5">degree</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">expm1</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">expm1</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">extended</a> typedef</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">hypot</a>(T x, T y)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">infinity</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">hypot</a>(T x, T y)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">infinity</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a1606218c36b8d7c60a5ad5847a94ab9c">infinity</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">isfinite</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">isnan</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">log1p</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">NaN</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">isfinite</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">isnan</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">log1p</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">NaN</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a28304be9b5cb17eeb7413b059604a154">NaN</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">pi</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">pi</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#abb031de2a30d6fbac4c634b344e46df4">pi</a>()</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> typedef</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">sq</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">swab</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">sq</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">swab</a>(T x)</td><td><a class="el" href="classGeographicLib_1_1Math.html">GeographicLib::Math</a></td><td><code> [inline, static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Math.html b/doc/html/classGeographicLib_1_1Math.html
index bd9c932..1837c88 100644
--- a/doc/html/classGeographicLib_1_1Math.html
+++ b/doc/html/classGeographicLib_1_1Math.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::Math Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,37 +82,37 @@ Public Types</h2></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">pi</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">pi</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#abb031de2a30d6fbac4c634b344e46df4">pi</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">degree</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">degree</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a5bb8bea024e11eb402ecbcf9bae28bb5">degree</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">sq</a> (T x) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">sq</a> (T x) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">hypot</a> (T x, T y) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">hypot</a> (T x, T y) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">expm1</a> (T x) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">expm1</a> (T x) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">log1p</a> (T x) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">log1p</a> (T x) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">asinh</a> (T x) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">asinh</a> (T x) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">atanh</a> (T x) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">atanh</a> (T x) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">cbrt</a> (T x) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">cbrt</a> (T x) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">isfinite</a> (T x) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">isfinite</a> (T x) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">NaN</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">NaN</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a28304be9b5cb17eeb7413b059604a154">NaN</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">isnan</a> (T x) throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">isnan</a> (T x) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">infinity</a> () throw ()</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">infinity</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#a1606218c36b8d7c60a5ad5847a94ab9c">infinity</a> () throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">swab</a> (T x)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">swab</a> (T x)</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">bigendian</a> = WORDS_BIGENDIAN</td></tr>
@@ -118,7 +133,7 @@ Static Public Attributes</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- cout << <a class="code" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">Math::pi</a>() << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">Math::pi</a>()) << <span class="stringliteral">"\n"</span>;
+ cout << <a class="code" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">Math::pi</a>() << <span class="stringliteral">" "</span> << <a class="code" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">Math::sq</a>(<a class="code" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">Math::pi</a>()) << <span class="stringliteral">"\n"</span>;
}
<span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
@@ -126,9 +141,7 @@ Static Public Attributes</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00061">61</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
-</div><hr/><h2>Member Typedef Documentation</h2>
+</pre></div> </div><hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a436f350a6a9539e176dda19d0e4811f8"></a><!-- doxytag: member="GeographicLib::Math::extended" ref="a436f350a6a9539e176dda19d0e4811f8" args="" -->
<div class="memitem">
<div class="memproto">
@@ -161,7 +174,7 @@ Static Public Attributes</h2></td></tr>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a55d06bfccddf52b1c1066962af738b75"></a><!-- doxytag: member="GeographicLib::Math::pi" ref="a55d06bfccddf52b1c1066962af738b75" args="()" -->
+<a class="anchor" id="aca1580c771e7019bfe826512fba9b2f1"></a><!-- doxytag: member="GeographicLib::Math::pi" ref="aca1580c771e7019bfe826512fba9b2f1" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -201,13 +214,13 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">pi<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">pi<real>()</a>. </p>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00110">110</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a3d84677a4dfd6c2149c16426544eaf6c"></a><!-- doxytag: member="GeographicLib::Math::degree" ref="a3d84677a4dfd6c2149c16426544eaf6c" args="()" -->
+<a class="anchor" id="a0f3b4ea16cc2cb21557555fca3b1c201"></a><!-- doxytag: member="GeographicLib::Math::degree" ref="a0f3b4ea16cc2cb21557555fca3b1c201" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -247,13 +260,13 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">degree<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">degree<real>()</a>. </p>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00121">121</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="a8a952f405e2ff2cbe079ba5687c40327"></a><!-- doxytag: member="GeographicLib::Math::sq" ref="a8a952f405e2ff2cbe079ba5687c40327" args="(T x)" -->
+<a class="anchor" id="a6a092f38e231c80a1f144814c90f1895"></a><!-- doxytag: member="GeographicLib::Math::sq" ref="a6a092f38e231c80a1f144814c90f1895" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -286,11 +299,11 @@ template<typename T > </div>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00130">130</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
-<p>Referenced by <a class="el" href="MagneticModel_8cpp_source.html#l00222">GeographicLib::MagneticModel::FieldComponents()</a>, <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>, <a class="el" href="PolarStereographic_8cpp_source.html#l00072">GeographicLib::PolarStereographic::Forward()</a>, <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">GeographicLib::LambertConformalConic::Forward()</a>, <a class="el" h [...]
+<p>Referenced by <a class="el" href="AlbersEqualArea_8cpp_source.html#l00379">GeographicLib::AlbersEqualArea::Forward()</a>, <a class="el" href="AlbersEqualArea_8cpp_source.html#l00409">GeographicLib::AlbersEqualArea::Reverse()</a>, <a class="el" href="AlbersEqualArea_8cpp_source.html#l00439">GeographicLib::AlbersEqualArea::SetScale()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00123">GeographicLib::Geodesic::GenInverse()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00 [...]
</div>
</div>
-<a class="anchor" id="a0d422863198d4bec2aae6b187a60760c"></a><!-- doxytag: member="GeographicLib::Math::hypot" ref="a0d422863198d4bec2aae6b187a60760c" args="(T x, T y)" -->
+<a class="anchor" id="a62b6fca06c571481aafba3f1716a8bb2"></a><!-- doxytag: member="GeographicLib::Math::hypot" ref="a62b6fca06c571481aafba3f1716a8bb2" args="(T x, T y)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -334,11 +347,11 @@ template<typename T > </div>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00142">142</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
-<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00309">GeographicLib::GravityModel::Circle()</a>, <a class="el" href="MagneticModel_8cpp_source.html#l00222">GeographicLib::MagneticModel::FieldComponents()</a>, <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>, <a class="el" href="PolarStereographic_8cpp_source.html#l00072">GeographicLib::PolarStereographic::Forward()</a>, <a class="el" href="Geodesic_8cpp_ [...]
+<p>Referenced by <a class="el" href="AlbersEqualArea_8cpp_source.html#l00409">GeographicLib::AlbersEqualArea::Reverse()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00123">GeographicLib::Geodesic::GenInverse()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00250">GeographicLib::GravityModel::SphericalAnomaly()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00277">GeographicLib::GravityModel::GeoidHeight()</a>, <a class="el" href="GravityModel_8cpp_source.html#l00 [...]
</div>
</div>
-<a class="anchor" id="a71afd1ae80f942a0b90d65f7784bf2f8"></a><!-- doxytag: member="GeographicLib::Math::expm1" ref="a71afd1ae80f942a0b90d65f7784bf2f8" args="(T x)" -->
+<a class="anchor" id="a2fd4e8930d9dd953352d25fc184d843e"></a><!-- doxytag: member="GeographicLib::Math::expm1" ref="a2fd4e8930d9dd953352d25fc184d843e" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -373,7 +386,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="ac84507dc4df09cf27e831620e8ad8880"></a><!-- doxytag: member="GeographicLib::Math::log1p" ref="ac84507dc4df09cf27e831620e8ad8880" args="(T x)" -->
+<a class="anchor" id="a90eddd5a6d0c9dcc4a9f18dd647ac520"></a><!-- doxytag: member="GeographicLib::Math::log1p" ref="a90eddd5a6d0c9dcc4a9f18dd647ac520" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -411,7 +424,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="ab0998a80c8946d1c016c1bc4810a0698"></a><!-- doxytag: member="GeographicLib::Math::asinh" ref="ab0998a80c8946d1c016c1bc4810a0698" args="(T x)" -->
+<a class="anchor" id="aba75669f9d52fc672a8faaf69261bd8a"></a><!-- doxytag: member="GeographicLib::Math::asinh" ref="aba75669f9d52fc672a8faaf69261bd8a" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -427,7 +440,7 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>The inverse hyperbolic sine function. This is defined in terms of <a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">Math::log1p</a>(<em>x</em>) in order to maintain accuracy near <em>x</em> = 0. In addition, the odd parity of the function is enforced.</p>
+<p>The inverse hyperbolic sine function. This is defined in terms of <a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">Math::log1p</a>(<em>x</em>) in order to maintain accuracy near <em>x</em> = 0. In addition, the odd parity of the function is enforced.</p>
<dl><dt><b>Template Parameters:</b></dt><dd>
<table class="">
<tr><td class="paramname">T</td><td>the type of the argument and the returned value. </td></tr>
@@ -444,11 +457,11 @@ template<typename T > </div>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00256">256</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
-<p>Referenced by <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>, and <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">GeographicLib::LambertConformalConic::Forward()</a>.</p>
+<p>Referenced by <a class="el" href="LambertConformalConic_8cpp_source.html#l00324">GeographicLib::LambertConformalConic::Forward()</a>, and <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>.</p>
</div>
</div>
-<a class="anchor" id="a62ae372f983cb076561204be8de263bd"></a><!-- doxytag: member="GeographicLib::Math::atanh" ref="a62ae372f983cb076561204be8de263bd" args="(T x)" -->
+<a class="anchor" id="a372ac604592d9de9cf608cfdfc463447"></a><!-- doxytag: member="GeographicLib::Math::atanh" ref="a372ac604592d9de9cf608cfdfc463447" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -464,7 +477,7 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>The inverse hyperbolic tangent function. This is defined in terms of <a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">Math::log1p</a>(<em>x</em>) in order to maintain accuracy near <em>x</em> = 0. In addition, the odd parity of the function is enforced.</p>
+<p>The inverse hyperbolic tangent function. This is defined in terms of <a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">Math::log1p</a>(<em>x</em>) in order to maintain accuracy near <em>x</em> = 0. In addition, the odd parity of the function is enforced.</p>
<dl><dt><b>Template Parameters:</b></dt><dd>
<table class="">
<tr><td class="paramname">T</td><td>the type of the argument and the returned value. </td></tr>
@@ -483,7 +496,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="a21b33765456b50bf9e32ed0d57b441a6"></a><!-- doxytag: member="GeographicLib::Math::cbrt" ref="a21b33765456b50bf9e32ed0d57b441a6" args="(T x)" -->
+<a class="anchor" id="a04b87b033b845f4812a5700661c64a2a"></a><!-- doxytag: member="GeographicLib::Math::cbrt" ref="a04b87b033b845f4812a5700661c64a2a" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -518,7 +531,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="adadc6f5069c0a5f75a7c5a5bf2720aa3"></a><!-- doxytag: member="GeographicLib::Math::isfinite" ref="adadc6f5069c0a5f75a7c5a5bf2720aa3" args="(T x)" -->
+<a class="anchor" id="af61f7360e67c35131d80083e7b53dda8"></a><!-- doxytag: member="GeographicLib::Math::isfinite" ref="af61f7360e67c35131d80083e7b53dda8" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -551,11 +564,11 @@ template<typename T > </div>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00330">330</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
-<p>Referenced by <a class="el" href="AlbersEqualArea_8cpp_source.html#l00031">GeographicLib::AlbersEqualArea::AlbersEqualArea()</a>, <a class="el" href="Geocentric_8cpp_source.html#l00022">GeographicLib::Geocentric::Geocentric()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00054">GeographicLib::Geodesic::Geodesic()</a>, <a class="el" href="LambertConformalConic_8cpp_source.html#l00030">GeographicLib::LambertConformalConic::LambertConformalConic()</a>, <a class="el" href="NormalGra [...]
+<p>Referenced by <a class="el" href="AlbersEqualArea_8cpp_source.html#l00031">GeographicLib::AlbersEqualArea::AlbersEqualArea()</a>, <a class="el" href="AlbersEqualArea_8cpp_source.html#l00439">GeographicLib::AlbersEqualArea::SetScale()</a>, <a class="el" href="Geocentric_8cpp_source.html#l00022">GeographicLib::Geocentric::Geocentric()</a>, <a class="el" href="Geodesic_8cpp_source.html#l00054">GeographicLib::Geodesic::Geodesic()</a>, <a class="el" href="LambertConformalConic_8cpp_source. [...]
</div>
</div>
-<a class="anchor" id="a77c57c61f93d7ac3f6a5095489c36715"></a><!-- doxytag: member="GeographicLib::Math::NaN" ref="a77c57c61f93d7ac3f6a5095489c36715" args="()" -->
+<a class="anchor" id="ad1dc13a367125d3f8d291eaa98339186"></a><!-- doxytag: member="GeographicLib::Math::NaN" ref="ad1dc13a367125d3f8d291eaa98339186" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -596,13 +609,13 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">NaN<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">NaN<real>()</a>. </p>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00354">354</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aa63d7a640d1126e47af65f782dd40bca"></a><!-- doxytag: member="GeographicLib::Math::isnan" ref="aa63d7a640d1126e47af65f782dd40bca" args="(T x)" -->
+<a class="anchor" id="a554d35e9f54bf304447833a21ee2047c"></a><!-- doxytag: member="GeographicLib::Math::isnan" ref="a554d35e9f54bf304447833a21ee2047c" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -639,7 +652,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="a4e8a86ff2039262e99b8e41070cc2223"></a><!-- doxytag: member="GeographicLib::Math::infinity" ref="a4e8a86ff2039262e99b8e41070cc2223" args="()" -->
+<a class="anchor" id="a82ccc01be301f14061c681ee93a5120b"></a><!-- doxytag: member="GeographicLib::Math::infinity" ref="a82ccc01be301f14061c681ee93a5120b" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -680,13 +693,13 @@ template<typename T > </div>
</table>
</div>
<div class="memdoc">
-<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">infinity<real>()</a>. </p>
+<p>A synonym for <a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">infinity<real>()</a>. </p>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00385">385</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
</div>
</div>
-<a class="anchor" id="aa81163e3148b2d45d903d23f5d8fb261"></a><!-- doxytag: member="GeographicLib::Math::swab" ref="aa81163e3148b2d45d903d23f5d8fb261" args="(T x)" -->
+<a class="anchor" id="aec7f95c2bb99422f1f047cb628a232f8"></a><!-- doxytag: member="GeographicLib::Math::swab" ref="aec7f95c2bb99422f1f047cb628a232f8" args="(T x)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -736,7 +749,7 @@ template<typename T > </div>
<p>Definition at line <a class="el" href="Math_8hpp_source.html#l00099">99</a> of file <a class="el" href="Math_8hpp_source.html">Math.hpp</a>.</p>
-<p>Referenced by <a class="el" href="Utility_8hpp_source.html#l00372">GeographicLib::Utility::readarray()</a>.</p>
+<p>Referenced by <a class="el" href="Utility_8hpp_source.html#l00372">GeographicLib::Utility::readarray()</a>, and <a class="el" href="Utility_8hpp_source.html#l00435">GeographicLib::Utility::writearray()</a>.</p>
</div>
</div>
@@ -744,8 +757,13 @@ template<typename T > </div>
<li><a class="el" href="Math_8hpp_source.html">Math.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1NormalGravity-members.html b/doc/html/classGeographicLib_1_1NormalGravity-members.html
index 99ee830..d39765b 100644
--- a/doc/html/classGeographicLib_1_1NormalGravity-members.html
+++ b/doc/html/classGeographicLib_1_1NormalGravity-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -71,8 +86,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">V0</a>(real X, real Y, real Z, real &GammaX, real &GammaY, real &GammaZ) const </td><td><a class="el" href="classGeographicLib_1_1NormalGravity.html">GeographicLib::NormalGravity</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1NormalGravity.html#a70c328a95e05964180106d89c2583b78">WGS84</a></td><td><a class="el" href="classGeographicLib_1_1NormalGravity.html">GeographicLib::NormalGravity</a></td><td><code> [static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1NormalGravity.html b/doc/html/classGeographicLib_1_1NormalGravity.html
index 152fa9a..dee56c4 100644
--- a/doc/html/classGeographicLib_1_1NormalGravity.html
+++ b/doc/html/classGeographicLib_1_1NormalGravity.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::NormalGravity Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -124,9 +139,9 @@ Friends</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> grav(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), Constants::WGS84_GM<double>(),
+ <a class="code" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">NormalGravity</a> grav(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), Constants::WGS84_GM<double>(),
Constants::WGS84_omega<double>(),
- <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>(), 0);
+ <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>(), 0);
<span class="comment">// Alternatively: const NormalGravity& grav = NormalGravity::WGS84;</span>
<span class="keywordtype">double</span> lat = 27.99, h = 8820; <span class="comment">// Mt Everest</span>
<span class="keywordtype">double</span> gammay, gammaz;
@@ -139,9 +154,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="NormalGravity_8hpp_source.html#l00061">61</a> of file <a class="el" href="NormalGravity_8hpp_source.html">NormalGravity.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="af625bbc7df2d36ba5c43c8f20f61c134"></a><!-- doxytag: member="GeographicLib::NormalGravity::NormalGravity" ref="af625bbc7df2d36ba5c43c8f20f61c134" args="(real a, real GM, real omega, real f, real J2)" -->
<div class="memitem">
<div class="memproto">
@@ -776,8 +789,13 @@ Friends</h2></td></tr>
<li><a class="el" href="NormalGravity_8cpp_source.html">NormalGravity.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1OSGB-members.html b/doc/html/classGeographicLib_1_1OSGB-members.html
index 3fa0e30..30261d9 100644
--- a/doc/html/classGeographicLib_1_1OSGB-members.html
+++ b/doc/html/classGeographicLib_1_1OSGB-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,15 +72,19 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a0f705bee98c6669ca7a95394712fd758">Forward</a>(real lat, real lon, real &x, real &y)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a0a79e8f2babae1eb0305a0e728fea8c8">GridReference</a>(real x, real y, int prec, std::string &gridref)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a3693cfef49442747750e8393c81014aa">GridReference</a>(const std::string &gridref, real &x, real &y, int &prec, bool centerp=true)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">InverseFlattening</a>()</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a9bb3b0ff55a462ac2ebcd0cfd446d811">MajorRadius</a>()</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">OriginLatitude</a>()</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">OriginLongitude</a>()</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#ae006380e574858a81011752dd1d4af60">Reverse</a>(real x, real y, real &lat, real &lon, real &gamma, real &k)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1OSGB.html#ab804929a4126ed390a40d35e837b4001">Reverse</a>(real x, real y, real &lat, real &lon)</td><td><a class="el" href="classGeographicLib_1_1OSGB.html">GeographicLib::OSGB</a></td><td><code> [inline, static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1OSGB.html b/doc/html/classGeographicLib_1_1OSGB.html
index 4e4288b..2e5449d 100644
--- a/doc/html/classGeographicLib_1_1OSGB.html
+++ b/doc/html/classGeographicLib_1_1OSGB.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::OSGB Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,6 @@ Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#a9bb3b0ff55a462ac2ebcd0cfd446d811">MajorRadius</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#aae688ebd8c126f22517eaa0a01d659f8">Flattening</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">InverseFlattening</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#a65210bfdcac362f393a8f81f28259ad0">CentralScale</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">OriginLatitude</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1OSGB.html#a4eb3b20734af47c9661d40581555c345">OriginLongitude</a> () throw ()</td></tr>
@@ -125,9 +139,7 @@ Static Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00046">46</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
-</div><hr/><h2>Member Function Documentation</h2>
+</pre></div> </div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a92618eea9870908e11446875d80aab6b"></a><!-- doxytag: member="GeographicLib::OSGB::Forward" ref="a92618eea9870908e11446875d80aab6b" args="(real lat, real lon, real &x, real &y, real &gamma, real &k)" -->
<div class="memitem">
<div class="memproto">
@@ -506,26 +518,6 @@ Static Public Member Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a72bb966b2a93e4607bfcbf78f5b80bb4"></a><!-- doxytag: member="GeographicLib::OSGB::InverseFlattening" ref="a72bb966b2a93e4607bfcbf78f5b80bb4" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::OSGB::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the Airy 1830 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00201">201</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
-
-</div>
-</div>
<a class="anchor" id="a65210bfdcac362f393a8f81f28259ad0"></a><!-- doxytag: member="GeographicLib::OSGB::CentralScale" ref="a65210bfdcac362f393a8f81f28259ad0" args="()" -->
<div class="memitem">
<div class="memproto">
@@ -541,7 +533,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>k0</em> central scale for the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (0.9996012717). </dd></dl>
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00206">206</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00208">208</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
</div>
</div>
@@ -560,7 +552,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>latitude of the origin for the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (49 degrees). </dd></dl>
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00212">212</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00214">214</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
</div>
</div>
@@ -579,7 +571,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>longitude of the origin for the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (-2 degrees). </dd></dl>
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00217">217</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00219">219</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
</div>
</div>
@@ -598,7 +590,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>false northing the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (-100000 meters). </dd></dl>
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00222">222</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00224">224</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
</div>
</div>
@@ -617,7 +609,7 @@ Static Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd>false easting the <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">OSGB</a> projection (400000 meters). </dd></dl>
-<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00227">227</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
+<p>Definition at line <a class="el" href="OSGB_8hpp_source.html#l00229">229</a> of file <a class="el" href="OSGB_8hpp_source.html">OSGB.hpp</a>.</p>
</div>
</div>
@@ -626,8 +618,13 @@ Static Public Member Functions</h2></td></tr>
<li><a class="el" href="OSGB_8cpp_source.html">OSGB.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1PolarStereographic-members.html b/doc/html/classGeographicLib_1_1PolarStereographic-members.html
index d8b71bf..297823e 100644
--- a/doc/html/classGeographicLib_1_1PolarStereographic-members.html
+++ b/doc/html/classGeographicLib_1_1PolarStereographic-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +68,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a30ef1a1f906ee389e2a5f7e5fd7d8fa4">Forward</a>(bool northp, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#ac2fe4c9524ec35f8d05336555f96e1b1">Forward</a>(bool northp, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a170d21f9c7a2e922c57fc83a44ea3dfa">PolarStereographic</a>(real a, real f, real k0)</td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a01302b8dba43c57e3c3849f94123a157">Reverse</a>(bool northp, real x, real y, real &lat, real &lon, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td></td></tr>
@@ -61,8 +75,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a3f957214eb1d1248277a680e4c4ceed5">SetScale</a>(real lat, real k=real(1))</td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">UPS</a></td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">GeographicLib::PolarStereographic</a></td><td><code> [static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1PolarStereographic.html b/doc/html/classGeographicLib_1_1PolarStereographic.html
index bde0bda..ed35120 100644
--- a/doc/html/classGeographicLib_1_1PolarStereographic.html
+++ b/doc/html/classGeographicLib_1_1PolarStereographic.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::PolarStereographic Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,7 +85,6 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1PolarStereographic.html#ab1746576356a2409f34d9527064adfdd">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a3b08d03e475dae2c2a81c76420946942">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">InverseFlattening</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1PolarStereographic.html#ad6f7bd8a35208d91706ac8c258387e6f">CentralScale</a> () const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
@@ -98,8 +112,8 @@ Static Public Attributes</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>(),
- <a class="code" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">Constants::UPS_k0</a>());
+ <a class="code" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>(),
+ <a class="code" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">Constants::UPS_k0</a>());
<span class="comment">// Alternatively:</span>
<span class="comment">// const PolarStereographic& proj = PolarStereographic::UPS;</span>
<span class="keywordtype">bool</span> northp = <span class="keyword">true</span>;
@@ -124,9 +138,7 @@ Static Public Attributes</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00033">33</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
-</div><hr/><h2>Constructor & Destructor Documentation</h2>
+</pre></div> </div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a170d21f9c7a2e922c57fc83a44ea3dfa"></a><!-- doxytag: member="GeographicLib::PolarStereographic::PolarStereographic" ref="a170d21f9c7a2e922c57fc83a44ea3dfa" args="(real a, real f, real k0)" -->
<div class="memitem">
<div class="memproto">
@@ -211,7 +223,7 @@ Static Public Attributes</h2></td></tr>
<p>Definition at line <a class="el" href="PolarStereographic_8cpp_source.html#l00126">126</a> of file <a class="el" href="PolarStereographic_8cpp_source.html">PolarStereographic.cpp</a>.</p>
-<p>References <a class="el" href="PolarStereographic_8cpp_source.html#l00072">Forward()</a>, and <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00330">GeographicLib::Math::isfinite()</a>, and <a class="el" href="PolarStereographic_8cpp_source.html#l00072">Forward()</a>.</p>
</div>
</div>
@@ -288,7 +300,7 @@ Static Public Attributes</h2></td></tr>
<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
-<p>Referenced by <a class="el" href="PolarStereographic_8cpp_source.html#l00126">SetScale()</a>.</p>
+<p>Referenced by <a class="el" href="PolarStereographic_8cpp_source.html#l00126">SetScale()</a>, and <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>.</p>
</div>
</div>
@@ -365,6 +377,8 @@ Static Public Attributes</h2></td></tr>
<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>Referenced by <a class="el" href="UTMUPS_8cpp_source.html#l00124">GeographicLib::UTMUPS::Reverse()</a>.</p>
+
</div>
</div>
<a class="anchor" id="ac2fe4c9524ec35f8d05336555f96e1b1"></a><!-- doxytag: member="GeographicLib::PolarStereographic::Forward" ref="ac2fe4c9524ec35f8d05336555f96e1b1" args="(bool northp, real lat, real lon, real &x, real &y) const " -->
@@ -501,26 +515,6 @@ Static Public Attributes</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a969a21c3df38517a081e233ae90c098e"></a><!-- doxytag: member="GeographicLib::PolarStereographic::InverseFlattening" ref="a969a21c3df38517a081e233ae90c098e" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::PolarStereographic::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00155">155</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
-
-</div>
-</div>
<a class="anchor" id="ad6f7bd8a35208d91706ac8c258387e6f"></a><!-- doxytag: member="GeographicLib::PolarStereographic::CentralScale" ref="ad6f7bd8a35208d91706ac8c258387e6f" args="() const " -->
<div class="memitem">
<div class="memproto">
@@ -536,7 +530,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p>The central scale for the projection. This is the value of <em>k0</em> used in the constructor and is the scale at the pole unless overridden by <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a3f957214eb1d1248277a680e4c4ceed5">PolarStereographic::SetScale</a>. </p>
-<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00162">162</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00164">164</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
</div>
</div>
@@ -553,7 +547,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">PolarStereographic</a> with the WGS84 ellipsoid and the UPS scale factor. However, unlike UPS, no false easting or northing is added. </p>
-<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00170">170</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolarStereographic_8hpp_source.html#l00172">172</a> of file <a class="el" href="PolarStereographic_8hpp_source.html">PolarStereographic.hpp</a>.</p>
</div>
</div>
@@ -562,8 +556,13 @@ Static Public Attributes</h2></td></tr>
<li><a class="el" href="PolarStereographic_8cpp_source.html">PolarStereographic.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1PolygonArea-members.html b/doc/html/classGeographicLib_1_1PolygonArea-members.html
index 496f811..8910567 100644
--- a/doc/html/classGeographicLib_1_1PolygonArea-members.html
+++ b/doc/html/classGeographicLib_1_1PolygonArea-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -57,8 +72,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolygonArea.html#a060a1dc499bd079c62f62ed5cad929e5">PolygonArea</a>(const Geodesic &earth, bool polyline=false)</td><td><a class="el" href="classGeographicLib_1_1PolygonArea.html">GeographicLib::PolygonArea</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1PolygonArea.html#ac46ac5567223b3db2ee11e6c4f72c257">TestCompute</a>(real lat, real lon, bool reverse, bool sign, real &perimeter, real &area) const </td><td><a class="el" href="classGeographicLib_1_1PolygonArea.html">GeographicLib::PolygonArea</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1PolygonArea.html b/doc/html/classGeographicLib_1_1PolygonArea.html
index feaf849..d9664fc 100644
--- a/doc/html/classGeographicLib_1_1PolygonArea.html
+++ b/doc/html/classGeographicLib_1_1PolygonArea.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::PolygonArea Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -95,7 +110,7 @@ Public Member Functions</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>());
+ <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> geod(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>());
<span class="comment">// Alternatively: const Geodesic& geod = Geodesic::WGS84;</span>
<a class="code" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a> poly(geod);
poly.AddPoint( 52, 0); <span class="comment">// London</span>
@@ -112,8 +127,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00050">50</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+</pre></div><p><a href="Planimeter.1.html">Planimeter</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a060a1dc499bd079c62f62ed5cad929e5"></a><!-- doxytag: member="GeographicLib::PolygonArea::PolygonArea" ref="a060a1dc499bd079c62f62ed5cad929e5" args="(const Geodesic &earth, bool polyline=false)" -->
<div class="memitem">
@@ -148,7 +162,7 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00095">95</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00098">98</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
</div>
</div>
@@ -168,7 +182,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<p>Clear <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">PolygonArea</a>, allowing a new polygon to be started. </p>
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00107">107</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00110">110</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
<p>Referenced by <a class="el" href="Planimeter_8cpp_source.html#l00037">main()</a>.</p>
@@ -350,7 +364,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00178">178</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00181">181</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
</div>
</div>
@@ -369,7 +383,7 @@ Public Member Functions</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value inherited from the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a> object used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00184">184</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
+<p>Definition at line <a class="el" href="PolygonArea_8hpp_source.html#l00187">187</a> of file <a class="el" href="PolygonArea_8hpp_source.html">PolygonArea.hpp</a>.</p>
</div>
</div>
@@ -378,8 +392,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="PolygonArea_8cpp_source.html">PolygonArea.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalEngine-members.html b/doc/html/classGeographicLib_1_1SphericalEngine-members.html
index 3bb18af..2af8583 100644
--- a/doc/html/classGeographicLib_1_1SphericalEngine-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalEngine-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -49,17 +64,22 @@
</div>
<div class="contents">
This is the complete list of members for <a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a>, including all inherited members.<table>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">Circle</a>(const coeff c[], const real f[], real p, real z, real a)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">Circle</a>(const coeff c[], const real f[], real p, real z, real a)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a0c689dbf7b6bf2fb4cffb109085b1d3b">CircularEngine</a> class</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [friend]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#ab3fb8f933adb257df6b7537268d55a75">ClearRootTable</a>()</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fac720ca87adfc478dbfc13a37f0cf8ba9">FULL</a> enum value</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949f">normalization</a> enum name</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7fac63262c0a8bb18aee8c962a08d429">RootTable</a>(int N)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a5332d09191e018cbddc568c1fc71949fa2e3db3efd68d118e3f357a97eb77a131">SCHMIDT</a> enum value</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">Value</a>(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">Value</a>(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)</td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">GeographicLib::SphericalEngine</a></td><td><code> [static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalEngine.html b/doc/html/classGeographicLib_1_1SphericalEngine.html
index feebf10..ae8fa26 100644
--- a/doc/html/classGeographicLib_1_1SphericalEngine.html
+++ b/doc/html/classGeographicLib_1_1SphericalEngine.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::SphericalEngine Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -73,9 +88,9 @@ Public Types</h2></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td class="memTemplParams" colspan="2">template<bool gradp, normalization norm, int L> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">Value</a> (const <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">coeff</a> c[], const real f[], real x, real y, real z, real a, real &gradx, [...]
+<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">Value</a> (const <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">coeff</a> c[], const real f[], real x, real y, real z, real a, real &gradx, [...]
<tr><td class="memTemplParams" colspan="2">template<bool gradp, normalization norm, int L> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1CircularEngine.html">CircularEngine</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">Circle</a> (const <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">coeff</a> c[], const real f[], real p, real z, real a)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1CircularEngine.html">CircularEngine</a> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">Circle</a> (const <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">coeff</a> c[], const real f[], real p, real z, real a)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7fac63262c0a8bb18aee8c962a08d429">RootTable</a> (int N)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1SphericalEngine.html#ab3fb8f933adb257df6b7537268d55a75">ClearRootTable</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="friends"></a>
@@ -106,12 +121,12 @@ Friends</h2></td></tr>
vector<double> C(ca, ca + (N + 1) * (N + 2) / 2);
<span class="keywordtype">double</span> sa[] = {6, 5, 4, 3, 2, 1}; <span class="comment">// sine coefficients</span>
vector<double> S(sa, sa + N * (N + 1) / 2);
- <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> c[1];
+ <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::coeff c[1];
c[0] = <a class="code" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a>(C, S, N);
<span class="keywordtype">double</span> f[] = {1};
<span class="keywordtype">double</span> x = 2, y = 3, z = 1, a = 1;
<span class="keywordtype">double</span> v, vx, vy, vz;
- v = SphericalEngine::Value<true, SphericalEngine::FULL, 1>
+ v = <a class="code" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>::Value<true, SphericalEngine::FULL, 1>
(c, f, x, y, z, a, vx, vy, vz);
cout << v << <span class="stringliteral">" "</span> << vx << <span class="stringliteral">" "</span> << vy << <span class="stringliteral">" "</span> << vz << <span class="stringliteral">"\n"</span>;
}
@@ -121,9 +136,7 @@ Friends</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="SphericalEngine_8hpp_source.html#l00041">41</a> of file <a class="el" href="SphericalEngine_8hpp_source.html">SphericalEngine.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a5332d09191e018cbddc568c1fc71949f"></a><!-- doxytag: member="GeographicLib::SphericalEngine::normalization" ref="a5332d09191e018cbddc568c1fc71949f" args="" -->
<div class="memitem">
<div class="memproto">
@@ -151,7 +164,7 @@ Friends</h2></td></tr>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
-<a class="anchor" id="a987cbe2cdb67410174a6e9594da92573"></a><!-- doxytag: member="GeographicLib::SphericalEngine::Value" ref="a987cbe2cdb67410174a6e9594da92573" args="(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)" -->
+<a class="anchor" id="a1157f59596dd15bf0a21b6a7fb99630b"></a><!-- doxytag: member="GeographicLib::SphericalEngine::Value" ref="a1157f59596dd15bf0a21b6a7fb99630b" args="(const coeff c[], const real f[], real x, real y, real z, real a, real &gradx, real &grady, real &gradz)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -252,7 +265,7 @@ template<bool gradp, SphericalEngine::normalization norm, int L> </div>
</div>
</div>
-<a class="anchor" id="a7733e7913671b573042a2fcf8db089dd"></a><!-- doxytag: member="GeographicLib::SphericalEngine::Circle" ref="a7733e7913671b573042a2fcf8db089dd" args="(const coeff c[], const real f[], real p, real z, real a)" -->
+<a class="anchor" id="af6a5fa63535d47cf528b733bb6a97901"></a><!-- doxytag: member="GeographicLib::SphericalEngine::Circle" ref="af6a5fa63535d47cf528b733bb6a97901" args="(const coeff c[], const real f[], real p, real z, real a)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -316,11 +329,11 @@ template<bool gradp, SphericalEngine::normalization norm, int L> </div>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngine</a> object.</dd></dl>
-<p>If you need to evaluate the spherical harmonic sum for several points with constant <em>f</em>, <em>p</em> = sqrt(<em>x</em><sup>2</sup> + <em>y</em><sup>2</sup>), <em>z</em>, and <em>a</em>, it is more efficient to construct call <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">SphericalEngine::Circle</a> to give a <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngin [...]
+<p>If you need to evaluate the spherical harmonic sum for several points with constant <em>f</em>, <em>p</em> = sqrt(<em>x</em><sup>2</sup> + <em>y</em><sup>2</sup>), <em>z</em>, and <em>a</em>, it is more efficient to construct call <a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">SphericalEngine::Circle</a> to give a <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">CircularEngin [...]
<p>Definition at line <a class="el" href="SphericalEngine_8cpp_source.html#l00298">298</a> of file <a class="el" href="SphericalEngine_8cpp_source.html">SphericalEngine.cpp</a>.</p>
-<p>References <a class="el" href="SphericalEngine_8hpp_source.html#l00189">GeographicLib::SphericalEngine::coeff::Cv()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00173">GeographicLib::SphericalEngine::coeff::mmx()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00169">GeographicLib::SphericalEngine::coeff::nmx()</a>, <a class="el" href="Constants_8hpp_source.html#l00025">STATIC_ASSERT</a>, and <a class="el" href="SphericalEngine_8hpp_source.html#l00196">Geograp [...]
+<p>References <a class="el" href="Constants_8hpp_source.html#l00025">STATIC_ASSERT</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00169">GeographicLib::SphericalEngine::coeff::nmx()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00173">GeographicLib::SphericalEngine::coeff::mmx()</a>, <a class="el" href="SphericalEngine_8hpp_source.html#l00189">GeographicLib::SphericalEngine::coeff::Cv()</a>, and <a class="el" href="SphericalEngine_8hpp_source.html#l00196">Geograp [...]
</div>
</div>
@@ -395,8 +408,13 @@ template<bool gradp, SphericalEngine::normalization norm, int L> </div>
<li><a class="el" href="SphericalEngine_8cpp_source.html">SphericalEngine.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff-members.html b/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff-members.html
index 418b32e..fd2fb53 100644
--- a/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -65,8 +80,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">Sv</a>(int k) const </td><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">GeographicLib::SphericalEngine::coeff</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a4fc7e6c7faf3f5940ee8f3ab28216897">Sv</a>(int k, int n, int m, real f) const </td><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">GeographicLib::SphericalEngine::coeff</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff.html b/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff.html
index 59e78b9..6dce922 100644
--- a/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff.html
+++ b/doc/html/classGeographicLib_1_1SphericalEngine_1_1coeff.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::SphericalEngine::coeff Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -81,10 +96,8 @@ Static Public Member Functions</h2></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Package up coefficients for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">SphericalEngine</a>. </p>
-<p>This packages up the <em>C</em>, <em>S</em> coefficients and information about how the coefficients are stored into a single structure. This allows a vector of type <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> to be passed to <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">SphericalEngine::Value</a>. This class also includes func [...]
+<p>This packages up the <em>C</em>, <em>S</em> coefficients and information about how the coefficients are stored into a single structure. This allows a vector of type <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html" title="Package up coefficients for SphericalEngine.">SphericalEngine::coeff</a> to be passed to <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">SphericalEngine::Value</a>. This class also includes func [...]
<p>The storage layout of the coefficients is documented in <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">SphericalHarmonic</a> and <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#adb71d28aa60a813ca3384f9c58ef8fa1">SphericalHarmonic::SphericalHarmonic</a>. </p>
-
-<p>Definition at line <a class="el" href="SphericalEngine_8hpp_source.html#l00092">92</a> of file <a class="el" href="SphericalEngine_8hpp_source.html">SphericalEngine.hpp</a>.</p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a98ee0fd797434667a8cb5093d7644af4"></a><!-- doxytag: member="GeographicLib::SphericalEngine::coeff::coeff" ref="a98ee0fd797434667a8cb5093d7644af4" args="()" -->
<div class="memitem">
@@ -252,7 +265,7 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="SphericalEngine_8hpp_source.html#l00169">169</a> of file <a class="el" href="SphericalEngine_8hpp_source.html">SphericalEngine.hpp</a>.</p>
-<p>Referenced by <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>, and <a class="el" href="GravityModel_8cpp_source.html#l00043">GeographicLib::GravityModel::GravityModel()</a>.</p>
+<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00043">GeographicLib::GravityModel::GravityModel()</a>, and <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>.</p>
</div>
</div>
@@ -273,7 +286,7 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="SphericalEngine_8hpp_source.html#l00173">173</a> of file <a class="el" href="SphericalEngine_8hpp_source.html">SphericalEngine.hpp</a>.</p>
-<p>Referenced by <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>, and <a class="el" href="GravityModel_8cpp_source.html#l00043">GeographicLib::GravityModel::GravityModel()</a>.</p>
+<p>Referenced by <a class="el" href="GravityModel_8cpp_source.html#l00043">GeographicLib::GravityModel::GravityModel()</a>, and <a class="el" href="SphericalEngine_8cpp_source.html#l00298">GeographicLib::SphericalEngine::Circle()</a>.</p>
</div>
</div>
@@ -619,8 +632,13 @@ Static Public Member Functions</h2></td></tr>
<li><a class="el" href="SphericalEngine_8cpp_source.html">SphericalEngine.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic-members.html b/doc/html/classGeographicLib_1_1SphericalHarmonic-members.html
index 31130a9..49ddb23 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -60,8 +75,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a2ed62c0ad8fb1ab36d5a331a3f33c3d7">SphericalHarmonic</a>(const std::vector< real > &C, const std::vector< real > &S, int N, int nmx, int mmx, real a, unsigned norm=FULL)</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic.html">GeographicLib::SphericalHarmonic</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a6d97388f273d1511a8191d812e9bde3e">SphericalHarmonic</a>()</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic.html">GeographicLib::SphericalHarmonic</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic.html b/doc/html/classGeographicLib_1_1SphericalHarmonic.html
index cba0620..2b80024 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::SphericalHarmonic Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -136,9 +151,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="SphericalHarmonic_8hpp_source.html#l00066">66</a> of file <a class="el" href="SphericalHarmonic_8hpp_source.html">SphericalHarmonic.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a889791c67edc32865996842c600104eb"></a><!-- doxytag: member="GeographicLib::SphericalHarmonic::normalization" ref="a889791c67edc32865996842c600104eb" args="" -->
<div class="memitem">
<div class="memproto">
@@ -533,8 +546,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="SphericalHarmonic_8hpp_source.html">SphericalHarmonic.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic1-members.html b/doc/html/classGeographicLib_1_1SphericalHarmonic1-members.html
index ff1fca3..b9d7c7d 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic1-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic1-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -61,8 +76,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#aca472a143f7e000e232f4c261550b626">SphericalHarmonic1</a>(const std::vector< real > &C, const std::vector< real > &S, int N, int nmx, int mmx, const std::vector< real > &C1, const std::vector< real > &S1, int N1, int nmx1, int mmx1, real a, unsigned norm=FULL)</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html">GeographicLib::Spherical [...]
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#aa976378e6eae1e85ce04976b631ccb5f">SphericalHarmonic1</a>()</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html">GeographicLib::SphericalHarmonic1</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic1.html b/doc/html/classGeographicLib_1_1SphericalHarmonic1.html
index f0b0fe8..c9305cf 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic1.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic1.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::SphericalHarmonic1 Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -114,9 +129,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="SphericalHarmonic1_8hpp_source.html#l00032">32</a> of file <a class="el" href="SphericalHarmonic1_8hpp_source.html">SphericalHarmonic1.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="ac4aaa81e0f753894ecef173c4d667916"></a><!-- doxytag: member="GeographicLib::SphericalHarmonic1::normalization" ref="ac4aaa81e0f753894ecef173c4d667916" args="" -->
<div class="memitem">
<div class="memproto">
@@ -578,8 +591,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="SphericalHarmonic1_8hpp_source.html">SphericalHarmonic1.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic2-members.html b/doc/html/classGeographicLib_1_1SphericalHarmonic2-members.html
index 1b59442..fb46ed1 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic2-members.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic2-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -62,8 +77,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a19300de2d629c014883026bf0042b6f0">SphericalHarmonic2</a>(const std::vector< real > &C, const std::vector< real > &S, int N, int nmx, int mmx, const std::vector< real > &C1, const std::vector< real > &S1, int N1, int nmx1, int mmx1, const std::vector< real > &C2, const std::vector< real > &S2, int N2, int nmx2, int mmx2, real a, unsigned [...]
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a2fad42164df6175bc376e2f78e3e0c5a">SphericalHarmonic2</a>()</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html">GeographicLib::SphericalHarmonic2</a></td><td><code> [inline]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1SphericalHarmonic2.html b/doc/html/classGeographicLib_1_1SphericalHarmonic2.html
index e1ca40b..f2b8ef1 100644
--- a/doc/html/classGeographicLib_1_1SphericalHarmonic2.html
+++ b/doc/html/classGeographicLib_1_1SphericalHarmonic2.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::SphericalHarmonic2 Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -119,9 +134,7 @@ Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="SphericalHarmonic2_8hpp_source.html#l00033">33</a> of file <a class="el" href="SphericalHarmonic2_8hpp_source.html">SphericalHarmonic2.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="adbdc59ce4e6f1e4ce0fc7169c760f8be"></a><!-- doxytag: member="GeographicLib::SphericalHarmonic2::normalization" ref="adbdc59ce4e6f1e4ce0fc7169c760f8be" args="" -->
<div class="memitem">
<div class="memproto">
@@ -677,8 +690,13 @@ Public Member Functions</h2></td></tr>
<li><a class="el" href="SphericalHarmonic2_8hpp_source.html">SphericalHarmonic2.hpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1TransverseMercator-members.html b/doc/html/classGeographicLib_1_1TransverseMercator-members.html
index 662b25f..afdbe5b 100644
--- a/doc/html/classGeographicLib_1_1TransverseMercator-members.html
+++ b/doc/html/classGeographicLib_1_1TransverseMercator-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,15 +68,19 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a07d73a6d94e2434cbb937978d61a5ae7">Forward</a>(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#af689c212234963734354347d56bf12f6">Forward</a>(real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a15611aee4e3707e155278bab02403a07">Reverse</a>(real lon0, real x, real y, real &lat, real &lon, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#ac3bd58646dd6c06731a9baadee11f7e5">Reverse</a>(real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a9a4074c9d0ea35f0ebfc9c9f73bd3183">TransverseMercator</a>(real a, real f, real k0)</td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">UTM</a></td><td><a class="el" href="classGeographicLib_1_1TransverseMercator.html">GeographicLib::TransverseMercator</a></td><td><code> [static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1TransverseMercator.html b/doc/html/classGeographicLib_1_1TransverseMercator.html
index f0492a8..7187db5 100644
--- a/doc/html/classGeographicLib_1_1TransverseMercator.html
+++ b/doc/html/classGeographicLib_1_1TransverseMercator.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::TransverseMercator Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,6 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a47e93a8cde548b6e8d7c4c076bac4be6">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a6571ba8c59fd7e5e32c9994d37d4cdb5">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">InverseFlattening</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a63876dc20e8765501ca62022f9a73432">CentralScale</a> () const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
@@ -85,7 +99,7 @@ Static Public Attributes</h2></td></tr>
<p>Krüger's method has been extended from 4th to 6th order. The maximum error is 5 nm (5 nanometers), ground distance, for all positions within 35 degrees of the central meridian. The error in the convergence is 2e-15" and the relative error in the scale is 6e-12%%. See Sec. 4 of <a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a> for details. The speed penalty in going to 6th order is only about 1%. <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" ti [...]
<p>The ellipsoid parameters and the central scale are set in the constructor. The central meridian (which is a trivial shift of the longitude) is specified as the <em>lon0</em> argument of the <a class="el" href="classGeographicLib_1_1TransverseMercator.html#a07d73a6d94e2434cbb937978d61a5ae7">TransverseMercator::Forward</a> and <a class="el" href="classGeographicLib_1_1TransverseMercator.html#a15611aee4e3707e155278bab02403a07">TransverseMercator::Reverse</a> functions. The latitude of or [...]
<p>See <a class="el" href="TransverseMercator_8cpp.html" title="Implementation for GeographicLib::TransverseMercator class.">TransverseMercator.cpp</a> for more information on the implementation.</p>
-<p>See <a class="el" href="transversemercator.html">Transverse Mercator Projection</a> for a discussion of this projection.</p>
+<p>See <a class="el" href="transversemercator.html">Transverse Mercator projection</a> for a discussion of this projection.</p>
<p>Example of use: </p>
<div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::TransverseMercator class</span>
<span class="comment">// $Id: c01651412c934220e2293c344258773ac3d7131c $</span>
@@ -101,8 +115,8 @@ Static Public Attributes</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>(),
- <a class="code" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">Constants::UTM_k0</a>());
+ <a class="code" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>(),
+ <a class="code" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">Constants::UTM_k0</a>());
<span class="comment">// Alternatively: const TransverseMercator& proj = TransverseMercator::UTM;</span>
<span class="keywordtype">double</span> lon0 = -75; <span class="comment">// Central meridian for UTM zone 18</span>
{
@@ -126,8 +140,7 @@ Static Public Attributes</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00075">75</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+</pre></div><p><a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a9a4074c9d0ea35f0ebfc9c9f73bd3183"></a><!-- doxytag: member="GeographicLib::TransverseMercator::TransverseMercator" ref="a9a4074c9d0ea35f0ebfc9c9f73bd3183" args="(real a, real f, real k0)" -->
<div class="memitem">
@@ -248,7 +261,9 @@ Static Public Attributes</h2></td></tr>
<p>Definition at line <a class="el" href="TransverseMercator_8cpp_source.html#l00217">217</a> of file <a class="el" href="TransverseMercator_8cpp_source.html">TransverseMercator.cpp</a>.</p>
-<p>References <a class="el" href="Math_8hpp_source.html#l00256">GeographicLib::Math::asinh()</a>, <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, <a class="el" href="Math_8hpp_source.html#l00256">GeographicLib::Math::asinh()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+
+<p>Referenced by <a class="el" href="UTMUPS_8cpp_source.html#l00073">GeographicLib::UTMUPS::Forward()</a>.</p>
</div>
</div>
@@ -325,6 +340,8 @@ Static Public Attributes</h2></td></tr>
<p>References <a class="el" href="Math_8hpp_source.html#l00142">GeographicLib::Math::hypot()</a>, and <a class="el" href="Math_8hpp_source.html#l00130">GeographicLib::Math::sq()</a>.</p>
+<p>Referenced by <a class="el" href="UTMUPS_8cpp_source.html#l00124">GeographicLib::UTMUPS::Reverse()</a>.</p>
+
</div>
</div>
<a class="anchor" id="af689c212234963734354347d56bf12f6"></a><!-- doxytag: member="GeographicLib::TransverseMercator::Forward" ref="af689c212234963734354347d56bf12f6" args="(real lon0, real lat, real lon, real &x, real &y) const " -->
@@ -371,7 +388,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a07d73a6d94e2434cbb937978d61a5ae7">TransverseMercator::Forward</a> without returning the convergence and scale. </p>
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00149">149</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00153">153</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
</div>
</div>
@@ -419,7 +436,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1TransverseMercator.html#a15611aee4e3707e155278bab02403a07">TransverseMercator::Reverse</a> without returning the convergence and scale. </p>
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00158">158</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00162">162</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
</div>
</div>
@@ -438,7 +455,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00171">171</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00175">175</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
</div>
</div>
@@ -457,27 +474,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00177">177</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a5b5a56027507ae2aa08ab5b43a4bddc5"></a><!-- doxytag: member="GeographicLib::TransverseMercator::InverseFlattening" ref="a5b5a56027507ae2aa08ab5b43a4bddc5" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::TransverseMercator::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00183">183</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00181">181</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
</div>
</div>
@@ -496,7 +493,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>k0</em> central scale for the projection. This is the value of <em>k0</em> used in the constructor and is the scale on the central meridian. </dd></dl>
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00189">189</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00195">195</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
</div>
</div>
@@ -513,7 +510,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> with the WGS84 ellipsoid and the UTM scale factor. However, unlike UTM, no false easting or northing is added. </p>
-<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00197">197</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercator_8hpp_source.html#l00203">203</a> of file <a class="el" href="TransverseMercator_8hpp_source.html">TransverseMercator.hpp</a>.</p>
</div>
</div>
@@ -522,8 +519,13 @@ Static Public Attributes</h2></td></tr>
<li><a class="el" href="TransverseMercator_8cpp_source.html">TransverseMercator.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1TransverseMercatorExact-members.html b/doc/html/classGeographicLib_1_1TransverseMercatorExact-members.html
index b9995fc..5f85f18 100644
--- a/doc/html/classGeographicLib_1_1TransverseMercatorExact-members.html
+++ b/doc/html/classGeographicLib_1_1TransverseMercatorExact-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,15 +68,19 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">Flattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">Forward</a>(real lon0, real lat, real lon, real &x, real &y, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a39c294a3389af325c41a8de51fd9228a">Forward</a>(real lon0, real lat, real lon, real &x, real &y) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">InverseFlattening</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">MajorRadius</a>() const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a350070780708de5a622d4f4c4757104c">Reverse</a>(real lon0, real x, real y, real &lat, real &lon, real &gamma, real &k) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a56ff2f371d59e2ca0da8644571706169">Reverse</a>(real lon0, real x, real y, real &lat, real &lon) const </td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [inline]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a72ffcc89eee6f30a6d1f4d061518a6f1">TransverseMercatorExact</a>(real a, real f, real k0, bool extendp=false)</td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">UTM</a></td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">GeographicLib::TransverseMercatorExact</a></td><td><code> [static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1TransverseMercatorExact.html b/doc/html/classGeographicLib_1_1TransverseMercatorExact.html
index e48b079..a50aa85 100644
--- a/doc/html/classGeographicLib_1_1TransverseMercatorExact.html
+++ b/doc/html/classGeographicLib_1_1TransverseMercatorExact.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::TransverseMercatorExact Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -69,7 +84,6 @@ Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a19083f16ecfc51f9020d7242b3ded43e">MajorRadius</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a4045ec4b01c99c4bb589b1b3e7e07ca4">Flattening</a> () const throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">InverseFlattening</a> () const throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a355a827f45c194d56a465e0d4f91c3a3">CentralScale</a> () const throw ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
@@ -88,7 +102,7 @@ Static Public Attributes</h2></td></tr>
<p>The ellipsoid parameters and the central scale are set in the constructor. The central meridian (which is a trivial shift of the longitude) is specified as the <em>lon0</em> argument of the <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">TransverseMercatorExact::Forward</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a350070780708de5a622d4f4c4757104c">TransverseMercatorExact::Reverse</a> functions [...]
<p>See <a href="http://geographiclib.sourceforge.net/tm-grid.kmz" type="application/vnd.google-earth.kmz">tm-grid.kmz</a>, for an illustration of the transverse Mercator grid in Google Earth.</p>
<p>See <a class="el" href="TransverseMercatorExact_8cpp.html" title="Implementation for GeographicLib::TransverseMercatorExact class.">TransverseMercatorExact.cpp</a> for more information on the implementation.</p>
-<p>See <a class="el" href="transversemercator.html">Transverse Mercator Projection</a> for a discussion of this projection.</p>
+<p>See <a class="el" href="transversemercator.html">Transverse Mercator projection</a> for a discussion of this projection.</p>
<p>Example of use: </p>
<div class="fragment"><pre class="fragment"><span class="comment">// Example of using the GeographicLib::TransverseMercatorExact class</span>
<span class="comment">// $Id: 047cbdcff7135fed1fecf5f50ff2195eda993fcb $</span>
@@ -104,8 +118,8 @@ Static Public Attributes</h2></td></tr>
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
<span class="keywordflow">try</span> {
- <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">Constants::WGS84_f</a>(),
- <a class="code" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">Constants::UTM_k0</a>());
+ <a class="code" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> proj(<a class="code" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">Constants::WGS84_a</a>(), <a class="code" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">Constants::WGS84_f</a>(),
+ <a class="code" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">Constants::UTM_k0</a>());
<span class="comment">// Alternatively:</span>
<span class="comment">// const TransverseMercatorExact& proj = TransverseMercatorExact::UTM;</span>
<span class="keywordtype">double</span> lon0 = -75; <span class="comment">// Central meridian for UTM zone 18</span>
@@ -130,8 +144,7 @@ Static Public Attributes</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00075">75</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+</pre></div><p><a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a command-line utility providing access to the functionality of <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">TransverseMercator</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a>. </p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" id="a72ffcc89eee6f30a6d1f4d061518a6f1"></a><!-- doxytag: member="GeographicLib::TransverseMercatorExact::TransverseMercatorExact" ref="a72ffcc89eee6f30a6d1f4d061518a6f1" args="(real a, real f, real k0, bool extendp=false)" -->
<div class="memitem">
@@ -393,7 +406,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a0dab8d1a275df9e4796d2d858f42f7e3">TransverseMercatorExact::Forward</a> without returning the convergence and scale. </p>
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00213">213</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00217">217</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
</div>
</div>
@@ -441,7 +454,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a350070780708de5a622d4f4c4757104c">TransverseMercatorExact::Reverse</a> without returning the convergence and scale. </p>
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00223">223</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00227">227</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
</div>
</div>
@@ -460,7 +473,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>a</em> the equatorial radius of the ellipsoid (meters). This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00236">236</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00240">240</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
</div>
</div>
@@ -479,27 +492,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>f</em> the flattening of the ellipsoid. This is the value used in the constructor. </dd></dl>
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00242">242</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a9c4df948ed85f96273c04414fc6871df"></a><!-- doxytag: member="GeographicLib::TransverseMercatorExact::InverseFlattening" ref="a9c4df948ed85f96273c04414fc6871df" args="() const " -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname"><a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::TransverseMercatorExact::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> const throw ()<code> [inline]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00248">248</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00246">246</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
</div>
</div>
@@ -518,7 +511,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<dl class="return"><dt><b>Returns:</b></dt><dd><em>k0</em> central scale for the projection. This is the value of <em>k0</em> used in the constructor and is the scale on the central meridian. </dd></dl>
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00254">254</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00260">260</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
</div>
</div>
@@ -535,7 +528,7 @@ Static Public Attributes</h2></td></tr>
<div class="memdoc">
<p>A global instantiation of <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">TransverseMercatorExact</a> with the WGS84 ellipsoid and the UTM scale factor. However, unlike UTM, no false easting or northing is added. </p>
-<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00262">262</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
+<p>Definition at line <a class="el" href="TransverseMercatorExact_8hpp_source.html#l00268">268</a> of file <a class="el" href="TransverseMercatorExact_8hpp_source.html">TransverseMercatorExact.hpp</a>.</p>
</div>
</div>
@@ -544,8 +537,13 @@ Static Public Attributes</h2></td></tr>
<li><a class="el" href="TransverseMercatorExact_8cpp_source.html">TransverseMercatorExact.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1UTMUPS-members.html b/doc/html/classGeographicLib_1_1UTMUPS-members.html
index 856f70f..d823322 100644
--- a/doc/html/classGeographicLib_1_1UTMUPS-members.html
+++ b/doc/html/classGeographicLib_1_1UTMUPS-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -55,7 +70,6 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a921d6c23e728e0b17651902d43fb56e8">Forward</a>(real lat, real lon, int &zone, bool &northp, real &x, real &y, real &gamma, real &k, int setzone=STANDARD, bool mgrslimits=false)</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#aa21ec1bc26f691e0a6f2ccc44debe6f0">Forward</a>(real lat, real lon, int &zone, bool &northp, real &x, real &y, int setzone=STANDARD, bool mgrslimits=false)</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">INVALID</a> enum value</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">InverseFlattening</a>()</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a293aa30508096d49db77a23917ea1092">MajorRadius</a>()</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7a9059a8e3b4721e27869e99ed1ae3d320">MATCH</a> enum value</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7ac22db7e136b6e06fba7c3c06b5888362">MAXPSEUDOZONE</a> enum value</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td></td></tr>
@@ -73,8 +87,13 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#abd70d3f90f5c79a09bdd217b67e6729b">UTMShift</a>()</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td><code> [static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7">zonespec</a> enum name</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">GeographicLib::UTMUPS</a></td><td></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1UTMUPS.html b/doc/html/classGeographicLib_1_1UTMUPS.html
index 4c40947..f1f8426 100644
--- a/doc/html/classGeographicLib_1_1UTMUPS.html
+++ b/doc/html/classGeographicLib_1_1UTMUPS.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::UTMUPS Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -90,7 +105,6 @@ Static Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inspector functions</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1UTMUPS.html#a293aa30508096d49db77a23917ea1092">MajorRadius</a> () throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1UTMUPS.html#a182de2e29f1181c55a266777039b8a9d">Flattening</a> () throw ()</td></tr>
-<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">InverseFlattening</a> () throw ()</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Convert between Geographic coordinates and UTM/UPS. </p>
@@ -151,9 +165,7 @@ Static Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="UTMUPS_8hpp_source.html#l00063">63</a> of file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
-</div><hr/><h2>Member Enumeration Documentation</h2>
+</pre></div> </div><hr/><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a0c459615da18cc899a960bdc8c5b11b7"></a><!-- doxytag: member="GeographicLib::UTMUPS::zonespec" ref="a0c459615da18cc899a960bdc8c5b11b7" args="" -->
<div class="memitem">
<div class="memproto">
@@ -251,7 +263,7 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="UTMUPS_8cpp_source.html#l00049">49</a> of file <a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a>.</p>
-<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00291">GeographicLib::GeoCoords::SetAltZone()</a>.</p>
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00299">GeographicLib::GeoCoords::SetAltZone()</a>.</p>
</div>
</div>
@@ -347,7 +359,9 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="UTMUPS_8cpp_source.html#l00073">73</a> of file <a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a>.</p>
-<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00200">GeographicLib::GeoCoords::Reset()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00291">GeographicLib::GeoCoords::SetAltZone()</a>.</p>
+<p>References <a class="el" href="TransverseMercator_8cpp_source.html#l00217">GeographicLib::TransverseMercator::Forward()</a>, and <a class="el" href="PolarStereographic_8cpp_source.html#l00072">GeographicLib::PolarStereographic::Forward()</a>.</p>
+
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00208">GeographicLib::GeoCoords::Reset()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00299">GeographicLib::GeoCoords::SetAltZone()</a>.</p>
</div>
</div>
@@ -439,7 +453,9 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="UTMUPS_8cpp_source.html#l00124">124</a> of file <a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a>.</p>
-<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00215">GeographicLib::GeoCoords::Reset()</a>.</p>
+<p>References <a class="el" href="TransverseMercator_8cpp_source.html#l00387">GeographicLib::TransverseMercator::Reverse()</a>, and <a class="el" href="PolarStereographic_8cpp_source.html#l00095">GeographicLib::PolarStereographic::Reverse()</a>.</p>
+
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00223">GeographicLib::GeoCoords::Reset()</a>.</p>
</div>
</div>
@@ -692,7 +708,7 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="UTMUPS_8hpp_source.html#l00295">295</a> of file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
-<p>Referenced by <a class="el" href="MGRS_8hpp_source.html#l00265">GeographicLib::MGRS::MajorRadius()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00430">GeographicLib::GeoCoords::MajorRadius()</a>.</p>
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00459">GeographicLib::GeoCoords::MajorRadius()</a>, and <a class="el" href="MGRS_8hpp_source.html#l00265">GeographicLib::MGRS::MajorRadius()</a>.</p>
</div>
</div>
@@ -714,29 +730,7 @@ Static Public Member Functions</h2></td></tr>
<p>Definition at line <a class="el" href="UTMUPS_8hpp_source.html#l00304">304</a> of file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
-<p>Referenced by <a class="el" href="MGRS_8hpp_source.html#l00273">GeographicLib::MGRS::Flattening()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00438">GeographicLib::GeoCoords::Flattening()</a>.</p>
-
-</div>
-</div>
-<a class="anchor" id="a3de827995b6327282bfe95fcab99ebb2"></a><!-- doxytag: member="GeographicLib::UTMUPS::InverseFlattening" ref="a3de827995b6327282bfe95fcab99ebb2" args="()" -->
-<div class="memitem">
-<div class="memproto">
- <table class="memname">
- <tr>
- <td class="memname">static <a class="el" href="classGeographicLib_1_1Math.html#aeee4778d7cf2f9fb9648efe4911da59d">Math::real</a> GeographicLib::UTMUPS::InverseFlattening </td>
- <td>(</td>
- <td class="paramname"></td><td>)</td>
- <td> throw ()<code> [inline, static]</code></td>
- </tr>
- </table>
-</div>
-<div class="memdoc">
-<p><b>DEPRECATED</b> </p>
-<dl class="return"><dt><b>Returns:</b></dt><dd><em>r</em> the inverse flattening of the WGS84 ellipsoid. </dd></dl>
-
-<p>Definition at line <a class="el" href="UTMUPS_8hpp_source.html#l00311">311</a> of file <a class="el" href="UTMUPS_8hpp_source.html">UTMUPS.hpp</a>.</p>
-
-<p>Referenced by <a class="el" href="MGRS_8hpp_source.html#l00279">GeographicLib::MGRS::InverseFlattening()</a>, and <a class="el" href="GeoCoords_8hpp_source.html#l00444">GeographicLib::GeoCoords::InverseFlattening()</a>.</p>
+<p>Referenced by <a class="el" href="GeoCoords_8hpp_source.html#l00467">GeographicLib::GeoCoords::Flattening()</a>, and <a class="el" href="MGRS_8hpp_source.html#l00273">GeographicLib::MGRS::Flattening()</a>.</p>
</div>
</div>
@@ -745,8 +739,13 @@ Static Public Member Functions</h2></td></tr>
<li><a class="el" href="UTMUPS_8cpp_source.html">UTMUPS.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Utility-members.html b/doc/html/classGeographicLib_1_1Utility-members.html
index 4fe9b33..e2f5d5c 100644
--- a/doc/html/classGeographicLib_1_1Utility-members.html
+++ b/doc/html/classGeographicLib_1_1Utility-members.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Member List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -55,18 +70,25 @@ This is the complete list of members for <a class="el" href="classGeographicLib_
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a0590e044fe0352adc10a58c46fa1e529">day</a>(int y, int m, int d, bool check)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a42a6f8679c068dcb06f1da26aa21dfb1">dow</a>(int y, int m, int d)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a4687c34e55dc7ccc135e31a72402f008">dow</a>(int s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">fract</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">fractionalyear</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">fract</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">fractionalyear</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a9a47fdaaa00a92e9a42035e62bd98faa">lookup</a>(const std::string &s, char c)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">num</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">nummatch</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">num</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">nummatch</a>(const std::string &s)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
<tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a96252f445a912b77517bff04d4d6ea74">ParseLine</a>(const std::string &line, std::string &key, std::string &val)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">readarray</a>(std::istream &str, IntT array[], size_t num)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a3acad0c1faffcd87292776d1cae26290">readarray</a>(std::istream &str, std::vector< IntT > &array)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
- <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">str</a>(T x, int p=-1)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">readarray</a>(std::istream &str, IntT array[], size_t num)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a044796b4fc14a952abec27da27fc20be">readarray</a>(std::istream &str, std::vector< IntT > &array)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">str</a>(T x, int p=-1)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a276eb20ace49c5260e1878c7d8aefd31">writearray</a>(std::ostream &str, const IntT array[], size_t num)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classGeographicLib_1_1Utility.html#a0621066e4aa146a2c100802375e70389">writearray</a>(std::ostream &str, std::vector< IntT > &array)</td><td><a class="el" href="classGeographicLib_1_1Utility.html">GeographicLib::Utility</a></td><td><code> [inline, static]</code></td></tr>
</table></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classGeographicLib_1_1Utility.html b/doc/html/classGeographicLib_1_1Utility.html
index 61f3511..609475b 100644
--- a/doc/html/classGeographicLib_1_1Utility.html
+++ b/doc/html/classGeographicLib_1_1Utility.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib::Utility Class Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -67,20 +82,24 @@ Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a42a6f8679c068dcb06f1da26aa21dfb1">dow</a> (int y, int m, int d) throw ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a4687c34e55dc7ccc135e31a72402f008">dow</a> (int s) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">fractionalyear</a> (const std::string &s)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">fractionalyear</a> (const std::string &s)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static std::string </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">str</a> (T x, int p=-1)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static std::string </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">str</a> (T x, int p=-1)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">num</a> (const std::string &s)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">num</a> (const std::string &s)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">nummatch</a> (const std::string &s)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">nummatch</a> (const std::string &s)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">fract</a> (const std::string &s)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">fract</a> (const std::string &s)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a9a47fdaaa00a92e9a42035e62bd98faa">lookup</a> (const std::string &s, char c) throw ()</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename ExtT , typename IntT , bool bigendp> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">readarray</a> (std::istream &str, IntT array[], size_t num)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">readarray</a> (std::istream &str, IntT array[], size_t num)</td></tr>
<tr><td class="memTemplParams" colspan="2">template<typename ExtT , typename IntT , bool bigendp> </td></tr>
-<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a3acad0c1faffcd87292776d1cae26290">readarray</a> (std::istream &str, std::vector< IntT > &array)</td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a044796b4fc14a952abec27da27fc20be">readarray</a> (std::istream &str, std::vector< IntT > &array)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename ExtT , typename IntT , bool bigendp> </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a276eb20ace49c5260e1878c7d8aefd31">writearray</a> (std::ostream &str, const IntT array[], size_t num)</td></tr>
+<tr><td class="memTemplParams" colspan="2">template<typename ExtT , typename IntT , bool bigendp> </td></tr>
+<tr><td class="memTemplItemLeft" align="right" valign="top">static void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a0621066e4aa146a2c100802375e70389">writearray</a> (std::ostream &str, std::vector< IntT > &array)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGeographicLib_1_1Utility.html#a96252f445a912b77517bff04d4d6ea74">ParseLine</a> (const std::string &line, std::string &key, std::string &val)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
@@ -109,9 +128,7 @@ Static Public Member Functions</h2></td></tr>
}
<span class="keywordflow">return</span> 0;
}
-</pre></div>
-<p>Definition at line <a class="el" href="Utility_8hpp_source.html#l00030">30</a> of file <a class="el" href="Utility_8hpp_source.html">Utility.hpp</a>.</p>
-</div><hr/><h2>Member Function Documentation</h2>
+</pre></div> </div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a877a58000a56bc84c354cf42b4b1cd99"></a><!-- doxytag: member="GeographicLib::Utility::day" ref="a877a58000a56bc84c354cf42b4b1cd99" args="(int y, int m=1, int d=1)" -->
<div class="memitem">
<div class="memproto">
@@ -388,7 +405,7 @@ Static Public Member Functions</h2></td></tr>
</div>
</div>
-<a class="anchor" id="a6daedff1fb56da7ee149066c1cce106a"></a><!-- doxytag: member="GeographicLib::Utility::fractionalyear" ref="a6daedff1fb56da7ee149066c1cce106a" args="(const std::string &s)" -->
+<a class="anchor" id="a074607cb34326b7109532c8fdd07e38c"></a><!-- doxytag: member="GeographicLib::Utility::fractionalyear" ref="a074607cb34326b7109532c8fdd07e38c" args="(const std::string &s)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -424,7 +441,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="a53fbf616c74bab1cbbc9e8d4c7b6739f"></a><!-- doxytag: member="GeographicLib::Utility::str" ref="a53fbf616c74bab1cbbc9e8d4c7b6739f" args="(T x, int p=-1)" -->
+<a class="anchor" id="ae87a7ae2bee75f724907af9f753f03b7"></a><!-- doxytag: member="GeographicLib::Utility::str" ref="ae87a7ae2bee75f724907af9f753f03b7" args="(T x, int p=-1)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -473,7 +490,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="a8a490ea58d4de4c5a7ce86ab2cda25bd"></a><!-- doxytag: member="GeographicLib::Utility::num" ref="a8a490ea58d4de4c5a7ce86ab2cda25bd" args="(const std::string &s)" -->
+<a class="anchor" id="aa35f1f83c0543558a79b3cf42ddf50c8"></a><!-- doxytag: member="GeographicLib::Utility::num" ref="aa35f1f83c0543558a79b3cf42ddf50c8" args="(const std::string &s)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -508,7 +525,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="a6e8268e5d125846dee7b087dec889825"></a><!-- doxytag: member="GeographicLib::Utility::nummatch" ref="a6e8268e5d125846dee7b087dec889825" args="(const std::string &s)" -->
+<a class="anchor" id="ad0d89bfe63814bab5312306fe3ac2b43"></a><!-- doxytag: member="GeographicLib::Utility::nummatch" ref="ad0d89bfe63814bab5312306fe3ac2b43" args="(const std::string &s)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -543,7 +560,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="ad6fbe8736a470a0acecf191e29f72ceb"></a><!-- doxytag: member="GeographicLib::Utility::fract" ref="ad6fbe8736a470a0acecf191e29f72ceb" args="(const std::string &s)" -->
+<a class="anchor" id="a46b13d9ce2893f7e0fe6e7da093f528f"></a><!-- doxytag: member="GeographicLib::Utility::fract" ref="a46b13d9ce2893f7e0fe6e7da093f528f" args="(const std::string &s)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -617,7 +634,7 @@ template<typename T > </div>
</div>
</div>
-<a class="anchor" id="ae9208f2d9c37de596ead9af2136e8468"></a><!-- doxytag: member="GeographicLib::Utility::readarray" ref="ae9208f2d9c37de596ead9af2136e8468" args="(std::istream &str, IntT array[], size_t num)" -->
+<a class="anchor" id="a23e88040ceb60bd3fe28efc04f9119f8"></a><!-- doxytag: member="GeographicLib::Utility::readarray" ref="a23e88040ceb60bd3fe28efc04f9119f8" args="(std::istream &str, IntT array[], size_t num)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -673,7 +690,7 @@ template<typename ExtT , typename IntT , bool bigendp> </div>
</div>
</div>
-<a class="anchor" id="a3acad0c1faffcd87292776d1cae26290"></a><!-- doxytag: member="GeographicLib::Utility::readarray" ref="a3acad0c1faffcd87292776d1cae26290" args="(std::istream &str, std::vector< IntT > &array)" -->
+<a class="anchor" id="a044796b4fc14a952abec27da27fc20be"></a><!-- doxytag: member="GeographicLib::Utility::readarray" ref="a044796b4fc14a952abec27da27fc20be" args="(std::istream &str, std::vector< IntT > &array)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -720,6 +737,109 @@ template<typename ExtT , typename IntT , bool bigendp> </div>
</div>
</div>
+<a class="anchor" id="a276eb20ace49c5260e1878c7d8aefd31"></a><!-- doxytag: member="GeographicLib::Utility::writearray" ref="a276eb20ace49c5260e1878c7d8aefd31" args="(std::ostream &str, const IntT array[], size_t num)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExtT , typename IntT , bool bigendp> </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void GeographicLib::Utility::writearray </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream & </td>
+ <td class="paramname"><em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const IntT </td>
+ <td class="paramname"><em>array</em>[], </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">size_t </td>
+ <td class="paramname"><em>num</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td><code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Write data in an array of type IntT as type ExtT to a binary stream. The data in the file is in (bigendp ? big : little)-endian format.</p>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table class="">
+ <tr><td class="paramname">ExtT</td><td>the type of the objects in the binary stream (external). </td></tr>
+ <tr><td class="paramname">IntT</td><td>the type of the objects in the array (internal). </td></tr>
+ <tr><td class="paramname">bigendp</td><td>true if the external storage format is big-endian. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">str</td><td>the output stream for the data of type ExtT (external). </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">array</td><td>the input array of type IntT (internal). </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">num</td><td>the size of the array. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="Utility_8hpp_source.html#l00435">435</a> of file <a class="el" href="Utility_8hpp_source.html">Utility.hpp</a>.</p>
+
+<p>References <a class="el" href="Math_8hpp_source.html#l00099">GeographicLib::Math::bigendian</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0621066e4aa146a2c100802375e70389"></a><!-- doxytag: member="GeographicLib::Utility::writearray" ref="a0621066e4aa146a2c100802375e70389" args="(std::ostream &str, std::vector< IntT > &array)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template<typename ExtT , typename IntT , bool bigendp> </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void GeographicLib::Utility::writearray </td>
+ <td>(</td>
+ <td class="paramtype">std::ostream & </td>
+ <td class="paramname"><em>str</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector< IntT > & </td>
+ <td class="paramname"><em>array</em> </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td><code> [inline, static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Write data in an array of type IntT as type ExtT to a binary stream. The data in the file is in (bigendp ? big : little)-endian format.</p>
+<dl><dt><b>Template Parameters:</b></dt><dd>
+ <table class="">
+ <tr><td class="paramname">ExtT</td><td>the type of the objects in the binary stream (external). </td></tr>
+ <tr><td class="paramname">IntT</td><td>the type of the objects in the array (internal). </td></tr>
+ <tr><td class="paramname">bigendp</td><td>true if the external storage format is big-endian. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl><dt><b>Parameters:</b></dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">str</td><td>the output stream for the data of type ExtT (external). </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">array</td><td>the input vector of type IntT (internal). </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="Utility_8hpp_source.html#l00476">476</a> of file <a class="el" href="Utility_8hpp_source.html">Utility.hpp</a>.</p>
+
+</div>
+</div>
<a class="anchor" id="a96252f445a912b77517bff04d4d6ea74"></a><!-- doxytag: member="GeographicLib::Utility::ParseLine" ref="a96252f445a912b77517bff04d4d6ea74" args="(const std::string &line, std::string &key, std::string &val)" -->
<div class="memitem">
<div class="memproto">
@@ -771,8 +891,13 @@ template<typename ExtT , typename IntT , bool bigendp> </div>
<li><a class="el" href="Utility_8cpp_source.html">Utility.cpp</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/classes.html b/doc/html/classes.html
index bba578d..d70c8b9 100644
--- a/doc/html/classes.html
+++ b/doc/html/classes.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Index</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -43,24 +58,45 @@
</div>
<div class="contents">
<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> |& [...]
-<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> A </div></td></tr></table>
-</td><td><a class="el" href="classGeographicLib_1_1DMS.html">DMS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1Gnomonic.html">Gnomonic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1MGRS.html">MGRS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a cla [...]
-</td><td><a class="el" href="classGeographicLib_1_1GravityCircle.html">GravityCircle</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> N </div></td></tr></table>
-</td><td><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html">SphericalHarmonic1</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td></tr><tr><td><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">AlbersEqualArea</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1EllipticFunction.html">EllipticFunction</a> (<a class="el" href="nam [...]
-</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> L </div></td></tr></table>
-</td><td><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> O </div></td></tr></table>
-</td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table>
-</td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
-</td><td><a class="el" href="classGeographicLib_1_1Geocentric.html">Geocentric</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">LambertConformalConic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1OSGB.html">OSGB</a> (<a class="el" href="namespaceGeographicLib.html">GeographicL [...]
-</td><td><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">TransverseMercatorExact</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td></tr><tr><td><a class="el" href="classGeographicLib_1_1CircularEngine.html">CircularEngine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1Geodesic.html">Geodesic</a> (<a class="el" href="namespaceGe [...]
-</td><td><a class="el" href="classGeographicLib_1_1PolarStereographic.html">PolarStereographic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> U </div></td></tr></table>
-</td></tr><tr><td><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">SphericalEngine::coeff</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeodesicLine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1MagneticCircle.html">MagneticCircle</a> (<a class="el" href="nam [...]
-</td><td><a class="el" href="classGeographicLib_1_1UTMUPS.html">UTMUPS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
-</td><td><a class="el" href="classGeographicLib_1_1Geoid.html">Geoid</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1Math.html">Math</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td><a class="el" href="classGeographicLib_1_1SphericalEngine.html">SphericalEngine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>)  [...]
+<table style="margin: 10px;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> A </div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> E </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1GravityModel.html">GravityModel</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td rowspan="2" valign="bottom"><a name="letter_O"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> O </div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table>
+</td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> L </div></td></tr></table>
+</td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1Accumulator.html">Accumulator</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1EllipticFunction.html">EllipticFunction</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1OSGB.html">OSGB</a> (<a class="el" href="namespaceG [...]
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1AlbersEqualArea.html">AlbersEqualArea</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> G </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1LambertConformalConic.html">LambertConformalConic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> P </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html">TransverseMercatorExact</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html">AzimuthalEquidistant</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1LocalCartesian.html">LocalCartesian</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpad [...]
+</td></tr>
+<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1Geocentric.html">Geocentric</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> M </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1PolarStereographic.html">PolarStereographic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1GeoCoords.html">GeoCoords</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1PolygonArea.html">PolygonArea</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1Utility.html">Utility</a> (<a class="el" href="namespaceGeographi [...]
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1CassiniSoldner.html">CassiniSoldner</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1Geodesic.html">Geodesic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1MagneticCircle.html">MagneticCircle</a> (<a class="el" href=" [...]
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1UTMUPS.html">UTMUPS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1CircularEngine.html">CircularEngine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1GeodesicLine.html">GeodesicLine</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1MagneticModel.html">MagneticModel</a> (<a class="el" [...]
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html">SphericalEngine::coeff</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1GeographicErr.html">GeographicErr</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1Math.html">Math</a> (<a class="el [...]
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1Constants.html">Constants</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1Geoid.html">Geoid</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1MGRS.html">MGRS</a> (<a class="el" href="namespaceGeographicLib.html">Geograp [...]
+<tr><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1Gnomonic.html">Gnomonic</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td rowspan="2" valign="bottom"><a name="letter_N"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> N </div></td></tr></table>
+</td><td valign="top"><a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html">SphericalHarmonic1</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1GravityCircle.html">GravityCircle</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td valign="top"><a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html">SphericalHarmonic2</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classGeographicLib_1_1DMS.html">DMS</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td></td><td valign="top"><a class="el" href="classGeographicLib_1_1NormalGravity.html">NormalGravity</a> (<a class="el" href="namespaceGeographicLib.html">GeographicLib</a>) </td><td></td><td></td></tr>
+<tr><td></td><td></td><td></td><td></td><td></td></tr>
+</table>
+<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_G">G</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_N">N</a> | <a class="qindex" href="#letter_O">O</a> |& [...]
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html b/doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html
index 03741a6..c7cc9fc 100644
--- a/doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html
+++ b/doc/html/dir_20dd3cf0f425f295158796088ceb05f4.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: src/ Directory Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,149 +60,98 @@
<tr><td colspan="2"><h2><a name="files"></a>
Files</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8cpp.html">AlbersEqualArea.cpp</a> <a href="AlbersEqualArea_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8cpp.html">AzimuthalEquidistant.cpp</a> <a href="AzimuthalEquidistant_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8cpp.html">CassiniSoldner.cpp</a> <a href="CassiniSoldner_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="CircularEngine_8cpp.html">CircularEngine.cpp</a> <a href="CircularEngine_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">GeographicLib::CircularEngine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">GeographicLib::CircularEngine</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8cpp.html">DMS.cpp</a> <a href="DMS_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8cpp.html">EllipticFunction.cpp</a> <a href="EllipticFunction_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8cpp.html">Geocentric.cpp</a> <a href="Geocentric_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8cpp.html">GeoCoords.cpp</a> <a href="GeoCoords_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8cpp.html">Geodesic.cpp</a> <a href="Geodesic_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8cpp.html">GeodesicLine.cpp</a> <a href="GeodesicLine_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8cpp.html">Geoid.cpp</a> <a href="Geoid_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8cpp.html">Gnomonic.cpp</a> <a href="Gnomonic_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8cpp.html">GravityCircle.cpp</a> <a href="GravityCircle_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8cpp.html">GravityModel.cpp</a> <a href="GravityModel_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8cpp.html">LambertConformalConic.cpp</a> <a href="LambertConformalConic_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8cpp.html">LocalCartesian.cpp</a> <a href="LocalCartesian_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8cpp.html">MagneticCircle.cpp</a> <a href="MagneticCircle_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8cpp.html">MagneticModel.cpp</a> <a href="MagneticModel_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8cpp.html">MGRS.cpp</a> <a href="MGRS_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8cpp.html">NormalGravity.cpp</a> <a href="NormalGravity_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8cpp.html">OSGB.cpp</a> <a href="OSGB_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8cpp.html">PolarStereographic.cpp</a> <a href="PolarStereographic_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8cpp.html">PolygonArea.cpp</a> <a href="PolygonArea_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8cpp.html">SphericalEngine.cpp</a> <a href="SphericalEngine_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8cpp.html">TransverseMercator.cpp</a> <a href="TransverseMercator_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8cpp.html">TransverseMercatorExact.cpp</a> <a href="TransverseMercatorExact_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8cpp.html">Utility.cpp</a> <a href="Utility_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8cpp.html">UTMUPS.cpp</a> <a href="UTMUPS_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Implementation for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
<br/></td></tr>
-</p>
</table>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/dir_27ad12676aedce3065ab152db424ea04.html b/doc/html/dir_27ad12676aedce3065ab152db424ea04.html
index cc978b4..d493d15 100644
--- a/doc/html/dir_27ad12676aedce3065ab152db424ea04.html
+++ b/doc/html/dir_27ad12676aedce3065ab152db424ea04.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: tools/ Directory Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,59 +60,44 @@
<tr><td colspan="2"><h2><a name="files"></a>
Files</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="CartConvert_8cpp.html">CartConvert.cpp</a> <a href="CartConvert_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodetic to cartesian coordinate conversions. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodetic to cartesian coordinate conversions. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="ConicProj_8cpp.html">ConicProj.cpp</a> <a href="ConicProj_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for conical projections. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for conical projections. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoConvert_8cpp.html">GeoConvert.cpp</a> <a href="GeoConvert_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geographic coordinate conversions. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geographic coordinate conversions. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Geod_8cpp.html">Geod.cpp</a> <a href="Geod_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodesic calculations. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodesic calculations. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicProj_8cpp.html">GeodesicProj.cpp</a> <a href="GeodesicProj_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodesic projections. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for geodesic projections. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoidEval_8cpp.html">GeoidEval.cpp</a> <a href="GeoidEval_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating geoid heights. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating geoid heights. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Gravity_8cpp.html">Gravity.cpp</a> <a href="Gravity_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating gravity fields. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating gravity fields. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticField_8cpp.html">MagneticField.cpp</a> <a href="MagneticField_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating magnetic fields. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for evaluating magnetic fields. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Planimeter_8cpp.html">Planimeter.cpp</a> <a href="Planimeter_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for measuring the area of geodesic polygons. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for measuring the area of geodesic polygons. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorProj_8cpp.html">TransverseMercatorProj.cpp</a> <a href="TransverseMercatorProj_8cpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for transverse Mercator projections. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Command line utility for transverse Mercator projections. </p>
<br/></td></tr>
-</p>
</table>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html b/doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html
index 76d0eb4..cbbe5f9 100644
--- a/doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html
+++ b/doc/html/dir_addd23a7fcb542c6c8ac894d486b21be.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: include/ Directory Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -47,8 +62,13 @@ Directories</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">directory </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_b4d36717c8020107727c093197410e9d.html">GeographicLib</a></td></tr>
</table>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/dir_b4d36717c8020107727c093197410e9d.html b/doc/html/dir_b4d36717c8020107727c093197410e9d.html
index 535c2ba..de20d16 100644
--- a/doc/html/dir_b4d36717c8020107727c093197410e9d.html
+++ b/doc/html/dir_b4d36717c8020107727c093197410e9d.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: include/GeographicLib/ Directory Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -46,179 +61,116 @@
<tr><td colspan="2"><h2><a name="files"></a>
Files</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Accumulator_8hpp.html">Accumulator.hpp</a> <a href="Accumulator_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">GeographicLib::Accumulator</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">GeographicLib::Accumulator</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="AlbersEqualArea_8hpp.html">AlbersEqualArea.hpp</a> <a href="AlbersEqualArea_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="AzimuthalEquidistant_8hpp.html">AzimuthalEquidistant.hpp</a> <a href="AzimuthalEquidistant_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="CassiniSoldner_8hpp.html">CassiniSoldner.hpp</a> <a href="CassiniSoldner_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="CircularEngine_8hpp.html">CircularEngine.hpp</a> <a href="CircularEngine_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">GeographicLib::CircularEngine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1CircularEngine.html" title="Spherical Harmonic sums for a circle.">GeographicLib::CircularEngine</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Constants_8hpp.html">Constants.hpp</a> <a href="Constants_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">GeographicLib::Constants</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Constants.html" title="Constants needed by GeographicLib">GeographicLib::Constants</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="DMS_8hpp.html">DMS.hpp</a> <a href="DMS_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="EllipticFunction_8hpp.html">EllipticFunction.hpp</a> <a href="EllipticFunction_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1EllipticFunction.html" title="Elliptic functions needed for TransverseMercatorExact.">GeographicLib::EllipticFunction</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Geocentric_8hpp.html">Geocentric.hpp</a> <a href="Geocentric_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GeoCoords_8hpp.html">GeoCoords.hpp</a> <a href="GeoCoords_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Geodesic_8hpp.html">Geodesic.hpp</a> <a href="Geodesic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GeodesicLine_8hpp.html">GeodesicLine.hpp</a> <a href="GeodesicLine_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Geoid_8hpp.html">Geoid.hpp</a> <a href="Geoid_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Gnomonic_8hpp.html">Gnomonic.hpp</a> <a href="Gnomonic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityCircle_8hpp.html">GravityCircle.hpp</a> <a href="GravityCircle_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="GravityModel_8hpp.html">GravityModel.hpp</a> <a href="GravityModel_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="LambertConformalConic_8hpp.html">LambertConformalConic.hpp</a> <a href="LambertConformalConic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="LocalCartesian_8hpp.html">LocalCartesian.hpp</a> <a href="LocalCartesian_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticCircle_8hpp.html">MagneticCircle.hpp</a> <a href="MagneticCircle_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="MagneticModel_8hpp.html">MagneticModel.hpp</a> <a href="MagneticModel_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Math_8hpp.html">Math.hpp</a> <a href="Math_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="MGRS_8hpp.html">MGRS.hpp</a> <a href="MGRS_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1MGRS.html" title="Convert between UTM/UPS and MGRS.">GeographicLib::MGRS</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="NormalGravity_8hpp.html">NormalGravity.hpp</a> <a href="NormalGravity_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="OSGB_8hpp.html">OSGB.hpp</a> <a href="OSGB_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1OSGB.html" title="Ordnance Survey grid system for Great Britain.">GeographicLib::OSGB</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="PolarStereographic_8hpp.html">PolarStereographic.hpp</a> <a href="PolarStereographic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="PolygonArea_8hpp.html">PolygonArea.hpp</a> <a href="PolygonArea_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalEngine_8hpp.html">SphericalEngine.hpp</a> <a href="SphericalEngine_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic_8hpp.html">SphericalHarmonic.hpp</a> <a href="SphericalHarmonic_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">GeographicLib::SphericalHarmonic</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html" title="Spherical Harmonic series.">GeographicLib::SphericalHarmonic</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic1_8hpp.html">SphericalHarmonic1.hpp</a> <a href="SphericalHarmonic1_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">GeographicLib::SphericalHarmonic1</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html" title="Spherical Harmonic series with a correction to the coefficients.">GeographicLib::SphericalHarmonic1</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="SphericalHarmonic2_8hpp.html">SphericalHarmonic2.hpp</a> <a href="SphericalHarmonic2_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">GeographicLib::SphericalHarmonic2</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">GeographicLib::SphericalHarmonic2</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercator_8hpp.html">TransverseMercator.hpp</a> <a href="TransverseMercator_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="TransverseMercatorExact_8hpp.html">TransverseMercatorExact.hpp</a> <a href="TransverseMercatorExact_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="Utility_8hpp.html">Utility.hpp</a> <a href="Utility_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">GeographicLib::Utility</a> class. </p>
<br/></td></tr>
-</p>
<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="UTMUPS_8hpp.html">UTMUPS.hpp</a> <a href="UTMUPS_8hpp_source.html">[code]</a></td></tr>
-
-<p><tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
+<tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Header for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class. </p>
<br/></td></tr>
-</p>
</table>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/dirs.html b/doc/html/dirs.html
index a444a6e..7114f05 100644
--- a/doc/html/dirs.html
+++ b/doc/html/dirs.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Directories</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,8 +60,13 @@
<li><a class="el" href="dir_27ad12676aedce3065ab152db424ea04.html">tools</a></li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css
index 74445fe..22c7b5c 100644
--- a/doc/html/doxygen.css
+++ b/doc/html/doxygen.css
@@ -72,8 +72,6 @@ div.qindex, div.navtab{
background-color: #EBEFF6;
border: 1px solid #A3B4D7;
text-align: center;
- margin: 2px;
- padding: 2px;
}
div.qindex, div.navpath {
@@ -183,15 +181,15 @@ div.groupText {
}
body {
- background: white;
+ background-color: white;
color: black;
margin: 0;
}
div.contents {
margin-top: 10px;
- margin-left: 10px;
- margin-right: 5px;
+ margin-left: 8px;
+ margin-right: 8px;
}
td.indexkey {
@@ -414,7 +412,7 @@ table.memberdecls {
margin-left: 6px;
}
-.memproto {
+.memproto, dl.reflist dt {
border-top: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
@@ -440,7 +438,7 @@ table.memberdecls {
}
-.memdoc {
+.memdoc, dl.reflist dd {
border-bottom: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
border-right: 1px solid #A8B8D9;
@@ -463,6 +461,15 @@ table.memberdecls {
background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
}
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
.paramkey {
text-align: right;
}
@@ -622,6 +629,58 @@ table.doxtable th {
text-align:left;
}
+table.fieldtable {
+ width: 100%;
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ width: 100%;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
.tabsearch {
top: 0px;
left: 10px;
@@ -701,6 +760,7 @@ div.summary a
div.ingroups
{
+ margin-left: 5px;
font-size: 8pt;
padding-left: 5px;
width: 50%;
@@ -723,7 +783,7 @@ div.header
div.headertitle
{
- padding: 5px 5px 5px 10px;
+ padding: 5px 5px 5px 7px;
}
dl
@@ -833,3 +893,54 @@ dl.bug
font-weight: bold;
}
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+ at media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+ pre.fragment
+ {
+ overflow: visible;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ }
+}
+
diff --git a/doc/html/files.html b/doc/html/files.html
index 97b3271..653820e 100644
--- a/doc/html/files.html
+++ b/doc/html/files.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: File List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -117,8 +132,13 @@
<tr><td class="indexkey"><a class="el" href="UTMUPS_8hpp.html">UTMUPS.hpp</a> <a href="UTMUPS_8hpp_source.html">[code]</a></td><td class="indexvalue">Header for <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> class </td></tr>
</table>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions.html b/doc/html/functions.html
index edd8285..0ba75ec 100644
--- a/doc/html/functions.html
+++ b/doc/html/functions.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -80,7 +95,7 @@
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>Accumulator()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">GeographicLib::Accumulator</a>
</li>
<li>acre()
: <a class="el" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">GeographicLib::Constants</a>
@@ -138,10 +153,10 @@
, <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a9aea7d24f8e437d6ea38defbe4ec9b14">GeographicLib::Geodesic</a>
</li>
<li>asinh()
-: <a class="el" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">GeographicLib::Math</a>
</li>
<li>atanh()
-: <a class="el" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">GeographicLib::Math</a>
</li>
<li>AZIMUTH
: <a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbcca654b16d956cdd16a70605a6b54a1228e">GeographicLib::GeodesicLine</a>
@@ -162,8 +177,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x62.html b/doc/html/functions_0x62.html
index 7f2118b..e8b6664 100644
--- a/doc/html/functions_0x62.html
+++ b/doc/html/functions_0x62.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,8 +99,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x63.html b/doc/html/functions_0x63.html
index 50528fa..67160a9 100644
--- a/doc/html/functions_0x63.html
+++ b/doc/html/functions_0x63.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -111,7 +126,7 @@
: <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a948f9d934615c4120eb23740635200bc">GeographicLib::CassiniSoldner</a>
</li>
<li>cbrt()
-: <a class="el" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">GeographicLib::Math</a>
</li>
<li>CentralScale()
: <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">GeographicLib::AlbersEqualArea</a>
@@ -127,7 +142,7 @@
<li>Circle()
: <a class="el" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">GeographicLib::GravityModel</a>
, <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">GeographicLib::MagneticModel</a>
-, <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">GeographicLib::SphericalEngine</a>
+, <a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">GeographicLib::SphericalEngine</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a2b2b2ad35bba090a4956693ba5ef0f32">GeographicLib::SphericalHarmonic</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#a32dd4989c40181939d667298681625f6">GeographicLib::SphericalHarmonic1</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a3aa683a43a8e9232a16390b09c6be920">GeographicLib::SphericalHarmonic2</a>
@@ -183,8 +198,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x64.html b/doc/html/functions_0x64.html
index 70ba6ce..9e8a192 100644
--- a/doc/html/functions_0x64.html
+++ b/doc/html/functions_0x64.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -99,9 +114,6 @@
<li>DecodeAzimuth()
: <a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">GeographicLib::DMS</a>
</li>
-<li>DecodeFraction()
-: <a class="el" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">GeographicLib::DMS</a>
-</li>
<li>DecodeLatLon()
: <a class="el" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">GeographicLib::DMS</a>
</li>
@@ -126,20 +138,20 @@
<li>DefaultMagneticPath()
: <a class="el" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">GeographicLib::MagneticModel</a>
</li>
-<li>DEGREE
-: <a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09a8ee59944227e74901b71f27410d70781">GeographicLib::DMS</a>
-</li>
<li>degree()
: <a class="el" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">GeographicLib::Constants</a>
-, <a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">GeographicLib::Math</a>
+, <a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">GeographicLib::Math</a>
+</li>
+<li>DEGREE
+: <a class="el" href="classGeographicLib_1_1DMS.html#ab9fa04b3a9156f36f18852eed9b7ce09a8ee59944227e74901b71f27410d70781">GeographicLib::DMS</a>
</li>
<li>Description()
-: <a class="el" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">GeographicLib::GravityModel</a>
-, <a class="el" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">GeographicLib::Geoid</a>
+: <a class="el" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">GeographicLib::Geoid</a>
+, <a class="el" href="classGeographicLib_1_1GravityModel.html#af2c1c74254e3193adb155987f6dd0a59">GeographicLib::GravityModel</a>
, <a class="el" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">GeographicLib::MagneticModel</a>
</li>
<li>Direct()
-: <a class="el" href="classGeographicLib_1_1Geodesic.html#a63f7681d1239902dc3f528ded0f90352">GeographicLib::Geodesic</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#a65cf95dc7f5c0bfd427e963281e044f0">GeographicLib::Geodesic</a>
</li>
<li>DISTANCE
: <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828a0fe3400fb8dcc92274fbac2839cc4e0d">GeographicLib::Geodesic</a>
@@ -160,7 +172,7 @@
: <a class="el" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365abe1f6d891a721a4f544cd8a341abcb28">GeographicLib::GravityModel</a>
</li>
<li>DMSRepresentation()
-: <a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">GeographicLib::GeoCoords</a>
+: <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">GeographicLib::GeoCoords</a>
</li>
<li>dow()
: <a class="el" href="classGeographicLib_1_1Utility.html#a42a6f8679c068dcb06f1da26aa21dfb1">GeographicLib::Utility</a>
@@ -170,8 +182,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x65.html b/doc/html/functions_0x65.html
index 67eed4d..e5bedf1 100644
--- a/doc/html/functions_0x65.html
+++ b/doc/html/functions_0x65.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -98,7 +113,7 @@
: <a class="el" href="classGeographicLib_1_1EllipticFunction.html#ada122111b55eb0ab9c7b9fafb0a4b1e6">GeographicLib::EllipticFunction</a>
</li>
<li>Encode()
-: <a class="el" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">GeographicLib::DMS</a>
+: <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">GeographicLib::DMS</a>
</li>
<li>EncodeZone()
: <a class="el" href="classGeographicLib_1_1UTMUPS.html#a3410e1e221158962f34147255653818f">GeographicLib::UTMUPS</a>
@@ -113,15 +128,20 @@
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#a3610ec908c7b168b39f00946e2fc3fad">GeographicLib::NormalGravity</a>
</li>
<li>expm1()
-: <a class="el" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">GeographicLib::Math</a>
</li>
<li>extended
: <a class="el" href="classGeographicLib_1_1Math.html#a436f350a6a9539e176dda19d0e4811f8">GeographicLib::Math</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x66.html b/doc/html/functions_0x66.html
index 2443cba..647febc 100644
--- a/doc/html/functions_0x66.html
+++ b/doc/html/functions_0x66.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -149,10 +164,10 @@
, <a class="el" href="classGeographicLib_1_1Gnomonic.html#ab851ea19db5671f8d4a4151820bc6853">GeographicLib::Gnomonic</a>
</li>
<li>fract()
-: <a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">GeographicLib::Utility</a>
</li>
<li>fractionalyear()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">GeographicLib::Utility</a>
</li>
<li>FULL
: <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a889791c67edc32865996842c600104ebaee7040963f955b45b5a8ab0ea325c782">GeographicLib::SphericalHarmonic</a>
@@ -165,8 +180,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x67.html b/doc/html/functions_0x67.html
index 4d056ef..0a3d0a1 100644
--- a/doc/html/functions_0x67.html
+++ b/doc/html/functions_0x67.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -137,15 +152,13 @@
<li>Gnomonic()
: <a class="el" href="classGeographicLib_1_1Gnomonic.html#a2ac973ebbd7aaf18c451b152cd92db99">GeographicLib::Gnomonic</a>
</li>
-<li>Gravity()
-: <a class="el" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">GeographicLib::NormalGravity</a>
-</li>
<li>GRAVITY
: <a class="el" href="classGeographicLib_1_1GravityModel.html#af8691d0f13d6d42278cd1e615903d365ae6a4573c13b932c98ab95e7f9dbd0952">GeographicLib::GravityModel</a>
</li>
<li>Gravity()
: <a class="el" href="classGeographicLib_1_1GravityCircle.html#a5d8053ee66ae22217ae0b61e96194b64">GeographicLib::GravityCircle</a>
, <a class="el" href="classGeographicLib_1_1GravityModel.html#a2dc8bf4cfa3c1914f4c7e93a5a3b3eac">GeographicLib::GravityModel</a>
+, <a class="el" href="classGeographicLib_1_1NormalGravity.html#acfca8d6e44778501b54cd0b38dbbddde">GeographicLib::NormalGravity</a>
</li>
<li>GravityCircle
: <a class="el" href="classGeographicLib_1_1CircularEngine.html#a243c90a7f9bf3f7aa96877a4b0667a89">GeographicLib::CircularEngine</a>
@@ -178,21 +191,26 @@
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#a78cf6878967ad52adadbe06b5f7c4146">GeographicLib::NormalGravity</a>
</li>
<li>GRS80_a()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">GeographicLib::Constants</a>
</li>
<li>GRS80_GM()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">GeographicLib::Constants</a>
</li>
<li>GRS80_J2()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">GeographicLib::Constants</a>
</li>
<li>GRS80_omega()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">GeographicLib::Constants</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x68.html b/doc/html/functions_0x68.html
index 2a6dd0a..7b6e06b 100644
--- a/doc/html/functions_0x68.html
+++ b/doc/html/functions_0x68.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -93,12 +108,17 @@
: <a class="el" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">GeographicLib::GeoCoords</a>
</li>
<li>hypot()
-: <a class="el" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">GeographicLib::Math</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x69.html b/doc/html/functions_0x69.html
index 25df6c5..b354b7d 100644
--- a/doc/html/functions_0x69.html
+++ b/doc/html/functions_0x69.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,7 +98,7 @@
: <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a356d705a99ee15089d1faabd0c01084c">GeographicLib::SphericalEngine::coeff</a>
</li>
<li>infinity()
-: <a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">GeographicLib::Math</a>
</li>
<li>Init()
: <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">GeographicLib::CassiniSoldner</a>
@@ -100,37 +115,23 @@
: <a class="el" href="classGeographicLib_1_1UTMUPS.html#a0c459615da18cc899a960bdc8c5b11b7aeb6750fb82edce6e5b58178a38ee8bd0">GeographicLib::UTMUPS</a>
</li>
<li>Inverse()
-: <a class="el" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">GeographicLib::Geodesic</a>
-</li>
-<li>InverseFlattening()
-: <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">GeographicLib::AzimuthalEquidistant</a>
-, <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">GeographicLib::AlbersEqualArea</a>
-, <a class="el" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">GeographicLib::UTMUPS</a>
-, <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">GeographicLib::TransverseMercatorExact</a>
-, <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">GeographicLib::PolarStereographic</a>
-, <a class="el" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">GeographicLib::GeoCoords</a>
-, <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">GeographicLib::GeodesicLine</a>
-, <a class="el" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">GeographicLib::MGRS</a>
-, <a class="el" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">GeographicLib::Geoid</a>
-, <a class="el" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">GeographicLib::Geocentric</a>
-, <a class="el" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">GeographicLib::TransverseMercator</a>
-, <a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">GeographicLib::LambertConformalConic</a>
-, <a class="el" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">GeographicLib::Gnomonic</a>
-, <a class="el" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">GeographicLib::OSGB</a>
-, <a class="el" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">GeographicLib::Geodesic</a>
-, <a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">GeographicLib::LocalCartesian</a>
-, <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">GeographicLib::CassiniSoldner</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">GeographicLib::Geodesic</a>
</li>
<li>isfinite()
-: <a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">GeographicLib::Math</a>
</li>
<li>isnan()
-: <a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">GeographicLib::Math</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x6b.html b/doc/html/functions_0x6b.html
index 1d45e21..16960c7 100644
--- a/doc/html/functions_0x6b.html
+++ b/doc/html/functions_0x6b.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -90,8 +105,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x6c.html b/doc/html/functions_0x6c.html
index 9675c83..3fd68f1 100644
--- a/doc/html/functions_0x6c.html
+++ b/doc/html/functions_0x6c.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -113,20 +128,18 @@
, <a class="el" href="classGeographicLib_1_1Geocentric.html#a8904c4eadcf94e3803743e8cd9ffbc1c">GeographicLib::Geocentric</a>
</li>
<li>log1p()
-: <a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">GeographicLib::Math</a>
-</li>
-<li>Longitude()
-: <a class="el" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">GeographicLib::GeoCoords</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">GeographicLib::Math</a>
</li>
<li>LONGITUDE
-: <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">GeographicLib::DMS</a>
-, <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">GeographicLib::Geodesic</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#aab966190e69651b86661fc2628d20828aa1e019a4815f6c23ca30d4b3efcf6c6b">GeographicLib::Geodesic</a>
</li>
<li>Longitude()
-: <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">GeographicLib::GeodesicLine</a>
+: <a class="el" href="classGeographicLib_1_1GeoCoords.html#a7db5459efae411dfebec758a8244a95a">GeographicLib::GeoCoords</a>
+, <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">GeographicLib::GeodesicLine</a>
</li>
<li>LONGITUDE
: <a class="el" href="classGeographicLib_1_1GeodesicLine.html#adeec76cf92a8c30770e1199bdadacbccac41b1e2e1d73c8d323f92b94e57a0cc9">GeographicLib::GeodesicLine</a>
+, <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a321624c1b510f7f1e392e7509a85914f">GeographicLib::DMS</a>
</li>
<li>LongitudeOrigin()
: <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aeb5c42b5cb6202a2371ba84bf76e0161">GeographicLib::CassiniSoldner</a>
@@ -137,8 +150,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x6d.html b/doc/html/functions_0x6d.html
index 6ce5537..8ba9000 100644
--- a/doc/html/functions_0x6d.html
+++ b/doc/html/functions_0x6d.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -194,8 +209,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x6e.html b/doc/html/functions_0x6e.html
index 0af0dc0..6032c50 100644
--- a/doc/html/functions_0x6e.html
+++ b/doc/html/functions_0x6e.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,7 +98,7 @@
: <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a38ab91101bb639963e094327a22fed59">GeographicLib::SphericalEngine::coeff</a>
</li>
<li>NaN()
-: <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">GeographicLib::Math</a>
</li>
<li>nauticalmile()
: <a class="el" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">GeographicLib::Constants</a>
@@ -115,18 +130,23 @@
: <a class="el" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">GeographicLib::GeoCoords</a>
</li>
<li>num()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">GeographicLib::Utility</a>
</li>
<li>NUMBER
: <a class="el" href="classGeographicLib_1_1DMS.html#a7a1101fd2577636863753baae3e54869a5a65ec03b2682ad76873829167882518">GeographicLib::DMS</a>
</li>
<li>nummatch()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">GeographicLib::Utility</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x6f.html b/doc/html/functions_0x6f.html
index b2a529b..24ffa93 100644
--- a/doc/html/functions_0x6f.html
+++ b/doc/html/functions_0x6f.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,10 +98,10 @@
: <a class="el" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">GeographicLib::Geoid</a>
</li>
<li>operator!=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">GeographicLib::Accumulator</a>
</li>
<li>operator()()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">GeographicLib::Accumulator</a>
, <a class="el" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">GeographicLib::CircularEngine</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a5046d787c241c5216cfeb0062673cbd7">GeographicLib::SphericalHarmonic</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">GeographicLib::SphericalHarmonic1</a>
@@ -97,7 +112,7 @@
, <a class="el" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">GeographicLib::Geoid</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a762d48fc2c3dc902859286de4df7672c">GeographicLib::SphericalHarmonic2</a>
, <a class="el" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">GeographicLib::MagneticCircle</a>
-, <a class="el" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">GeographicLib::Accumulator< T ></a>
+, <a class="el" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">GeographicLib::Accumulator</a>
, <a class="el" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">GeographicLib::CircularEngine</a>
, <a class="el" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">GeographicLib::MagneticCircle</a>
, <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">GeographicLib::MagneticModel</a>
@@ -106,31 +121,31 @@
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">GeographicLib::SphericalHarmonic</a>
</li>
<li>operator*=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">GeographicLib::Accumulator</a>
</li>
<li>operator+=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">GeographicLib::Accumulator</a>
</li>
<li>operator-=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">GeographicLib::Accumulator</a>
</li>
<li>operator<()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">GeographicLib::Accumulator</a>
</li>
<li>operator<=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">GeographicLib::Accumulator</a>
</li>
<li>operator=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">GeographicLib::Accumulator</a>
</li>
<li>operator==()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">GeographicLib::Accumulator</a>
</li>
<li>operator>()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">GeographicLib::Accumulator</a>
</li>
<li>operator>=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">GeographicLib::Accumulator</a>
</li>
<li>OriginLatitude()
: <a class="el" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">GeographicLib::OSGB</a>
@@ -142,8 +157,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x70.html b/doc/html/functions_0x70.html
index bf7e5b6..8761d5b 100644
--- a/doc/html/functions_0x70.html
+++ b/doc/html/functions_0x70.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -87,7 +102,7 @@
, <a class="el" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">GeographicLib::NormalGravity</a>
</li>
<li>pi()
-: <a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">GeographicLib::Math</a>
</li>
<li>PolarGravity()
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#a3079310d3a7af97ccb50b91be01d5a50">GeographicLib::NormalGravity</a>
@@ -103,8 +118,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x72.html b/doc/html/functions_0x72.html
index 76112c0..1565453 100644
--- a/doc/html/functions_0x72.html
+++ b/doc/html/functions_0x72.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -80,7 +95,7 @@
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>readarray()
-: <a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">GeographicLib::Utility</a>
</li>
<li>readcoeffs()
: <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a2d545f589894683e7de297c42b7c995a">GeographicLib::SphericalEngine::coeff</a>
@@ -134,8 +149,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x73.html b/doc/html/functions_0x73.html
index a8fc9cb..f32a045 100644
--- a/doc/html/functions_0x73.html
+++ b/doc/html/functions_0x73.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -127,7 +142,7 @@
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a897f6b15b82812e874a2b0927cfc3912">GeographicLib::SphericalHarmonic2</a>
</li>
<li>sq()
-: <a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">GeographicLib::Math</a>
</li>
<li>square_kilometer()
: <a class="el" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">GeographicLib::Constants</a>
@@ -151,7 +166,7 @@
: <a class="el" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">GeographicLib::UTMUPS</a>
</li>
<li>str()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">GeographicLib::Utility</a>
</li>
<li>SurfaceGravity()
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">GeographicLib::NormalGravity</a>
@@ -166,12 +181,17 @@
: <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#ac93aaebb09086ab14330aafc0f105a17">GeographicLib::SphericalEngine::coeff</a>
</li>
<li>swab()
-: <a class="el" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">GeographicLib::Math</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x74.html b/doc/html/functions_0x74.html
index 19b7320..00beebf 100644
--- a/doc/html/functions_0x74.html
+++ b/doc/html/functions_0x74.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -100,8 +115,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x75.html b/doc/html/functions_0x75.html
index 33848a3..3f5f3a1 100644
--- a/doc/html/functions_0x75.html
+++ b/doc/html/functions_0x75.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -88,7 +103,7 @@
, <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">GeographicLib::PolarStereographic</a>
</li>
<li>UPS_k0()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae48baa0a561e58acb2574f07e7acda1f">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a3fe287ab1a0847f5392c1aaf9c5e635a">GeographicLib::Constants</a>
</li>
<li>UTM
: <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a68668637e754201897bddb82baaf634b">GeographicLib::TransverseMercatorExact</a>
@@ -109,8 +124,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x76.html b/doc/html/functions_0x76.html
index 0833e07..89857b1 100644
--- a/doc/html/functions_0x76.html
+++ b/doc/html/functions_0x76.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -87,12 +102,17 @@
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">GeographicLib::NormalGravity</a>
</li>
<li>Value()
-: <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">GeographicLib::SphericalEngine</a>
+: <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">GeographicLib::SphericalEngine</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x77.html b/doc/html/functions_0x77.html
index 59e1934..bfe32e1 100644
--- a/doc/html/functions_0x77.html
+++ b/doc/html/functions_0x77.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -89,24 +104,32 @@
, <a class="el" href="classGeographicLib_1_1Geocentric.html#a4762989f3d1d30bca597f644e8b2b52e">GeographicLib::Geocentric</a>
</li>
<li>WGS84_a()
-: <a class="el" href="classGeographicLib_1_1Constants.html#af7abfdedede7d8180d0c2c4015b72194">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#ae12127984ac6713823746d917b4abfa7">GeographicLib::Constants</a>
</li>
<li>WGS84_f()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">GeographicLib::Constants</a>
</li>
<li>WGS84_GM()
-: <a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">GeographicLib::Constants</a>
</li>
<li>WGS84_omega()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">GeographicLib::Constants</a>
</li>
<li>WGS84_r()
: <a class="el" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">GeographicLib::Constants</a>
</li>
+<li>writearray()
+: <a class="el" href="classGeographicLib_1_1Utility.html#a276eb20ace49c5260e1878c7d8aefd31">GeographicLib::Utility</a>
+</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x79.html b/doc/html/functions_0x79.html
index 40d57b3..1db1e62 100644
--- a/doc/html/functions_0x79.html
+++ b/doc/html/functions_0x79.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,8 +99,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_0x7a.html b/doc/html/functions_0x7a.html
index 4016441..752a56a 100644
--- a/doc/html/functions_0x7a.html
+++ b/doc/html/functions_0x7a.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -87,8 +102,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html
index 7e8afd8..36f6588 100644
--- a/doc/html/functions_enum.html
+++ b/doc/html/functions_enum.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Enumerations</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -75,8 +90,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html
index a8271e8..fbd1d7f 100644
--- a/doc/html/functions_eval.html
+++ b/doc/html/functions_eval.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Enumerator</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -239,8 +254,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
index e183e63..48ae828 100644
--- a/doc/html/functions_func.html
+++ b/doc/html/functions_func.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -79,7 +94,7 @@
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>Accumulator()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a14d98e366933e0997c1954290f9d0fc3">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a6d30e4a792644ffc78546dda4b5d0022">GeographicLib::Accumulator</a>
</li>
<li>acre()
: <a class="el" href="classGeographicLib_1_1Constants.html#ae5aa419ea6c6ce121c912c8afea0a0b7">GeographicLib::Constants</a>
@@ -128,10 +143,10 @@
: <a class="el" href="classGeographicLib_1_1Constants.html#a04858f922295d2a04bb021eecac07179">GeographicLib::Constants</a>
</li>
<li>asinh()
-: <a class="el" href="classGeographicLib_1_1Math.html#ab0998a80c8946d1c016c1bc4810a0698">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aba75669f9d52fc672a8faaf69261bd8a">GeographicLib::Math</a>
</li>
<li>atanh()
-: <a class="el" href="classGeographicLib_1_1Math.html#a62ae372f983cb076561204be8de263bd">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a372ac604592d9de9cf608cfdfc463447">GeographicLib::Math</a>
</li>
<li>Azimuth()
: <a class="el" href="classGeographicLib_1_1GeodesicLine.html#a40707b9e989c95418b2559b271cc2699">GeographicLib::GeodesicLine</a>
@@ -141,8 +156,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x63.html b/doc/html/functions_func_0x63.html
index b78177a..4c4ea58 100644
--- a/doc/html/functions_func_0x63.html
+++ b/doc/html/functions_func_0x63.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -110,7 +125,7 @@
: <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a948f9d934615c4120eb23740635200bc">GeographicLib::CassiniSoldner</a>
</li>
<li>cbrt()
-: <a class="el" href="classGeographicLib_1_1Math.html#a21b33765456b50bf9e32ed0d57b441a6">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a04b87b033b845f4812a5700661c64a2a">GeographicLib::Math</a>
</li>
<li>CentralScale()
: <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#af407e835eaf76895ee25ec9e7a9c090c">GeographicLib::AlbersEqualArea</a>
@@ -127,7 +142,7 @@
: <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#a32dd4989c40181939d667298681625f6">GeographicLib::SphericalHarmonic1</a>
, <a class="el" href="classGeographicLib_1_1GravityModel.html#aadafafc09b9b707d47606da1e413d54f">GeographicLib::GravityModel</a>
, <a class="el" href="classGeographicLib_1_1MagneticModel.html#ae4275d73128fc2c6c62f53677ce70bd5">GeographicLib::MagneticModel</a>
-, <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a7733e7913671b573042a2fcf8db089dd">GeographicLib::SphericalEngine</a>
+, <a class="el" href="classGeographicLib_1_1SphericalEngine.html#af6a5fa63535d47cf528b733bb6a97901">GeographicLib::SphericalEngine</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a2b2b2ad35bba090a4956693ba5ef0f32">GeographicLib::SphericalHarmonic</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a3aa683a43a8e9232a16390b09c6be920">GeographicLib::SphericalHarmonic2</a>
</li>
@@ -172,8 +187,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x64.html b/doc/html/functions_func_0x64.html
index 1c41427..6f06d3f 100644
--- a/doc/html/functions_func_0x64.html
+++ b/doc/html/functions_func_0x64.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -98,9 +113,6 @@
<li>DecodeAzimuth()
: <a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">GeographicLib::DMS</a>
</li>
-<li>DecodeFraction()
-: <a class="el" href="classGeographicLib_1_1DMS.html#adb889bc03d4370fbc99c6f8fd34b12f9">GeographicLib::DMS</a>
-</li>
<li>DecodeLatLon()
: <a class="el" href="classGeographicLib_1_1DMS.html#a2d38adcfecb7a41865092e870e19730f">GeographicLib::DMS</a>
</li>
@@ -126,9 +138,8 @@
: <a class="el" href="classGeographicLib_1_1MagneticModel.html#a469db97d257876c1abafa3da3c5f0f7e">GeographicLib::MagneticModel</a>
</li>
<li>degree()
-: <a class="el" href="classGeographicLib_1_1Math.html#a3d84677a4dfd6c2149c16426544eaf6c">GeographicLib::Math</a>
-, <a class="el" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">GeographicLib::Constants</a>
-, <a class="el" href="classGeographicLib_1_1Math.html#a5bb8bea024e11eb402ecbcf9bae28bb5">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a26ff02acd8141a815428cddf0ff3ff66">GeographicLib::Constants</a>
+, <a class="el" href="classGeographicLib_1_1Math.html#a0f3b4ea16cc2cb21557555fca3b1c201">GeographicLib::Math</a>
</li>
<li>Description()
: <a class="el" href="classGeographicLib_1_1Geoid.html#a37d76bcfe0ddf9b84042d701c312e941">GeographicLib::Geoid</a>
@@ -136,25 +147,30 @@
, <a class="el" href="classGeographicLib_1_1MagneticModel.html#a204e8d3c4ebf6f8c13eb9e1817921ea2">GeographicLib::MagneticModel</a>
</li>
<li>Direct()
-: <a class="el" href="classGeographicLib_1_1Geodesic.html#ac8f0b5f4db73c5d8d11797698f937402">GeographicLib::Geodesic</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#a63f7681d1239902dc3f528ded0f90352">GeographicLib::Geodesic</a>
</li>
<li>Disturbance()
-: <a class="el" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">GeographicLib::GravityCircle</a>
-, <a class="el" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">GeographicLib::GravityModel</a>
+: <a class="el" href="classGeographicLib_1_1GravityModel.html#a75cf57146334d9ce0856222a6814ae6f">GeographicLib::GravityModel</a>
+, <a class="el" href="classGeographicLib_1_1GravityCircle.html#a2c3bde01c9d822b0cdd935314193a466">GeographicLib::GravityCircle</a>
</li>
<li>DMSRepresentation()
-: <a class="el" href="classGeographicLib_1_1GeoCoords.html#ab37746606876eb77335268054589390a">GeographicLib::GeoCoords</a>
+: <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">GeographicLib::GeoCoords</a>
</li>
<li>dow()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a4687c34e55dc7ccc135e31a72402f008">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a42a6f8679c068dcb06f1da26aa21dfb1">GeographicLib::Utility</a>
</li>
<li>DynamicalFormFactor()
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#aa52b03157eb0b199d331d6fca28a259a">GeographicLib::NormalGravity</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x65.html b/doc/html/functions_func_0x65.html
index fdc67d2..b6b35b2 100644
--- a/doc/html/functions_func_0x65.html
+++ b/doc/html/functions_func_0x65.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -94,7 +109,7 @@
: <a class="el" href="classGeographicLib_1_1EllipticFunction.html#ada122111b55eb0ab9c7b9fafb0a4b1e6">GeographicLib::EllipticFunction</a>
</li>
<li>Encode()
-: <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">GeographicLib::DMS</a>
+: <a class="el" href="classGeographicLib_1_1DMS.html#a1ae785976e5d7c6346cfb68863884b55">GeographicLib::DMS</a>
</li>
<li>EncodeZone()
: <a class="el" href="classGeographicLib_1_1UTMUPS.html#a3410e1e221158962f34147255653818f">GeographicLib::UTMUPS</a>
@@ -109,12 +124,17 @@
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#a3610ec908c7b168b39f00946e2fc3fad">GeographicLib::NormalGravity</a>
</li>
<li>expm1()
-: <a class="el" href="classGeographicLib_1_1Math.html#a71afd1ae80f942a0b90d65f7784bf2f8">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a2fd4e8930d9dd953352d25fc184d843e">GeographicLib::Math</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x66.html b/doc/html/functions_func_0x66.html
index 129b253..f423e51 100644
--- a/doc/html/functions_func_0x66.html
+++ b/doc/html/functions_func_0x66.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -145,18 +160,23 @@
, <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a68a13780a73bcf9c8e50a3ce4eae3086">GeographicLib::AlbersEqualArea</a>
</li>
<li>fract()
-: <a class="el" href="classGeographicLib_1_1Utility.html#ad6fbe8736a470a0acecf191e29f72ceb">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a46b13d9ce2893f7e0fe6e7da093f528f">GeographicLib::Utility</a>
</li>
<li>fractionalyear()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a6daedff1fb56da7ee149066c1cce106a">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a074607cb34326b7109532c8fdd07e38c">GeographicLib::Utility</a>
</li>
<li>furlong()
: <a class="el" href="classGeographicLib_1_1Constants.html#a824d39311cf43f916d4ac19e46da3713">GeographicLib::Constants</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x67.html b/doc/html/functions_func_0x67.html
index ff6a40f..798b52e 100644
--- a/doc/html/functions_func_0x67.html
+++ b/doc/html/functions_func_0x67.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -151,21 +166,26 @@
: <a class="el" href="classGeographicLib_1_1OSGB.html#a3693cfef49442747750e8393c81014aa">GeographicLib::OSGB</a>
</li>
<li>GRS80_a()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ac0ae4c03001a7fb4dea386d7539d38d3">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a9b955c3556dcfcebce6a2926bfeaf464">GeographicLib::Constants</a>
</li>
<li>GRS80_GM()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a436996122a60fde693eef527c74b3f05">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a7541474ca70cbec7fccb08d3e3fbfe31">GeographicLib::Constants</a>
</li>
<li>GRS80_J2()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae37450bc3e1137946cdf874affa2e44c">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a59c7a1d298eb72256119894b67470974">GeographicLib::Constants</a>
</li>
<li>GRS80_omega()
-: <a class="el" href="classGeographicLib_1_1Constants.html#ae714c61fde82178814973c94038b9b41">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a9caea97ab2be0959c7972155141bfd1b">GeographicLib::Constants</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x68.html b/doc/html/functions_func_0x68.html
index 0ce9072..77cd80f 100644
--- a/doc/html/functions_func_0x68.html
+++ b/doc/html/functions_func_0x68.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -92,12 +107,17 @@
: <a class="el" href="classGeographicLib_1_1GeoCoords.html#a0764b9f389a6ce851f9c7c8317ecebb3">GeographicLib::GeoCoords</a>
</li>
<li>hypot()
-: <a class="el" href="classGeographicLib_1_1Math.html#a0d422863198d4bec2aae6b187a60760c">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a62b6fca06c571481aafba3f1716a8bb2">GeographicLib::Math</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x69.html b/doc/html/functions_func_0x69.html
index 2ac2fd0..aa5f1fa 100644
--- a/doc/html/functions_func_0x69.html
+++ b/doc/html/functions_func_0x69.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,7 +97,7 @@
: <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a356d705a99ee15089d1faabd0c01084c">GeographicLib::SphericalEngine::coeff</a>
</li>
<li>infinity()
-: <a class="el" href="classGeographicLib_1_1Math.html#a4e8a86ff2039262e99b8e41070cc2223">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a82ccc01be301f14061c681ee93a5120b">GeographicLib::Math</a>
</li>
<li>Init()
: <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#a3f71bb8b662438a7954be174315ce974">GeographicLib::CassiniSoldner</a>
@@ -96,37 +111,23 @@
: <a class="el" href="classGeographicLib_1_1Geoid.html#a0ddfefaef196023486fc7642af45cf96">GeographicLib::Geoid</a>
</li>
<li>Inverse()
-: <a class="el" href="classGeographicLib_1_1Geodesic.html#ac668b5d0f82b28440dac5a44719fd61a">GeographicLib::Geodesic</a>
-</li>
-<li>InverseFlattening()
-: <a class="el" href="classGeographicLib_1_1Geoid.html#a19fd88ada94ee9b3b063e9ff097fd2e5">GeographicLib::Geoid</a>
-, <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html#ac4ec606131221d3eb0acc1ae00a34c63">GeographicLib::AzimuthalEquidistant</a>
-, <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html#a1d0ad953a852d4cdb9faa731b5530d70">GeographicLib::AlbersEqualArea</a>
-, <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html#a9c4df948ed85f96273c04414fc6871df">GeographicLib::TransverseMercatorExact</a>
-, <a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a2dcd66922112771c232d686e7bcc5f31">GeographicLib::LambertConformalConic</a>
-, <a class="el" href="classGeographicLib_1_1Geodesic.html#ab64c9662ce24d7a658924db0c85f8b2d">GeographicLib::Geodesic</a>
-, <a class="el" href="classGeographicLib_1_1OSGB.html#a72bb966b2a93e4607bfcbf78f5b80bb4">GeographicLib::OSGB</a>
-, <a class="el" href="classGeographicLib_1_1MGRS.html#a32792f0e117641cb48d06786d4c6fdbc">GeographicLib::MGRS</a>
-, <a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad6991a2dff56a460a650c757ffda8e94">GeographicLib::LocalCartesian</a>
-, <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a969a21c3df38517a081e233ae90c098e">GeographicLib::PolarStereographic</a>
-, <a class="el" href="classGeographicLib_1_1CassiniSoldner.html#aae869d96e9267c13e675e3a3804eb0e2">GeographicLib::CassiniSoldner</a>
-, <a class="el" href="classGeographicLib_1_1TransverseMercator.html#a5b5a56027507ae2aa08ab5b43a4bddc5">GeographicLib::TransverseMercator</a>
-, <a class="el" href="classGeographicLib_1_1UTMUPS.html#a3de827995b6327282bfe95fcab99ebb2">GeographicLib::UTMUPS</a>
-, <a class="el" href="classGeographicLib_1_1GeoCoords.html#a8f653a04eb087280cd020466213c9cac">GeographicLib::GeoCoords</a>
-, <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ad0d59a47c24d11229ab7ce4363d525ea">GeographicLib::GeodesicLine</a>
-, <a class="el" href="classGeographicLib_1_1Gnomonic.html#a655eff8ef95f92902899459e8a5efe63">GeographicLib::Gnomonic</a>
-, <a class="el" href="classGeographicLib_1_1Geocentric.html#aa947dd7275c12692b03d6ff43d217d13">GeographicLib::Geocentric</a>
+: <a class="el" href="classGeographicLib_1_1Geodesic.html#aa6da95e73bec6443a03bf3928f401d19">GeographicLib::Geodesic</a>
</li>
<li>isfinite()
-: <a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">GeographicLib::Math</a>
</li>
<li>isnan()
-: <a class="el" href="classGeographicLib_1_1Math.html#aa63d7a640d1126e47af65f782dd40bca">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a554d35e9f54bf304447833a21ee2047c">GeographicLib::Math</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x6b.html b/doc/html/functions_func_0x6b.html
index 3b6a6c4..5109fd9 100644
--- a/doc/html/functions_func_0x6b.html
+++ b/doc/html/functions_func_0x6b.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -89,8 +104,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x6c.html b/doc/html/functions_func_0x6c.html
index b283fc1..e079718 100644
--- a/doc/html/functions_func_0x6c.html
+++ b/doc/html/functions_func_0x6c.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -98,7 +113,7 @@
: <a class="el" href="classGeographicLib_1_1LocalCartesian.html#ad277a6798293d5d66168c3c1438d10a2">GeographicLib::LocalCartesian</a>
</li>
<li>log1p()
-: <a class="el" href="classGeographicLib_1_1Math.html#ac84507dc4df09cf27e831620e8ad8880">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a90eddd5a6d0c9dcc4a9f18dd647ac520">GeographicLib::Math</a>
</li>
<li>Longitude()
: <a class="el" href="classGeographicLib_1_1GeodesicLine.html#ac567ccf20c683319370f4c747f23966a">GeographicLib::GeodesicLine</a>
@@ -113,8 +128,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x6d.html b/doc/html/functions_func_0x6d.html
index c834cc9..6b09fcd 100644
--- a/doc/html/functions_func_0x6d.html
+++ b/doc/html/functions_func_0x6d.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -157,8 +172,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x6e.html b/doc/html/functions_func_0x6e.html
index 3a7af53..336fe02 100644
--- a/doc/html/functions_func_0x6e.html
+++ b/doc/html/functions_func_0x6e.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,7 +97,7 @@
: <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a38ab91101bb639963e094327a22fed59">GeographicLib::SphericalEngine::coeff</a>
</li>
<li>NaN()
-: <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">GeographicLib::Math</a>
</li>
<li>nauticalmile()
: <a class="el" href="classGeographicLib_1_1Constants.html#afedc242aa3ee9b3bf9c72d6d81fc6740">GeographicLib::Constants</a>
@@ -100,15 +115,20 @@
: <a class="el" href="classGeographicLib_1_1GeoCoords.html#a5bcf16f97750a6be77f72d50e304a007">GeographicLib::GeoCoords</a>
</li>
<li>num()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a8a490ea58d4de4c5a7ce86ab2cda25bd">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#aa35f1f83c0543558a79b3cf42ddf50c8">GeographicLib::Utility</a>
</li>
<li>nummatch()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a6e8268e5d125846dee7b087dec889825">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#ad0d89bfe63814bab5312306fe3ac2b43">GeographicLib::Utility</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x6f.html b/doc/html/functions_func_0x6f.html
index 8194c12..fe2586a 100644
--- a/doc/html/functions_func_0x6f.html
+++ b/doc/html/functions_func_0x6f.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,10 +97,10 @@
: <a class="el" href="classGeographicLib_1_1Geoid.html#ac798950a643e4286aa8d3bb8cd9b0815">GeographicLib::Geoid</a>
</li>
<li>operator!=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a64df6698b929c36ef2ea53762b1ca93b">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a4102ce7aac36753c2b0390c4fc951a42">GeographicLib::Accumulator</a>
</li>
<li>operator()()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a34cc7a21a2163fe7865734f9c2995f34">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a1a2b7ac3fd3b067a1c9930cb02a102b2">GeographicLib::Accumulator</a>
, <a class="el" href="classGeographicLib_1_1CircularEngine.html#a88a0726718baa7b457c77b5681fabb0a">GeographicLib::CircularEngine</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a5046d787c241c5216cfeb0062673cbd7">GeographicLib::SphericalHarmonic</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic1.html#a43098674b6bb823ccbac8908a7831234">GeographicLib::SphericalHarmonic1</a>
@@ -96,7 +111,7 @@
, <a class="el" href="classGeographicLib_1_1Geoid.html#a3bb5740c3a38a77caeb5eabd54c77cbc">GeographicLib::Geoid</a>
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a762d48fc2c3dc902859286de4df7672c">GeographicLib::SphericalHarmonic2</a>
, <a class="el" href="classGeographicLib_1_1MagneticCircle.html#a8669d47d20b03e9185d358440d3da9b1">GeographicLib::MagneticCircle</a>
-, <a class="el" href="classGeographicLib_1_1Accumulator.html#a7da3f417100387abd140f4f6fd541f3c">GeographicLib::Accumulator< T ></a>
+, <a class="el" href="classGeographicLib_1_1Accumulator.html#af74ec2f9a77fcc82819111e6bb87b375">GeographicLib::Accumulator</a>
, <a class="el" href="classGeographicLib_1_1CircularEngine.html#a48d2327412e0c674285ff6bb85440054">GeographicLib::CircularEngine</a>
, <a class="el" href="classGeographicLib_1_1MagneticCircle.html#ac715ae0394bd7f8c23288f80c406e5bc">GeographicLib::MagneticCircle</a>
, <a class="el" href="classGeographicLib_1_1MagneticModel.html#a550eb1739712fbbae1a167c2559d6dbc">GeographicLib::MagneticModel</a>
@@ -105,31 +120,31 @@
, <a class="el" href="classGeographicLib_1_1SphericalHarmonic.html#a42480d85a81238f612a6178410bf97ff">GeographicLib::SphericalHarmonic</a>
</li>
<li>operator*=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a400f473aa76225662c0493679c1a9072">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a2b0bc40e9722e1ffac89ecfeb601fb23">GeographicLib::Accumulator</a>
</li>
<li>operator+=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#acdefeaf2aa13cfc78109bdcf4b2cc5d9">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#adc56d12f08b8a61b19dd78ce532285d4">GeographicLib::Accumulator</a>
</li>
<li>operator-=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a1add8644c70e445b32c11f269a0345ef">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#abf3e43f38791c48d1fa09e4fb569827b">GeographicLib::Accumulator</a>
</li>
<li>operator<()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a3852660b49bef6eb2d92f1296a86459b">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a9a7299c02ec8805d951309fdae60e57f">GeographicLib::Accumulator</a>
</li>
<li>operator<=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a04aea3f9aad7dd1599bb419e7cf4529a">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#afb83bdb43b78e20f76e2a7e5e2440386">GeographicLib::Accumulator</a>
</li>
<li>operator=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#acb3c1aa458551c474bd8d487c3488789">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a9cd31c9155208a2de0fdd9810f2a9dd8">GeographicLib::Accumulator</a>
</li>
<li>operator==()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a826d30c1794c242628121d528461a383">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#a6ea5d769a36e01327f3633b39cd38290">GeographicLib::Accumulator</a>
</li>
<li>operator>()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a3f1172477b4c225e064fb87753d567ef">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#af0e4a35c09b0b179ebf1e2f6912ddeb3">GeographicLib::Accumulator</a>
</li>
<li>operator>=()
-: <a class="el" href="classGeographicLib_1_1Accumulator.html#a4d509a497da83624d913ed00649644c1">GeographicLib::Accumulator< T ></a>
+: <a class="el" href="classGeographicLib_1_1Accumulator.html#aeafc5d10683648d37fe18ec75725196b">GeographicLib::Accumulator</a>
</li>
<li>OriginLatitude()
: <a class="el" href="classGeographicLib_1_1OSGB.html#ad6bcef7e2dcc2992831e101bf0b05fa8">GeographicLib::OSGB</a>
@@ -141,8 +156,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x70.html b/doc/html/functions_func_0x70.html
index 77cf5f5..4f08c58 100644
--- a/doc/html/functions_func_0x70.html
+++ b/doc/html/functions_func_0x70.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,7 +101,7 @@
, <a class="el" href="classGeographicLib_1_1NormalGravity.html#af0f50fd88d8b647a1b7bb209a4cfae0f">GeographicLib::NormalGravity</a>
</li>
<li>pi()
-: <a class="el" href="classGeographicLib_1_1Math.html#a55d06bfccddf52b1c1066962af738b75">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aca1580c771e7019bfe826512fba9b2f1">GeographicLib::Math</a>
</li>
<li>PolarGravity()
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#a3079310d3a7af97ccb50b91be01d5a50">GeographicLib::NormalGravity</a>
@@ -102,8 +117,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x72.html b/doc/html/functions_func_0x72.html
index a1dbadc..d21bdd1 100644
--- a/doc/html/functions_func_0x72.html
+++ b/doc/html/functions_func_0x72.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -79,7 +94,7 @@
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>readarray()
-: <a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">GeographicLib::Utility</a>
</li>
<li>readcoeffs()
: <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a2d545f589894683e7de297c42b7c995a">GeographicLib::SphericalEngine::coeff</a>
@@ -128,8 +143,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x73.html b/doc/html/functions_func_0x73.html
index 24255bc..20a984f 100644
--- a/doc/html/functions_func_0x73.html
+++ b/doc/html/functions_func_0x73.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -107,13 +122,13 @@
: <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html#a897f6b15b82812e874a2b0927cfc3912">GeographicLib::SphericalHarmonic2</a>
</li>
<li>sq()
-: <a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">GeographicLib::Math</a>
</li>
<li>square_kilometer()
: <a class="el" href="classGeographicLib_1_1Constants.html#a1956824e4f2b22705d57566229a7c311">GeographicLib::Constants</a>
</li>
<li>square_meter()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a69b9a03f52615661b8e16f4aaa05425a">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#ab92200b36f9d306a2710738c6d9bc705">GeographicLib::Constants</a>
</li>
<li>square_mile()
: <a class="el" href="classGeographicLib_1_1Constants.html#ab7f473c27ad50da450b4192155cc92f9">GeographicLib::Constants</a>
@@ -128,7 +143,7 @@
: <a class="el" href="classGeographicLib_1_1UTMUPS.html#a62623c295d1b43318a9fa762c3da94ea">GeographicLib::UTMUPS</a>
</li>
<li>str()
-: <a class="el" href="classGeographicLib_1_1Utility.html#a53fbf616c74bab1cbbc9e8d4c7b6739f">GeographicLib::Utility</a>
+: <a class="el" href="classGeographicLib_1_1Utility.html#ae87a7ae2bee75f724907af9f753f03b7">GeographicLib::Utility</a>
</li>
<li>SurfaceGravity()
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#a019541fea3712f8ca73aec8a0b29c71c">GeographicLib::NormalGravity</a>
@@ -143,12 +158,17 @@
: <a class="el" href="classGeographicLib_1_1SphericalEngine_1_1coeff.html#a4fc7e6c7faf3f5940ee8f3ab28216897">GeographicLib::SphericalEngine::coeff</a>
</li>
<li>swab()
-: <a class="el" href="classGeographicLib_1_1Math.html#aa81163e3148b2d45d903d23f5d8fb261">GeographicLib::Math</a>
+: <a class="el" href="classGeographicLib_1_1Math.html#aec7f95c2bb99422f1f047cb628a232f8">GeographicLib::Math</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x74.html b/doc/html/functions_func_0x74.html
index a5de380..4f5ecf8 100644
--- a/doc/html/functions_func_0x74.html
+++ b/doc/html/functions_func_0x74.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -99,8 +114,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x75.html b/doc/html/functions_func_0x75.html
index 40f4c0a..eed4e5c 100644
--- a/doc/html/functions_func_0x75.html
+++ b/doc/html/functions_func_0x75.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,7 +101,7 @@
: <a class="el" href="classGeographicLib_1_1Constants.html#a49d415263ee320d1a63a857f784439a3">GeographicLib::Constants</a>
</li>
<li>UTM_k0()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a76c804fc143b26086a296d05ed09fe4f">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#ab5cc487ab160c0a213fdf8e12cde198a">GeographicLib::Constants</a>
</li>
<li>UTMShift()
: <a class="el" href="classGeographicLib_1_1UTMUPS.html#abd70d3f90f5c79a09bdd217b67e6729b">GeographicLib::UTMUPS</a>
@@ -96,8 +111,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x76.html b/doc/html/functions_func_0x76.html
index 78096be..9af0378 100644
--- a/doc/html/functions_func_0x76.html
+++ b/doc/html/functions_func_0x76.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,12 +101,17 @@
: <a class="el" href="classGeographicLib_1_1NormalGravity.html#aa656e36306bc396ac6d32dcdfc2069a2">GeographicLib::NormalGravity</a>
</li>
<li>Value()
-: <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a987cbe2cdb67410174a6e9594da92573">GeographicLib::SphericalEngine</a>
+: <a class="el" href="classGeographicLib_1_1SphericalEngine.html#a1157f59596dd15bf0a21b6a7fb99630b">GeographicLib::SphericalEngine</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x77.html b/doc/html/functions_func_0x77.html
index 86a977f..77a1d44 100644
--- a/doc/html/functions_func_0x77.html
+++ b/doc/html/functions_func_0x77.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,21 +101,29 @@
: <a class="el" href="classGeographicLib_1_1Constants.html#a53f39f52837f47490fbdf7332a37dd8b">GeographicLib::Constants</a>
</li>
<li>WGS84_f()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">GeographicLib::Constants</a>
</li>
<li>WGS84_GM()
-: <a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">GeographicLib::Constants</a>
</li>
<li>WGS84_omega()
-: <a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">GeographicLib::Constants</a>
+: <a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">GeographicLib::Constants</a>
</li>
<li>WGS84_r()
: <a class="el" href="classGeographicLib_1_1Constants.html#a199810de7ff3351be6473d20ef045789">GeographicLib::Constants</a>
</li>
+<li>writearray()
+: <a class="el" href="classGeographicLib_1_1Utility.html#a0621066e4aa146a2c100802375e70389">GeographicLib::Utility</a>
+</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x79.html b/doc/html/functions_func_0x79.html
index 76cc845..c68f9ff 100644
--- a/doc/html/functions_func_0x79.html
+++ b/doc/html/functions_func_0x79.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,8 +98,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_func_0x7a.html b/doc/html/functions_func_0x7a.html
index 0914a15..6cae718 100644
--- a/doc/html/functions_func_0x7a.html
+++ b/doc/html/functions_func_0x7a.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -83,8 +98,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html
index 70954ea..4466960 100644
--- a/doc/html/functions_rela.html
+++ b/doc/html/functions_rela.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Related Functions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -100,8 +115,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html
index 04366b8..8196146 100644
--- a/doc/html/functions_type.html
+++ b/doc/html/functions_type.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Typedefs</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -58,8 +73,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html
index b6986d0..eb72a85 100644
--- a/doc/html/functions_vars.html
+++ b/doc/html/functions_vars.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Class Members - Variables</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,8 +97,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/geocentric.html b/doc/html/geocentric.html
index d969ae4..91ede09 100644
--- a/doc/html/geocentric.html
+++ b/doc/html/geocentric.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geocentric coordinates</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,7 +51,7 @@
<div class="title">Geocentric coordinates </div> </div>
</div>
<div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="transversemercator.html">Transverse Mercator Projection</a>. Forward to <a class="el" href="old.html">Old Versions</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>The implementation of <a class="el" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">GeographicLib::Geocentric::Reverse</a> is adapted from</p>
+<div class="textblock"><center> Back to <a class="el" href="transversemercator.html">Transverse Mercator projection</a>. Forward to <a class="el" href="old.html">Old versions</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>The implementation of <a class="el" href="classGeographicLib_1_1Geocentric.html#a1907735ce8f5f915a14a5f7a8b3adfea">GeographicLib::Geocentric::Reverse</a> is adapted from</p>
<ul>
<li>H. Vermeille, <a href="http://dx.doi.org/10.1007/s00190-002-0273-6">Direct transformation from geocentric coordinates to geodetic coordinates</a>, J. Geodesy 76, 451–454 (2002).</li>
</ul>
@@ -63,9 +78,14 @@
<p>We then find <em>err</em><sub>h</sub> < 8 nm, <em>err</em><sub>out</sub> < 4 nm, and <em>err</em><sub>in</sub> < 7 nm. (1 nm = 1 nanometer.)</p>
<p>The testing has been confined to the WGS84 ellipsoid. The method will work for all ellipsoids used in terrestrial geodesy. However, the central region, which leads to multiple real roots for the cubic equation in Reverse, pokes outside the ellipsoid (at the poles) for ellipsoids with <em>e</em> > 1/sqrt(2). Reverse has not been analyzed for this case. Similarly ellipsoids which are very nearly spherical near yield inaccurate results due to underflow; in the other hand, the case of [...]
<p>Other comparable methods are K. M. Borkowski, <a href="http://dx.doi.org/10.1007/BF00643807">Transformation of geocentric to geodetic coordinates without approximations</a>, Astrophys. Space Sci. 139, 1–4 (1987) (<a href="http://dx.doi.org/10.1007/BF00656995">erratum</a>) and T. Fukushima, <a href="http://dx.doi.org/10.1007/s001900050271">Fast transform from geocentric to geodetic coordinates</a>, J. Geodesy 73, 603–610 (2003). However the choice of independent variables i [...]
-<center> Back to <a class="el" href="transversemercator.html">Transverse Mercator Projection</a>. Forward to <a class="el" href="old.html">Old Versions</a>. Up to <a class="el" href="index.html#contents">Contents</a>.</center><center></center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<center> Back to <a class="el" href="transversemercator.html">Transverse Mercator projection</a>. Forward to <a class="el" href="old.html">Old versions</a>. Up to <a class="el" href="index.html#contents">Contents</a>.</center><center></center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/geodesic.html b/doc/html/geodesic.html
index e4f91b2..2b44c04 100644
--- a/doc/html/geodesic.html
+++ b/doc/html/geodesic.html
@@ -2,24 +2,39 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: Geodesics on the Ellipsoid</title>
+<title>GeographicLib: Geodesics on the ellipsoid</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -33,10 +48,10 @@
</div>
<div class="header">
<div class="headertitle">
-<div class="title">Geodesics on the Ellipsoid </div> </div>
+<div class="title">Geodesics on the ellipsoid </div> </div>
</div>
<div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="magnetic.html">Magnetic models</a>. Forward to <a class="el" href="transversemercator.html">Transverse Mercator Projection</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p><a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLin [...]
+<div class="textblock"><center> Back to <a class="el" href="magnetic.html">Magnetic models</a>. Forward to <a class="el" href="transversemercator.html">Transverse Mercator projection</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p><a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLin [...]
<p>References</p>
<ul>
<li>F. W. Bessel, <a href="http://dx.doi.org/10.1002/asna.201011352">The calculation of longitude and latitude from geodesic measurements (1825)</a>, Astron. Nachr. 331(8), 852-861 (2010); translated by C. F. F. Karney and R. E. Deakin. Preprint: <a href="http://arxiv.org/abs/0908.1824">arXiv:0908.1824</a>.</li>
@@ -365,9 +380,14 @@ C4[7] = + (1/26254800 - 1/31177575 * ep2 + 2/72747675 * ep2^2) * k2^7
C4[8] = + (1/141338340 - 1/164894730 * ep2) * k2^8
- 1/34714680 * k2^9;
C4[9] = + 1/737176440 * k2^9;
-</pre></div><center> Back to <a class="el" href="magnetic.html">Magnetic models</a>. Forward to <a class="el" href="transversemercator.html">Transverse Mercator Projection</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+</pre></div><center> Back to <a class="el" href="magnetic.html">Magnetic models</a>. Forward to <a class="el" href="transversemercator.html">Transverse Mercator projection</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/geoid.html b/doc/html/geoid.html
index 0894578..f452d01 100644
--- a/doc/html/geoid.html
+++ b/doc/html/geoid.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geoid height</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,10 +101,11 @@ Installing the geoid datasets</h2>
geographiclib-get-geoids best # to install egm84-15, egm96-5, egm2008-1
geographiclib-get-geoids -h # for help
</pre></div><p> This script should be run as a user with write access to the installation directory, which is typically /usr/local/share/GeographicLib (this can be overridden with the -p flag), and the data will then be placed in the "geoids" subdirectory.</p>
-<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being </p>
+<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being one of </p>
<div class="fragment"><pre class="fragment">
C:/Documents and Settings/All Users/Application Data/GeographicLib
-</pre></div><p> (which you probably should not change) and the data is installed in the "geoids" sub-directory.</p>
+ C:/ProgramData/GeographicLib
+</pre></div><p> (which you probably should not change) and the data is installed in the "geoids" sub-directory. (The second directory name is an alternate name that Windows 7 for the "Application Data" directory.)</p>
<p>Otherwise download <em>either</em> the tar.bz2 file <em>or</em> the zip file (they have the same contents). If possible use the tar.bz2 files, since these are compressed about 2 times better than the zip file. To unpack these, run, for example </p>
<div class="fragment"><pre class="fragment">
mkdir -p /usr/local/share/GeographicLib
@@ -177,6 +193,7 @@ gdal_translate -co COMPRESS=LZW -co PREDICTOR=2 \
<h2><a class="anchor" id="geoidinterp"></a>
Interpolating the geoid data</h2>
<p><a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> evaluates the geoid height using bilinear or cubic interpolation. The gradient of the geoid height is obtained by differentiating the interpolated height and referencing the result to distance on the WGS84 ellipsoid.</p>
+<p><b>WARNING</b>: Although <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> computes the gradient of the geoid height, this is subject to large quantization errors as a result of the way that the geoid data is stored. This is particularly acute for fine grids, at high latitudes, and for the easterly gradient. If you need to compute the direction of the acceleration due to gravity accurately, you should use <a clas [...]
<p>The bilinear interpolation is based on the values at the 4 corners of the enclosing cell. The interpolated height is a continuous function of position; however the gradient has discontinuities are cell boundaries. The quantization of the data files exacerbates the errors in the gradients.</p>
<p>The cubic interpolation is a least-squares fit to the values on a 12-point stencil with weights as follows: </p>
<div class="fragment"><pre class="fragment">
@@ -188,7 +205,7 @@ Interpolating the geoid data</h2>
<p>The algorithm for the least squares fit is taken from, F. H. Lesh, Multi-dimensional least-squares polynomial curve fitting, CACM 2, 29-30 (1959). This algorithm is not part of <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a>; instead it is implemented as <a href="http://en.wikipedia.org/wiki/Maxima_(software)">Maxima</a> code which is used to precompute the matrices to convert the function values on the stencil [...]
<p>The interpolation methods are quick and give good accuracy. Here is a summary of the combined quantization and interpolation errors for the heights. </p>
<center><table class="doxtable">
-<caption align="bottom">Interpolation errors for geoid heights</caption>
+<caption align="bottom">Interpolation and quantization errors for geoid heights</caption>
<tr>
<th rowspan="2">name </th><th rowspan="2">geoid </th><th rowspan="2">grid </th><th colspan="2"><center>bilinear error</center> </th><th colspan="2"><center>cubic error</center> </th></tr>
<tr>
@@ -196,26 +213,40 @@ Interpolating the geoid data</h2>
<tr>
<td>egm84-30 </td><td>EGM84 </td><td><center>30' </center> </td><td><center>1.546 m</center></td><td><center>70 mm</center> </td><td><center>0.274 m</center></td><td><center>14 mm</center> </td></tr>
<tr>
-<td>egm84-15 </td><td>EGM84 </td><td><center>15' </center> </td><td><center>0.413 m</center></td><td><center>18 mm</center> </td><td><center>0.020 m</center></td><td><center> 1 mm</center> </td></tr>
+<td>egm84-15 </td><td>EGM84 </td><td><center>15' </center> </td><td><center>0.413 m</center></td><td><center>18 mm</center> </td><td><center>0.021 m</center></td><td><center>1.2 mm</center> </td></tr>
<tr>
-<td>egm96-15 </td><td>EGM96 </td><td><center>15' </center> </td><td><center>1.152 m</center></td><td><center>40 mm</center> </td><td><center>0.169 m</center></td><td><center> 7 mm</center> </td></tr>
+<td>egm96-15 </td><td>EGM96 </td><td><center>15' </center> </td><td><center>1.152 m</center></td><td><center>40 mm</center> </td><td><center>0.169 m</center></td><td><center>7.0 mm</center> </td></tr>
<tr>
-<td>egm96-5 </td><td>EGM96 </td><td><center> 5' </center> </td><td><center>0.140 m</center></td><td><center> 5 mm</center> </td><td><center>0.003 m</center></td><td><center> 1 mm</center> </td></tr>
+<td>egm96-5 </td><td>EGM96 </td><td><center> 5' </center> </td><td><center>0.140 m</center></td><td><center>4.6 mm</center> </td><td><center>0.0032 m</center></td><td><center>0.7 mm</center> </td></tr>
<tr>
-<td>egm2008-5 </td><td>EGM2008</td><td><center> 5' </center> </td><td><center>0.478 m</center></td><td><center>12 mm</center> </td><td><center>0.294 m</center></td><td><center> 5 mm</center> </td></tr>
+<td>egm2008-5 </td><td>EGM2008</td><td><center> 5' </center> </td><td><center>0.478 m</center></td><td><center>12 mm</center> </td><td><center>0.294 m</center></td><td><center>4.5 mm</center> </td></tr>
<tr>
-<td>egm2008-2_5</td><td>EGM2008</td><td><center> 2.5'</center> </td><td><center>0.135 m</center></td><td><center> 3 mm</center> </td><td><center>0.031 m</center></td><td><center> 1 mm</center> </td></tr>
+<td>egm2008-2_5</td><td>EGM2008</td><td><center> 2.5'</center> </td><td><center>0.135 m</center></td><td><center>3.2 mm</center> </td><td><center>0.031 m</center></td><td><center>0.8 mm</center> </td></tr>
<tr>
-<td>egm2008-1 </td><td>EGM2008</td><td><center> 1' </center> </td><td><center>0.025 m</center></td><td><center> 1 mm</center> </td><td><center>0.003 m</center></td><td><center> 1 mm</center> </td></tr>
+<td>egm2008-1 </td><td>EGM2008</td><td><center> 1' </center> </td><td><center>0.025 m</center></td><td><center>0.8 mm</center> </td><td><center>0.0022 m</center></td><td><center>0.7 mm</center> </td></tr>
</table>
-</center><p> The errors are with respect to the specific NGA earth gravity model (not to any "real" geoid). The RMS values are obtained using 5 million uniformly distributed random points. The maximum values are obtained by evaluating the errors using a different grid with points at or near the centers of the original grid. (The RMS difference between EGM96 and EGM2008 is about 0.5 m. The RMS difference between EGM84 and EGM96 is about 1.5 m.)</p>
-<h2><a class="anchor" id="geoidcache"></a>
+</center><p> The errors are with respect to the specific NGA earth gravity model (not to any "real" geoid). The RMS values are obtained using 5 million uniformly distributed random points. The maximum values are obtained by evaluating the errors using a different grid with points at the centers of the original grid. (The RMS difference between EGM96 and EGM2008 is about 0.5 m. The RMS difference between EGM84 and EGM96 is about 1.5 m.)</p>
+<p>The errors in the table above include the quantization errors that arise because the height data that <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> uses are quantized to 3 mm. If, instead, <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> were to use data files without such quantization artifacts, the overall error would be reduced <em>b [...]
+<center><table class="doxtable">
+<caption align="bottom">Interpolation (only!) errors for geoid heights</caption>
+<tr>
+<th rowspan="2">name </th><th rowspan="2">geoid </th><th rowspan="2">grid </th><th colspan="2"><center>bilinear error</center> </th><th colspan="2"><center>cubic error</center> </th></tr>
+<tr>
+<th><center>max</center></th><th><center>rms</center> </th><th><center>max</center></th><th><center>rms</center> </th></tr>
+<tr>
+<td>egm96-5 </td><td>EGM96 </td><td><center> 5' </center> </td><td><center>0.140 m</center></td><td><center>4.6 mm</center> </td><td><center><b>0.0026 m</b></center></td><td><center><b>0.1 mm</b></center> </td></tr>
+<tr>
+<td>egm2008-2_5</td><td>EGM2008</td><td><center> 2.5'</center> </td><td><center>0.135 m</center></td><td><center>3.2 mm</center> </td><td><center>0.031 m</center></td><td><center><b>0.4 mm</b></center> </td></tr>
+<tr>
+<td>egm2008-1 </td><td>EGM2008</td><td><center> 1' </center> </td><td><center>0.025 m</center></td><td><center><b>0.6 mm</b></center> </td><td><center><b>0.0010 m</b></center></td><td><center><b>0.011 mm</b></center> </td></tr>
+</table>
+</center><h2><a class="anchor" id="geoidcache"></a>
Caching the geoid data</h2>
<p>A simple way of calling Geoid is as follows </p>
<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <<a class="code" href="Geoid_8hpp.html" title="Header for GeographicLib::Geoid class.">GeographicLib/Geoid.hpp</a>></span>
<span class="preprocessor"> #include <iostream></span>
...
- <a class="code" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> g(<span class="stringliteral">"egm96-5"</span>);
+ GeographicLib::Geoid g(<span class="stringliteral">"egm96-5"</span>);
<span class="keywordtype">double</span> lat, lon;
<span class="keywordflow">while</span> (std::cin >> lat >> lon)
std::cout << g(lat, lon) << <span class="stringliteral">"\n"</span>;
@@ -231,7 +262,7 @@ Caching the geoid data</h2>
Test data for geoids</h2>
<p>A test set for the geoid models is available at</p>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/testdata/GeoidHeights.dat.gz/download">GeoidHeight.dat.gz</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/testdata/GeoidHeights.dat.gz/download">GeoidHeights.dat.gz</a></li>
</ul>
<p>This is about 11 MB (compressed). This test set consists of a set of 500000 geographic coordinates together with the corresponding geoid heights according to various earth gravity models.</p>
<p>Each line of the test set gives 6 space delimited numbers</p>
@@ -244,8 +275,13 @@ Test data for geoids</h2>
</ul>
<p>The latitude and longitude are all multiples of 10<sup>-6</sup> deg and should be regarded as exact. The geoid heights are computed using the harmonic NGA synthesis programs, where the programs were compiled (with gfortran) and run under Linux. In the case of the EGM2008 program, a <code>SAVE</code> statement needed to be added to subroutine <code>latf</code>, in order for the program to compile correctly with a stack-based compiler. Similarly the EGM96 code requires a <code>SAVE</cod [...]
<center> Back to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Forward to <a class="el" href="gravity.html">Gravity models</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/globals.html b/doc/html/globals.html
index 068ef9f..af72cc0 100644
--- a/doc/html/globals.html
+++ b/doc/html/globals.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: File Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -51,6 +66,7 @@
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_l"><span>l</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_t"><span>t</span></a></li>
@@ -63,7 +79,7 @@
<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
<li>AzimuthString()
-: <a class="el" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">Geod.cpp</a>
+: <a class="el" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">Geod.cpp</a>
</li>
</ul>
@@ -112,8 +128,8 @@
<li>GEOGRAPHICLIB_CONSTANTS_HPP
: <a class="el" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">Constants.hpp</a>
</li>
-<li>GEOGRAPHICLIB_CPLUSPLUS0X_MATH
-: <a class="el" href="Math_8hpp.html#a6cdc2f4c764d4116788cc5c24625e75d">Math.hpp</a>
+<li>GEOGRAPHICLIB_CPLUSPLUS11_MATH
+: <a class="el" href="Math_8hpp.html#a2769cdfa2277e2728e4e157ec3f6318b">Math.hpp</a>
</li>
<li>GEOGRAPHICLIB_DATA
: <a class="el" href="MagneticModel_8cpp.html#a45687ef771d809c1c369daea074cc109">MagneticModel.cpp</a>
@@ -293,7 +309,7 @@
<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
<li>LatLonString()
-: <a class="el" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">Geod.cpp</a>
+: <a class="el" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">Geod.cpp</a>
</li>
</ul>
@@ -320,6 +336,13 @@
</ul>
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>PGM_PIXEL_WIDTH
+: <a class="el" href="Geoid_8hpp.html#aa34d236045b829973cbc0d958d3ed139">Geoid.hpp</a>
+</li>
+</ul>
+
+
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>RCSID_DECL
: <a class="el" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">Constants.hpp</a>
@@ -353,8 +376,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html
index 0bae984..1c19969 100644
--- a/doc/html/globals_defs.html
+++ b/doc/html/globals_defs.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: File Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -48,6 +63,7 @@
<ul class="tablist">
<li><a href="#index_g"><span>g</span></a></li>
<li><a href="#index_m"><span>m</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
<li><a href="#index_r"><span>r</span></a></li>
<li><a href="#index_s"><span>s</span></a></li>
<li><a href="#index_t"><span>t</span></a></li>
@@ -95,8 +111,8 @@
<li>GEOGRAPHICLIB_CONSTANTS_HPP
: <a class="el" href="Constants_8hpp.html#a16d93570265d8037f7dc7d5d026b2aa4">Constants.hpp</a>
</li>
-<li>GEOGRAPHICLIB_CPLUSPLUS0X_MATH
-: <a class="el" href="Math_8hpp.html#a6cdc2f4c764d4116788cc5c24625e75d">Math.hpp</a>
+<li>GEOGRAPHICLIB_CPLUSPLUS11_MATH
+: <a class="el" href="Math_8hpp.html#a2769cdfa2277e2728e4e157ec3f6318b">Math.hpp</a>
</li>
<li>GEOGRAPHICLIB_DATA
: <a class="el" href="MagneticModel_8cpp.html#a45687ef771d809c1c369daea074cc109">MagneticModel.cpp</a>
@@ -284,6 +300,13 @@
</ul>
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>PGM_PIXEL_WIDTH
+: <a class="el" href="Geoid_8hpp.html#aa34d236045b829973cbc0d958d3ed139">Geoid.hpp</a>
+</li>
+</ul>
+
+
<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
<li>RCSID_DECL
: <a class="el" href="Constants_8hpp.html#af90fa899707a2ac513d5e4c76853bbf5">Constants.hpp</a>
@@ -311,8 +334,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html
index 3bdf002..e88f5cc 100644
--- a/doc/html/globals_func.html
+++ b/doc/html/globals_func.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: File Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -48,13 +63,13 @@
<div class="contents">
<ul>
<li>AzimuthString()
-: <a class="el" href="Geod_8cpp.html#ade33c0d3b83c6fcbf2fc612d5c6a7172">Geod.cpp</a>
+: <a class="el" href="Geod_8cpp.html#adeb84b4732b410c9fdccf799037ef245">Geod.cpp</a>
</li>
<li>DistanceStrings()
: <a class="el" href="Geod_8cpp.html#a600021136749afe8d757335563b5b544">Geod.cpp</a>
</li>
<li>LatLonString()
-: <a class="el" href="Geod_8cpp.html#a816c824309c06ba9fce8978d534c8a59">Geod.cpp</a>
+: <a class="el" href="Geod_8cpp.html#a8c3a2a4c039b4d0118416afd97a45fcf">Geod.cpp</a>
</li>
<li>main()
: <a class="el" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">CartConvert.cpp</a>
@@ -73,8 +88,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html
index 40c6f9f..3127035 100644
--- a/doc/html/globals_type.html
+++ b/doc/html/globals_type.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: File Members</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -52,8 +67,13 @@
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:17 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/gravity.html b/doc/html/gravity.html
index cedb1a7..7ff3f99 100644
--- a/doc/html/gravity.html
+++ b/doc/html/gravity.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Gravity models</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -86,10 +101,11 @@ Installing the gravity models</h2>
geographiclib-get-gravity all # to install egm84, egm96, egm2008, wgs84
geographiclib-get-gravity -h # for help
</pre></div><p> This script should be run as a user with write access to the installation directory, which is typically /usr/local/share/GeographicLib (this can be overridden with the -p flag), and the data will then be placed in the "gravity" subdirectory.</p>
-<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being </p>
+<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being one of </p>
<div class="fragment"><pre class="fragment">
C:/Documents and Settings/All Users/Application Data/GeographicLib
-</pre></div><p> (which you probably should not change) and the data is installed in the "gravity" sub-directory.</p>
+ C:/ProgramData/GeographicLib
+</pre></div><p> (which you probably should not change) and the data is installed in the "gravity" sub-directory. (The second directory name is an alternate name that Windows 7 for the "Application Data" directory.)</p>
<p>Otherwise download <em>either</em> the tar.bz2 file <em>or</em> the zip file (they have the same contents). To unpack these, run, for example </p>
<div class="fragment"><pre class="fragment">
mkdir -p /usr/local/share/GeographicLib
@@ -222,11 +238,27 @@ Geoid heights on a multi-processor system</h2>
<li>Use a <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> to compute the geoid height at several points on a circle of latitude. This reduces the cost per point to about 92 us (a reduction by a factor of over 800).</li>
<li>Compute the values on several circles of latitude in parallel. One of the simplest ways of doing this is with <a href="http://openmp.org">OpenMP</a>; on an 8-processor system, this can speed up the computation by another factor of 8.</li>
</ul>
-<p>Both of these techniques are illustrated by the following code, GeoidHeightTable.cpp, which computes a table of egm2008 geoid heights on a 1 minute grid. On an 8-processor Intel 2.66 GHz machine using OpenMP (-DHAVE_OPENMP=1), this takes about 40 minutes of elapsed time. (Without these optimizations, the computation would have taken about 200 days!) </p>
-<div class="fragment"><pre class="fragment"><span class="comment">// Compute a table of egm2008 geoid heights on a 1' grid.</span>
+<p>Both of these techniques are illustrated by the following code, which computes a table of geoid heights on a regular grid and writes on the result in a <a href="http://vdatum.noaa.gov/dev/gtx_info.html#dev_gtx_binary">.gtx</a> file. On an 8-processor Intel 2.66 GHz machine using OpenMP (-DHAVE_OPENMP=1), it takes about 40 minutes of elapsed time to compute the geoid height for EGM2008 on a 1' gride. (Without these optimizations, the computation would have taken about 200 days!) </p>
+<div class="fragment"><pre class="fragment"><span class="comment">// Write out a gtx file of geoid heights. For egm2008 at 1' resolution this</span>
+<span class="comment">// takes about 40 mins on a 8-processor Intel 2.66 GHz machine using OpenMP</span>
+<span class="comment">// (-DHAVE_OPENMP=1).</span>
+<span class="comment">//</span>
+<span class="comment">// For the format of gtx files, see</span>
+<span class="comment">// http://vdatum.noaa.gov/dev/gtx_info.html#dev_gtx_binary</span>
+<span class="comment">//</span>
+<span class="comment">// data is binary big-endian:</span>
+<span class="comment">// south latitude edge (degrees double)</span>
+<span class="comment">// west longitude edge (degrees double)</span>
+<span class="comment">// delta latitude (degrees double)</span>
+<span class="comment">// delta longitude (degrees double)</span>
+<span class="comment">// nlat = number of latitude rows (integer)</span>
+<span class="comment">// nlong = number of longitude columns (integer)</span>
+<span class="comment">// nlat * nlong geoid heights (meters float)</span>
<span class="preprocessor">#include <vector></span>
+<span class="preprocessor">#include <iostream></span>
<span class="preprocessor">#include <fstream></span>
+<span class="preprocessor">#include <string></span>
<span class="preprocessor">#include <algorithm></span>
<span class="preprocessor">#if HAVE_OPENMP</span>
@@ -235,69 +267,90 @@ Geoid heights on a multi-processor system</h2>
<span class="preprocessor"></span>
<span class="preprocessor">#include <<a class="code" href="GravityModel_8hpp.html" title="Header for GeographicLib::GravityModel class.">GeographicLib/GravityModel.hpp</a>></span>
<span class="preprocessor">#include <<a class="code" href="GravityCircle_8hpp.html" title="Header for GeographicLib::GravityCircle class.">GeographicLib/GravityCircle.hpp</a>></span>
+<span class="preprocessor">#include <<a class="code" href="Utility_8hpp.html" title="Header for GeographicLib::Utility class.">GeographicLib/Utility.hpp</a>></span>
<span class="keyword">using namespace </span>std;
<span class="keyword">using namespace </span>GeographicLib;
-<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
- <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> g(<span class="stringliteral">"egm2008"</span>);
- <span class="keywordtype">int</span>
- ndeg = 60, <span class="comment">// Number of intervals per degree</span>
- nlat = 180 * ndeg + 1,
- nlon = 360 * ndeg;
- <span class="keywordtype">double</span> delta = 1 / double(ndeg); <span class="comment">// Grid spacing</span>
+<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>* argv[]) {
+ <span class="comment">// Hardwired for 3 args:</span>
+ <span class="comment">// 1 = the gravity model (e.g., egm2008)</span>
+ <span class="comment">// 2 = intervals per degree</span>
+ <span class="comment">// 3 = output GTX file</span>
+ <span class="keywordflow">if</span> (argc != 4) {
+ cerr << <span class="stringliteral">"Usage: "</span> << argv[0]
+ << <span class="stringliteral">" gravity-model intervals-per-degree output.gtx\n"</span>;
+ <span class="keywordflow">return</span> 1;
+ }
+ <span class="keywordflow">try</span> {
+ <span class="keywordtype">string</span> model(argv[1]);
+ <span class="comment">// Number of intervals per degree</span>
+ <span class="keywordtype">int</span> ndeg = <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::num<int>(string(argv[2]));
+ <span class="keywordtype">string</span> filename(argv[3]);
+ <a class="code" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GravityModel</a> g(model);
+ <span class="keywordtype">int</span>
+ nlat = 180 * ndeg + 1,
+ nlon = 360 * ndeg;
+ <span class="keywordtype">double</span>
+ delta = 1 / double(ndeg), <span class="comment">// Grid spacing</span>
+ latorg = -90,
+ lonorg = -180;
+ <span class="comment">// Write results as floats in binary mode</span>
+ ofstream file(filename.c_str(), ios::binary);
- <span class="comment">// Write results as floats in binary mode</span>
- ofstream file(<span class="stringliteral">"egm2008-geoid.dat"</span>, ios::binary);
+ <span class="comment">// Write header</span>
+ {
+ <span class="keywordtype">double</span> transform[] = {latorg, lonorg, delta, delta};
+ <span class="keywordtype">unsigned</span> sizes[] = {nlat, nlon};
+ <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::writearray<double, double, true>(file, transform, 4);
+ <a class="code" href="classGeographicLib_1_1Utility.html" title="Some utility routines for GeographicLib.">Utility</a>::writearray<unsigned, unsigned, true>(file, sizes, 2);
+ }
- <span class="comment">// Compute and store results for nbatch latitudes at a time</span>
- <span class="keyword">const</span> <span class="keywordtype">int</span> nbatch = 64;
- vector< vector<float> > N(nbatch, vector<float>(nlon));
+ <span class="comment">// Compute and store results for nbatch latitudes at a time</span>
+ <span class="keyword">const</span> <span class="keywordtype">int</span> nbatch = 64;
+ vector< vector<float> > N(nbatch, vector<float>(nlon));
- <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat0 = 0; ilat0 < nlat; ilat0 += nbatch) { <span class="comment">// Loop over batches</span>
- <span class="keywordtype">int</span> nlat0 = min(nlat, ilat0 + nbatch);
+ <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat0 = 0; ilat0 < nlat; ilat0 += nbatch) { <span class="comment">// Loop over batches</span>
+ <span class="keywordtype">int</span> nlat0 = min(nlat, ilat0 + nbatch);
<span class="preprocessor">#if HAVE_OPENMP</span>
<span class="preprocessor"></span><span class="preprocessor">#pragma omp parallel for</span>
<span class="preprocessor"></span><span class="preprocessor">#endif</span>
-<span class="preprocessor"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat = ilat0; ilat < nlat0; ++ilat) { <span class="comment">// Loop over latitudes</span>
- <span class="keywordtype">double</span> lat = 90 - ilat * delta, h = 0;
- <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> c(g.Circle(lat, h, GravityModel::GEOID_HEIGHT));
- <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilon = 0; ilon < nlon; ++ilon) { <span class="comment">// Loop over longitudes</span>
- <span class="keywordtype">double</span> lon = ilon * delta;
- N[ilat - ilat0][ilon] = float(c.GeoidHeight(lon));
- } <span class="comment">// longitude loop</span>
- } <span class="comment">// latitude loop</span>
- <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat = ilat0; ilat < nlat0; ++ilat)
- file.write(reinterpret_cast<char *>(N[ilat - ilat0].data()),
- nlon * <span class="keyword">sizeof</span>(<span class="keywordtype">float</span>));
+<span class="preprocessor"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat = ilat0; ilat < nlat0; ++ilat) { <span class="comment">// Loop over latitudes</span>
+ <span class="keywordtype">double</span>
+ lat = latorg + (ilat / ndeg) + delta * (ilat - ndeg * (ilat / ndeg)),
+ h = 0;
+ <a class="code" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GravityCircle</a> c(g.Circle(lat, h, GravityModel::GEOID_HEIGHT));
+ <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilon = 0; ilon < nlon; ++ilon) { <span class="comment">// Loop over longitudes</span>
+ <span class="keywordtype">double</span> lon = lonorg
+ + (ilon / ndeg) + delta * (ilon - ndeg * (ilon / ndeg));
+ N[ilat - ilat0][ilon] = float(c.GeoidHeight(lon));
+ } <span class="comment">// longitude loop</span>
+ } <span class="comment">// latitude loop -- end of parallel section</span>
- } <span class="comment">// batch loop</span>
+ <span class="keywordflow">for</span> (<span class="keywordtype">int</span> ilat = ilat0; ilat < nlat0; ++ilat) <span class="comment">// write out data</span>
+ Utility::writearray<float, float, true>(file, N[ilat - ilat0]);
+ } <span class="comment">// batch loop</span>
+ }
+ <span class="keywordflow">catch</span> (<span class="keyword">const</span> exception& e) {
+ cerr << <span class="stringliteral">"Caught exception: "</span> << e.what() << <span class="stringliteral">"\n"</span>;
+ <span class="keywordflow">return</span> 1;
+ }
+ <span class="keywordflow">catch</span> (...) {
+ cerr << <span class="stringliteral">"Caught unknown exception\n"</span>;
+ <span class="keywordflow">return</span> 1;
+ }
+ <span class="keywordflow">return</span> 0;
}
-</pre></div><p>OpenMP is supported by g++ and Visual Studio but these compilers need to be instructed to honor the OpenMP directives. CMake can do the necessary work with this CMakeLists.txt: </p>
-<div class="fragment"><pre class="fragment">
-cmake_minimum_required (VERSION 2.6)
-project (GeoidHeightTable)
-# GravityModel was introduced in GeographicLib 1.16.
-find_package (GeographicLib 1.16 REQUIRED)
-find_package (OpenMP)
+</pre></div><p>This example is built if cmake is invoked with <code>-D GEOGRAPHICLIB_EXAMPLES=ON</code>. cmake will add in support for OpenMP, if it is available.</p>
+<center> Back to <a class="el" href="geoid.html">Geoid height</a>. Forward to <a class="el" href="magnetic.html">Magnetic models</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
-include_directories (${GeographicLib_INCLUDE_DIRS})
-add_executable (GeoidHeightTable GeoidHeightTable.cpp)
-target_link_libraries (GeoidHeightTable ${GeographicLib_LIBRARIES})
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
-if (OPENMP_FOUND OR OpenMP_FOUND)
- set_target_properties (GeoidHeightTable PROPERTIES
- COMPILE_FLAGS ${OpenMP_CXX_FLAGS}
- COMPILE_DEFINITIONS HAVE_OPENMP=1)
- if (NOT WIN32)
- set_target_properties (GeoidHeightTable PROPERTIES
- LINK_FLAGS ${OpenMP_CXX_FLAGS})
- endif (NOT WIN32)
-endif (OPENMP_FOUND OR OpenMP_FOUND)
-</pre></div><center> Back to <a class="el" href="geoid.html">Geoid height</a>. Forward to <a class="el" href="magnetic.html">Magnetic models</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>
diff --git a/doc/html/index.html b/doc/html/index.html
index a22639f..50b43c4 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Geographic library</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li class="current"><a href="index.html"><span>Main Page</span></a></li>
@@ -37,11 +52,11 @@
</div>
<div class="contents">
<div class="textblock"><dl class="author"><dt><b>Author:</b></dt><dd>Charles Karney <<a href="mailto:charles at karney.com">charles at karney.com</a>> </dd></dl>
-<dl class="version"><dt><b>Version:</b></dt><dd>1.18 </dd></dl>
-<dl class="date"><dt><b>Date:</b></dt><dd>2012-02-18</dd></dl>
+<dl class="version"><dt><b>Version:</b></dt><dd>1.21 </dd></dl>
+<dl class="date"><dt><b>Date:</b></dt><dd>2012-04-25</dd></dl>
<h2><a class="anchor" id="abstract"></a>
Abstract</h2>
-<p>GeographicLib is a small set of <a href="annotated.html">C++ classes</a> for performing conversions between geographic, UTM, UPS, MGRS, geocentric, and local cartesian coordinates, for gravity (e.g., EGM2008), geoid height and geomagnetic field (e.g., WMM2010) calculations, and for solving geodesic problems. The emphasis is on returning accurate results with errors close to round-off (about 5–15 nanometers). New accurate algorithms for <a class="el" href="geodesic.html">Geodesic [...]
+<p>GeographicLib is a small set of <a href="annotated.html">C++ classes</a> for performing conversions between geographic, UTM, UPS, MGRS, geocentric, and local cartesian coordinates, for gravity (e.g., EGM2008), geoid height and geomagnetic field (e.g., WMM2010) calculations, and for solving geodesic problems. The emphasis is on returning accurate results with errors close to round-off (about 5–15 nanometers). New accurate algorithms for <a class="el" href="geodesic.html">Geodesic [...]
<p>This library is <em>not</em> a general purpose projection library; use <a href="http://trac.osgeo.org/proj/">proj.4</a> for that. On the other hand, it does provide the core functionality offered by <a href="http://earth-info.nima.mil/GandG/geotrans/">geotrans</a> and it cures several of the defects of that package.</p>
<h2><a class="anchor" id="download"></a>
Download</h2>
@@ -51,16 +66,17 @@ Download</h2>
</ul>
<p>The code is available for download at</p>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">GeographicLib-1.18.tar.gz</a></li>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.zip/download">GeographicLib-1.18.zip</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21.tar.gz/download">GeographicLib-1.21.tar.gz</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21.zip/download">GeographicLib-1.21.zip</a></li>
</ul>
<p>as either a compressed tar file (tar.gz) or a zip file. (The two archives have identical contents.) Alternatively you can get the latest stable release using git </p>
<div class="fragment"><pre class="fragment">
git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib-release geographiclib
cd geographiclib; git checkout stable
-</pre></div><p> There is also a binary installer for Windows available at</p>
+</pre></div><p> There are also a binary installers for Windows available at</p>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">GeographicLib-1.18-win32.exe</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">GeographicLib-1.21-win32.exe</a></li>
+<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">GeographicLib-1.21-win64.exe</a></li>
</ul>
<p>It is licensed under the <a href="http://www.opensource.org/licenses/MIT">MIT/X11 License</a>; see <a href="LICENSE.txt">LICENSE.txt</a> for the terms. For more information, see <a href="http://geographiclib.sourceforge.net/.">http://geographiclib.sourceforge.net/.</a></p>
<h2><a class="anchor" id="contents"></a>
@@ -69,20 +85,25 @@ Contents</h2>
<li><a class="el" href="intro.html">Introduction</a></li>
<li><a class="el" href="install.html">Installing GeographicLib</a></li>
<li><a class="el" href="start.html">Getting started</a></li>
-<li><a class="el" href="utilities.html">Utility Programs</a></li>
+<li><a class="el" href="utilities.html">Utility programs</a></li>
<li><a class="el" href="organization.html">Code organization</a></li>
<li><a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a></li>
<li><a class="el" href="geoid.html">Geoid height</a></li>
<li><a class="el" href="gravity.html">Gravity models</a></li>
<li><a class="el" href="magnetic.html">Magnetic models</a></li>
-<li><a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a></li>
-<li><a class="el" href="transversemercator.html">Transverse Mercator Projection</a></li>
+<li><a class="el" href="geodesic.html">Geodesics on the ellipsoid</a></li>
+<li><a class="el" href="transversemercator.html">Transverse Mercator projection</a></li>
<li><a class="el" href="geocentric.html">Geocentric coordinates</a></li>
-<li><a class="el" href="old.html">Old Versions</a></li>
+<li><a class="el" href="old.html">Old versions</a></li>
</ul>
<center> Forward to <a class="el" href="intro.html">Introduction</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/install.html b/doc/html/install.html
index 5232977..2e726c7 100644
--- a/doc/html/install.html
+++ b/doc/html/install.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Installing %GeographicLib</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,17 +51,26 @@
<div class="title">Installing GeographicLib </div> </div>
</div>
<div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="intro.html">Introduction</a>. Forward to <a class="el" href="start.html">Getting started</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>GeographicLib has been developed under Linux with the g++ compiler (versions 4.0 and later) and under Windows with Visual Studio 2005, 2008, and 2010. Earlier versions were tested also under Darwin and Solaris. It should compile on a wide range of other systems. Fi [...]
+<div class="textblock"><center> Back to <a class="el" href="intro.html">Introduction</a>. Forward to <a class="el" href="start.html">Getting started</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>GeographicLib has been developed under Linux with the g++ compiler (versions 4.0 and later) and under Windows with Visual Studio 2005, 2008, and 2010. Earlier versions were tested also under Darwin and Solaris. It should compile on a wide range of other systems. Fi [...]
<ul>
<li><a class="el" href="install.html#cmake">Installation with cmake</a>. This is the preferred installation method as it will work on the widest range of platforms. However it requires that you have <a href="http://www.cmake.org">cmake</a> installed.</li>
<li><a class="el" href="install.html#autoconf">Installation using the autoconfigure tools</a>. This method works for most Unix-like systems, including Linux and Mac OS X.</li>
<li><a class="el" href="install.html#gnu">Installation with GNU compiler and Make</a>. This is a simple installation method that works with g++ and GNU make on Linux and many Unix platforms.</li>
<li><a class="el" href="install.html#windows">Installation on Windows</a>. This is a simple installation method that works with Visual Studio 2005, 2008, and 2010 under Windows.</li>
-<li><a class="el" href="install.html#windowsbin">Using a binary installer for Windows.</a>. Use this installation method if you only need to use the utility programs supplied with GeographicLib. (This method also installs the header files and the static library for use by Visual Studio 2010.)</li>
+<li><a class="el" href="install.html#windowsbin">Using a binary installer for Windows</a>. Use this installation method if you only need to use the <a class="el" href="utilities.html">Utility programs</a> supplied with GeographicLib. (This method also installs the header files and the static library for use by Visual Studio 2010.)</li>
<li><a class="el" href="install.html#qt">Building the library for use with Qt</a>. How to compile GeographicLib so that it can be used by Qt programs.</li>
<li><a class="el" href="install.html#maintainer">Maintainer tasks</a>. This describes addition tasks of interest only to the maintainers of this code.</li>
</ul>
-<p>This section documents only how to install the software. If you wish to use GeographicLib to evaluate geoid heights or the earth's gravitational or magnetic fields, then you must also install the relevant data files. See <a class="el" href="geoid.html#geoidinst">Installing the geoid datasets</a>, <a class="el" href="gravity.html#gravityinst">Installing the gravity models</a>, and <a class="el" href="magnetic.html#magneticinst">Installing the magnetic field models</a> for instructions.</p>
+<p>This section documents only how to install the <em>software</em>. If you wish to use GeographicLib to evaluate geoid heights or the earth's gravitational or magnetic fields, then you must also install the relevant data files. See <a class="el" href="geoid.html#geoidinst">Installing the geoid datasets</a>, <a class="el" href="gravity.html#gravityinst">Installing the gravity models</a>, and <a class="el" href="magnetic.html#magneticinst">Installing the magnetic field models</a> for inst [...]
+<p>The first two installation methods use two important techniques which make software maintanence simpler</p>
+<ul>
+<li><b>Out-of-source builds:</b> This means that you create a separate directory for compiling the code. In the description here the directories are called BUILD and are located in the top-level of the source tree. You might want to use a suffix to denote the type of build, e.g., BUILD-vc9 for Visual Studio 9, or BUILD-shared for a build which creates a shared library. The advantages of out-of-source builds are:<ul>
+<li>You don't mess up the source tree, so it's easy to "clean up". Indeed the source tree might be on a read-only file system.</li>
+<li>Builds for multiple platforms or compilers don't interfere with each other.</li>
+</ul>
+</li>
+<li><b>The library is installed:</b> After compilation, there is a separate <em>install</em> step which copies the headers, libraries, tools, and documentation to a "central" location. You may at this point delete the source and build directories. If you have administrative privileges, you can install GeographicLib for the use of all users (e.g., in /usr/local). Otherwise, you can install it for your personal use (e.g., in $HOME/packages).</li>
+</ul>
<h2><a class="anchor" id="cmake"></a>
Installation with cmake</h2>
<p>This is the recommended method of installation; however it requires that <a href="http://www.cmake.org">cmake</a> be installed on your system. This permits GeographicLib to be built either as a shared or a static library on a wide variety of systems. cmake can also determine the capabilities of your system and adjust the compilation of the libraries and examples appropriately.</p>
@@ -56,19 +80,19 @@ Installation with cmake</h2>
<p>Here are the steps to compile and install GeographicLib:</p>
<ul>
<li>Unpack the source, running one of <div class="fragment"><pre class="fragment">
- tar xfpz GeographicLib-1.18.tar.gz
- unzip -q GeographicLib-1.18.zip
- git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib-release geographiclib </pre></div> then enter the directory created with one of <div class="fragment"><pre class="fragment">
- cd GeographicLib-1.18
- cd geographiclib; git checkout stable </pre></div></li>
+ tar xfpz GeographicLib-1.21.tar.gz
+ unzip -q GeographicLib-1.21.zip </pre></div> then enter the directory created with one of <div class="fragment"><pre class="fragment">
+ cd GeographicLib-1.21 </pre></div></li>
<li>Create a separate build directory and enter it, for example, <div class="fragment"><pre class="fragment">
mkdir BUILD
cd BUILD</pre></div></li>
-<li>Run cmake, pointing it to the parent directory (..). On Linux, Unix, and MaxOSX systems, the command is <div class="fragment"><pre class="fragment">
+<li>Run cmake, pointing it to the source directory (..). On Linux, Unix, and MacOSX systems, the command is <div class="fragment"><pre class="fragment">
cmake .. </pre></div> For Windows, the command is typically one of <div class="fragment"><pre class="fragment">
cmake -G "Visual Studio 10" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc10/GeographicLib ..
cmake -G "Visual Studio 9 2008" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc9/GeographicLib ..
cmake -G "Visual Studio 8 2005" -D CMAKE_INSTALL_PREFIX=C:/pkg-vc8/GeographicLib ..
+</pre></div> Instead of setting CMAKE_INSTALL_PREFIX, you can (on Windows) set CMAKE_PREFIX_PATH to point to its parent directory, e.g., <div class="fragment"><pre class="fragment">
+ cmake -G "Visual Studio 10" -D CMAKE_PREFIX_PATH=C:/pkg-vc10 ..
</pre></div> The definitions of CMAKE_INSTALL_PREFIX are optional (see below). The settings given above are recommended to ensure that packages that use GeographicLib use the version compiled with the right compiler. If you need to rerun cmake, use <div class="fragment"><pre class="fragment">
cmake . </pre></div> possibly including some options via <code>-D</code> (see the next step).</li>
<li>cmake allows you to configure how GeographicLib is built and installed by supplying options, for example <div class="fragment"><pre class="fragment">
@@ -82,8 +106,9 @@ Installation with cmake</h2>
RelWithDebInfo
MinSizeRel
</pre></div> (With IDE compile environments, you get to select the build type in the IDE.)</li>
-<li><code>ENABLE_MATLAB</code> (default: OFF). Set this to ON to get cmake to try to compile and install the Matlab/Octave interface. At present this is compiled for Matlab under Windows and for Octave under Linux. See <a class="el" href="other.html#matlab">Matlab and Octave interfaces</a> for more information.</li>
+<li><code>MATLAB_COMPILER</code> (default: OFF). Set this to either "mex" (for Matlab) or "mkoctfile" (for Octave) to specify the compiler to use for the Matlab/Octave interface. See <a class="el" href="other.html#matlab">Matlab and Octave interfaces</a> for more information.</li>
<li><code>MAINTAINER</code> (default: ON for non-Windows environments provided doxygen, pod2man, and pod2html are found). This affects whether the targets for creating source packages are activated. See <a class="el" href="install.html#maintainer">Maintainer tasks</a> for details.</li>
+<li><code>GEOGRAPHICLIB_EXAMPLES</code> (default: ON for the maintainer and OFF otherwise). If set to ON, then the short example programs in the <code>examples</code> directory are built.</li>
</ul>
</li>
<li>Build and install the software. In non-IDE environments, run <div class="fragment"><pre class="fragment">
@@ -99,12 +124,15 @@ Installation using the autoconfigure tools</h2>
<p>The method works on most Unix-like systems including Linux and Mac OS X. Here are the steps to compile and install GeographicLib:</p>
<ul>
<li>Unpack the source, running <div class="fragment"><pre class="fragment">
- tar xfpz GeographicLib-1.18.tar.gz </pre></div> then enter the directory created <div class="fragment"><pre class="fragment">
- cd GeographicLib-1.18 </pre></div></li>
-<li>Configure the software with <div class="fragment"><pre class="fragment">
- ./configure </pre></div></li>
+ tar xfpz GeographicLib-1.21.tar.gz </pre></div> then enter the directory created <div class="fragment"><pre class="fragment">
+ cd GeographicLib-1.21 </pre></div></li>
+<li>Create a separate build directory and enter it, for example, <div class="fragment"><pre class="fragment">
+ mkdir BUILD
+ cd BUILD</pre></div></li>
+<li>Configure the software, specifing the path of the source directory, with <div class="fragment"><pre class="fragment">
+ ../configure </pre></div></li>
<li>By default GeographicLib will be installed under /usr/local. You can change this with, for example <div class="fragment"><pre class="fragment">
- ./configure --prefix=/tmp/geographic </pre></div></li>
+ ../configure --prefix=/tmp/geographic </pre></div></li>
<li>Compile and install the software with <div class="fragment"><pre class="fragment">
make
make install </pre></div></li>
@@ -116,8 +144,8 @@ Installation with GNU compiler and Make</h2>
<p>Here are the steps to compile and install GeographicLib:</p>
<ul>
<li>Unpack the source, running <div class="fragment"><pre class="fragment">
- tar xfpz GeographicLib-1.18.tar.gz </pre></div> then enter the directory created <div class="fragment"><pre class="fragment">
- cd GeographicLib-1.18 </pre></div></li>
+ tar xfpz GeographicLib-1.21.tar.gz </pre></div> then enter the directory created <div class="fragment"><pre class="fragment">
+ cd GeographicLib-1.21 </pre></div></li>
<li>Edit <div class="fragment"><pre class="fragment">
include/GeographicLib/Config.h </pre></div> If your C++ compiler does not recognize the long double type (unlikely), insert <div class="fragment"><pre class="fragment"><span class="preprocessor"> #undef HAVE_LONG_DOUBLE </span>
</pre></div> If you machine using big endian ordering, then insert <div class="fragment"><pre class="fragment"><span class="preprocessor"> #define WORDS_BIGENDIAN 1 </span>
@@ -133,24 +161,24 @@ Installation on Windows</h2>
<p>This method requires Visual Studio 2005, 2008, or 2010. This builds a static library and the utilities. If you only have Visual Studio 2003, use cmake to create the necessary solution file, see <a class="el" href="install.html#cmake">Installation with cmake</a>. (cmake is needed to build the Matlab interface and to run the tests.)</p>
<ul>
<li>Unpack the source, running <div class="fragment"><pre class="fragment">
- unzip -q GeographicLib-1.18.zip </pre></div></li>
-<li>Open GeographicLib-1.18/windows/GeographicLib-vc10.sln in Visual Studio 2010 (for Visual Studio 2005 and 2008, replace -vc10 by -vc8 or -vc9).</li>
+ unzip -q GeographicLib-1.21.zip </pre></div></li>
+<li>Open GeographicLib-1.21/windows/GeographicLib-vc10.sln in Visual Studio 2010 (for Visual Studio 2005 and 2008, replace -vc10 by -vc8 or -vc9).</li>
<li>Pick the build type (e.g., Release), and select "Build Solution".</li>
<li>The library and the compiled examples are in the windows/Release.</li>
<li>Copy the library windows/Release/Geographic.lib and the headers in include/GeographicLib somewhere convenient. The headers should remain in a directory named GeographicLib. If you expect to use the Matlab/Octave interface, copy matlab/*.m and matlab/*.cpp to a directory in your matlab/octave path, see <a class="el" href="other.html#matlab">Matlab and Octave interfaces</a> for instructions on compiling the interface. For documentation, open <a href="index.html">doc/html/index.html</a> [...]
</ul>
<h2><a class="anchor" id="windowsbin"></a>
-Using a binary installer for Windows.</h2>
+Using a binary installer for Windows</h2>
<p>Use this method if you only need to use the GeographicLib utilities. The header files and static library are provided, but can only be used by Visual Studio 2010 in release mode. However, if you plan to use the library, it is advisable to build it with the compiler you are using for your own code using either <a class="el" href="install.html#cmake">Installation with cmake</a> or <a class="el" href="install.html#windows">Installation on Windows</a>.</p>
-<p>Download and run <a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.18-win32.exe/download">GeographicLib-1.18-win32.exe</a>:</p>
+<p>Download and run <a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win32.exe/download">GeographicLib-1.21-win32.exe</a> or <a href="http://sourceforge.net/projects/geographiclib/files/distrib/GeographicLib-1.21-win64.exe/download">GeographicLib-1.21-win64.exe</a>:</p>
<ul>
<li>read the MIT/X11 License agreement,</li>
<li>select whether you want your PATH modified,</li>
-<li>select the installation folder, by default C:\pkg-vc10\GeographicLib-1.18.</li>
+<li>select the installation folder, by default C:\pkg-vc10\GeographicLib-1.21 or C:\pkg-vc10-x64\GeographicLib-1.21,</li>
<li>select the start menu folder,</li>
<li>and install.</li>
</ul>
-<p>(Note that the default installation folder adheres the the convention given in <a class="el" href="install.html#cmake">Installation with cmake</a>.) The start menu will now include links to the documentation for the library and for the utilities (and a link for uninstalling the library). If you ask for your PATH to be modified, it will include C:/pkg-vc10/GeographicLib-1.18/bin where the utilities are installed. The headers and library are installed in the include/GeographicLib and li [...]
+<p>(Note that the default installation folder adheres the the convention given in <a class="el" href="install.html#cmake">Installation with cmake</a>.) The start menu will now include links to the documentation for the library and for the utilities (and a link for uninstalling the library). If you ask for your PATH to be modified, it will include C:/pkg-vc10/GeographicLib-1.21/bin where the utilities are installed. The headers and library are installed in the include/GeographicLib and li [...]
<h2><a class="anchor" id="qt"></a>
Building the library for use with Qt</h2>
<p>If Qt is using a standard compiler, then build GeographicLib with that same compiler (and optimization flags) as Qt.</p>
@@ -178,17 +206,27 @@ Maintainer tasks</h2>
git clone git://geographiclib.git.sf.net/gitroot/geographiclib/geographiclib
</pre></div><p> The autoconf configuration script, the html version of the documentation, and the formatted man pages not checked into git. In order to create the autoconf configuration script, run </p>
<div class="fragment"><pre class="fragment">
- sh autogen.sh </pre></div><p> in the top level directory. Provided you are running on a system with doxygen, pod2man, and pod2html installed, then you can create the documentation and the man pages by building the system using cmake (the <code>MAINTAINER</code> configuration variable set to ON, if the necessary tools are found) or configure. In the case of cmake, you must in addition run </p>
+ sh autogen.sh </pre></div><p> in the top level directory. Provided you are running on a system with doxygen, pod2man, and pod2html installed, then you can create the documentation and the man pages by building the system using cmake (the <code>MAINTAINER</code> configuration variable set to ON, if the necessary tools are found) or configure.</p>
+<p>In the case of cmake, you then run </p>
<div class="fragment"><pre class="fragment">
make dist </pre></div><p> which will copy the documentation and man pages from the build directory back into the source tree and package the resulting source tree for distribution as </p>
<div class="fragment"><pre class="fragment">
- GeographicLib-1.18.tar.gz
- GeographicLib-1.18.zip </pre></div><p> Finally, </p>
+ GeographicLib-1.21.tar.gz
+ GeographicLib-1.21.zip </pre></div><p> Finally, </p>
<div class="fragment"><pre class="fragment">
make package </pre></div><p> or building PACKAGE in Visual Studio will create a binary installer for GeographicLib. For Windows, this requires in the installation of <a href="http://nsis.sourceforge.net">NSIS</a>.</p>
-<center> Back to <a class="el" href="intro.html">Introduction</a>. Forward to <a class="el" href="start.html">Getting started</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<p>With configure, run </p>
+<div class="fragment"><pre class="fragment">
+ make dist-gzip </pre></div><p> which will create the additional files and packages the results ready for distribution as </p>
+<div class="fragment"><pre class="fragment">
+ geographiclib-1.21.tar.gz </pre></div><center> Back to <a class="el" href="intro.html">Introduction</a>. Forward to <a class="el" href="start.html">Getting started</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/intro.html b/doc/html/intro.html
index c14b443..bacc17b 100644
--- a/doc/html/intro.html
+++ b/doc/html/intro.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Introduction</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -47,14 +62,19 @@
<li>Well defined and stable conventions for the conversion between UTM/UPS to MGRS coordinates.</li>
<li>Detailed internal documentation on the algorithms. For the most part GeographicLib uses published algorithms and references are given. If changes have been made (usually to improve the numerical accuracy), these are described in the code.</li>
</ul>
-<p>Various <a class="el" href="utilities.html">Utility Programs</a> are provided with the library. These illustrate the use of the library and are useful in their own right. This library and the utilities have been tested with g++ 4.4 under Linux, with g++ 4.2 under Mac OS X, and with MS Visual Studio 2008 and 2010.</p>
+<p>Various <a class="el" href="utilities.html">Utility programs</a> are provided with the library. These illustrate the use of the library and are useful in their own right. This library and the utilities have been tested with g++ 4.4 under Linux, with g++ 4.2 under Mac OS X, and with MS Visual Studio 2008 and 2010.</p>
<p>Matlab, Javascript, and Python interfaces are provided to portions of GeographicLib; see <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>.</p>
-<p>The section <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a> documents the method of solving the geodesic problem.</p>
-<p>The section <a class="el" href="transversemercator.html">Transverse Mercator Projection</a> documents various properties of this projection.</p>
+<p>The section <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a> documents the method of solving the geodesic problem.</p>
+<p>The section <a class="el" href="transversemercator.html">Transverse Mercator projection</a> documents various properties of this projection.</p>
<p>Undoubtedly, bugs lurk in this code and in the documentation. Please report any you find to <<a href="mailto:charles at karney.com">charles at karney.com</a>>.</p>
<center> Forward to <a class="el" href="install.html">Installing GeographicLib</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/magnetic.html b/doc/html/magnetic.html
index d64f5ba..597ff27 100644
--- a/doc/html/magnetic.html
+++ b/doc/html/magnetic.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Magnetic models</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,7 +51,7 @@
<div class="title">Magnetic models </div> </div>
</div>
<div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="gravity.html">Gravity models</a>. Forward to <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>GeographicLib can compute the earth's magnetic field by a magnetic model using the <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> and <a class="el" hr [...]
+<div class="textblock"><center> Back to <a class="el" href="gravity.html">Gravity models</a>. Forward to <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>GeographicLib can compute the earth's magnetic field by a magnetic model using the <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> and <a class="el" hr [...]
Warning"</a> this is provided with igrf11. Although the advice is specific to igrf11, many of the comments apply to all magnetic field models.</p>
<p>The supported models are</p>
<ul>
@@ -75,10 +90,11 @@ Installing the magnetic field models</h2>
geographiclib-get-magnetic all # to install wmm2010, igrf11, emm2010
geographiclib-get-magnetic -h # for help
</pre></div><p> This script should be run as a user with write access to the installation directory, which is typically /usr/local/share/GeographicLib (this can be overridden with the -p flag), and the data will then be placed in the "magnetic" subdirectory.</p>
-<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being </p>
+<p>Windows users should download and run the Windows installers. These will prompt for an installation directory with the default being one of </p>
<div class="fragment"><pre class="fragment">
C:/Documents and Settings/All Users/Application Data/GeographicLib
-</pre></div><p> (which you probably should not change) and the data is installed in the "magnetic" sub-directory.</p>
+ C:/ProgramData/GeographicLib
+</pre></div><p> (which you probably should not change) and the data is installed in the "magnetic" sub-directory. (The second directory name is an alternate name that Windows 7 for the "Application Data" directory.)</p>
<p>Otherwise download <em>either</em> the tar.bz2 file <em>or</em> the zip file (they have the same contents). To unpack these, run, for example </p>
<div class="fragment"><pre class="fragment">
mkdir -p /usr/local/share/GeographicLib
@@ -161,9 +177,14 @@ MaxHeight 600000
# the name of this file. The coefficients were obtained from IGRF11.COF
# in the geomag70 distribution.
ID IGRF11-A
-</pre></div><center> Back to <a class="el" href="gravity.html">Gravity models</a>. Forward to <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+</pre></div><center> Back to <a class="el" href="gravity.html">Gravity models</a>. Forward to <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/namespaceGeographicLib.html b/doc/html/namespaceGeographicLib.html
index ab6218c..8cd0653 100644
--- a/doc/html/namespaceGeographicLib.html
+++ b/doc/html/namespaceGeographicLib.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: GeographicLib Namespace Reference</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -124,8 +139,13 @@ Classes</h2></td></tr>
<div class="textblock"><p>Namespace for GeographicLib. </p>
<p>All of GeographicLib is defined within the <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a> namespace. In addition all the header files are included via GeographicLib/filename. This minimizes the likelihood of conflicts with other packages. </p>
</div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html
index 40c74a1..2e60e1e 100644
--- a/doc/html/namespaces.html
+++ b/doc/html/namespaces.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Namespace List</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -45,8 +60,13 @@
<tr><td class="indexkey"><a class="el" href="namespaceGeographicLib.html">GeographicLib</a></td><td class="indexvalue">Namespace for GeographicLib </td></tr>
</table>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/old.html b/doc/html/old.html
index 4a395d0..fa830a7 100644
--- a/doc/html/old.html
+++ b/doc/html/old.html
@@ -2,24 +2,39 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: Old Versions</title>
+<title>GeographicLib: Old versions</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -33,12 +48,53 @@
</div>
<div class="header">
<div class="headertitle">
-<div class="title">Old Versions </div> </div>
+<div class="title">Old versions </div> </div>
</div>
<div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>List of versions in reverse chronological order together with a brief list of changes. (Note: Old versions of the library use a year-month style of numbering. Now, the library uses a major and minor version number.)</p>
+<div class="textblock"><center> Back to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>List of versions in reverse chronological order together with a brief list of changes. (Note: Old versions of the library use a year-month style of numbering. Now, the library uses a major and minor version number.) Recent versions of GeographicLib are available at <a href="http://sf.net/projects/geographiclib/fi [...]
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.18.tar.gz/download">1.18 (released 2012-02-18)</a><ul>
+<li>Version 1.21 (released 2012-04-25)<ul>
+<li>Support colon-separated DMS output:<ul>
+<li><a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">GeographicLib::DMS::Encode</a> and <a class="el" href="classGeographicLib_1_1GeoCoords.html#af6e9f9087a407b01dc24401df8610257">GeographicLib::GeoCoords::DMSRepresentation</a> generalized;</li>
+<li><a href="GeoConvert.1.html">GeoConvert</a> and <a href="Geod.1.html">Geod</a> now accept a -: option.</li>
+</ul>
+</li>
+<li><a href="GeoidEval.1.html">GeoidEval</a> does not print the gradient of the geoid height by default (because it's subject to large errors); give the -g option to get the gradient printed.</li>
+<li>Work around optimization BUG in <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">GeographicLib::Geodesic::Inverse</a> with tdm mingw g++ version 4.6.1.</li>
+<li>autoconf fixed to ensure that that out-of-sources builds work; document this as the preferred method of using autoconf.</li>
+<li>cmake tweaks:<ul>
+<li>simplify the configuration of doxygen;</li>
+<li>allow the Matlab compiler to be specified with the MATLAB_COMPILER option.</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Version 1.20 (released 2012-03-23)<ul>
+<li>cmake tweaks:<ul>
+<li>improve find_package's matching of compiler versions;</li>
+<li>CMAKE_INSTALL_PREFIX set from CMAKE_PREFIX_PATH if available;</li>
+<li>add "x64" to the package name for the 64-bit binary installer;</li>
+<li>fix cmake warning with Visual Studio Express.</li>
+</ul>
+</li>
+<li>Fix <a class="el" href="classGeographicLib_1_1SphericalEngine.html" title="The evaluation engine for SphericalHarmonic.">GeographicLib::SphericalEngine</a> to deal with aggessive iterator checking by Visual Studio.</li>
+<li>Fix transcription BUG is Geodesic.js.</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Version 1.19 (released 2012-03-13)<ul>
+<li>Slight improvement in <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">GeographicLib::Geodesic::Inverse</a> for very short lines.</li>
+<li>Fix argument checking tests in <a class="el" href="classGeographicLib_1_1MGRS.html#a91de10ebde478dbb85b3c7d057ff97b9">GeographicLib::MGRS::Forward</a>.</li>
+<li>Add --comment-delimiter and --line-separator options to the <a class="el" href="utilities.html">Utility programs</a>.</li>
+<li>Add installer for 64-bit Windows; the compiled Matlab interface is supplied with the Windows 64-bit installer only.</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>Version 1.18 (released 2012-02-18)<ul>
<li>Improve documentation on configuration with cmake.</li>
<li>cmake's find_package ensures that the compiler versions match on Windows.</li>
<li>Improve documentation on compiling Matlab interface.</li>
@@ -47,7 +103,7 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.17.tar.gz/download">1.17 (released 2012-01-21)</a><ul>
+<li>Version 1.17 (released 2012-01-21)<ul>
<li>Work around optimization BUG in <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">GeographicLib::Geodesic::Inverse</a> with g++ version 4.4.0 (mingw).</li>
<li>Fix BUG in argument checking with <a class="el" href="classGeographicLib_1_1OSGB.html#a0a79e8f2babae1eb0305a0e728fea8c8">GeographicLib::OSGB::GridReference</a>.</li>
<li>Fix missing include file in <a class="el" href="classGeographicLib_1_1SphericalHarmonic2.html" title="Spherical Harmonic series with two corrections to the coefficients.">GeographicLib::SphericalHarmonic2</a>.</li>
@@ -57,12 +113,12 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.16.tar.gz/download">1.16 (released 2011-12-07)</a><ul>
+<li>Version 1.16 (released 2011-12-07)<ul>
<li>Add calculation of the earth's gravitational field:<ul>
<li>add <a class="el" href="classGeographicLib_1_1NormalGravity.html" title="The normal gravity of the earth.">GeographicLib::NormalGravity</a> <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> and <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a> classes;</li>
<li>add command line utility <a href="Gravity.1.html">Gravity</a>;</li>
<li>add <a class="el" href="gravity.html">Gravity models</a>;</li>
-<li>add <a class="el" href="classGeographicLib_1_1Constants.html#aa6cbaa16e143ebbe8b2c226492c09fbc">GeographicLib::Constants::WGS84_GM()</a>, <a class="el" href="classGeographicLib_1_1Constants.html#a60299d9299292f18312eee2870bdf9ba">GeographicLib::Constants::WGS84_omega()</a>, and similarly for GRS80.</li>
+<li>add <a class="el" href="classGeographicLib_1_1Constants.html#af7806106d7bd289bb63d5290e79c87a6">GeographicLib::Constants::WGS84_GM()</a>, <a class="el" href="classGeographicLib_1_1Constants.html#a98c114d5a6ca42d3e4ece8595a0c2180">GeographicLib::Constants::WGS84_omega()</a>, and similarly for GRS80.</li>
</ul>
</li>
<li>Build uses GEOGRAPHICLIB_DATA to specify a common parent directory for geoid, gravity, and magnetic data (instead of GEOGRAPHICLIB_GEOID_PATH, etc.); similarly, <a href="GeoidEval.1.html">GeoidEval</a>, <a href="Gravity.1.html">Gravity</a>, and <a href="MagneticField.1.html">MagneticField</a>, look at the environment variable GEOGRAPHICLIB_DATA to locate the data.</li>
@@ -85,7 +141,7 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.15.tar.gz/download">1.15 (released 2011-11-08)</a><ul>
+<li>Version 1.15 (released 2011-11-08)<ul>
<li>Add calculation of the earth's magnetic field:<ul>
<li>add <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> and <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a> classes;</li>
<li>add command line utility <a href="MagneticField.1.html">MagneticField</a>;</li>
@@ -103,7 +159,7 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.14.tar.gz/download">1.14 (released 2011-09-30)</a><ul>
+<li>Version 1.14 (released 2011-09-30)<ul>
<li>Ensure that geographiclib-config.cmake is relocatable.</li>
<li>Allow more unicode symbols to be used in <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a>.</li>
<li>Modify <a href="GeoidEval.1.html">GeoidEval</a> so that it can be used to convert the height datum for LIDAR data.</li>
@@ -119,7 +175,7 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.13.tar.gz/download">1.13 (released 2011-08-13)</a><ul>
+<li>Version 1.13 (released 2011-08-13)<ul>
<li>Changes to I/O:<ul>
<li>allow : (colon) to be used as a DMS separator in <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode(const std::string&, flag&)</a>;</li>
<li>also accept Unicode symbols for degrees, minutes, and seconds (coded as UTF-8);</li>
@@ -144,7 +200,7 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.12.tar.gz/download">1.12 (released 2011-07-21)</a><ul>
+<li>Version 1.12 (released 2011-07-21)<ul>
<li>Change license to MIT/X11.</li>
<li>Add <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a> class and equivalent Matlab function.</li>
<li>Provide Javascript and Python implementations of geodesic routines.</li>
@@ -156,7 +212,7 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.11.tar.gz/download">1.11 (released 2011-06-27)</a><ul>
+<li>Version 1.11 (released 2011-06-27)<ul>
<li>Changes to <a href="Planimeter.1.html">Planimeter</a>:<ul>
<li>add -l flag to <a href="Planimeter.1.html">Planimeter</a> for polyline calculations;</li>
<li>trim precision of area to 3 decimal places;</li>
@@ -168,8 +224,8 @@
<li>FIX BUG: accommodate tellg() returning -1 at end of string.</li>
<li>Change way flattening of the ellipsoid is specified:<ul>
<li>constructors take <em>f</em> argument which is taken to be the flattening if <em>f</em> < 1 and the inverse flattening otherwise (this is a compatible change for spheres and oblate ellipsoids, but it is an INCOMPATIBLE change for prolate ellipsoids);</li>
-<li>the -e arguments to the <a class="el" href="utilities.html">Utility Programs</a> are handled similarly; in addition, simple fractions, e.g., 1/297, can be used for the flattening;</li>
-<li>introduce <a class="el" href="classGeographicLib_1_1Constants.html#a2e95ed8ac2738590348f9f3bbaa3fa41">GeographicLib::Constants::WGS84_f()</a> for the WGS84 flattening (and deprecate Constants::WGS84_r() for the inverse flattening);</li>
+<li>the -e arguments to the <a class="el" href="utilities.html">Utility programs</a> are handled similarly; in addition, simple fractions, e.g., 1/297, can be used for the flattening;</li>
+<li>introduce <a class="el" href="classGeographicLib_1_1Constants.html#acc5244425bb484594be51b27d56cd335">GeographicLib::Constants::WGS84_f()</a> for the WGS84 flattening (and deprecate Constants::WGS84_r() for the inverse flattening);</li>
<li>most classes have a Flattening() member function;</li>
<li>InverseFlattening() has been deprecated (and now returns inf for a sphere, instead of 0).</li>
</ul>
@@ -178,7 +234,7 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.10.tar.gz/download">1.10 (released 2011-06-11)</a><ul>
+<li>Version 1.10 (released 2011-06-11)<ul>
<li>Improvements to Matlab/Octave interface:<ul>
<li>add {geocentric,localcartesian}{forward,reverse};</li>
<li>make geographiclibinterface more general;</li>
@@ -197,14 +253,14 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/GeographicLib-1.9.tar.gz/download">1.9 (released 2011-05-28)</a><ul>
+<li>Version 1.9 (released 2011-05-28)<ul>
<li>FIX BUG in area returned by <a href="Planimeter.1.html">Planimeter</a> for pole encircling polygons.</li>
<li>FIX BUG in error message reported when DMS::Decode reads the string "5d.".</li>
<li>FIX BUG in AlbersEqualArea::Reverse (lon0 not being used).</li>
-<li>Ensure that all exceptions thrown in the <a class="el" href="utilities.html">Utility Programs</a> are caught.</li>
+<li>Ensure that all exceptions thrown in the <a class="el" href="utilities.html">Utility programs</a> are caught.</li>
<li>Avoid using catch within <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a>.</li>
<li>Move <a class="el" href="classGeographicLib_1_1Accumulator.html" title="An accumulator for sums.">GeographicLib::Accumulator</a> class from <a class="el" href="Planimeter_8cpp.html" title="Command line utility for measuring the area of geodesic polygons.">Planimeter.cpp</a> to <a class="el" href="Constants_8hpp.html" title="Header for GeographicLib::Constants class.">Constants.hpp</a>.</li>
-<li>Add <a class="el" href="classGeographicLib_1_1Math.html#a8a952f405e2ff2cbe079ba5687c40327">GeographicLib::Math::sq<T></a>.</li>
+<li>Add <a class="el" href="classGeographicLib_1_1Math.html#a6a092f38e231c80a1f144814c90f1895">GeographicLib::Math::sq<T></a>.</li>
<li>Simplify <a class="el" href="geoid.html#geoidinst">Installing the geoid datasets</a><ul>
<li>add geographiclib-get-geoids for Unix-like systems;</li>
<li>add installers for Windows.</li>
@@ -213,7 +269,7 @@
<li>Provide cmake support:<ul>
<li>build binary installer for Windows;</li>
<li>include regression tests;</li>
-<li>add --input-string, --input-file, --output-file options to the <a class="el" href="utilities.html">Utility Programs</a> to support tests.</li>
+<li>add --input-string, --input-file, --output-file options to the <a class="el" href="utilities.html">Utility programs</a> to support tests.</li>
</ul>
</li>
<li>Rename utility EquidistantTest as <a href="GeodesicProj.1.html">GeodesicProj</a> and TransverseMercatorTest as <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a>.</li>
@@ -224,9 +280,9 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.8.tar.gz/download">1.8 (released 2011-02-22)</a><ul>
+<li>Version 1.8 (released 2011-02-22)<ul>
<li>Optionally return rotation matrix from <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a>.</li>
-<li>For the <a class="el" href="utilities.html">Utility Programs</a>, supply man pages, -h prints the synopsis, --help prints the man page, --version prints the version.</li>
+<li>For the <a class="el" href="utilities.html">Utility programs</a>, supply man pages, -h prints the synopsis, --help prints the man page, --version prints the version.</li>
<li>Use accurate summation in <a href="Planimeter.1.html">Planimeter</a>.</li>
<li>Add 64-bit targets for Visual Studio 2010.</li>
<li>Use templates for defining math functions and some constants.</li>
@@ -241,25 +297,25 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.7.tar.gz/download">1.7 (released 2010-12-21)</a><ul>
+<li>Version 1.7 (released 2010-12-21)<ul>
<li>FIX BUG in scale returned by <a class="el" href="classGeographicLib_1_1LambertConformalConic.html#a085d37693f5e95fd650b7f59f61ab744">GeographicLib::LambertConformalConic::Reverse</a>.</li>
<li>Add <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a> projection.</li>
<li>Library created by Visual Studio is Geographic.lib instead of GeographicLib.lib (compatible with makefiles).</li>
<li>Make classes NaN aware.</li>
<li>Use cell arrays for MGRS strings in Matlab.</li>
<li>Add solution/project files for Visual Studio 2010 (32-bit only).</li>
-<li>Use C++0x static_assert and math functions, if available.</li>
+<li>Use C++11 static_assert and math functions, if available.</li>
</ul>
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.6.tar.gz/download">1.6 (released 2010-11-23)</a><ul>
+<li>Version 1.6 (released 2010-11-23)<ul>
<li>FIX BUG introduced in <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> in version 1.5 (found by Dave Edwards).</li>
</ul>
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.5.tar.gz/download">1.5 (released 2010-11-19)</a><ul>
+<li>Version 1.5 (released 2010-11-19)<ul>
<li>Improve area calculations for small polygons.</li>
<li>Add -s and -r flags to <a href="Planimeter.1.html">Planimeter</a>.</li>
<li>Improve the accuracy of <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> using divided differences.</li>
@@ -281,7 +337,7 @@
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.4.tar.gz/download">1.4 (released 2010-09-12)</a><ul>
+<li>Version 1.4 (released 2010-09-12)<ul>
<li>Changes to <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a>:<ul>
<li>FIX BUG in Geodesic::Inverse with prolate ellipsoids;</li>
<li>add area computations to Geodesic::Direct and Geodesic::Inverse;</li>
@@ -307,7 +363,7 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.3.tar.gz/download">1.3 (released 2010-07-21)</a><ul>
+<li>Version 1.3 (released 2010-07-21)<ul>
<li>Add <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a>, the ellipsoid generalization of the gnomonic projection.</li>
<li>Add -g and -e options to <a href="GeodesicProj.1.html">EquidistantTest</a>.</li>
<li>Use fixed-point notation for output from <a href="CartConvert.1.html">CartConvert</a>, <a href="GeodesicProj.1.html">EquidistantTest</a>, <a href="TransverseMercatorProj.1.html">TransverseMercatorTest</a>.</li>
@@ -317,7 +373,7 @@ WARNING: These changes may break binary compatibility with previous versions of
<li>Complain if latitude out of range in SetScale.</li>
</ul>
</li>
-<li>Add <a class="el" href="classGeographicLib_1_1Math.html#a77c57c61f93d7ac3f6a5095489c36715">GeographicLib::Math::NaN()</a>.</li>
+<li>Add <a class="el" href="classGeographicLib_1_1Math.html#ad1dc13a367125d3f8d291eaa98339186">GeographicLib::Math::NaN()</a>.</li>
<li>Add long double version of hypot for Windows.</li>
<li>Add EllipticFunction::E(real).</li>
<li>Update references to Geotrans in MGRS documentation.</li>
@@ -326,7 +382,7 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.2.tar.gz/download">1.2 (released 2010-05-21)</a><ul>
+<li>Version 1.2 (released 2010-05-21)<ul>
<li>FIX BUGS in <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a>,<ul>
<li>wrong azimuth returned by Direct if point 2 is on a pole;</li>
<li>Inverse sometimes fails with very close points.</li>
@@ -337,12 +393,12 @@ WARNING: These changes may break binary compatibility with previous versions of
<li>break friend connection between CassiniSoldner and Geodesic.</li>
</ul>
</li>
-<li>Add <a class="el" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">GeographicLib::DMS::DecodeAngle</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">GeographicLib::DMS::DecodeAzimuth</a>. Extend <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">GeographicLib::DMS: [...]
+<li>Add <a class="el" href="classGeographicLib_1_1DMS.html#a868248d72f6b0bf2dae18a15d741ac43">GeographicLib::DMS::DecodeAngle</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a0512cc1275e089138e1550efbee421d9">GeographicLib::DMS::DecodeAzimuth</a>. Extend <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">GeographicLib::DMS: [...]
<li>Code and documentation changes in <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> for consistency with the forthcoming paper on geodesics.</li>
<li>Increase order of series using in <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> to 6 (full accuracy maintained for ellipsoid flattening < 0.01).</li>
<li>Macro __NO_LONG_DOUBLE_MATH to disable use of long double.</li>
-<li>Correct declaration of <a class="el" href="classGeographicLib_1_1Math.html#adadc6f5069c0a5f75a7c5a5bf2720aa3">GeographicLib::Math::isfinite</a> to return a bool.</li>
-<li>Changes in the <a class="el" href="utilities.html">Utility Programs</a>,<ul>
+<li>Correct declaration of <a class="el" href="classGeographicLib_1_1Math.html#af61f7360e67c35131d80083e7b53dda8">GeographicLib::Math::isfinite</a> to return a bool.</li>
+<li>Changes in the <a class="el" href="utilities.html">Utility programs</a>,<ul>
<li>improve error reporting when parsing command line arguments;</li>
<li>accept latitudes and longitudes in decimal degrees or degrees, minutes, and seconds, with optional hemisphere designators;</li>
<li><a href="GeoConvert.1.html">GeoConvert</a> -z accepts zone or zone+hemisphere;</li>
@@ -354,7 +410,7 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.1.tar.gz/download">1.1 (released 2010-02-09)</a><ul>
+<li>Version 1.1 (released 2010-02-09)<ul>
<li>FIX BUG (introduced in 2009-03) in EllipticFunction::E(sn,cn,dn).</li>
<li>Increase accuracy of scale calculation in TransverseMercator and TransverseMercatorExact.</li>
<li>Code and documentation changes for consistency with <a href="http://arxiv.org/abs/1002.1417">arXiv:1002.1417</a></li>
@@ -362,7 +418,7 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/geographiclib-1.0.tar.gz/download">1.0 (released 2010-01-07)</a><ul>
+<li>Version 1.0 (released 2010-01-07)<ul>
<li>Add autoconf configuration files.</li>
<li>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.)</li>
<li>Constructors for TransverseMercator, TransverseMercatorExact, PolarStereographic, Geocentric, and Geodesic now check for obvious problems with their arguments and throw an exception if necessary.</li>
@@ -381,10 +437,10 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-11.tgz/download">2009-11</a><ul>
+<li>Version 2009-11<ul>
<li>Allow specification of "closest UTM zone" in <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> and <a href="GeoConvert.1.html">GeoConvert</a> (via -t option).</li>
<li>Utilities now complain is there are too many tokens on input lines.</li>
-<li>Include real-to-real versions of <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a3e36baa6114d46f82a8900d002784369">GeographicLib::DMS::Encode</a>.</li>
+<li>Include real-to-real versions of <a class="el" href="classGeographicLib_1_1DMS.html#ae802c666ad53884ce062281409bd78b4">GeographicLib::DMS::Decode</a> and <a class="el" href="classGeographicLib_1_1DMS.html#a0777e26ef4507f8123549723bf3cb56f">GeographicLib::DMS::Encode</a>.</li>
<li>More house-cleaning changes:<ul>
<li>Ensure that functions which return results through reference arguments do not alter the arguments when an exception is thrown.</li>
<li>Improve accuracy of <a class="el" href="classGeographicLib_1_1MGRS.html#a91de10ebde478dbb85b3c7d057ff97b9">GeographicLib::MGRS::Forward</a>.</li>
@@ -397,7 +453,7 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-10.tgz/download">2009-10</a><ul>
+<li>Version 2009-10<ul>
<li>Change web site to <a href="http://geographiclib.sourceforge.net">http://geographiclib.sourceforge.net</a></li>
<li>Several house-cleaning changes:<ul>
<li>Change from the a flat directory structure to a more easily maintained one.</li>
@@ -415,13 +471,13 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-09.tgz/download">2009-09</a><ul>
+<li>Version 2009-09<ul>
<li>Add <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a> and <a href="GeoidEval.1.html">GeoidEval</a> utility.</li>
</ul>
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-08.tgz/download">2009-08</a><ul>
+<li>Version 2009-08<ul>
<li>Add <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::CassiniSoldner</a> class and <a href="GeodesicProj.1.html">EquidistantTest</a> utility.</li>
<li>Fix bug in <a class="el" href="classGeographicLib_1_1Geodesic.html#ad7e59a242125a35a95c96cdb20573081">GeographicLib::Geodesic::Inverse</a> where NaNs were sometimes returned.</li>
<li>INCOMPATIBLE CHANGE: AzimuthalEquidistant now returns the reciprocal of the azimuthal scale instead of the reduced length.</li>
@@ -430,21 +486,21 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-07.tgz/download">2009-07</a><ul>
+<li>Version 2009-07<ul>
<li>Speed up the series inversion code in tmseries.mac and geod.mac.</li>
<li>Reference Borkowski in section on <a class="el" href="geocentric.html">Geocentric coordinates</a>.</li>
</ul>
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-06.tgz/download">2009-06</a><ul>
+<li>Version 2009-06<ul>
<li>Add routines to decode and encode zone+hemisphere to <a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a>.</li>
<li>Clean up code in <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a>.</li>
</ul>
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-05.tgz/download">2009-05</a><ul>
+<li>Version 2009-05<ul>
<li>Improvements to <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a>:<ul>
<li>more economical series expansions,</li>
<li>return reduced length (as does the <a href="Geod.1.html">Geod</a> utility),</li>
@@ -460,7 +516,7 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-04.tgz/download">2009-04</a><ul>
+<li>Version 2009-04<ul>
<li>Use compile-time constants to select the order of series in <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a>.</li>
<li>2x unroll of Clenshaw summation to avoid data shuffling.</li>
<li>Simplification of <a class="el" href="classGeographicLib_1_1EllipticFunction.html#a184174d29953891896b41c597c34eb9a">GeographicLib::EllipticFunction::E</a>.</li>
@@ -479,7 +535,7 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-03.tgz/download">2009-03</a><ul>
+<li>Version 2009-03<ul>
<li>Add <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and the <a href="Geod.1.html">Geod</a> utility.</li>
<li>Declare when no exceptions are thrown by functions.</li>
<li>Minor changes to <a class="el" href="classGeographicLib_1_1DMS.html" title="Convert between degrees and DMS representation.">GeographicLib::DMS</a> class.</li>
@@ -491,16 +547,16 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-02.tgz/download">2009-02</a><ul>
+<li>Version 2009-02<ul>
<li>Fix documentation of constructors (flattening -> inverse flattening).</li>
<li>Use std versions of math functions.</li>
<li>Add GeographicLib::ECEF and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a> classes and the ECEFConvert utility.</li>
-<li>Gather the documentation on the utility programs onto one page.</li>
+<li>Gather the documentation on the <a class="el" href="utilities.html">Utility programs</a> onto one page.</li>
</ul>
</li>
</ul>
<ul>
-<li><a href="http://sf.net/projects/geographiclib/files/distrib/Geographic-2009-01.tgz/download">2009-01</a><ul>
+<li>Version 2009-01<ul>
<li>First proper release of library.</li>
<li>More robust <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a>:<ul>
<li>Introduce <em>extendp</em> version of constructor,</li>
@@ -517,14 +573,19 @@ WARNING: These changes may break binary compatibility with previous versions of
</li>
</ul>
<ul>
-<li>2008-09<ul>
+<li>Version 2008-09<ul>
<li>Ad hoc posting of information on the transverse Mercator projection.</li>
</ul>
</li>
</ul>
<center> Back to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/organization.html b/doc/html/organization.html
index bc5a1f2..3e1999b 100644
--- a/doc/html/organization.html
+++ b/doc/html/organization.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Code organization</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,7 +51,7 @@
<div class="title">Code organization </div> </div>
</div>
<div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="utilities.html">Utility Programs</a>. Forward to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Here is a brief description of the relationship between the various components of GeographicLib. All of these are defined in the <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">Geog [...]
+<div class="textblock"><center> Back to <a class="el" href="utilities.html">Utility programs</a>. Forward to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Here is a brief description of the relationship between the various components of GeographicLib. All of these are defined in the <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">Geog [...]
<p><a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a>, <a class="el" href="classGeographicLib_1_1PolarStereographic.html" title="Polar Stereographic Projection.">GeographicLib::PolarStereographic</a>, <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a>, and <a class="el" href="classGeographicLi [...]
<p><a class="el" href="classGeographicLib_1_1TransverseMercator.html#aa25b52e35bc54c368e6c8b17e02b0542">GeographicLib::TransverseMercator::UTM</a> and <a class="el" href="classGeographicLib_1_1PolarStereographic.html#a2db6bcb1b59a6ddc6087ee04c64c9825">GeographicLib::PolarStereographic::UPS</a> are const static instantiations specific for the WGS84 ellipsoid with the UTM and UPS scale factors. (These do <em>not</em> add the standard false eastings or false northings for UTM and UPS.) Simi [...]
<p><a class="el" href="classGeographicLib_1_1UTMUPS.html" title="Convert between Geographic coordinates and UTM/UPS.">GeographicLib::UTMUPS</a> uses TransverseMercator::UTM and PolarStereographic::UPS to perform the UTM and UPS projections. The class offers a uniform interface to UTM and UPS by treating UPS as UTM zone 0. This class stores no internal state and the forward and reverse projections are provided via static member functions. The forward projection offers the ability to overr [...]
@@ -53,14 +68,19 @@
<p>GeographicLib attempts to act sensibly with NaNs. NaNs in constructors typically throw errors (an exception is GeodesicLine). However, calling the class functions with NaNs as arguments is not an error; NaNs are returned as appropriate. "INV" is treated as an invalid zone designation by UTMUPS. "INVALID" is the corresponding invalid MGRS string. NaNs allow the projection of polylines which are separated by NaNs; in this format they can be easily plotted in Matlab.</p>
<p>A note about portability. For the most part, the code uses standard C++ and should be able to be deployed on any system with a modern C++ compiler. System dependencies come into</p>
<ul>
-<li><a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> -- <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a> needs to define functions such as atanh for systems that lack them. The system dependence will disappear with the adoption of C++0x because the needed functions are part of that standard.</li>
+<li><a class="el" href="classGeographicLib_1_1Math.html" title="Mathematical functions needed by GeographicLib.">GeographicLib::Math</a> -- <a class="el" href="namespaceGeographicLib.html" title="Namespace for GeographicLib.">GeographicLib</a> needs to define functions such as atanh for systems that lack them. The system dependence will disappear with the adoption of C++11 because the needed functions are part of that standard.</li>
<li>use of long double -- the type is used only for testing. On systems which lack this data type the cmake and autoconf configuration methods should detect its absence and omit the code that depends on it.</li>
<li><a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a>, <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a>, and <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> -- these class uses system-dependent default paths for looking up the resp [...]
-<li><a class="el" href="classGeographicLib_1_1Utility.html#ae9208f2d9c37de596ead9af2136e8468">GeographicLib::Utility::readarray</a> reads numerical data from binary files. This assumes that floating point numbers are in IEEE format. It attempts to handled the "endianness" of the target platform using the WORDS_BIGENDIAN macro (which sets the compile-time constant <a class="el" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">GeographicLib::Math::bigendian</a>).</li>
+<li><a class="el" href="classGeographicLib_1_1Utility.html#a23e88040ceb60bd3fe28efc04f9119f8">GeographicLib::Utility::readarray</a> reads numerical data from binary files. This assumes that floating point numbers are in IEEE format. It attempts to handled the "endianness" of the target platform using the WORDS_BIGENDIAN macro (which sets the compile-time constant <a class="el" href="classGeographicLib_1_1Math.html#ab14e512a1867b98ecb38e9175426596c">GeographicLib::Math::bigendian</a>).</li>
</ul>
-<center> Back to <a class="el" href="utilities.html">Utility Programs</a>. Forward to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<center> Back to <a class="el" href="utilities.html">Utility programs</a>. Forward to <a class="el" href="other.html">Other interfaces (Javascript, Python, Matlab, Octave)</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/other.html b/doc/html/other.html
index 17ac16b..8c09539 100644
--- a/doc/html/other.html
+++ b/doc/html/other.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Other interfaces (Javascript, Python, Matlab, Octave)</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -117,20 +132,21 @@ Matlab and Octave interfaces</h2>
[0] None
Compiler: 2
- etc. </pre></div> (This will require that mex.bat is in your PATH.) Then configure cmake with, for example <div class="fragment"><pre class="fragment">
- cmake -G "Visual Studio 10" -D ENABLE_MATLAB=ON .. </pre></div> If you are running a 64-bit version of Matlab, be sure to select a 64-bit generator with cmake, e.g., "Visual Studio 10 Win64". Finally compile GeographicLib with Visual Studio. (The binary installer for Windows includes the compiled interface built with Visual Studio 10 and Matlab R2010b).<br/>
- On Linux systems, cmake is configured to use Octave instead of Matlab, because Matlab typically supports out-of-date versions of gcc. However the steps are similar (use <code>mex -setup</code> instead of <code>mex.bat -setup</code>).</li>
+ etc. </pre></div> (This will require that mex.bat is in your PATH. With Linux, use <code>mex -setup</code>.) Then configure cmake with, for example <div class="fragment"><pre class="fragment">
+ cmake -G "Visual Studio 10" -D MATLAB_COMPILER=mex .. </pre></div> If you are running a 64-bit version of Matlab, be sure to select a 64-bit generator with cmake, e.g., "Visual Studio 10 Win64". Finally compile GeographicLib with Visual Studio. (The binary installer for 64-bit Windows includes the compiled interface built with Visual Studio 10 and Matlab R2010b 64-bit).<br/>
+ On Linux systems, you can compile the interface for use with octave instead by using <div class="fragment"><pre class="fragment">
+ cmake -D MATLAB_COMPILER=mkoctfile .. </pre></div></li>
<li><b>Invoking the compiler from Matlab or Octave:</b> Start Matlab or Octave and run, e.g., <div class="fragment"><pre class="fragment"> mex -setup
- cd <span class="stringliteral">'C:/pkg-vc10/GeographicLib-1.18/libexec/GeographicLib/matlab'</span>
+ cd <span class="stringliteral">'C:/pkg-vc10-x64/GeographicLib-1.21/libexec/GeographicLib/matlab'</span>
help geographiclibinterface
- geographiclibinterface(<span class="stringliteral">'C:/pkg-vc10/GeographicLib-1.18'</span>);
+ geographiclibinterface(<span class="stringliteral">'C:/pkg-vc10/GeographicLib-1.21'</span>);
addpath(pwd);
</pre></div> The first command allows you to select the compiler to use (which should be the same as that used to compile GeographicLib).</li>
</ul>
<p>To use the interface routines for GeographicLib, run one of (for example) </p>
<div class="fragment"><pre class="fragment">
addpath /usr/local/libexec/GeographicLib/matlab
- addpath 'C:/pkg-vc10/GeographicLib-1.18/libexec/GeographicLib/matlab'
+ addpath 'C:/pkg-vc10-x64/GeographicLib-1.21/libexec/GeographicLib/matlab'
</pre></div><p> in Octave or Matlab. The available functions are:</p>
<ul>
<li>geodesicdirect: solve direct geodesic problem (see <a class="el" href="classGeographicLib_1_1Geodesic.html#a6e31d7655895a61a49258de00fd14603">GeographicLib::Geodesic::Direct</a>)</li>
@@ -154,8 +170,13 @@ Matlab and Octave interfaces</h2>
</pre></div><p> Other useful functions, e.g., to convert from geographic coordinates to MGRS can easily be written with Matlab code.</p>
<p>Note that geoidheight, when compiled with Visual Studio 2008 causes Matlab to crash. (The problem does not occur with Visual Studio 2005 or Visual Studio 2010.)</p>
<center> Back to <a class="el" href="organization.html">Code organization</a>. Forward to <a class="el" href="geoid.html">Geoid height</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/pages.html b/doc/html/pages.html
index b3e5c35..023db83 100644
--- a/doc/html/pages.html
+++ b/doc/html/pages.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Related Pages</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -43,7 +58,7 @@
</li>
<li><a class="el" href="start.html">Getting started</a>
</li>
-<li><a class="el" href="utilities.html">Utility Programs</a>
+<li><a class="el" href="utilities.html">Utility programs</a>
</li>
<li><a class="el" href="organization.html">Code organization</a>
</li>
@@ -55,18 +70,23 @@
</li>
<li><a class="el" href="magnetic.html">Magnetic models</a>
</li>
-<li><a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>
+<li><a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>
</li>
-<li><a class="el" href="transversemercator.html">Transverse Mercator Projection</a>
+<li><a class="el" href="transversemercator.html">Transverse Mercator projection</a>
</li>
<li><a class="el" href="geocentric.html">Geocentric coordinates</a>
</li>
-<li><a class="el" href="old.html">Old Versions</a>
+<li><a class="el" href="old.html">Old versions</a>
</li>
</ul>
</div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:15 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/start.html b/doc/html/start.html
index f219c7a..63c30e6 100644
--- a/doc/html/start.html
+++ b/doc/html/start.html
@@ -3,23 +3,38 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GeographicLib: Getting started</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -36,7 +51,7 @@
<div class="title">Getting started </div> </div>
</div>
<div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="install.html">Installing GeographicLib</a>. Forward to <a class="el" href="utilities.html">Utility Programs</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Much (but not all!) of the useful functionality of GeographicLib is available via simple command line utilities. Interfaces to some of them are available via the web. See <a class="el" href="utilities.html">Utility Programs</a> for documentation [...]
+<div class="textblock"><center> Back to <a class="el" href="install.html">Installing GeographicLib</a>. Forward to <a class="el" href="utilities.html">Utility programs</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Much (but not all!) of the useful functionality of GeographicLib is available via simple command line utilities. Interfaces to some of them are available via the web. See <a class="el" href="utilities.html">Utility programs</a> for documentation [...]
<p>In order to use GeographicLib from C++ code, you will need to</p>
<ul>
<li>Include the header files for the GeographicLib classes in your code. E.g., <div class="fragment"><pre class="fragment"><span class="preprocessor"> #include <<a class="code" href="LambertConformalConic_8hpp.html" title="Header for GeographicLib::LambertConformalConic class.">GeographicLib/LambertConformalConic.hpp</a>></span>
@@ -67,7 +82,7 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\Geograph
target_link_libraries (program2 ${GeographicLib_LIBRARIES}) </pre></div> in your CMakeLists.txt files (as noted). find_package command should find the library and set the required cmake variables (including <code>GEOGRAPHICLIB_FOUND = TRUE</code>). For find_package to be able to locate GeographicLib, it may be necessary for GeographicLib to be built and installed with cmake (see <a class="el" href="install.html#cmake">Installation with cmake</a>) instead of using some other installatio [...]
cmake -G "Visual Studio 10" -D CMAKE_PREFIX_PATH=C:/pkg-vc10 -D CMAKE_INSTALL_PREFIX=C:/pkg-vc10/XYZProject ..
</pre></div> (If you used some other method of installing GeographicLib, you can try copying cmake/FindGeographicLib.cmake to somewhere in your <code>CMAKE_MODULE_PATH</code> in order for find_package to work. However, this method has not been thoroughly tested.)</li>
-<li>For Windows, ensure that you build the library with the same version of the compiler and you use for your code. In addition, you have to build a separate debug version of the library when you can compiling your code in debug mode. The configuration of cmake described above ensure that the right version of the compiler is used and, assuming you built and installed GeographicLib in debug mode, the debug version of the library Geographic_d.lib will be used.</li>
+<li>For Windows, ensure that you build the library with the same version of the compiler and you use for your code. In addition, you have to build a separate debug version of the library when you can compiling your code in debug mode. The configuration of cmake described above ensures that the right version of the compiler is used and, assuming you built and installed GeographicLib in debug mode, the debug version of the library Geographic_d.lib will be used.</li>
</ul>
<p>Here is a very simple test code, which uses the <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> class: </p>
<div class="fragment"><pre class="fragment"><span class="comment">// Small example of using the GeographicLib::Geodesic class</span>
@@ -80,7 +95,7 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\Geograph
<span class="keyword">using namespace </span>GeographicLib;
<span class="keywordtype">int</span> <a class="code" href="CartConvert_8cpp.html#a0ddf1224851353fc92bfbff6f499fa97">main</a>() {
- <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& geod = Geodesic::WGS84;
+ <span class="keyword">const</span> <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>& geod = <a class="code" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">Geodesic</a>::WGS84;
<span class="comment">// Distance from JFK to LHR</span>
<span class="keywordtype">double</span>
lat1 = 40.6, lon1 = -73.8, <span class="comment">// JFK Airport</span>
@@ -95,7 +110,7 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\Geograph
5551.76 km
</pre></div><p>The next steps are:</p>
<ul>
-<li>Learn about and run the <a class="el" href="utilities.html">Utility Programs</a>.</li>
+<li>Learn about and run the <a class="el" href="utilities.html">Utility programs</a>.</li>
<li>Read the section, <a class="el" href="organization.html">Code organization</a>, for an overview of the library.</li>
<li>Browse the <a href="annotated.html">Class List</a> for full documentation on the classes in the library.</li>
<li>Look at the example code in the examples directory. Each file provides a very simple standalone example of using one GeographicLib class. These are included in the descriptions of the classes.</li>
@@ -111,9 +126,14 @@ Linker -> General -> Additional Library Directories = C:\pkg-vc10\Geograph
<li><a href="http://en.wikipedia.org/wiki/World_Magnetic_Model">WMM</a>, World Magnetic Model.</li>
<li><a href="http://en.wikipedia.org/wiki/IGRF">IGRF</a>, International Geomagnetic Reference Field.</li>
</ul>
-<center> Back to <a class="el" href="install.html">Installing GeographicLib</a>. Forward to <a class="el" href="utilities.html">Utility Programs</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<center> Back to <a class="el" href="install.html">Installing GeographicLib</a>. Forward to <a class="el" href="utilities.html">Utility programs</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/transversemercator.html b/doc/html/transversemercator.html
index 3150ffc..fe4459a 100644
--- a/doc/html/transversemercator.html
+++ b/doc/html/transversemercator.html
@@ -2,24 +2,39 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: Transverse Mercator Projection</title>
+<title>GeographicLib: Transverse Mercator projection</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -33,10 +48,10 @@
</div>
<div class="header">
<div class="headertitle">
-<div class="title">Transverse Mercator Projection </div> </div>
+<div class="title">Transverse Mercator projection </div> </div>
</div>
<div class="contents">
-<div class="textblock"><center> Back to <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. Forward to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p><a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact [...]
+<div class="textblock"><center> Back to <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. Forward to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p><a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a> and <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact [...]
<p>References</p>
<ul>
<li>L. Krüger, <a href="http://dx.doi.org/10.2312/GFZ.b103-krueger28">Konforme Abbildung des Erdellipsoids in der Ebene</a> (Conformal mapping of the ellipsoidal earth to the plane), Royal Prussian Geodetic Institute, New Series 52, 172 pp. (1912).</li>
@@ -208,9 +223,14 @@ alpha[10]= 77911515623232821/12014330904576000 * n^10;
<div class="fragment"><pre class="fragment">
load("tmseries.mac")$
</pre></div><p> Further instructions are included at the top of the file.</p>
-<center> Back to <a class="el" href="geodesic.html">Geodesics on the Ellipsoid</a>. Forward to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+<center> Back to <a class="el" href="geodesic.html">Geodesics on the ellipsoid</a>. Forward to <a class="el" href="geocentric.html">Geocentric coordinates</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/html/utilities.html b/doc/html/utilities.html
index fe7e1fc..e2c9ef0 100644
--- a/doc/html/utilities.html
+++ b/doc/html/utilities.html
@@ -2,24 +2,39 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<title>GeographicLib: Utility Programs</title>
+<title>GeographicLib: Utility programs</title>
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+
+
+
</head>
<body>
-<!-- Generated by Doxygen 1.7.4 -->
-<div id="top">
+<div id="top"><!-- do not remove this div! -->
+
+
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
+
+
<td style="padding-left: 0.5em;">
- <div id="projectname">GeographicLib</div>
+ <div id="projectname">GeographicLib
+ <span id="projectnumber">1.21</span>
+ </div>
+
</td>
+
+
+
</tr>
</tbody>
</table>
</div>
+
+<!-- Generated by Doxygen 1.7.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
@@ -33,7 +48,7 @@
</div>
<div class="header">
<div class="headertitle">
-<div class="title">Utility Programs </div> </div>
+<div class="title">Utility programs </div> </div>
</div>
<div class="contents">
<div class="textblock"><center> Back to <a class="el" href="start.html">Getting started</a>. Forward to <a class="el" href="organization.html">Code organization</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center><p>Various utility programs are provided with GeographicLib. These should be installed in a directory included in your PATH (e.g., /usr/local/bin). These programs are wrapper programs that invoke the underlying functionality provided by the library.</p>
@@ -41,14 +56,14 @@
<ul>
<li><a href="GeoConvert.1.html"><b>GeoConvert</b></a>: convert geographic coordinates using <a class="el" href="classGeographicLib_1_1GeoCoords.html" title="Conversion between geographic coordinates.">GeographicLib::GeoCoords</a>.</li>
<li><a href="Geod.1.html"><b>Geod</b></a>: perform geodesic calculations using <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a> and <a class="el" href="classGeographicLib_1_1GeodesicLine.html" title="A geodesic line.">GeographicLib::GeodesicLine</a>.</li>
-<li><a href="Planimeter.1.html"><b>Planimeter</b></a>: compute the area of geodesic polygons using the area facilities provided by <a class="el" href="classGeographicLib_1_1Geodesic.html" title="Geodesic calculations">GeographicLib::Geodesic</a>.</li>
+<li><a href="Planimeter.1.html"><b>Planimeter</b></a>: compute the area of geodesic polygons using <a class="el" href="classGeographicLib_1_1PolygonArea.html" title="Polygon Areas.">GeographicLib::PolygonArea</a>.</li>
<li><a href="TransverseMercatorProj.1.html"><b>TransverseMercatorProj</b></a>: convert between geographic and transverse Mercator. This is for testing <a class="el" href="classGeographicLib_1_1TransverseMercatorExact.html" title="An exact implementation of the Transverse Mercator Projection.">GeographicLib::TransverseMercatorExact</a> and <a class="el" href="classGeographicLib_1_1TransverseMercator.html" title="Transverse Mercator Projection.">GeographicLib::TransverseMercator</a>.</li>
<li><a href="CartConvert.1.html"><b>CartConvert</b></a>: convert geodetic coordinates to geocentric or local cartesian using <a class="el" href="classGeographicLib_1_1Geocentric.html" title="Geocentric coordinates">GeographicLib::Geocentric</a> and <a class="el" href="classGeographicLib_1_1LocalCartesian.html" title="Local Cartesian coordinates.">GeographicLib::LocalCartesian</a>.</li>
<li><a href="GeodesicProj.1.html"><b>GeodesicProj</b></a>: perform projections based on geodesics using <a class="el" href="classGeographicLib_1_1AzimuthalEquidistant.html" title="Azimuthal Equidistant Projection.">GeographicLib::AzimuthalEquidistant</a>, <a class="el" href="classGeographicLib_1_1Gnomonic.html" title="Gnomonic Projection.">GeographicLib::Gnomonic</a>, and <a class="el" href="classGeographicLib_1_1CassiniSoldner.html" title="Cassini-Soldner Projection.">GeographicLib::Cas [...]
<li><a href="ConicProj.1.html"><b>ConicProj</b></a>: perform conic projections using <a class="el" href="classGeographicLib_1_1LambertConformalConic.html" title="Lambert Conformal Conic Projection.">GeographicLib::LambertConformalConic</a> and <a class="el" href="classGeographicLib_1_1AlbersEqualArea.html" title="Albers Equal Area Conic Projection.">GeographicLib::AlbersEqualArea</a>.</li>
<li><a href="GeoidEval.1.html"><b>GeoidEval</b></a>: look up geoid heights using <a class="el" href="classGeographicLib_1_1Geoid.html" title="Looking up the height of the geoid.">GeographicLib::Geoid</a>.</li>
-<li><a href="Gravity.1.html"><b>Gravity</b></a>: compute the earth's gravitational field using <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a>.</li>
-<li><a href="MagneticField.1.html"><b>MagneticField</b></a>: compute the earth's magnetic field using <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a>.</li>
+<li><a href="Gravity.1.html"><b>Gravity</b></a>: compute the earth's gravitational field using <a class="el" href="classGeographicLib_1_1GravityModel.html" title="Model of the earth's gravity field.">GeographicLib::GravityModel</a> and <a class="el" href="classGeographicLib_1_1GravityCircle.html" title="Gravity on a circle of latitude.">GeographicLib::GravityCircle</a>.</li>
+<li><a href="MagneticField.1.html"><b>MagneticField</b></a>: compute the earth's magnetic field using <a class="el" href="classGeographicLib_1_1MagneticModel.html" title="Model of the earth's magnetic field.">GeographicLib::MagneticModel</a> and <a class="el" href="classGeographicLib_1_1MagneticCircle.html" title="Geomagnetic field on a circle of latitude.">GeographicLib::MagneticCircle</a>.</li>
</ul>
<p>The documentation for these utilities is in the form of man pages. This documentation can be accessed by clicking on the utility name in the list above, running the man command on Unix-like systems, or by invoking the utility with the --help option. A brief summary of usage is given by invoking the utility with the -h option. The version of the utility is given by the --version option.</p>
<p>The utilities all accept data on standard input, transform it in some way, and print the results on standard output. This makes the utilities easy to use within scripts to transform tabular data; however they can also be used interactively, often with the input supplied via a pipe, e.g.,</p>
@@ -63,8 +78,13 @@
<li><a href="http://geographiclib.sf.net/cgi-bin/GeoidEval">GeoidEval</a></li>
</ul>
<center> Back to <a class="el" href="start.html">Getting started</a>. Forward to <a class="el" href="organization.html">Code organization</a>. Up to <a class="el" href="index.html#contents">Contents</a>. </center> </div></div>
-<hr class="footer"/><address class="footer"><small>Generated on Fri Feb 17 2012 for GeographicLib by
-<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
+
+
+<hr class="footer"/><address class="footer"><small>
+Generated on Tue Apr 24 2012 17:54:16 for GeographicLib by <a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.7.5
+</small></address>
+
</body>
</html>
diff --git a/doc/scripts/GeographicLib/Geodesic.js b/doc/scripts/GeographicLib/Geodesic.js
index 3c5bb12..8ad5461 100644
--- a/doc/scripts/GeographicLib/Geodesic.js
+++ b/doc/scripts/GeographicLib/Geodesic.js
@@ -5,11 +5,11 @@
* See the documentation for the C++ class. The conversion is a literal
* conversion from C++.
*
- * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed
* under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
- * $Id: 34794cf7585b4196c260f48765826b47a15c4d05 $
+ * $Id: d9a7879a3ff27db0b34f6c9fe3d8eaf8f90d1e29 $
**********************************************************************/
// Load AFTER Math.js
@@ -65,7 +65,7 @@ GeographicLib.GeodesicLine = {};
// sum(c[i] * cos((2*i+1) * x), i, 0, n-1) :
// using Clenshaw summation. N.B. c[0] is unused for sin series
// Approx operation count = (n + 5) mult and (2 * n + 2) add
- var k = n + (sinp ? 1 : 0); // Point to one beyond last element
+ var k = n + (sinp ? 1 : 0); // Point to one beyond last element
var
ar = 2 * (cosx - sinx) * (cosx + sinx), // 2 * cos(2 * x)
y0 = n & 1 ? c[--k] : 0, y1 = 0; // accumulators for sum
@@ -115,7 +115,7 @@ GeographicLib.GeodesicLine = {};
r3 = r * r2,
// The discrimant of the quadratic equation for T3. This is
// zero on the evolute curve p^(1/3)+q^(1/3) = 1
- disc = S * (S + 2 * r3);
+ disc = S * (S + 2 * r3);
var u = r;
if (disc >= 0) {
var T3 = S + r3;
@@ -232,7 +232,8 @@ GeographicLib.GeodesicLine = {};
(this._e2 > 0 ? m.atanh(Math.sqrt(this._e2)) :
Math.atan(Math.sqrt(-this._e2))) /
Math.sqrt(Math.abs(this._e2))))/2;
- this._etol2 = g.tol2_ / Math.max(0.1, Math.sqrt(Math.abs(this._e2)));
+ // The sig12 threshold for "really short"
+ this._etol2 = 10 * g.tol2_ / Math.max(0.1, Math.sqrt(Math.abs(this._e2)));
if (!(isFinite(this._a) && this._a > 0))
throw new Error("Major radius is not positive");
if (!(isFinite(this._b) && this._b > 0))
@@ -302,7 +303,7 @@ GeographicLib.GeodesicLine = {};
g.Geodesic.prototype.A3f = function(eps) {
// Evaluation sum(_A3c[k] * eps^k, k, 0, nA3x_-1) by Horner's method
- var v = 0;
+ var v = 0;
for (var i = g.nA3x_; i; )
v = eps * v + this._A3x[--i];
return v;
@@ -375,7 +376,7 @@ GeographicLib.GeodesicLine = {};
vals.m12a = (w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
- this._f1 * csig1 * csig2 * J12;
// Missing a factor of _b
- vals.s12b = (1 + A1m1) * sig12 + AB1;
+ vals.s12b = (1 + A1m1) * sig12 + AB1;
if (scalep) {
var csig12 = csig1 * csig2 + ssig1 * ssig2;
J12 *= this._f1;
@@ -414,8 +415,8 @@ GeographicLib.GeodesicLine = {};
var shortline = cbet12 >= 0 && sbet12 < 0.5 &&
lam12 <= Math.PI / 6;
var
- omg12 = shortline ?
- lam12 / Math.sqrt(1 - this._e2 * m.sq(cbet1)) : lam12,
+ omg12 = (!shortline ? lam12 :
+ lam12 / Math.sqrt(1 - this._e2 * m.sq((cbet1 + cbet2) / 2))),
somg12 = Math.sin(omg12), comg12 = Math.cos(omg12);
vals.salp1 = cbet2 * somg12;
@@ -477,13 +478,13 @@ GeographicLib.GeodesicLine = {};
y = (lam12 - Math.PI) / lamscale;
}
- if (y > -g.tol1_ && x > -1 - g.xthresh_) {
+ if (y > -g.tol1_ && x > -1 - g.xthresh_) {
// strip near cut
if (this._f >= 0) {
vals.salp1 = Math.min(1, -x);
vals.calp1 = - Math.sqrt(1 - m.sq(vals.salp1));
} else {
- vals.calp1 = Math.max(x > -g.tol1_ ? 0 : -1, x);
+ vals.calp1 = Math.max(x > -g.tol1_ ? 0 : -1, x);
vals.salp1 = Math.sqrt(1 - m.sq(vals.calp1));
}
} else {
@@ -671,7 +672,7 @@ GeographicLib.GeodesicLine = {};
phi = lat2 * m.degree;
// Ensure cbet2 = +epsilon at poles
sbet2 = this._f1 * Math.sin(phi);
- cbet2 = Math.abs(lat2) == 90 ? tiny_ : Math.cos(phi);
+ cbet2 = Math.abs(lat2) == 90 ? g.tiny_ : Math.cos(phi);
// SinCosNorm(sbet2, cbet2);
var t = m.hypot(sbet2, cbet2); sbet2 /= t; cbet2 /= t;
@@ -781,14 +782,13 @@ GeographicLib.GeodesicLine = {};
salp2 = nvals.salp2;
calp2 = nvals.calp2;
// Short lines (InverseStart sets salp2, calp2)
- var w1 = Math.sqrt(1 - this._e2 * m.sq(cbet1));
- s12x = sig12 * this._a * w1;
- m12x = m.sq(w1) * this._a / this._f1 *
- Math.sin(sig12 * this._f1 / w1);
+ var wm = Math.sqrt(1 - this._e2 * m.sq((cbet1 + cbet2) / 2));
+ s12x = sig12 * this._a * wm;
+ m12x = m.sq(wm) * this._a / this._f1 * Math.sin(sig12 * this._f1 / wm);
if (outmask & g.GEODESICSCALE)
- vals.M12 = vals.M21 = Math.cos(sig12 * this._f1 / w1);
+ vals.M12 = vals.M21 = Math.cos(sig12 * this._f1 / wm);
vals.a12 = sig12 / m.degree;
- omg12 = lam12 / w1;
+ omg12 = lam12 / wm;
} else {
// Newton's method
diff --git a/doc/scripts/GeographicLib/GeodesicLine.js b/doc/scripts/GeographicLib/GeodesicLine.js
index b5d701e..0571999 100644
--- a/doc/scripts/GeographicLib/GeodesicLine.js
+++ b/doc/scripts/GeographicLib/GeodesicLine.js
@@ -9,7 +9,7 @@
* under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
- * $Id: ba5e5a11abba4f0119e395ebd1468974cdce8fbd $
+ * $Id: fd75e359445d86b9e2c8b27708e1ad35687a92d0 $
**********************************************************************/
// Load AFTER GeographicLib/Math.js and GeographicLib/Geodesic.js
@@ -37,7 +37,7 @@
var alp1 = azi1 * m.degree;
// Enforce sin(pi) == 0 and cos(pi/2) == 0. Better to face the ensuing
// problems directly than to skirt them.
- this._salp1 = azi1 == -180 ? 0 : Math.sin(alp1);
+ this._salp1 = azi1 == -180 ? 0 : Math.sin(alp1);
this._calp1 = Math.abs(azi1) == 90 ? 0 : Math.cos(alp1);
var cbet1, sbet1, phi;
phi = lat1 * m.degree;
@@ -216,7 +216,7 @@
w1 * (this._ssig1 * csig2))
- this._csig1 * csig2 * J12);
if (outmask & g.GEODESICSCALE) {
- vals.M12 = csig12 + (this._k2 * (ssig2sq - ssig1sq) * ssig2 / (w1 + w2)
+ vals.M12 = csig12 + (this._k2 * (ssig2sq - ssig1sq) * ssig2 / (w1 + w2)
- csig2 * J12) * this._ssig1 / w1;
vals.M21 = csig12 - (this._k2 * (ssig2sq - ssig1sq) * this._ssig1 /
(w1 + w2)
diff --git a/doc/scripts/GeographicLib/Math.js b/doc/scripts/GeographicLib/Math.js
index 6ec0b01..3bbac35 100644
--- a/doc/scripts/GeographicLib/Math.js
+++ b/doc/scripts/GeographicLib/Math.js
@@ -7,7 +7,7 @@
* under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
- * $Id: ad34f614c4596f04cb5517daeff6fe9e46d9a0d8 $
+ * $Id: d8f72fdee7b661e6ba3f08bb7ecfe9f0673e8132 $
**********************************************************************/
var GeographicLib; if (!GeographicLib) GeographicLib = {};
@@ -74,7 +74,7 @@ GeographicLib.Accumulator = {};
// of the first two arguments.
a.sum = function(u, v) {
var
- s = s = u + v,
+ s = u + v,
up = s - v,
vpp = s - up;
up -= u;
@@ -122,7 +122,7 @@ GeographicLib.Accumulator = {};
if (this._s == 0) // This implies t == 0,
this._s = u; // so result is u
else
- this._t += u; // otherwise just accumulate u to t.
+ this._t += u; // otherwise just accumulate u to t.
}
a.Accumulator.prototype.Sum = function(y) {
diff --git a/doc/scripts/GeographicLib/PolygonArea.js b/doc/scripts/GeographicLib/PolygonArea.js
index c47b00b..54fc94b 100644
--- a/doc/scripts/GeographicLib/PolygonArea.js
+++ b/doc/scripts/GeographicLib/PolygonArea.js
@@ -9,7 +9,7 @@
* under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
- * $Id: f6eebaf4c93ded5e1ddd5b1be38d3b9570b59fa8 $
+ * $Id: cefb3a6e48907fbda0f01e8ee7d549447f46e29a $
**********************************************************************/
// Load AFTER GeographicLib/Math.js and GeographicLib/Geodesic.js
@@ -39,7 +39,7 @@ GeographicLib.PolygonArea = {};
this._earth = earth;
this._area0 = 4 * Math.PI * earth._c2;
this._polyline = !polyline ? false : polyline;
- this._mask = g.DISTANCE | (this._polyline ? 0 : g.AREA);
+ this._mask = g.DISTANCE | (this._polyline ? 0 : g.AREA);
if (!this._polyline)
this._areasum = new a.Accumulator(0);
this._perimetersum = new a.Accumulator(0);
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 8b782a2..913f659 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: d5febf7abcb473b048d3bfa2db5c7de1f9a8fbc9 $
+# $Id: 54590373678f8a602e370bb7a54265163f5b9d73 $
# Compile (but don't install) a bunch of tiny example programs. These
# are mainly for including as examples within the doxygen documentation;
@@ -11,7 +11,28 @@ foreach (EXAMPLE_SOURCE ${EXAMPLE_SOURCES})
set (EXAMPLES ${EXAMPLES} ${EXAMPLE})
add_executable (${EXAMPLE} ${EXAMPLE_SOURCE})
target_link_libraries (${EXAMPLE} Geographic)
-endforeach (EXAMPLE_SOURCE)
+endforeach ()
+
+set (OTHER_EXAMPLES GeoidToGTX.cpp)
+
+foreach (EXAMPLE_SOURCE ${OTHER_EXAMPLES})
+ get_filename_component (EXAMPLE ${EXAMPLE_SOURCE} NAME_WE)
+ set (EXAMPLES ${EXAMPLES} ${EXAMPLE})
+ add_executable (${EXAMPLE} ${EXAMPLE_SOURCE})
+ target_link_libraries (${EXAMPLE} Geographic)
+endforeach ()
+
+find_package (OpenMP)
+
+if (OPENMP_FOUND OR OpenMP_FOUND)
+ set_target_properties (GeoidToGTX PROPERTIES
+ COMPILE_FLAGS ${OpenMP_CXX_FLAGS}
+ COMPILE_DEFINITIONS HAVE_OPENMP=1)
+ if (NOT WIN32)
+ set_target_properties (GeoidToGTX PROPERTIES
+ LINK_FLAGS ${OpenMP_CXX_FLAGS})
+ endif (NOT WIN32)
+endif (OPENMP_FOUND OR OpenMP_FOUND)
add_custom_target (examples DEPENDS ${EXAMPLES})
add_dependencies (examples Geographic)
diff --git a/examples/GeoidToGTX.cpp b/examples/GeoidToGTX.cpp
new file mode 100644
index 0000000..dd16d67
--- /dev/null
+++ b/examples/GeoidToGTX.cpp
@@ -0,0 +1,103 @@
+// Write out a gtx file of geoid heights. For egm2008 at 1' resolution this
+// takes about 40 mins on a 8-processor Intel 2.66 GHz machine using OpenMP
+// (-DHAVE_OPENMP=1).
+//
+// For the format of gtx files, see
+// http://vdatum.noaa.gov/dev/gtx_info.html#dev_gtx_binary
+//
+// data is binary big-endian:
+// south latitude edge (degrees double)
+// west longitude edge (degrees double)
+// delta latitude (degrees double)
+// delta longitude (degrees double)
+// nlat = number of latitude rows (integer)
+// nlong = number of longitude columns (integer)
+// nlat * nlong geoid heights (meters float)
+
+#include <vector>
+#include <iostream>
+#include <fstream>
+#include <string>
+#include <algorithm>
+
+#if HAVE_OPENMP
+#include <omp.h>
+#endif
+
+#include <GeographicLib/GravityModel.hpp>
+#include <GeographicLib/GravityCircle.hpp>
+#include <GeographicLib/Utility.hpp>
+
+using namespace std;
+using namespace GeographicLib;
+
+int main(int argc, char* argv[]) {
+ // Hardwired for 3 args:
+ // 1 = the gravity model (e.g., egm2008)
+ // 2 = intervals per degree
+ // 3 = output GTX file
+ if (argc != 4) {
+ cerr << "Usage: " << argv[0]
+ << " gravity-model intervals-per-degree output.gtx\n";
+ return 1;
+ }
+ try {
+ string model(argv[1]);
+ // Number of intervals per degree
+ int ndeg = Utility::num<int>(string(argv[2]));
+ string filename(argv[3]);
+ GravityModel g(model);
+ int
+ nlat = 180 * ndeg + 1,
+ nlon = 360 * ndeg;
+ double
+ delta = 1 / double(ndeg), // Grid spacing
+ latorg = -90,
+ lonorg = -180;
+ // Write results as floats in binary mode
+ ofstream file(filename.c_str(), ios::binary);
+
+ // Write header
+ {
+ double transform[] = {latorg, lonorg, delta, delta};
+ unsigned sizes[] = {nlat, nlon};
+ Utility::writearray<double, double, true>(file, transform, 4);
+ Utility::writearray<unsigned, unsigned, true>(file, sizes, 2);
+ }
+
+ // Compute and store results for nbatch latitudes at a time
+ const int nbatch = 64;
+ vector< vector<float> > N(nbatch, vector<float>(nlon));
+
+ for (int ilat0 = 0; ilat0 < nlat; ilat0 += nbatch) { // Loop over batches
+ int nlat0 = min(nlat, ilat0 + nbatch);
+
+#if HAVE_OPENMP
+#pragma omp parallel for
+#endif
+ for (int ilat = ilat0; ilat < nlat0; ++ilat) { // Loop over latitudes
+ double
+ lat = latorg + (ilat / ndeg) + delta * (ilat - ndeg * (ilat / ndeg)),
+ h = 0;
+ GravityCircle c(g.Circle(lat, h, GravityModel::GEOID_HEIGHT));
+ for (int ilon = 0; ilon < nlon; ++ilon) { // Loop over longitudes
+ double lon = lonorg
+ + (ilon / ndeg) + delta * (ilon - ndeg * (ilon / ndeg));
+ N[ilat - ilat0][ilon] = float(c.GeoidHeight(lon));
+ } // longitude loop
+ } // latitude loop -- end of parallel section
+
+ for (int ilat = ilat0; ilat < nlat0; ++ilat) // write out data
+ Utility::writearray<float, float, true>(file, N[ilat - ilat0]);
+ } // batch loop
+ }
+ catch (const exception& e) {
+ cerr << "Caught exception: " << e.what() << "\n";
+ return 1;
+ }
+ catch (...) {
+ cerr << "Caught unknown exception\n";
+ return 1;
+ }
+ return 0;
+}
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 7bbfcfb..14d1cfe 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -2,7 +2,7 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 88d7788930d32d562c5e4d9f73b5c0b541eb2b2b $
+# $Id: 8f327ca307cc38126a2ecbca4df19f2c8eef2604 $
EXAMPLE_FILES = \
example-Accumulator.cpp \
@@ -40,6 +40,7 @@ EXAMPLE_FILES = \
example-TransverseMercator.cpp \
example-TransverseMercatorExact.cpp \
example-UTMUPS.cpp \
- example-Utility.cpp
+ example-Utility.cpp \
+ GeoidToGTX.cpp
EXTRA_DIST = CMakeLists.txt $(EXAMPLE_FILES)
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 537ad94..591d88f 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -19,7 +19,7 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 88d7788930d32d562c5e4d9f73b5c0b541eb2b2b $
+# $Id: 8f327ca307cc38126a2ecbca4df19f2c8eef2604 $
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -219,7 +219,8 @@ EXAMPLE_FILES = \
example-TransverseMercator.cpp \
example-TransverseMercatorExact.cpp \
example-UTMUPS.cpp \
- example-Utility.cpp
+ example-Utility.cpp \
+ GeoidToGTX.cpp
EXTRA_DIST = CMakeLists.txt $(EXAMPLE_FILES)
all: all-am
diff --git a/examples/example-GeodesicLine.cpp b/examples/example-GeodesicLine.cpp
index ac72694..8c80f28 100644
--- a/examples/example-GeodesicLine.cpp
+++ b/examples/example-GeodesicLine.cpp
@@ -1,5 +1,5 @@
// Example of using the GeographicLib::GeodesicLine class
-// $Id: 89118a11e5334de7be20d26aa9eaa7da48ae463c $
+// $Id: df5c5ffe6534d46e343544430de8c13fc8119bfb $
#include <iostream>
#include <exception>
@@ -16,17 +16,17 @@ int main() {
try {
// Print waypoints between JFK and SIN
Geodesic geod(Constants::WGS84_a(), Constants::WGS84_f());
- // Alternatively: const Geodesic& geodesic = Geodesic::WGS84;
+ // Alternatively: const Geodesic& geod = Geodesic::WGS84;
double
lat1 = 40.640, lon1 = -73.779, // JFK
- lat2 = 1.359, lon2 = 177.486; // SIN
+ lat2 = 1.359, lon2 = 103.989; // SIN
double s12, azi1, azi2,
a12 = geod.Inverse(lat1, lon1, lat2, lon2, s12, azi1, azi2);
const GeographicLib::GeodesicLine line(geod, lat1, lon1, azi1);
// Alternatively
// const GeographicLib::GeodesicLine line = geod.Line(lat1, lon1, azi1);
double ds = 500e3; // Nominal distance between points = 500 km
- int num = ceil(s12 / ds); // The number of intervals
+ int num = int(ceil(s12 / ds)); // The number of intervals
cout << fixed << setprecision(3);
{
// Use intervals of equal length
diff --git a/examples/example-LambertConformalConic.cpp b/examples/example-LambertConformalConic.cpp
index 98936e9..5758405 100644
--- a/examples/example-LambertConformalConic.cpp
+++ b/examples/example-LambertConformalConic.cpp
@@ -1,5 +1,5 @@
// Example of using the GeographicLib::LambertConformalConic class
-// $Id: fee4349167387dc01f6253ec8d9cbd0172a7392b $
+// $Id: 5cb2532e2709bcafee50974307836930069b0cff $
#include <iostream>
#include <exception>
@@ -11,35 +11,35 @@ using namespace GeographicLib;
int main() {
try {
// Define the Pennsylvania South state coordinate system EPSG:3364
- const double
- a = Constants::WGS84_a<double>(),
- f = 1/298.257222101, // GRS80
- lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, // standard parallels
- k1 = 1, // scale
- lat0 = 39 + 20/60.0, lon0 =-77 - 45/60.0, // origin
- fe = 600000, fn = 0; // false easting and northing
- // Set up basic projection
- const LambertConformalConic PASouth(a, f, lat1, lat2, k1);
- double x0, y0;
- // Transform origin point
- PASouth.Forward(lon0, lat0, lon0, x0, y0);
- x0 -= fe; y0 -= fn;
- {
- // Sample conversion from geodetic to PASouth grid
- double lat = 39.95, lon = -75.17; // Philadelphia
- double x, y;
- PASouth.Forward(lon0, lat, lon, x, y);
- x -= x0; y -= y0;
- std::cout << x << " " << y << "\n";
- }
- {
- // Sample conversion from PASouth grid to geodetic
- double x = 820e3, y = 72e3;
- double lat, lon;
- x += x0; y += y0;
- PASouth.Reverse(lon0, x, y, lat, lon);
- std::cout << lat << " " << lon << "\n";
- }
+ const double
+ a = Constants::WGS84_a<double>(),
+ f = 1/298.257222101, // GRS80
+ lat1 = 40 + 58/60.0, lat2 = 39 + 56/60.0, // standard parallels
+ k1 = 1, // scale
+ lat0 = 39 + 20/60.0, lon0 =-77 - 45/60.0, // origin
+ fe = 600000, fn = 0; // false easting and northing
+ // Set up basic projection
+ const LambertConformalConic PASouth(a, f, lat1, lat2, k1);
+ double x0, y0;
+ // Transform origin point
+ PASouth.Forward(lon0, lat0, lon0, x0, y0);
+ x0 -= fe; y0 -= fn;
+ {
+ // Sample conversion from geodetic to PASouth grid
+ double lat = 39.95, lon = -75.17; // Philadelphia
+ double x, y;
+ PASouth.Forward(lon0, lat, lon, x, y);
+ x -= x0; y -= y0;
+ std::cout << x << " " << y << "\n";
+ }
+ {
+ // Sample conversion from PASouth grid to geodetic
+ double x = 820e3, y = 72e3;
+ double lat, lon;
+ x += x0; y += y0;
+ PASouth.Reverse(lon0, x, y, lat, lon);
+ std::cout << lat << " " << lon << "\n";
+ }
}
catch (const exception& e) {
cerr << "Caught exception: " << e.what() << "\n";
diff --git a/include/GeographicLib/AlbersEqualArea.hpp b/include/GeographicLib/AlbersEqualArea.hpp
index 437c9ce..6f44b19 100644
--- a/include/GeographicLib/AlbersEqualArea.hpp
+++ b/include/GeographicLib/AlbersEqualArea.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_ALBERSEQUALAREA_HPP)
#define GEOGRAPHICLIB_ALBERSEQUALAREA_HPP \
- "$Id: c9f194023273bee32876018a1f6a548e35303836 $"
+ "$Id: d17f37d1bec84543dc3753e882d8e95f1c1d5a1b $"
#include <algorithm>
#include <GeographicLib/Constants.hpp>
@@ -54,6 +54,10 @@ namespace GeographicLib {
*
* Example of use:
* \include example-AlbersEqualArea.cpp
+ *
+ * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility
+ * providing access to the functionality of LambertConformalConic and
+ * AlbersEqualArea.
**********************************************************************/
class GEOGRAPHIC_EXPORT AlbersEqualArea {
private:
@@ -257,11 +261,13 @@ namespace GeographicLib {
**********************************************************************/
Math::real Flattening() const throw() { return _f; }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw() { return 1/_f; }
+ /// \endcond
/**
* @return latitude of the origin for the projection (degrees).
diff --git a/include/GeographicLib/AzimuthalEquidistant.hpp b/include/GeographicLib/AzimuthalEquidistant.hpp
index dd9a1bc..d966fde 100644
--- a/include/GeographicLib/AzimuthalEquidistant.hpp
+++ b/include/GeographicLib/AzimuthalEquidistant.hpp
@@ -2,14 +2,14 @@
* \file AzimuthalEquidistant.hpp
* \brief Header for GeographicLib::AzimuthalEquidistant class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP)
#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP \
- "$Id: 8883d9b1d45bf4371550426398b39ee5f821ce90 $"
+ "$Id: 95a1d6e7a8c4613be25ec32550231601202da1e5 $"
#include <GeographicLib/Geodesic.hpp>
#include <GeographicLib/Constants.hpp>
@@ -34,6 +34,10 @@ namespace GeographicLib {
*
* Example of use:
* \include example-AzimuthalEquidistant.cpp
+ *
+ * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility
+ * providing access to the functionality of AzimuthalEquidistant, Gnomonic,
+ * and CassiniSoldner.
**********************************************************************/
class GEOGRAPHIC_EXPORT AzimuthalEquidistant {
@@ -129,14 +133,16 @@ namespace GeographicLib {
* inherited from the Geodesic object used in the constructor.
**********************************************************************/
Math::real Flattening() const throw() { return _earth.Flattening(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw()
{ return _earth.InverseFlattening(); }
- ///@}
+ /// \endcond
};
} // namespace GeographicLib
diff --git a/include/GeographicLib/CassiniSoldner.hpp b/include/GeographicLib/CassiniSoldner.hpp
index 8ed9bb1..163ea9d 100644
--- a/include/GeographicLib/CassiniSoldner.hpp
+++ b/include/GeographicLib/CassiniSoldner.hpp
@@ -2,14 +2,14 @@
* \file CassiniSoldner.hpp
* \brief Header for GeographicLib::CassiniSoldner class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_CASSINISOLDNER_HPP)
#define GEOGRAPHICLIB_CASSINISOLDNER_HPP \
- "$Id: 5e164482237fc52a63dda3d7e4f287f6313fc79a $"
+ "$Id: d794ea8a1e64fd9cbb8dcee34755b6dc4fee623a $"
#include <GeographicLib/Geodesic.hpp>
#include <GeographicLib/GeodesicLine.hpp>
@@ -61,6 +61,10 @@ namespace GeographicLib {
*
* Example of use:
* \include example-CassiniSoldner.cpp
+ *
+ * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility
+ * providing access to the functionality of AzimuthalEquidistant, Gnomonic,
+ * and CassiniSoldner.
**********************************************************************/
class GEOGRAPHIC_EXPORT CassiniSoldner {
@@ -71,7 +75,7 @@ namespace GeographicLib {
real _sbet0, _cbet0;
static const real eps1_;
static const real tiny_;
- static const unsigned maxit_ = 10;
+ static const unsigned maxit_ = 10;
// The following private helper functions are copied from Geodesic.
static inline real AngNormalize(real x) throw() {
@@ -222,14 +226,16 @@ namespace GeographicLib {
* inherited from the Geodesic object used in the constructor.
**********************************************************************/
Math::real Flattening() const throw() { return _earth.Flattening(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw()
{ return _earth.InverseFlattening(); }
- ///@}
+ /// \endcond
};
} // namespace GeographicLib
diff --git a/include/GeographicLib/Config.h b/include/GeographicLib/Config.h
index 10f02bf..fd0e664 100644
--- a/include/GeographicLib/Config.h
+++ b/include/GeographicLib/Config.h
@@ -1 +1 @@
-#define GEOGRAPHICLIB_VERSION_STRING "1.18"
+#define GEOGRAPHICLIB_VERSION_STRING "1.21"
diff --git a/include/GeographicLib/Constants.hpp b/include/GeographicLib/Constants.hpp
index aa34bef..40d27fa 100644
--- a/include/GeographicLib/Constants.hpp
+++ b/include/GeographicLib/Constants.hpp
@@ -2,19 +2,19 @@
* \file Constants.hpp
* \brief Header for GeographicLib::Constants class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_CONSTANTS_HPP)
#define GEOGRAPHICLIB_CONSTANTS_HPP \
- "$Id: 58b3796803fd552851e800c63f8ee43f64bacd0c $"
+ "$Id: 895e4bd91979aae347436bbf6be37964f05f5b6f $"
#include <GeographicLib/Config.h>
/**
- * A compile-time assert. Use C++0X static_assert, if available.
+ * A compile-time assert. Use C++11 static_assert, if available.
**********************************************************************/
#if !defined(STATIC_ASSERT)
# if defined(__GXX_EXPERIMENTAL_CXX0X__)
@@ -127,6 +127,7 @@ namespace GeographicLib {
**********************************************************************/
template<typename T> static inline T WGS84_omega() throw()
{ return T(7292115) / (T(1000000) * T(100000)); }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return the reciprocal flattening of WGS84 ellipsoid.
@@ -137,6 +138,7 @@ namespace GeographicLib {
* <b>DEPRECATED</b>
* A synonym for WGS84_r<real>().
**********************************************************************/
+ /// \endcond
static inline Math::real WGS84_r() throw() { return WGS84_r<real>(); }
/**
* @tparam T the type of the returned value.
diff --git a/include/GeographicLib/DMS.hpp b/include/GeographicLib/DMS.hpp
index bc30bb9..918d025 100644
--- a/include/GeographicLib/DMS.hpp
+++ b/include/GeographicLib/DMS.hpp
@@ -2,13 +2,13 @@
* \file DMS.hpp
* \brief Header for GeographicLib::DMS class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_DMS_HPP)
-#define GEOGRAPHICLIB_DMS_HPP "$Id: ace0c24b4f8b290b6ec49fb0f5e9aba47b6b996a $"
+#define GEOGRAPHICLIB_DMS_HPP "$Id: 67770a78c105495a31a9d3755c811e938729c85a $"
#include <sstream>
#include <iomanip>
@@ -191,6 +191,7 @@ namespace GeographicLib {
static Math::real Decode(real d, real m = 0, real s = 0) throw()
{ return d + (m + s/real(60))/real(60); }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b> (use Utility::num, instead).
* Convert a string to a real number.
@@ -198,9 +199,8 @@ namespace GeographicLib {
* @param[in] str string input.
* @return decoded number.
**********************************************************************/
- static Math::real Decode(const std::string& str) {
- return Utility::num<real>(str);
- }
+ static Math::real Decode(const std::string& str)
+ { return Utility::num<real>(str); }
/**
* <b>DEPRECATED</b> (use Utility::fract, instead).
@@ -210,9 +210,9 @@ namespace GeographicLib {
* @param[in] str string input.
* @return decoded number.
**********************************************************************/
- static Math::real DecodeFraction(const std::string& str) {
- return Utility::fract<real>(str);
- }
+ static Math::real DecodeFraction(const std::string& str)
+ { return Utility::fract<real>(str); }
+ /// \endcond
/**
* Convert a pair of strings to latitude and longitude.
@@ -269,6 +269,8 @@ namespace GeographicLib {
* @param[in] prec the number of digits after the decimal point for the
* trailing component.
* @param[in] ind DMS::flag value indicated additional formatting.
+ * @param[in] dmssep if non-null, use as the DMS separator character
+ * (instead of d, ', " delimiters).
* @return formatted string
*
* The interpretation of \e ind is as follows:
@@ -285,6 +287,29 @@ namespace GeographicLib {
* with 2 digits.
**********************************************************************/
static std::string Encode(real angle, component trailing, unsigned prec,
+ flag ind, char dmssep);
+
+ /**
+ * Convert angle (in degrees) into a DMS string (using d, ', and ").
+ *
+ * @param[in] angle input angle (degrees)
+ * @param[in] trailing DMS::component value indicating the trailing units
+ * on the string and this is given as a decimal number if necessary.
+ * @param[in] prec the number of digits after the decimal point for the
+ * trailing component.
+ * @param[in] ind DMS::flag value indicated additional formatting.
+ * @return formatted string
+ *
+ * <b>COMPATIBILITY NOTE:</b> This function calls
+ * Encode(real, component, unsigned, flag, char) with a 5th
+ * argument of char(0). At some point,
+ * Encode(real, component, unsigned, flag) and will be withdrawn
+ * and the interface to
+ * Encode(real, component, unsigned, flag, char) changed so that
+ * its 4th and 5th arguments have default values. This will
+ * preserve source-level compatibility.
+ **********************************************************************/
+ static std::string Encode(real angle, component trailing, unsigned prec,
flag ind = NONE);
/**
@@ -294,6 +319,8 @@ namespace GeographicLib {
* @param[in] angle input angle (degrees)
* @param[in] prec the precision relative to 1 degree.
* @param[in] ind DMS::flag value indicated additional formatting.
+ * @param[in] dmssep if non-null, use as the DMS separator character
+ * (instead of d, ', " delimiters).
* @return formatted string
*
* \e prec indicates the precision relative to 1 degree, e.g., \e prec = 3
@@ -302,12 +329,13 @@ namespace GeographicLib {
* facility that DMS::NUMBER represents \e angle as a number in fixed
* format with precision \e prec.
**********************************************************************/
- static std::string Encode(real angle, unsigned prec, flag ind = NONE) {
+ static std::string Encode(real angle, unsigned prec, flag ind = NONE,
+ char dmssep = char(0)) {
return ind == NUMBER ? Utility::str<real>(angle, int(prec)) :
Encode(angle,
prec < 2 ? DEGREE : (prec < 4 ? MINUTE : SECOND),
prec < 2 ? prec : (prec < 4 ? prec - 2 : prec - 4),
- ind);
+ ind, dmssep);
}
/**
diff --git a/include/GeographicLib/EllipticFunction.hpp b/include/GeographicLib/EllipticFunction.hpp
index 06c4b2a..464b3d0 100644
--- a/include/GeographicLib/EllipticFunction.hpp
+++ b/include/GeographicLib/EllipticFunction.hpp
@@ -2,14 +2,14 @@
* \file EllipticFunction.hpp
* \brief Header for GeographicLib::EllipticFunction class
*
- * Copyright (c) Charles Karney (2008, 2009, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP)
#define GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP \
- "$Id: 1d42b41095ac447697a256ac7f71a4f969270ddd $"
+ "$Id: 30ac447643e48afcaf5ab4671fbf2b235008dabe $"
#include <GeographicLib/Constants.hpp>
diff --git a/include/GeographicLib/GeoCoords.hpp b/include/GeographicLib/GeoCoords.hpp
index c42c9d1..26a5e71 100644
--- a/include/GeographicLib/GeoCoords.hpp
+++ b/include/GeographicLib/GeoCoords.hpp
@@ -2,14 +2,14 @@
* \file GeoCoords.hpp
* \brief Header for GeographicLib::GeoCoords class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#ifndef GEOGRAPHICLIB_GEOCOORDS_HPP
#define GEOGRAPHICLIB_GEOCOORDS_HPP \
- "$Id: fc52421e0cbb368e60f7ac14a3eac25e5e9c0ca6 $"
+ "$Id: e706d3a35c3be0e2beaf39041cac29beb468a5aa $"
#include <GeographicLib/UTMUPS.hpp>
#include <GeographicLib/Constants.hpp>
@@ -43,6 +43,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-GeoCoords.cpp
+ *
+ * <a href="GeoConvert.1.html">GeoConvert</a> is a command-line utility
+ * providing access to the functionality of GeoCoords.
**********************************************************************/
class GEOGRAPHIC_EXPORT GeoCoords {
private:
@@ -103,7 +106,8 @@ namespace GeographicLib {
* - Latitude and Longitude
* - 33.44 43.27
* - N33d26.4' E43d16.2'
- * - 43d16'12"E 33d26'24"N
+ * - 43d16'12"E 33d26'24"N
+ * - 43:16:12E 33:26:24
* - MGRS
* - 38SLC301
* - 38SLC391014
@@ -124,13 +128,17 @@ namespace GeographicLib {
* - 75W 40N
* - E-75 -40S
* .
- * are all the same position. The coordinates may be given in decimal
- * degrees, degrees and decimal minutes, degrees, minutes, seconds, etc.
- * Use d, ', and " to make off the degrees, minutes and seconds. Thus
- * - 40d30'30"
+ * are all the same position. The coordinates may be given in
+ * decimal degrees, degrees and decimal minutes, degrees, minutes,
+ * seconds, etc. Use d, ', and " to mark off the degrees,
+ * minutes and seconds. Alternatively, use : to separate these
+ * components. Thus
+ * - 40d30'30"
* - 40d30'30
* - 40d30.5'
* - 40d30.5
+ * - 40:30:30
+ * - 40:30.5
* - 40.508333333
* .
* all specify the same angle. The leading sign applies to all components
@@ -354,6 +362,8 @@ namespace GeographicLib {
*
* @param[in] prec precision (relative to about 1m)
* @param[in] swaplatlong if true give longitude first (default = false)
+ * @param[in] dmssep if non-null, use as the DMS separator character
+ * (instead of d, ', " delimiters).
* @return DMS latitude/longitude string representation.
*
* Precision specifies accuracy of representation as follows:
@@ -361,10 +371,29 @@ namespace GeographicLib {
* - prec = -4, 0.1d
* - prec = -3, 1'
* - prec = -2, 0.1'
- * - prec = -1, 1"
- * - prec = 0, 0.1" (about 3m)
- * - prec = 1, 0.01"
- * - prec = 10 (max), 10<sup>-11</sup>"
+ * - prec = -1, 1"
+ * - prec = 0, 0.1" (about 3m)
+ * - prec = 1, 0.01"
+ * - prec = 10 (max), 10<sup>-11</sup>"
+ **********************************************************************/
+ std::string DMSRepresentation(int prec, bool swaplatlong, char dmssep)
+ const;
+
+ /**
+ * String representation with latitude and longitude as degrees, minutes,
+ * seconds, and hemisphere.
+ *
+ * @param[in] prec precision (relative to about 1m)
+ * @param[in] swaplatlong if true give longitude first (default = false)
+ * @return DMS latitude/longitude string representation.
+ *
+ * <b>COMPATIBILITY NOTE:</b> This function calls
+ * DMSRepresentation(int, bool, char) const with a 3rd argument of
+ * char(0). At some point, DMSRepresentation(int, bool) const and
+ * will be withdrawn and the interface to
+ * DMSRepresentation(int, bool, char) const changed so that its
+ * arguments have default values. This will preserve source-level
+ * compatibility.
**********************************************************************/
std::string DMSRepresentation(int prec = 0, bool swaplatlong = false) const;
@@ -436,14 +465,16 @@ namespace GeographicLib {
* based on this ellipsoid.)
**********************************************************************/
Math::real Flattening() const throw() { return UTMUPS::Flattening(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
- * @return \e r the inverse flattening of the WGS84 ellipsoid.
+ * @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw()
{ return UTMUPS::InverseFlattening(); }
- ///@}
+ /// \endcond
};
} // namespace GeographicLib
diff --git a/include/GeographicLib/Geocentric.hpp b/include/GeographicLib/Geocentric.hpp
index 1deb4be..26bea45 100644
--- a/include/GeographicLib/Geocentric.hpp
+++ b/include/GeographicLib/Geocentric.hpp
@@ -2,14 +2,14 @@
* \file Geocentric.hpp
* \brief Header for GeographicLib::Geocentric class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_GEOCENTRIC_HPP)
#define GEOGRAPHICLIB_GEOCENTRIC_HPP \
- "$Id: 3d26a1dd3b0e584cd935de138af65d0e577adfcd $"
+ "$Id: e9f709c85e61f60509c492429061cba04350eea8 $"
#include <vector>
#include <algorithm>
@@ -55,6 +55,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-Geocentric.cpp
+ *
+ * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility
+ * providing access to the functionality of Geocentric and LocalCartesian.
**********************************************************************/
class GEOGRAPHIC_EXPORT Geocentric {
@@ -251,14 +254,16 @@ namespace GeographicLib {
**********************************************************************/
Math::real Flattening() const throw()
{ return Init() ? _f : Math::NaN<real>(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw()
{ return Init() ? 1/_f : Math::NaN<real>(); }
- ///@}
+ /// \endcond
/**
* A global instantiation of Geocentric with the parameters for the WGS84
diff --git a/include/GeographicLib/Geodesic.hpp b/include/GeographicLib/Geodesic.hpp
index 7a53dcc..8e7d48f 100644
--- a/include/GeographicLib/Geodesic.hpp
+++ b/include/GeographicLib/Geodesic.hpp
@@ -2,14 +2,14 @@
* \file Geodesic.hpp
* \brief Header for GeographicLib::Geodesic class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_GEODESIC_HPP)
#define GEOGRAPHICLIB_GEODESIC_HPP \
- "$Id: 94017f1e00ed1e70c28e86271a49d5f03732648f $"
+ "$Id: c1b085aadd7b8eabe0f9518b29531a38c152d495 $"
#include <GeographicLib/Constants.hpp>
@@ -121,6 +121,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-Geodesic.cpp
+ *
+ * <a href="Geod.1.html">Geod</a> is a command-line utility providing access
+ * to the functionality of Geodesic and GeodesicLine.
**********************************************************************/
class GEOGRAPHIC_EXPORT Geodesic {
@@ -813,11 +816,13 @@ namespace GeographicLib {
**********************************************************************/
Math::real Flattening() const throw() { return _f; }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw() { return 1/_f; }
+ /// \endcond
/**
* @return total area of ellipsoid in meters<sup>2</sup>. The area of a
diff --git a/include/GeographicLib/GeodesicLine.hpp b/include/GeographicLib/GeodesicLine.hpp
index e241ce0..5b6ca33 100644
--- a/include/GeographicLib/GeodesicLine.hpp
+++ b/include/GeographicLib/GeodesicLine.hpp
@@ -2,14 +2,14 @@
* \file GeodesicLine.hpp
* \brief Header for GeographicLib::GeodesicLine class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_GEODESICLINE_HPP)
#define GEOGRAPHICLIB_GEODESICLINE_HPP \
- "$Id: 40b72a48fbb1bb9f62f50561529d5809071ffe52 $"
+ "$Id: 4bbc611bc3837d78456bc227e17bea39cb443745 $"
#include <GeographicLib/Constants.hpp>
#include <GeographicLib/Geodesic.hpp>
@@ -51,6 +51,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-GeodesicLine.cpp
+ *
+ * <a href="Geod.1.html">Geod</a> is a command-line utility providing access
+ * to the functionality of Geodesic and GeodesicLine.
**********************************************************************/
class GEOGRAPHIC_EXPORT GeodesicLine {
@@ -561,12 +564,14 @@ namespace GeographicLib {
Math::real Flattening() const throw()
{ return Init() ? _f : Math::NaN<real>(); }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw()
{ return Init() ? 1/_f : Math::NaN<real>(); }
+ /// \endcond
/**
* @return \e caps the computational capabilities that this object was
diff --git a/include/GeographicLib/Geoid.hpp b/include/GeographicLib/Geoid.hpp
index abf9d76..0801434 100644
--- a/include/GeographicLib/Geoid.hpp
+++ b/include/GeographicLib/Geoid.hpp
@@ -2,14 +2,14 @@
* \file Geoid.hpp
* \brief Header for GeographicLib::Geoid class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_GEOID_HPP)
#define GEOGRAPHICLIB_GEOID_HPP \
- "$Id: 8bb7b98423fb36c6e078363bf2b5fc851bd8b1fc $"
+ "$Id: 4e4eb5941d16ad00416798703d246a6f7ef5fe46 $"
#include <string>
#include <vector>
@@ -22,6 +22,17 @@
#pragma warning (disable: 4251)
#endif
+#if !defined(PGM_PIXEL_WIDTH)
+/**
+ * The size of the pixel data in the pgm data files for the geoids. 2
+ * is the standard size corresponding to a maxval 2^16-1. Setting it
+ * to 4 uses a maxval of 2^32-1 and changes the extension for the data
+ * files from .pgm to .pgm4. Note that the format of these pgm4 files
+ * is a non-standard extension of the pgm format.
+ **********************************************************************/
+#define PGM_PIXEL_WIDTH 2
+#endif
+
namespace GeographicLib {
/**
@@ -66,11 +77,23 @@ namespace GeographicLib {
*
* Example of use:
* \include example-Geoid.cpp
+ *
+ * <a href="GeoidEval.1.html">GeoidEval</a> is a command-line utility
+ * providing access to the functionality of Geoid.
**********************************************************************/
class GEOGRAPHIC_EXPORT Geoid {
private:
typedef Math::real real;
+#if PGM_PIXEL_WIDTH != 4
+ typedef unsigned short pixel_t;
+ static const unsigned pixel_size_ = 2;
+ static const unsigned pixel_max_ = 0xffffu;
+#else
+ typedef unsigned pixel_t;
+ static const unsigned pixel_size_ = 4;
+ static const unsigned pixel_max_ = 0xffffffffu;
+#endif
static const unsigned stencilsize_ = 12;
static const unsigned nterms_ = ((3 + 1) * (3 + 2))/2; // for a cubic fit
static const real c0_;
@@ -91,7 +114,7 @@ namespace GeographicLib {
unsigned long long _datastart, _swidth;
bool _threadsafe;
// Area cache
- mutable std::vector< std::vector<unsigned short> > _data;
+ mutable std::vector< std::vector<pixel_t> > _data;
mutable bool _cache;
// NE corner and extent of cache
mutable int _xoffset, _yoffset, _xsize, _ysize;
@@ -105,7 +128,8 @@ namespace GeographicLib {
// g++ 3.x doesn't know about the cast to streamoff.
std::ios::streamoff
#endif
- (_datastart + 2ULL * (unsigned(iy)*_swidth + unsigned(ix))));
+ (_datastart +
+ pixel_size_ * (unsigned(iy)*_swidth + unsigned(ix))));
}
real rawval(int ix, int iy) const {
if (ix < 0)
@@ -127,7 +151,13 @@ namespace GeographicLib {
char a, b;
_file.get(a);
_file.get(b);
- return real((unsigned char)(a) * 256u + (unsigned char)(b));
+ unsigned r = ((unsigned char)(a) << 8) | (unsigned char)(b);
+ if (pixel_size_ == 4) {
+ _file.get(a);
+ _file.get(b);
+ r = (r << 16) | ((unsigned char)(a) << 8) | (unsigned char)(b);
+ }
+ return real(r);
}
catch (const std::exception& e) {
// throw GeographicErr("Error reading " + _filename + ": "
@@ -268,7 +298,12 @@ namespace GeographicLib {
* The latitude should be in [-90, 90] and longitude should be in [-180,
* 360]. This may throw an error because of an error reading data from
* disk. However, it will not throw if (\e lat, \e lon) is within a
- * successfully cached area.
+ * successfully cached area. As a result of the way that the geoid data is
+ * stored, the calculation of gradients can result in large quantization
+ * errors. This is particularly acute for fine grids, at high latitudes,
+ * and for the easterly gradient. If you need to compute the direction of
+ * the acceleration due to gravity accurately, you should use
+ * GravityModel::Gravity.
**********************************************************************/
Math::real operator()(real lat, real lon, real& gradn, real& grade) const {
return height(lat, lon, true, gradn, grade);
@@ -425,14 +460,16 @@ namespace GeographicLib {
* based on this ellipsoid.)
**********************************************************************/
Math::real Flattening() const throw() { return Constants::WGS84_f<real>(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the WGS84 ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw()
{ return 1/Constants::WGS84_f<real>(); }
- ///@}
+ /// \endcond
/**
* @return the default path for geoid data files.
diff --git a/include/GeographicLib/Gnomonic.hpp b/include/GeographicLib/Gnomonic.hpp
index 3c0a463..8991dc3 100644
--- a/include/GeographicLib/Gnomonic.hpp
+++ b/include/GeographicLib/Gnomonic.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_GNOMONIC_HPP)
#define GEOGRAPHICLIB_GNOMONIC_HPP \
- "$Id: 93b8247cb467dd7cbafbe10acd6b7c85f7aaf7d1 $"
+ "$Id: f2e7e429e56165c314a518fada607c225132b945 $"
#include <GeographicLib/Geodesic.hpp>
#include <GeographicLib/GeodesicLine.hpp>
@@ -98,6 +98,10 @@ namespace GeographicLib {
*
* Example of use:
* \include example-Gnomonic.cpp
+ *
+ * <a href="GeodesicProj.1.html">GeodesicProj</a> is a command-line utility
+ * providing access to the functionality of AzimuthalEquidistant, Gnomonic,
+ * and CassiniSoldner.
**********************************************************************/
class GEOGRAPHIC_EXPORT Gnomonic {
@@ -206,14 +210,16 @@ namespace GeographicLib {
* inherited from the Geodesic object used in the constructor.
**********************************************************************/
Math::real Flattening() const throw() { return _earth.Flattening(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw()
{ return _earth.InverseFlattening(); }
- ///@}
+ /// \endcond
};
} // namespace GeographicLib
diff --git a/include/GeographicLib/GravityCircle.hpp b/include/GeographicLib/GravityCircle.hpp
index 43b2dca..c35cdd5 100644
--- a/include/GeographicLib/GravityCircle.hpp
+++ b/include/GeographicLib/GravityCircle.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_GRAVITYCIRCLE_HPP)
#define GEOGRAPHICLIB_GRAVITYCIRCLE_HPP \
- "$Id: e7a230fffb6fcb413694f2b4ece36ae44627ef33 $"
+ "$Id: 6ae0869411185a48c9f55016e6d1fb14e69aaac1 $"
#include <string>
#include <vector>
@@ -35,6 +35,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-GravityCircle.cpp
+ *
+ * <a href="Gravity.1.html">Gravity</a> is a command-line utility providing
+ * access to the functionality of GravityModel and GravityCircle.
**********************************************************************/
class GEOGRAPHIC_EXPORT GravityCircle {
diff --git a/include/GeographicLib/GravityModel.hpp b/include/GeographicLib/GravityModel.hpp
index 4d0cf79..937525e 100644
--- a/include/GeographicLib/GravityModel.hpp
+++ b/include/GeographicLib/GravityModel.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_GRAVITYMODEL_HPP)
#define GEOGRAPHICLIB_GRAVITYMODEL_HPP \
- "$Id: e1cd05f6303c46250b29d12bc51c3497d06508ae $"
+ "$Id: e1a573fb0148fa5bc408b2dbdb096d4cd3091bac $"
#include <string>
#include <sstream>
@@ -79,6 +79,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-GravityModel.cpp
+ *
+ * <a href="Gravity.1.html">Gravity</a> is a command-line utility providing
+ * access to the functionality of GravityModel and GravityCircle.
**********************************************************************/
class GEOGRAPHIC_EXPORT GravityModel {
diff --git a/include/GeographicLib/LambertConformalConic.hpp b/include/GeographicLib/LambertConformalConic.hpp
index 42c87bc..1e2256e 100644
--- a/include/GeographicLib/LambertConformalConic.hpp
+++ b/include/GeographicLib/LambertConformalConic.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP)
#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP \
- "$Id: fcf9176f0a356995138754581297173aa3491693 $"
+ "$Id: 9aef04f77098543818681966f13ef97ea47dedb4 $"
#include <algorithm>
#include <GeographicLib/Constants.hpp>
@@ -51,6 +51,10 @@ namespace GeographicLib {
* system (<a href="http://www.spatialreference.org/ref/epsg/3364/">
* EPSG:3364</a>) is obtained by:
* \include example-LambertConformalConic.cpp
+ *
+ * <a href="ConicProj.1.html">ConicProj</a> is a command-line utility
+ * providing access to the functionality of LambertConformalConic and
+ * AlbersEqualArea.
**********************************************************************/
class GEOGRAPHIC_EXPORT LambertConformalConic {
private:
@@ -112,9 +116,9 @@ namespace GeographicLib {
static inline real Dsinh(real x, real y, real sx, real sy, real cx, real cy)
// sx = sinh(x), cx = cosh(x)
throw() {
- // real t = (x - y)/2, c = sqrt((1 + cx) * (1 + cy));
+ // real t = (x - y)/2, c = sqrt((1 + cx) * (1 + cy));
// return (t != 0 ? sinh(t)/t : real(1)) * (c + sx * sy / c) /2;
- real t = (x - y)/2;
+ real t = (x - y)/2;
return (t != 0 ? sinh(t)/t : real(1)) * sqrt((sx * sy + cx * cy + 1) /2);
}
// Dasinh(x,y) = asinh((x-y)*(x+y)/(x*sqrt(1+y^2)+y*sqrt(1+x^2)))/(x-y)
@@ -281,16 +285,18 @@ namespace GeographicLib {
Math::real MajorRadius() const throw() { return _a; }
/**
- * @return \e f the flattening of the ellipsoid. This is the
+ * @return \e f the flattening of the ellipsoid. This is the
* value used in the constructor.
**********************************************************************/
Math::real Flattening() const throw() { return _f; }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw() { return 1/_f; }
+ /// \endcond
/**
* @return latitude of the origin for the projection (degrees).
diff --git a/include/GeographicLib/LocalCartesian.hpp b/include/GeographicLib/LocalCartesian.hpp
index 6e4f6f0..450b172 100644
--- a/include/GeographicLib/LocalCartesian.hpp
+++ b/include/GeographicLib/LocalCartesian.hpp
@@ -2,14 +2,14 @@
* \file LocalCartesian.hpp
* \brief Header for GeographicLib::LocalCartesian class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_LOCALCARTESIAN_HPP)
#define GEOGRAPHICLIB_LOCALCARTESIAN_HPP \
- "$Id: f4bfc3dad6836b6107cf78e695349a9e9fa5530d $"
+ "$Id: 133014a30695adf3bdea9f4b52613fab458c505a $"
#include <GeographicLib/Geocentric.hpp>
#include <GeographicLib/Constants.hpp>
@@ -31,6 +31,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-LocalCartesian.cpp
+ *
+ * <a href="CartConvert.1.html">CartConvert</a> is a command-line utility
+ * providing access to the functionality of Geocentric and LocalCartesian.
**********************************************************************/
class GEOGRAPHIC_EXPORT LocalCartesian {
@@ -221,14 +224,16 @@ namespace GeographicLib {
* inherited from the Geocentric object used in the constructor.
**********************************************************************/
Math::real Flattening() const throw() { return _earth.Flattening(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw()
{ return _earth.InverseFlattening(); }
- ///@}
+ /// \endcond
};
} // namespace GeographicLib
diff --git a/include/GeographicLib/MGRS.hpp b/include/GeographicLib/MGRS.hpp
index a381535..d02956d 100644
--- a/include/GeographicLib/MGRS.hpp
+++ b/include/GeographicLib/MGRS.hpp
@@ -2,13 +2,13 @@
* \file MGRS.hpp
* \brief Header for GeographicLib::MGRS class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_MGRS_HPP)
-#define GEOGRAPHICLIB_MGRS_HPP "$Id: c0374fd149f358fa6d0e52533206c1e5b0c49dec $"
+#define GEOGRAPHICLIB_MGRS_HPP "$Id: 80e08da6eca9d9cf92c5adad148c64302df2573d $"
#include <sstream>
#include <GeographicLib/Constants.hpp>
@@ -271,14 +271,16 @@ namespace GeographicLib {
* based on this ellipsoid.)
**********************************************************************/
static Math::real Flattening() throw() { return UTMUPS::Flattening(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the WGS84 ellipsoid.
**********************************************************************/
static Math::real InverseFlattening() throw()
{ return UTMUPS::InverseFlattening(); }
- ///@}
+ /// \endcond
};
} // namespace GeographicLib
diff --git a/include/GeographicLib/MagneticCircle.hpp b/include/GeographicLib/MagneticCircle.hpp
index c680f04..f450fd4 100644
--- a/include/GeographicLib/MagneticCircle.hpp
+++ b/include/GeographicLib/MagneticCircle.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_MAGNETICCIRCLE_HPP)
#define GEOGRAPHICLIB_MAGNETICCIRCLE_HPP \
- "$Id: 3884656adfb278af41423d4df4826b1b928f55f1 $"
+ "$Id: 5b3adc58d894f36ca4206864eb565541f24ff492 $"
#include <string>
#include <vector>
@@ -31,6 +31,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-MagneticCircle.cpp
+ *
+ * <a href="MagneticField.1.html">MagneticField</a> is a command-line utility
+ * providing access to the functionality of MagneticModel and MagneticCircle.
**********************************************************************/
class GEOGRAPHIC_EXPORT MagneticCircle {
diff --git a/include/GeographicLib/MagneticModel.hpp b/include/GeographicLib/MagneticModel.hpp
index 3d2d3d7..e8384c8 100644
--- a/include/GeographicLib/MagneticModel.hpp
+++ b/include/GeographicLib/MagneticModel.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_MAGNETICMODEL_HPP)
#define GEOGRAPHICLIB_MAGNETICMODEL_HPP \
- "$Id: 7e3fd1db9a29b713c7ce63584e8fbfd2b28914e2 $"
+ "$Id: 7f8c59ee3cdbfce252d1172c1bb4d7db7cf5ef38 $"
#include <string>
#include <sstream>
@@ -56,6 +56,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-MagneticModel.cpp
+ *
+ * <a href="MagneticField.1.html">MagneticField</a> is a command-line utility
+ * providing access to the functionality of MagneticModel and MagneticCircle.
**********************************************************************/
class GEOGRAPHIC_EXPORT MagneticModel {
diff --git a/include/GeographicLib/Math.hpp b/include/GeographicLib/Math.hpp
index 3aa45a2..66dc1a1 100644
--- a/include/GeographicLib/Math.hpp
+++ b/include/GeographicLib/Math.hpp
@@ -2,8 +2,8 @@
* \file Math.hpp
* \brief Header for GeographicLib::Math class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
@@ -12,16 +12,16 @@
#include <GeographicLib/Constants.hpp>
#if !defined(GEOGRAPHICLIB_MATH_HPP)
-#define GEOGRAPHICLIB_MATH_HPP "$Id: 045fb188fcc3fe808fed0c9d5fa965861d2735d1 $"
+#define GEOGRAPHICLIB_MATH_HPP "$Id: edd244e4c5c74e696096c2b6d598728957a0d36d $"
/**
- * Are C++0X math functions available?
+ * Are C++11 math functions available?
**********************************************************************/
-#if !defined(GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if !defined(GEOGRAPHICLIB_CPLUSPLUS11_MATH)
# if defined(__GXX_EXPERIMENTAL_CXX0X__)
-# define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 1
+# define GEOGRAPHICLIB_CPLUSPLUS11_MATH 1
# else
-# define GEOGRAPHICLIB_CPLUSPLUS0X_MATH 0
+# define GEOGRAPHICLIB_CPLUSPLUS11_MATH 0
# endif
#endif
@@ -146,13 +146,13 @@ namespace GeographicLib {
b = (std::min)(x, y) / (a ? a : 1);
return a * std::sqrt(1 + b * b);
}
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
template<typename T> static inline T hypot(T x, T y) throw()
{ return std::hypot(x, y); }
#elif defined(_MSC_VER)
static inline double hypot(double x, double y) throw()
{ return _hypot(x, y); }
-#if (_MSC_VER < 1400)
+#if _MSC_VER < 1400
// Visual C++ 7.1/VS .NET 2003 does not have _hypotf()
static inline float hypot(float x, float y) throw()
{ return float(_hypot(x, y)); }
@@ -176,7 +176,7 @@ namespace GeographicLib {
#endif
#endif
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
/**
* exp(\e x) - 1 accurate near \e x = 0. This is taken from
* N. J. Higham, Accuracy and Stability of Numerical Algorithms, 2nd
@@ -194,9 +194,9 @@ namespace GeographicLib {
// mathematically reduces to exp(x) - 1, and the factor z/log(y) = (y -
// 1)/log(y) is a slowly varying quantity near y = 1 and is accurately
// computed.
- return std::abs(x) > 1 ? z : (z == 0 ? x : x * z / std::log(y));
+ return std::abs(x) > 1 ? z : (z == 0 ? x : x * z / std::log(y));
}
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
template<typename T> static inline T expm1(T x) throw()
{ return std::expm1(x); }
#else
@@ -208,7 +208,7 @@ namespace GeographicLib {
#endif
#endif
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
/**
* log(1 + \e x) accurate near \e x = 0.
*
@@ -231,7 +231,7 @@ namespace GeographicLib {
// (log(y)/z) introduces little additional error.
return z == 0 ? x : x * std::log(y) / z;
}
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
template<typename T> static inline T log1p(T x) throw()
{ return std::log1p(x); }
#else
@@ -243,7 +243,7 @@ namespace GeographicLib {
#endif
#endif
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
/**
* The inverse hyperbolic sine function. This is defined in terms of
* Math::log1p(\e x) in order to maintain accuracy near \e x = 0. In
@@ -258,7 +258,7 @@ namespace GeographicLib {
y = log1p(y * (1 + y/(hypot(T(1), y) + 1)));
return x < 0 ? -y : y;
}
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
template<typename T> static inline T asinh(T x) throw()
{ return std::asinh(x); }
#else
@@ -270,7 +270,7 @@ namespace GeographicLib {
#endif
#endif
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
/**
* The inverse hyperbolic tangent function. This is defined in terms of
* Math::log1p(\e x) in order to maintain accuracy near \e x = 0. In
@@ -285,7 +285,7 @@ namespace GeographicLib {
y = log1p(2 * y/(1 - y))/2;
return x < 0 ? -y : y;
}
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
template<typename T> static inline T atanh(T x) throw()
{ return std::atanh(x); }
#else
@@ -297,7 +297,7 @@ namespace GeographicLib {
#endif
#endif
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
/**
* The cube root function.
*
@@ -309,7 +309,7 @@ namespace GeographicLib {
T y = std::pow(std::abs(x), 1/T(3)); // Return the real cube root
return x < 0 ? -y : y;
}
-#elif GEOGRAPHICLIB_CPLUSPLUS0X_MATH
+#elif GEOGRAPHICLIB_CPLUSPLUS11_MATH
template<typename T> static inline T cbrt(T x) throw()
{ return std::cbrt(x); }
#else
@@ -330,7 +330,7 @@ namespace GeographicLib {
template<typename T> static inline bool isfinite(T x) throw() {
#if defined(DOXYGEN)
return std::abs(x) <= (std::numeric_limits<T>::max)();
-#elif (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#elif (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
return _finite(x) != 0;
#else
return std::isfinite(x);
@@ -361,7 +361,7 @@ namespace GeographicLib {
* @return true if argument is a NaN.
**********************************************************************/
template<typename T> static inline bool isnan(T x) throw() {
-#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS0X_MATH)
+#if defined(DOXYGEN) || (defined(_MSC_VER) && !GEOGRAPHICLIB_CPLUSPLUS11_MATH)
return x != x;
#else
return std::isnan(x);
diff --git a/include/GeographicLib/OSGB.hpp b/include/GeographicLib/OSGB.hpp
index 8383efe..6d3bcad 100644
--- a/include/GeographicLib/OSGB.hpp
+++ b/include/GeographicLib/OSGB.hpp
@@ -8,7 +8,7 @@
**********************************************************************/
#if !defined(GEOGRAPHICLIB_OSGB_HPP)
-#define GEOGRAPHICLIB_OSGB_HPP "$Id: a8dbde4065691daa15563ea55c23eab4b7d8e967 $"
+#define GEOGRAPHICLIB_OSGB_HPP "$Id: e91367e693ad63bb500c953e9c21445bef017464 $"
#include <string>
#include <sstream>
@@ -192,13 +192,15 @@ namespace GeographicLib {
* projection is based on this ellipsoid.)
**********************************************************************/
static Math::real Flattening() throw()
- { return real(20923713 - 20853810) / real(20923713); }
+ { return real(20923713 - 20853810) / real(20923713); }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the Airy 1830 ellipsoid.
**********************************************************************/
static Math::real InverseFlattening() throw() { return 1/Flattening(); }
+ /// \endcond
/**
* @return \e k0 central scale for the OSGB projection (0.9996012717).
diff --git a/include/GeographicLib/PolarStereographic.hpp b/include/GeographicLib/PolarStereographic.hpp
index 2147f10..759648d 100644
--- a/include/GeographicLib/PolarStereographic.hpp
+++ b/include/GeographicLib/PolarStereographic.hpp
@@ -2,14 +2,14 @@
* \file PolarStereographic.hpp
* \brief Header for GeographicLib::PolarStereographic class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP)
#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP \
- "$Id: 4bd816aed80f08d9369cd9fee96df0db2f9eedb6 $"
+ "$Id: 07add8492c46e42012007a8738060abc902a5504 $"
#include <GeographicLib/Constants.hpp>
@@ -148,11 +148,13 @@ namespace GeographicLib {
**********************************************************************/
Math::real Flattening() const throw() { return _f; }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw() { return 1/_f; }
+ /// \endcond
/**
* The central scale for the projection. This is the value of \e k0 used
diff --git a/include/GeographicLib/PolygonArea.hpp b/include/GeographicLib/PolygonArea.hpp
index 93d7557..3e029c5 100644
--- a/include/GeographicLib/PolygonArea.hpp
+++ b/include/GeographicLib/PolygonArea.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_POLYGONAREA_HPP)
#define GEOGRAPHICLIB_POLYGONAREA_HPP \
- "$Id: 8c532d61c2cec114c7bf224b2f80a1c249748f1b $"
+ "$Id: 7a339f312a9c977b9fccad3c0c8bfa9009d863e2 $"
#include <GeographicLib/Geodesic.hpp>
#include <GeographicLib/Constants.hpp>
@@ -45,6 +45,9 @@ namespace GeographicLib {
*
* Example of use:
* \include example-PolygonArea.cpp
+ *
+ * <a href="Planimeter.1.html">Planimeter</a> is a command-line utility
+ * providing access to the functionality of PolygonArea.
**********************************************************************/
class GEOGRAPHIC_EXPORT PolygonArea {
diff --git a/include/GeographicLib/SphericalEngine.hpp b/include/GeographicLib/SphericalEngine.hpp
index ef5e419..728d2de 100644
--- a/include/GeographicLib/SphericalEngine.hpp
+++ b/include/GeographicLib/SphericalEngine.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_SPHERICALENGINE_HPP)
#define GEOGRAPHICLIB_SPHERICALENGINE_HPP \
- "$Id: dae9ba0d660c070c0f28715de87ed20f79808793 $"
+ "$Id: f48320a694ecf901d997b23d32ea625e589f9534 $"
#include <vector>
#include <istream>
@@ -124,7 +124,7 @@ namespace GeographicLib {
, _nmx(nmx)
, _mmx(mmx)
, _Cnm(C.begin())
- , _Snm(S.begin() - (_N + 1))
+ , _Snm(S.begin())
{
if (!(_N >= _nmx && _nmx >= _mmx && _mmx >= -1))
throw GeographicErr("Bad indices for coeff");
@@ -150,7 +150,7 @@ namespace GeographicLib {
, _nmx(N)
, _mmx(N)
, _Cnm(C.begin())
- , _Snm(S.begin() - (_N + 1))
+ , _Snm(S.begin())
{
if (!(_N >= -1))
throw GeographicErr("Bad indices for coeff");
@@ -193,7 +193,7 @@ namespace GeographicLib {
* @param[in] k the one-dimensional index.
* @return the value of the \e S coefficient.
**********************************************************************/
- inline Math::real Sv(int k) const { return *(_Snm + k); }
+ inline Math::real Sv(int k) const { return *(_Snm + (k - (_N + 1))); }
/**
* An element of \e C with checking.
*
@@ -217,7 +217,7 @@ namespace GeographicLib {
* and \e m are in range else 0.
**********************************************************************/
inline Math::real Sv(int k, int n, int m, real f) const
- { return m > _mmx || n > _nmx ? 0 : *(_Snm + k) * f; }
+ { return m > _mmx || n > _nmx ? 0 : *(_Snm + (k - (_N + 1))) * f; }
/**
* The size of the coefficient vector for the cosine terms.
diff --git a/include/GeographicLib/SphericalHarmonic.hpp b/include/GeographicLib/SphericalHarmonic.hpp
index a0a3881..ca7a2bf 100644
--- a/include/GeographicLib/SphericalHarmonic.hpp
+++ b/include/GeographicLib/SphericalHarmonic.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_SPHERICALHARMONIC_HPP)
#define GEOGRAPHICLIB_SPHERICALHARMONIC_HPP \
- "$Id: cd1abfd4b08774a17c141bb6fbb07b04d4658791 $"
+ "$Id: 6fa804c46efd01670cfb7835dd022791b60d2942 $"
#include <vector>
#include <GeographicLib/Constants.hpp>
@@ -209,7 +209,7 @@ namespace GeographicLib {
* This routine requires constant memory and thus never throws an
* exception.
**********************************************************************/
- Math::real operator()(real x, real y, real z) const throw() {
+ Math::real operator()(real x, real y, real z) const throw() {
real f[] = {1};
real v = 0;
real dummy;
diff --git a/include/GeographicLib/TransverseMercator.hpp b/include/GeographicLib/TransverseMercator.hpp
index d848dbf..cec7a35 100644
--- a/include/GeographicLib/TransverseMercator.hpp
+++ b/include/GeographicLib/TransverseMercator.hpp
@@ -2,14 +2,14 @@
* \file TransverseMercator.hpp
* \brief Header for GeographicLib::TransverseMercator class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP)
#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP \
- "$Id: 565dc83110421e3bc14d7f402359c850c6649c57 $"
+ "$Id: 94bb078aa13d2d7392cee5498aae7df6e9914e4a $"
#include <GeographicLib/Constants.hpp>
@@ -70,6 +70,10 @@ namespace GeographicLib {
*
* Example of use:
* \include example-TransverseMercator.cpp
+ *
+ * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a
+ * command-line utility providing access to the functionality of
+ * TransverseMercator and TransverseMercatorExact.
**********************************************************************/
class GEOGRAPHIC_EXPORT TransverseMercator {
@@ -176,11 +180,13 @@ namespace GeographicLib {
**********************************************************************/
Math::real Flattening() const throw() { return _f; }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw() { return 1/_f; }
+ /// \endcond
/**
* @return \e k0 central scale for the projection. This is the value of \e
diff --git a/include/GeographicLib/TransverseMercatorExact.hpp b/include/GeographicLib/TransverseMercatorExact.hpp
index 1a4bd56..8f3958c 100644
--- a/include/GeographicLib/TransverseMercatorExact.hpp
+++ b/include/GeographicLib/TransverseMercatorExact.hpp
@@ -2,14 +2,14 @@
* \file TransverseMercatorExact.hpp
* \brief Header for GeographicLib::TransverseMercatorExact class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP)
#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP \
- "$Id: 6e85377964a67cffd3f69758de39a7a1d9aae42a $"
+ "$Id: bd96340b9dc3e7bfd09d4374296a75f4c6e00fc3 $"
#include <GeographicLib/Constants.hpp>
#include <GeographicLib/EllipticFunction.hpp>
@@ -70,6 +70,10 @@ namespace GeographicLib {
*
* Example of use:
* \include example-TransverseMercatorExact.cpp
+ *
+ * <a href="TransverseMercatorProj.1.html">TransverseMercatorProj</a> is a
+ * command-line utility providing access to the functionality of
+ * TransverseMercator and TransverseMercatorExact.
**********************************************************************/
class GEOGRAPHIC_EXPORT TransverseMercatorExact {
@@ -241,11 +245,13 @@ namespace GeographicLib {
**********************************************************************/
Math::real Flattening() const throw() { return _f; }
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the ellipsoid.
**********************************************************************/
Math::real InverseFlattening() const throw() { return 1/_f; }
+ /// \endcond
/**
* @return \e k0 central scale for the projection. This is the value of \e
diff --git a/include/GeographicLib/UTMUPS.hpp b/include/GeographicLib/UTMUPS.hpp
index 6847cc9..d15e790 100644
--- a/include/GeographicLib/UTMUPS.hpp
+++ b/include/GeographicLib/UTMUPS.hpp
@@ -2,14 +2,14 @@
* \file UTMUPS.hpp
* \brief Header for GeographicLib::UTMUPS class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#if !defined(GEOGRAPHICLIB_UTMUPS_HPP)
#define GEOGRAPHICLIB_UTMUPS_HPP \
- "$Id: 617b521c07044fd4d88b74e716ba7751fb1fdfdc $"
+ "$Id: a529ed8aeaeffb02994254bbc7eb1209aa41b9ca $"
#include <sstream>
#include <GeographicLib/Constants.hpp>
@@ -303,14 +303,16 @@ namespace GeographicLib {
**********************************************************************/
static Math::real Flattening() throw()
{ return Constants::WGS84_f<real>(); }
+ ///@}
+ /// \cond SKIP
/**
* <b>DEPRECATED</b>
* @return \e r the inverse flattening of the WGS84 ellipsoid.
**********************************************************************/
static Math::real InverseFlattening() throw()
{ return 1/Constants::WGS84_f<real>(); }
- ///@}
+ /// \endcond
};
} // namespace GeographicLib
diff --git a/include/GeographicLib/Utility.hpp b/include/GeographicLib/Utility.hpp
index c2b5377..f622c2f 100644
--- a/include/GeographicLib/Utility.hpp
+++ b/include/GeographicLib/Utility.hpp
@@ -9,7 +9,7 @@
#if !defined(GEOGRAPHICLIB_UTILITY_HPP)
#define GEOGRAPHICLIB_UTILITY_HPP \
- "$Id: 8a1cdf4f0de95da280d56bbf8ea299dad043f0b2 $"
+ "$Id: 92c92fcb8ea92116fed01909c2611934b708e4cd $"
#include <GeographicLib/Constants.hpp>
#include <iomanip>
@@ -395,7 +395,7 @@ namespace GeographicLib {
for (int j = 0; j < n; ++j)
// fix endian-ness and cast to IntT
array[i++] = IntT(bigendp == Math::bigendian ? buffer[j] :
- Math::swab<IntT>(buffer[j]));
+ Math::swab<ExtT>(buffer[j]));
k -= n;
}
}
@@ -421,6 +421,64 @@ namespace GeographicLib {
}
/**
+ * Write data in an array of type IntT as type ExtT to a binary stream.
+ * The data in the file is in (bigendp ? big : little)-endian format.
+ *
+ * @tparam ExtT the type of the objects in the binary stream (external).
+ * @tparam IntT the type of the objects in the array (internal).
+ * @tparam bigendp true if the external storage format is big-endian.
+ * @param[out] str the output stream for the data of type ExtT (external).
+ * @param[in] array the input array of type IntT (internal).
+ * @param[in] num the size of the array.
+ **********************************************************************/
+ template<typename ExtT, typename IntT, bool bigendp>
+ static inline void writearray(std::ostream& str,
+ const IntT array[], size_t num) {
+ if (sizeof(IntT) == sizeof(ExtT) &&
+ std::numeric_limits<IntT>::is_integer ==
+ std::numeric_limits<ExtT>::is_integer &&
+ bigendp == Math::bigendian) {
+ // Data is compatible (including endian-ness).
+ str.write(reinterpret_cast<const char *>(array), num * sizeof(ExtT));
+ if (!str.good())
+ throw GeographicErr("Failure writing data");
+ } else {
+ const int bufsize = 1024; // write this many values at a time
+ ExtT buffer[bufsize]; // temporary buffer
+ int k = int(num); // data values left to write
+ int i = 0; // index into output array
+ while (k) {
+ int n = (std::min)(k, bufsize);
+ for (int j = 0; j < n; ++j)
+ // cast to ExtT and fix endian-ness
+ buffer[j] = bigendp == Math::bigendian ? ExtT(array[i++]) :
+ Math::swab<ExtT>(ExtT(array[i++]));
+ str.write(reinterpret_cast<const char *>(buffer), n * sizeof(ExtT));
+ if (!str.good())
+ throw GeographicErr("Failure writing data");
+ k -= n;
+ }
+ }
+ return;
+ }
+
+ /**
+ * Write data in an array of type IntT as type ExtT to a binary stream.
+ * The data in the file is in (bigendp ? big : little)-endian format.
+ *
+ * @tparam ExtT the type of the objects in the binary stream (external).
+ * @tparam IntT the type of the objects in the array (internal).
+ * @tparam bigendp true if the external storage format is big-endian.
+ * @param[out] str the output stream for the data of type ExtT (external).
+ * @param[in] array the input vector of type IntT (internal).
+ **********************************************************************/
+ template<typename ExtT, typename IntT, bool bigendp>
+ static inline void writearray(std::ostream& str,
+ std::vector<IntT>& array) {
+ writearray<ExtT, IntT, bigendp>(str, &array[0], array.size());
+ }
+
+ /**
* Parse a KEY VALUE line.
*
* @param[in] line the input line.
diff --git a/ltmain.sh b/ltmain.sh
index aa5624c..78cf017 100755
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -8050,7 +8050,7 @@ EOF
elif test -n "$runpath_var"; then
case "$perm_rpath " in
*" $libdir "*) ;;
- *) func_apped perm_rpath " $libdir" ;;
+ *) func_append perm_rpath " $libdir" ;;
esac
fi
done
diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt
index 27e1587..17e0ee2 100644
--- a/man/CMakeLists.txt
+++ b/man/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: 239e16a5c5199ee854f180c8774aaa1b48c5017f $
+# $Id: c8cbcc51270dab8273fb82cf8944118b40cea1fa $
# The man pages are maintained as .pod (plain old documentatoin) files.
# In maintainer mode, there are used to create real man pages (extension
@@ -13,9 +13,9 @@ if (MAINTAINER)
add_custom_target (distrib-man)
add_custom_target (man ALL)
set (MANDIR ${CMAKE_CURRENT_BINARY_DIR})
-else (MAINTAINER)
+else ()
set (MANDIR ${CMAKE_CURRENT_SOURCE_DIR})
-endif (MAINTAINER)
+endif ()
set (MANPAGES)
set (USAGE)
@@ -33,15 +33,15 @@ foreach (TOOL ${TOOLS})
if (MAINTAINER)
add_custom_command (OUTPUT ${TOOL}.1
COMMAND pod2man --center=\"GeographicLib Utilities\"
- --release=\"GeographicLib ${GeographicLib_VERSION}\"
+ --release=\"GeographicLib ${GeographicLib_VERSION}\"
${CMAKE_CURRENT_SOURCE_DIR}/${TOOL}.pod > ${TOOL}.1
COMMENT "Building man page for ${TOOL}"
MAIN_DEPENDENCY ${TOOL}.pod)
add_custom_command (OUTPUT ${TOOL}.1.html
COMMAND
pod2html --noindex ${CMAKE_CURRENT_SOURCE_DIR}/${TOOL}.pod |
- sed -e 's%<head>%<head><link href="http://search.cpan.org/s/style.css" rel="stylesheet" type="text/css">%'
- -e 's%<code>\\\([^<>]*\\\)\(\\\(.\\\)\)</code>%<a href="\\1.\\2.html">&</a>%'g > ${TOOL}.1.html
+ sed -e 's%<head>%<head><link href="http://search.cpan.org/s/style.css" rel="stylesheet" type="text/css">%'
+ -e 's%<code>\\\([^<>]*\\\)\(\\\(.\\\)\)</code>%<a href="\\1.\\2.html">&</a>%'g > ${TOOL}.1.html
COMMENT "Building html version of man page for ${TOOL}"
MAIN_DEPENDENCY ${TOOL}.pod)
add_custom_command (OUTPUT ${TOOL}.usage
@@ -49,8 +49,8 @@ foreach (TOOL ${TOOLS})
${CMAKE_CURRENT_SOURCE_DIR}/${TOOL}.pod > ${TOOL}.usage
COMMENT "Building usage code for ${TOOL}"
MAIN_DEPENDENCY ${TOOL}.pod)
- endif (MAINTAINER)
-endforeach (TOOL)
+ endif ()
+endforeach ()
# Add the extra maintainer tasks into the dependency list. The
# distrib-man target copies the derived documentation files into the
@@ -70,7 +70,7 @@ if (MAINTAINER)
cmp "$$f" ${CMAKE_CURRENT_SOURCE_DIR}/`basename "$$f"` >/dev/null 2>&1||
install -m 644 "$$f" ${CMAKE_CURRENT_SOURCE_DIR}\; done
COMMENT "Installing man documentation page in source tree")
-endif (MAINTAINER)
+endif ()
# Install the man pages.
install (FILES ${MANPAGES} DESTINATION share/man/man1)
diff --git a/man/CartConvert.1 b/man/CartConvert.1
index e7686a1..74f4c24 100644
--- a/man/CartConvert.1
+++ b/man/CartConvert.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "CARTCONVERT 1"
-.TH CARTCONVERT 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH CARTCONVERT 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -134,8 +134,10 @@ CartConvert \-\- convert geodetic coordinates to geocentric or local cartesian
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBCartConvert\fR [ \fB\-r\fR ] [ \fB\-l\fR \fIlat0\fR \fIlon0\fR \fIh0\fR ] [ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -169,6 +171,13 @@ the flattening is \fIf\fR. Setting \fIf\fR = 0 results in a sphere. Specify
is allowed for \fIf\fR. (Also, if \fIf\fR > 1, the flattening is set to
1/\fIf\fR.) By default, the \s-1WGS84\s0 ellipsoid is used, \fIa\fR = 6378137 m,
\&\fIf\fR = 1/298.257223563.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -185,8 +194,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/CartConvert.1.html b/man/CartConvert.1.html
index 6670d9f..a10e55c 100644
--- a/man/CartConvert.1.html
+++ b/man/CartConvert.1.html
@@ -44,8 +44,10 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>CartConvert</strong> [ <strong>-r</strong> ] [ <strong>-l</strong> <em>lat0</em> <em>lon0</em> <em>h0</em> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -87,6 +89,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
1/<em>f</em>.) By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
<em>f</em> = 1/298.257223563.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -112,8 +123,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/man/CartConvert.pod b/man/CartConvert.pod
index 7c811b6..f65c4f9 100644
--- a/man/CartConvert.pod
+++ b/man/CartConvert.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 6446fad6a0e4dc4f0f6adf3798de4bbf8e81621a $
+=for comment $Id: f3d0184303d2278f369eeb6f8fae2726c6bbfaf4 $
=head1 NAME
@@ -7,8 +7,10 @@ CartConvert -- convert geodetic coordinates to geocentric or local cartesian
=head1 SYNOPSIS
B<CartConvert> [ B<-r> ] [ B<-l> I<lat0> I<lon0> I<h0> ] [ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -48,6 +50,14 @@ is allowed for I<f>. (Also, if I<f> E<gt> 1, the flattening is set to
1/I<f>.) By default, the WGS84 ellipsoid is used, I<a> = 6378137 m,
I<f> = 1/298.257223563.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -68,8 +78,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
diff --git a/man/CartConvert.usage b/man/CartConvert.usage
index 350fa6f..3eba161 100644
--- a/man/CartConvert.usage
+++ b/man/CartConvert.usage
@@ -1,9 +1,10 @@
int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
-" CartConvert [ -r ] [ -l lat0 lon0 h0 ] [ -e a f ] [ --version | -h |\n"
-" --help ] [ --input-file infile | --input-string instring ] [\n"
-" --output-file outfile ]\n"
+" CartConvert [ -r ] [ -l lat0 lon0 h0 ] [ -e a f ] [ --comment-delimiter\n"
+" commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+" --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
+" outfile ]\n"
"\n"
"For full documentation type:\n"
" CartConvert --help\n"
@@ -16,9 +17,10 @@ int usage(int retval, bool brief) {
" cartesian\n"
"\n"
"SYNOPSIS\n"
-" CartConvert [ -r ] [ -l lat0 lon0 h0 ] [ -e a f ] [ --version | -h |\n"
-" --help ] [ --input-file infile | --input-string instring ] [\n"
-" --output-file outfile ]\n"
+" CartConvert [ -r ] [ -l lat0 lon0 h0 ] [ -e a f ] [ --comment-delimiter\n"
+" commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+" --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
+" outfile ]\n"
"\n"
"DESCRIPTION\n"
" Convert geodetic coordinates to either geocentric or local cartesian\n"
@@ -48,6 +50,13 @@ int usage(int retval, bool brief) {
" default, the WGS84 ellipsoid is used, a = 6378137 m, f =\n"
" 1/298.257223563.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -62,8 +71,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
diff --git a/man/ConicProj.1 b/man/ConicProj.1
index 844bb76..6544a0b 100644
--- a/man/ConicProj.1
+++ b/man/ConicProj.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "CONICPROJ 1"
-.TH CONICPROJ 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH CONICPROJ 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -135,8 +135,11 @@ ConicProj \-\- perform conic projections
.IX Header "SYNOPSIS"
\&\fBConicProj\fR ( \fB\-c\fR | \fB\-a\fR ) \fIlat1\fR \fIlat2\fR
[ \fB\-l\fR \fIlon0\fR ] [ \fB\-k\fR \fIk1\fR ] [ \fB\-r\fR ]
-[ \fB\-e\fR \fIa\fR \fIf\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -198,6 +201,13 @@ the flattening is \fIf\fR. Setting \fIf\fR = 0 results in a sphere. Specify
is allowed for \fIf\fR. (Also, if \fIf\fR > 1, the flattening is set to
1/\fIf\fR.) By default, the \s-1WGS84\s0 ellipsoid is used, \fIa\fR = 6378137 m,
\&\fIf\fR = 1/298.257223563.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -214,8 +224,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/ConicProj.1.html b/man/ConicProj.1.html
index 70c00ed..056a59f 100644
--- a/man/ConicProj.1.html
+++ b/man/ConicProj.1.html
@@ -44,8 +44,11 @@
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>ConicProj</strong> ( <strong>-c</strong> | <strong>-a</strong> ) <em>lat1</em> <em>lat2</em>
[ <strong>-l</strong> <em>lon0</em> ] [ <strong>-k</strong> <em>k1</em> ] [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -122,6 +125,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
1/<em>f</em>.) By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
<em>f</em> = 1/298.257223563.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -147,8 +159,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/man/ConicProj.pod b/man/ConicProj.pod
index c7dc82d..be5b8c5 100644
--- a/man/ConicProj.pod
+++ b/man/ConicProj.pod
@@ -1,4 +1,4 @@
-=for comment $Id: fb20e2c28b200e5fda7dafc62cd4e89219d36c8c $
+=for comment $Id: 79921d487c55a107062161cc0d60c48527eb8e05 $
=head1 NAME
@@ -8,8 +8,11 @@ ConicProj -- perform conic projections
B<ConicProj> ( B<-c> | B<-a> ) I<lat1> I<lat2>
[ B<-l> I<lon0> ] [ B<-k> I<k1> ] [ B<-r> ]
-[ B<-e> I<a> I<f> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -81,6 +84,14 @@ is allowed for I<f>. (Also, if I<f> E<gt> 1, the flattening is set to
1/I<f>.) By default, the WGS84 ellipsoid is used, I<a> = 6378137 m,
I<f> = 1/298.257223563.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -101,8 +112,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
diff --git a/man/ConicProj.usage b/man/ConicProj.usage
index 4b541a3..e6f392b 100644
--- a/man/ConicProj.usage
+++ b/man/ConicProj.usage
@@ -2,8 +2,9 @@ int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
" ConicProj ( -c | -a ) lat1 lat2 [ -l lon0 ] [ -k k1 ] [ -r ] [ -e a f ]\n"
-" [ --version | -h | --help ] [ --input-file infile | --input-string\n"
-" instring ] [ --output-file outfile ]\n"
+" [ --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+" --input-file infile | --input-string instring ] [ --line-separator\n"
+" linesep ] [ --output-file outfile ]\n"
"\n"
"For full documentation type:\n"
" ConicProj --help\n"
@@ -16,8 +17,9 @@ int usage(int retval, bool brief) {
"\n"
"SYNOPSIS\n"
" ConicProj ( -c | -a ) lat1 lat2 [ -l lon0 ] [ -k k1 ] [ -r ] [ -e a f ]\n"
-" [ --version | -h | --help ] [ --input-file infile | --input-string\n"
-" instring ] [ --output-file outfile ]\n"
+" [ --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+" --input-file infile | --input-string instring ] [ --line-separator\n"
+" linesep ] [ --output-file outfile ]\n"
"\n"
"DESCRIPTION\n"
" Perform one of two conic projections geodesics. Convert geodetic\n"
@@ -72,6 +74,13 @@ int usage(int retval, bool brief) {
" default, the WGS84 ellipsoid is used, a = 6378137 m, f =\n"
" 1/298.257223563.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -86,8 +95,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
diff --git a/man/GeoConvert.1 b/man/GeoConvert.1
index 131bd72..2d6463e 100644
--- a/man/GeoConvert.1
+++ b/man/GeoConvert.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "GEOCONVERT 1"
-.TH GEOCONVERT 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GEOCONVERT 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -133,10 +133,12 @@
GeoConvert \-\- convert geographic coordinates
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
-\&\fBGeoConvert\fR [ \fB\-g\fR | \fB\-d\fR | \fB\-u\fR | \fB\-m\fR | \fB\-c\fR ] [ \fB\-p\fR \fIprec\fR ]
-[ \fB\-z\fR \fIzone\fR | \fB\-s\fR | \fB\-t\fR ] [ \fB\-n\fR ] [ \fB\-w\fR ]
+\&\fBGeoConvert\fR [ \fB\-g\fR | \fB\-d\fR | \fB\-:\fR | \fB\-u\fR | \fB\-m\fR | \fB\-c\fR ]
+[ \fB\-p\fR \fIprec\fR ] [ \fB\-z\fR \fIzone\fR | \fB\-s\fR | \fB\-t\fR ] [ \fB\-n\fR ] [ \fB\-w\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -149,7 +151,7 @@ govern the format of output. In all cases, the \s-1WGS84\s0 model of the earth
is used (\fIa\fR = 6378137 m, \fIf\fR = 1/298.257223563).
.IP "\fBgeographic\fR" 4
.IX Item "geographic"
-2 tokens (output options \fB\-g\fR or \fB\-d\fR) given as \fIlatitude\fR
+2 tokens (output options \fB\-g\fR, \fB\-d\fR, or \fB\-:\fR) given as \fIlatitude\fR
\&\fIlongitude\fR using decimal degrees or degrees minutes seconds. d, ',
and " are used to denote degrees, minutes, and seconds, with the least
significant designator optional. (See \s-1QUOTING\s0 for how to
@@ -199,6 +201,10 @@ output latitude and longitude using decimal degrees. Default output mode.
.IP "\fB\-d\fR" 4
.IX Item "-d"
output latitude and longitude using degrees, minutes, and seconds (\s-1DMS\s0).
+.IP "\fB\-:\fR" 4
+.IX Item "-:"
+like \fB\-d\fR, except use : as a separator instead of the d, ', and "
+delimiters.
.IP "\fB\-u\fR" 4
.IX Item "-u"
output \s-1UTM\s0 or \s-1UPS\s0.
@@ -235,6 +241,13 @@ square instead of the center; see \s-1MGRS\s0.
on input and output, longitude precedes latitude (except that on input
this can be overridden by a hemisphere designator, \fIN\fR, \fIS\fR,\fIE\fR,
\&\fIW\fR).
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -251,8 +264,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
@@ -357,7 +374,7 @@ file \f(CW\*(C`input.txt\*(C'\fR should just contain the plain coordinates.
.IX Header "EXAMPLES"
.Vb 4
\& echo 38SMB4488 | GeoConvert => 33.33424 44.40363
-\& echo 38SMB4488 | GeoConvert \-d \-p 1 => 33d20\*(Aq03.25"N 044d24\*(Aq13.06"E
+\& echo 38SMB4488 | GeoConvert \-: \-p 1 => 33:20:03.25N 044:2413.06E
\& echo 38SMB4488 | GeoConvert \-u => 38N 444500 3688500
\& echo E44d24 N33d20 | GeoConvert \-m \-p \-3 => 38SMB4488
.Ve
diff --git a/man/GeoConvert.1.html b/man/GeoConvert.1.html
index 518911d..ad7f237 100644
--- a/man/GeoConvert.1.html
+++ b/man/GeoConvert.1.html
@@ -48,10 +48,12 @@
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
-<p><strong>GeoConvert</strong> [ <strong>-g</strong> | <strong>-d</strong> | <strong>-u</strong> | <strong>-m</strong> | <strong>-c</strong> ] [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-z</strong> <em>zone</em> | <strong>-s</strong> | <strong>-t</strong> ] [ <strong>-n</strong> ] [ <strong>-w</strong> ]
+<p><strong>GeoConvert</strong> [ <strong>-g</strong> | <strong>-d</strong> | <strong>-:</strong> | <strong>-u</strong> | <strong>-m</strong> | <strong>-c</strong> ]
+[ <strong>-p</strong> <em>prec</em> ] [ <strong>-z</strong> <em>zone</em> | <strong>-s</strong> | <strong>-t</strong> ] [ <strong>-n</strong> ] [ <strong>-w</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -68,7 +70,7 @@ is used (<em>a</em> = 6378137 m, <em>f</em> = 1/298.257223563).</p>
<dt><strong><a name="geographic" class="item"><strong>geographic</strong></a></strong></dt>
<dd>
-<p>2 tokens (output options <strong>-g</strong> or <strong>-d</strong>) given as <em>latitude</em>
+<p>2 tokens (output options <strong>-g</strong>, <strong>-d</strong>, or <strong>-:</strong>) given as <em>latitude</em>
<em>longitude</em> using decimal degrees or degrees minutes seconds. d, ',
and " are used to denote degrees, minutes, and seconds, with the least
significant designator optional. (See <a href="#quoting">QUOTING</a> for how to
@@ -125,6 +127,12 @@ grid square. For example,</p>
<dd>
<p>output latitude and longitude using degrees, minutes, and seconds (DMS).</p>
</dd>
+<dt><strong><a name="__" class="item"><strong>-:</strong></a></strong></dt>
+
+<dd>
+<p>like <strong>-d</strong>, except use : as a separator instead of the d, ', and "
+delimiters.</p>
+</dd>
<dt><strong><a name="u" class="item"><strong>-u</strong></a></strong></dt>
<dd>
@@ -179,6 +187,15 @@ square instead of the center; see <a href="#mgrs">MGRS</a>.</p>
this can be overridden by a hemisphere designator, <em>N</em>, <em>S</em>,<em>E</em>,
<em>W</em>).</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -204,8 +221,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -315,7 +338,7 @@ file <code>input.txt</code> should just contain the plain coordinates.</p>
<h1><a name="examples">EXAMPLES</a></h1>
<pre>
echo 38SMB4488 | GeoConvert => 33.33424 44.40363
- echo 38SMB4488 | GeoConvert -d -p 1 => 33d20'03.25"N 044d24'13.06"E
+ echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E
echo 38SMB4488 | GeoConvert -u => 38N 444500 3688500
echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488</pre>
<p>
diff --git a/man/GeoConvert.pod b/man/GeoConvert.pod
index ba0ae74..97de984 100644
--- a/man/GeoConvert.pod
+++ b/man/GeoConvert.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 3c497fb7b466d2f66bc395aa154915313c812973 $
+=for comment $Id: fc3aaeb4b0e207d3d40e1fa301ea4573c37b7321 $
=head1 NAME
@@ -6,10 +6,12 @@ GeoConvert -- convert geographic coordinates
=head1 SYNOPSIS
-B<GeoConvert> [ B<-g> | B<-d> | B<-u> | B<-m> | B<-c> ] [ B<-p> I<prec> ]
-[ B<-z> I<zone> | B<-s> | B<-t> ] [ B<-n> ] [ B<-w> ]
+B<GeoConvert> [ B<-g> | B<-d> | B<-:> | B<-u> | B<-m> | B<-c> ]
+[ B<-p> I<prec> ] [ B<-z> I<zone> | B<-s> | B<-t> ] [ B<-n> ] [ B<-w> ]
+[ B<--comment-delimiter> I<commentdelim> ]
[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -26,7 +28,7 @@ is used (I<a> = 6378137 m, I<f> = 1/298.257223563).
=item B<geographic>
-2 tokens (output options B<-g> or B<-d>) given as I<latitude>
+2 tokens (output options B<-g>, B<-d>, or B<-:>) given as I<latitude>
I<longitude> using decimal degrees or degrees minutes seconds. d, ',
and " are used to denote degrees, minutes, and seconds, with the least
significant designator optional. (See L<QUOTING|quoting> for how to
@@ -79,6 +81,11 @@ output latitude and longitude using decimal degrees. Default output mode.
output latitude and longitude using degrees, minutes, and seconds (DMS).
+=item B<-:>
+
+like B<-d>, except use : as a separator instead of the d, ', and "
+delimiters.
+
=item B<-u>
output UTM or UPS.
@@ -124,6 +131,14 @@ on input and output, longitude precedes latitude (except that on input
this can be overridden by a hemisphere designator, I<N>, I<S>,I<E>,
I<W>).
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -144,8 +159,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
@@ -252,7 +272,7 @@ file C<input.txt> should just contain the plain coordinates.
=head1 EXAMPLES
echo 38SMB4488 | GeoConvert => 33.33424 44.40363
- echo 38SMB4488 | GeoConvert -d -p 1 => 33d20'03.25"N 044d24'13.06"E
+ echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E
echo 38SMB4488 | GeoConvert -u => 38N 444500 3688500
echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488
diff --git a/man/GeoConvert.usage b/man/GeoConvert.usage
index 26c78f8..75a80a7 100644
--- a/man/GeoConvert.usage
+++ b/man/GeoConvert.usage
@@ -1,9 +1,10 @@
int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
-" GeoConvert [ -g | -d | -u | -m | -c ] [ -p prec ] [ -z zone | -s | -t ]\n"
-" [ -n ] [ -w ] [ --version | -h | --help ] [ --input-file infile |\n"
-" --input-string instring ] [ --output-file outfile ]\n"
+" GeoConvert [ -g | -d | -: | -u | -m | -c ] [ -p prec ] [ -z zone | -s |\n"
+" -t ] [ -n ] [ -w ] [ --comment-delimiter commentdelim ] [ --version |\n"
+" -h | --help ] [ --input-file infile | --input-string instring ] [\n"
+" --line-separator linesep ] [ --output-file outfile ]\n"
"\n"
"For full documentation type:\n"
" GeoConvert --help\n"
@@ -15,9 +16,10 @@ int usage(int retval, bool brief) {
" GeoConvert -- convert geographic coordinates\n"
"\n"
"SYNOPSIS\n"
-" GeoConvert [ -g | -d | -u | -m | -c ] [ -p prec ] [ -z zone | -s | -t ]\n"
-" [ -n ] [ -w ] [ --version | -h | --help ] [ --input-file infile |\n"
-" --input-string instring ] [ --output-file outfile ]\n"
+" GeoConvert [ -g | -d | -: | -u | -m | -c ] [ -p prec ] [ -z zone | -s |\n"
+" -t ] [ -n ] [ -w ] [ --comment-delimiter commentdelim ] [ --version |\n"
+" -h | --help ] [ --input-file infile | --input-string instring ] [\n"
+" --line-separator linesep ] [ --output-file outfile ]\n"
"\n"
"DESCRIPTION\n"
" GeoConvert reads from standard input interpreting each line as a\n"
@@ -29,7 +31,7 @@ int usage(int retval, bool brief) {
" used (a = 6378137 m, f = 1/298.257223563).\n"
"\n"
" geographic\n"
-" 2 tokens (output options -g or -d) given as latitude longitude\n"
+" 2 tokens (output options -g, -d, or -:) given as latitude longitude\n"
" using decimal degrees or degrees minutes seconds. d, ', and \" are\n"
" used to denote degrees, minutes, and seconds, with the least\n"
" significant designator optional. (See QUOTING for how to quote the\n"
@@ -73,6 +75,9 @@ int usage(int retval, bool brief) {
" -d output latitude and longitude using degrees, minutes, and seconds\n"
" (DMS).\n"
"\n"
+" -: like -d, except use : as a separator instead of the d, ', and \"\n"
+" delimiters.\n"
+"\n"
" -u output UTM or UPS.\n"
"\n"
" -m output MGRS.\n"
@@ -99,6 +104,13 @@ int usage(int retval, bool brief) {
" input this can be overridden by a hemisphere designator, N, S,E,\n"
" W).\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -113,8 +125,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
@@ -206,7 +223,7 @@ int usage(int retval, bool brief) {
"\n"
"EXAMPLES\n"
" echo 38SMB4488 | GeoConvert => 33.33424 44.40363\n"
-" echo 38SMB4488 | GeoConvert -d -p 1 => 33d20'03.25\"N 044d24'13.06\"E\n"
+" echo 38SMB4488 | GeoConvert -: -p 1 => 33:20:03.25N 044:2413.06E\n"
" echo 38SMB4488 | GeoConvert -u => 38N 444500 3688500\n"
" echo E44d24 N33d20 | GeoConvert -m -p -3 => 38SMB4488\n"
"\n"
diff --git a/man/Geod.1 b/man/Geod.1
index 8ffedf5..6e901ee 100644
--- a/man/Geod.1
+++ b/man/Geod.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "GEOD 1"
-.TH GEOD 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GEOD 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -134,9 +134,11 @@ Geod \-\- perform geodesic calculations
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBGeod\fR [ \fB\-i\fR | \fB\-l\fR \fIlat1\fR \fIlon1\fR \fIazi1\fR ] [ \fB\-a\fR ] [ \fB\-e\fR \fIa\fR \fIf\fR ]
-[ \fB\-d\fR ] [ \fB\-b\fR ] [ \fB\-f\fR ] [ \fB\-p\fR \fIprec\fR ]
+[ \fB\-d\fR | \fB\-:\fR ] [ \fB\-b\fR ] [ \fB\-f\fR ] [ \fB\-p\fR \fIprec\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -183,6 +185,10 @@ is allowed for \fIf\fR. (Also, if \fIf\fR > 1, the flattening is set to
.IP "\fB\-d\fR" 4
.IX Item "-d"
output angles as degrees, minutes, seconds instead of decimal degrees.
+.IP "\fB\-:\fR" 4
+.IX Item "-:"
+like \fB\-d\fR, except use : as a separator instead of the d, ', and "
+delimiters.
.IP "\fB\-b\fR" 4
.IX Item "-b"
report the \fIback\fR azimuth at point 2 instead of the forward azimuth.
@@ -197,6 +203,13 @@ quantities \fIm12\fR, \fIM12\fR, \fIM21\fR, and \fIS12\fR are described in
.IX Item "-p"
set the output precision to \fIprec\fR (default 3); \fIprec\fR is the
precision relative to 1 m. See \s-1PRECISION\s0.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -213,8 +226,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
@@ -290,27 +307,27 @@ will be converted.
Route from \s-1JFK\s0 Airport to Singapore Changi Airport:
.PP
.Vb 2
-\& echo "40d38\*(Aq23N" "073d46\*(Aq44W" "01d21\*(Aq33N" "103d59\*(Aq22E" |
-\& Geod \-i \-d \-p 0
+\& echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
+\& Geod \-i \-: \-p 0
\&
-\& 003d18\*(Aq29.9" 177d29\*(Aq09.2" 15347628 4302458
+\& 003:18:29.9 177:29:09.2 15347628
.Ve
.PP
Waypoints on the route at intervals of 2000km:
.PP
.Vb 2
\& for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |
-\& Geod \-l "40d38\*(Aq23N" "073d46\*(Aq44W" "003d18\*(Aq29.9" \-d \-p 0
+\& Geod \-l 40:38:23N 073:46:44W 003:18:29.9 \-: \-p 0
\&
-\& 40d38\*(Aq23.0"N 073d46\*(Aq44.0"W 003d18\*(Aq29.9" 0
-\& 58d34\*(Aq45.1"N 071d49\*(Aq36.7"W 004d48\*(Aq48.8" 1967419
-\& 76d22\*(Aq28.4"N 065d32\*(Aq17.8"W 010d41\*(Aq38.4" 3743642
-\& 84d50\*(Aq28.0"N 075d04\*(Aq39.2"E 150d55\*(Aq00.9" 5156905
-\& 67d26\*(Aq20.3"N 098d00\*(Aq51.2"E 173d27\*(Aq20.3" 6070415
-\& 49d33\*(Aq03.2"N 101d06\*(Aq52.6"E 176d07\*(Aq54.3" 6394568
-\& 31d34\*(Aq16.5"N 102d30\*(Aq46.3"E 177d03\*(Aq08.4" 6095725
-\& 13d31\*(Aq56.0"N 103d26\*(Aq50.7"E 177d24\*(Aq55.0" 5200700
-\& 04d32\*(Aq05.7"S 104d14\*(Aq48.7"E 177d28\*(Aq43.6" 3795596
+\& 40:38:23.0N 073:46:44.0W 003:18:29.9
+\& 58:34:45.1N 071:49:36.7W 004:48:48.8
+\& 76:22:28.4N 065:32:17.8W 010:41:38.4
+\& 84:50:28.0N 075:04:39.2E 150:55:00.9
+\& 67:26:20.3N 098:00:51.2E 173:27:20.3
+\& 49:33:03.2N 101:06:52.6E 176:07:54.3
+\& 31:34:16.5N 102:30:46.3E 177:03:08.4
+\& 13:31:56.0N 103:26:50.7E 177:24:55.0
+\& 04:32:05.7S 104:14:48.7E 177:28:43.6
.Ve
.SH "SEE ALSO"
.IX Header "SEE ALSO"
diff --git a/man/Geod.1.html b/man/Geod.1.html
index bbb82e1..e19892e 100644
--- a/man/Geod.1.html
+++ b/man/Geod.1.html
@@ -48,9 +48,11 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>Geod</strong> [ <strong>-i</strong> | <strong>-l</strong> <em>lat1</em> <em>lon1</em> <em>azi1</em> ] [ <strong>-a</strong> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
-[ <strong>-d</strong> ] [ <strong>-b</strong> ] [ <strong>-f</strong> ] [ <strong>-p</strong> <em>prec</em> ]
+[ <strong>-d</strong> | <strong>-:</strong> ] [ <strong>-b</strong> ] [ <strong>-f</strong> ] [ <strong>-p</strong> <em>prec</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -116,6 +118,12 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
<dd>
<p>output angles as degrees, minutes, seconds instead of decimal degrees.</p>
</dd>
+<dt><strong><a name="__" class="item"><strong>-:</strong></a></strong></dt>
+
+<dd>
+<p>like <strong>-d</strong>, except use : as a separator instead of the d, ', and "
+delimiters.</p>
+</dd>
<dt><strong><a name="b" class="item"><strong>-b</strong></a></strong></dt>
<dd>
@@ -136,6 +144,15 @@ quantities <em>m12</em>, <em>M12</em>, <em>M21</em>, and <em>S12</em> are descri
<p>set the output precision to <em>prec</em> (default 3); <em>prec</em> is the
precision relative to 1 m. See <a href="#precision">PRECISION</a>.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -161,8 +178,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -249,24 +272,24 @@ will be converted.</p>
<h1><a name="examples">EXAMPLES</a></h1>
<p>Route from JFK Airport to Singapore Changi Airport:</p>
<pre>
- echo "40d38'23N" "073d46'44W" "01d21'33N" "103d59'22E" |
- Geod -i -d -p 0</pre>
+ echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
+ Geod -i -: -p 0</pre>
<pre>
- 003d18'29.9" 177d29'09.2" 15347628 4302458</pre>
+ 003:18:29.9 177:29:09.2 15347628</pre>
<p>Waypoints on the route at intervals of 2000km:</p>
<pre>
for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |
- Geod -l "40d38'23N" "073d46'44W" "003d18'29.9" -d -p 0</pre>
+ Geod -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0</pre>
<pre>
- 40d38'23.0"N 073d46'44.0"W 003d18'29.9" 0
- 58d34'45.1"N 071d49'36.7"W 004d48'48.8" 1967419
- 76d22'28.4"N 065d32'17.8"W 010d41'38.4" 3743642
- 84d50'28.0"N 075d04'39.2"E 150d55'00.9" 5156905
- 67d26'20.3"N 098d00'51.2"E 173d27'20.3" 6070415
- 49d33'03.2"N 101d06'52.6"E 176d07'54.3" 6394568
- 31d34'16.5"N 102d30'46.3"E 177d03'08.4" 6095725
- 13d31'56.0"N 103d26'50.7"E 177d24'55.0" 5200700
- 04d32'05.7"S 104d14'48.7"E 177d28'43.6" 3795596</pre>
+ 40:38:23.0N 073:46:44.0W 003:18:29.9
+ 58:34:45.1N 071:49:36.7W 004:48:48.8
+ 76:22:28.4N 065:32:17.8W 010:41:38.4
+ 84:50:28.0N 075:04:39.2E 150:55:00.9
+ 67:26:20.3N 098:00:51.2E 173:27:20.3
+ 49:33:03.2N 101:06:52.6E 176:07:54.3
+ 31:34:16.5N 102:30:46.3E 177:03:08.4
+ 13:31:56.0N 103:26:50.7E 177:24:55.0
+ 04:32:05.7S 104:14:48.7E 177:28:43.6</pre>
<p>
</p>
<hr />
diff --git a/man/Geod.pod b/man/Geod.pod
index 3469559..521ed2b 100644
--- a/man/Geod.pod
+++ b/man/Geod.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 4802ba8dc6d39a842775705796c8ac0e51a4069d $
+=for comment $Id: ac7d3addc8d0f5133f329b9818891b021e90938f $
=head1 NAME
@@ -7,9 +7,11 @@ Geod -- perform geodesic calculations
=head1 SYNOPSIS
B<Geod> [ B<-i> | B<-l> I<lat1> I<lon1> I<azi1> ] [ B<-a> ] [ B<-e> I<a> I<f> ]
-[ B<-d> ] [ B<-b> ] [ B<-f> ] [ B<-p> I<prec> ]
+[ B<-d> | B<-:> ] [ B<-b> ] [ B<-f> ] [ B<-p> I<prec> ]
+[ B<--comment-delimiter> I<commentdelim> ]
[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -75,6 +77,11 @@ I<f> = 1/298.257223563.
output angles as degrees, minutes, seconds instead of decimal degrees.
+=item B<-:>
+
+like B<-d>, except use : as a separator instead of the d, ', and "
+delimiters.
+
=item B<-b>
report the I<back> azimuth at point 2 instead of the forward azimuth.
@@ -92,6 +99,14 @@ L<ADDITIONAL QUANTITIES>.
set the output precision to I<prec> (default 3); I<prec> is the
precision relative to 1 m. See L<PRECISION|precision>.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -112,8 +127,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
@@ -197,25 +217,25 @@ will be converted.
Route from JFK Airport to Singapore Changi Airport:
- echo "40d38'23N" "073d46'44W" "01d21'33N" "103d59'22E" |
- Geod -i -d -p 0
+ echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
+ Geod -i -: -p 0
- 003d18'29.9" 177d29'09.2" 15347628 4302458
+ 003:18:29.9 177:29:09.2 15347628
Waypoints on the route at intervals of 2000km:
for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |
- Geod -l "40d38'23N" "073d46'44W" "003d18'29.9" -d -p 0
-
- 40d38'23.0"N 073d46'44.0"W 003d18'29.9" 0
- 58d34'45.1"N 071d49'36.7"W 004d48'48.8" 1967419
- 76d22'28.4"N 065d32'17.8"W 010d41'38.4" 3743642
- 84d50'28.0"N 075d04'39.2"E 150d55'00.9" 5156905
- 67d26'20.3"N 098d00'51.2"E 173d27'20.3" 6070415
- 49d33'03.2"N 101d06'52.6"E 176d07'54.3" 6394568
- 31d34'16.5"N 102d30'46.3"E 177d03'08.4" 6095725
- 13d31'56.0"N 103d26'50.7"E 177d24'55.0" 5200700
- 04d32'05.7"S 104d14'48.7"E 177d28'43.6" 3795596
+ Geod -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0
+
+ 40:38:23.0N 073:46:44.0W 003:18:29.9
+ 58:34:45.1N 071:49:36.7W 004:48:48.8
+ 76:22:28.4N 065:32:17.8W 010:41:38.4
+ 84:50:28.0N 075:04:39.2E 150:55:00.9
+ 67:26:20.3N 098:00:51.2E 173:27:20.3
+ 49:33:03.2N 101:06:52.6E 176:07:54.3
+ 31:34:16.5N 102:30:46.3E 177:03:08.4
+ 13:31:56.0N 103:26:50.7E 177:24:55.0
+ 04:32:05.7S 104:14:48.7E 177:28:43.6
=head1 SEE ALSO
diff --git a/man/Geod.usage b/man/Geod.usage
index 0582394..3dde2d3 100644
--- a/man/Geod.usage
+++ b/man/Geod.usage
@@ -1,9 +1,10 @@
int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
-" Geod [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d ] [ -b ] [ -f ]\n"
-" [ -p prec ] [ --version | -h | --help ] [ --input-file infile |\n"
-" --input-string instring ] [ --output-file outfile ]\n"
+" Geod [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d | -: ] [ -b ] [\n"
+" -f ] [ -p prec ] [ --comment-delimiter commentdelim ] [ --version | -h\n"
+" | --help ] [ --input-file infile | --input-string instring ] [\n"
+" --line-separator linesep ] [ --output-file outfile ]\n"
"\n"
"For full documentation type:\n"
" Geod --help\n"
@@ -15,9 +16,10 @@ int usage(int retval, bool brief) {
" Geod -- perform geodesic calculations\n"
"\n"
"SYNOPSIS\n"
-" Geod [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d ] [ -b ] [ -f ]\n"
-" [ -p prec ] [ --version | -h | --help ] [ --input-file infile |\n"
-" --input-string instring ] [ --output-file outfile ]\n"
+" Geod [ -i | -l lat1 lon1 azi1 ] [ -a ] [ -e a f ] [ -d | -: ] [ -b ] [\n"
+" -f ] [ -p prec ] [ --comment-delimiter commentdelim ] [ --version | -h\n"
+" | --help ] [ --input-file infile | --input-string instring ] [\n"
+" --line-separator linesep ] [ --output-file outfile ]\n"
"\n"
"DESCRIPTION\n"
" The shortest path between two points on the ellipsoid at (lat1, lon1)\n"
@@ -59,6 +61,9 @@ int usage(int retval, bool brief) {
" -d output angles as degrees, minutes, seconds instead of decimal\n"
" degrees.\n"
"\n"
+" -: like -d, except use : as a separator instead of the d, ', and \"\n"
+" delimiters.\n"
+"\n"
" -b report the back azimuth at point 2 instead of the forward azimuth.\n"
"\n"
" -f full output; each line of output consists of 12 quantities: lat1\n"
@@ -69,6 +74,13 @@ int usage(int retval, bool brief) {
" -p set the output precision to prec (default 3); prec is the precision\n"
" relative to 1 m. See PRECISION.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -83,8 +95,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
@@ -155,25 +172,25 @@ int usage(int retval, bool brief) {
"EXAMPLES\n"
" Route from JFK Airport to Singapore Changi Airport:\n"
"\n"
-" echo \"40d38'23N\" \"073d46'44W\" \"01d21'33N\" \"103d59'22E\" |\n"
-" Geod -i -d -p 0\n"
+" echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |\n"
+" Geod -i -: -p 0\n"
"\n"
-" 003d18'29.9\" 177d29'09.2\" 15347628 4302458\n"
+" 003:18:29.9 177:29:09.2 15347628\n"
"\n"
" Waypoints on the route at intervals of 2000km:\n"
"\n"
" for ((i = 0; i <= 16; i += 2)); do echo ${i}000000;done |\n"
-" Geod -l \"40d38'23N\" \"073d46'44W\" \"003d18'29.9\" -d -p 0\n"
-"\n"
-" 40d38'23.0\"N 073d46'44.0\"W 003d18'29.9\" 0\n"
-" 58d34'45.1\"N 071d49'36.7\"W 004d48'48.8\" 1967419\n"
-" 76d22'28.4\"N 065d32'17.8\"W 010d41'38.4\" 3743642\n"
-" 84d50'28.0\"N 075d04'39.2\"E 150d55'00.9\" 5156905\n"
-" 67d26'20.3\"N 098d00'51.2\"E 173d27'20.3\" 6070415\n"
-" 49d33'03.2\"N 101d06'52.6\"E 176d07'54.3\" 6394568\n"
-" 31d34'16.5\"N 102d30'46.3\"E 177d03'08.4\" 6095725\n"
-" 13d31'56.0\"N 103d26'50.7\"E 177d24'55.0\" 5200700\n"
-" 04d32'05.7\"S 104d14'48.7\"E 177d28'43.6\" 3795596\n"
+" Geod -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0\n"
+"\n"
+" 40:38:23.0N 073:46:44.0W 003:18:29.9\n"
+" 58:34:45.1N 071:49:36.7W 004:48:48.8\n"
+" 76:22:28.4N 065:32:17.8W 010:41:38.4\n"
+" 84:50:28.0N 075:04:39.2E 150:55:00.9\n"
+" 67:26:20.3N 098:00:51.2E 173:27:20.3\n"
+" 49:33:03.2N 101:06:52.6E 176:07:54.3\n"
+" 31:34:16.5N 102:30:46.3E 177:03:08.4\n"
+" 13:31:56.0N 103:26:50.7E 177:24:55.0\n"
+" 04:32:05.7S 104:14:48.7E 177:28:43.6\n"
"\n"
"SEE ALSO\n"
" The algorithms are described in C. F. F. Karney, Geodesics on an\n"
diff --git a/man/GeodesicProj.1 b/man/GeodesicProj.1
index 95e9c33..9bde582 100644
--- a/man/GeodesicProj.1
+++ b/man/GeodesicProj.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "GEODESICPROJ 1"
-.TH GEODESICPROJ 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GEODESICPROJ 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -134,8 +134,11 @@ GeodesicProj \-\- perform projections based on geodesics
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBGeodesicProj\fR ( \fB\-z\fR | \fB\-c\fR | \fB\-g\fR ) \fIlat0\fR \fIlon0\fR [ \fB\-r\fR ]
-[ \fB\-e\fR \fIa\fR \fIf\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -185,6 +188,13 @@ the flattening is \fIf\fR. Setting \fIf\fR = 0 results in a sphere. Specify
is allowed for \fIf\fR. (Also, if \fIf\fR > 1, the flattening is set to
1/\fIf\fR.) By default, the \s-1WGS84\s0 ellipsoid is used, \fIa\fR = 6378137 m,
\&\fIf\fR = 1/298.257223563.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -201,8 +211,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/GeodesicProj.1.html b/man/GeodesicProj.1.html
index 333e061..2d3f493 100644
--- a/man/GeodesicProj.1.html
+++ b/man/GeodesicProj.1.html
@@ -44,8 +44,11 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>GeodesicProj</strong> ( <strong>-z</strong> | <strong>-c</strong> | <strong>-g</strong> ) <em>lat0</em> <em>lon0</em> [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -109,6 +112,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
1/<em>f</em>.) By default, the WGS84 ellipsoid is used, <em>a</em> = 6378137 m,
<em>f</em> = 1/298.257223563.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -134,8 +146,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/man/GeodesicProj.pod b/man/GeodesicProj.pod
index 7e2b32d..721aed8 100644
--- a/man/GeodesicProj.pod
+++ b/man/GeodesicProj.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 141713240cad0f3339d9fdfca0d590571056014a $
+=for comment $Id: c2031e302eb69c8ce23ee8dd7152e58cf10df751 $
=head1 NAME
@@ -7,8 +7,11 @@ GeodesicProj -- perform projections based on geodesics
=head1 SYNOPSIS
B<GeodesicProj> ( B<-z> | B<-c> | B<-g> ) I<lat0> I<lon0> [ B<-r> ]
-[ B<-e> I<a> I<f> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -67,6 +70,14 @@ is allowed for I<f>. (Also, if I<f> E<gt> 1, the flattening is set to
1/I<f>.) By default, the WGS84 ellipsoid is used, I<a> = 6378137 m,
I<f> = 1/298.257223563.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -87,8 +98,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
diff --git a/man/GeodesicProj.usage b/man/GeodesicProj.usage
index c382d52..07bade1 100644
--- a/man/GeodesicProj.usage
+++ b/man/GeodesicProj.usage
@@ -1,9 +1,10 @@
int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
-" GeodesicProj ( -z | -c | -g ) lat0 lon0 [ -r ] [ -e a f ] [ --version |\n"
-" -h | --help ] [ --input-file infile | --input-string instring ] [\n"
-" --output-file outfile ]\n"
+" GeodesicProj ( -z | -c | -g ) lat0 lon0 [ -r ] [ -e a f ] [\n"
+" --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+" --input-file infile | --input-string instring ] [ --line-separator\n"
+" linesep ] [ --output-file outfile ]\n"
"\n"
"For full documentation type:\n"
" GeodesicProj --help\n"
@@ -15,9 +16,10 @@ int usage(int retval, bool brief) {
" GeodesicProj -- perform projections based on geodesics\n"
"\n"
"SYNOPSIS\n"
-" GeodesicProj ( -z | -c | -g ) lat0 lon0 [ -r ] [ -e a f ] [ --version |\n"
-" -h | --help ] [ --input-file infile | --input-string instring ] [\n"
-" --output-file outfile ]\n"
+" GeodesicProj ( -z | -c | -g ) lat0 lon0 [ -r ] [ -e a f ] [\n"
+" --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+" --input-file infile | --input-string instring ] [ --line-separator\n"
+" linesep ] [ --output-file outfile ]\n"
"\n"
"DESCRIPTION\n"
" Perform projections based on geodesics. Convert geodetic coordinates\n"
@@ -61,6 +63,13 @@ int usage(int retval, bool brief) {
" default, the WGS84 ellipsoid is used, a = 6378137 m, f =\n"
" 1/298.257223563.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -75,8 +84,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
diff --git a/man/GeoidEval.1 b/man/GeoidEval.1
index 30998f7..cfbb076 100644
--- a/man/GeoidEval.1
+++ b/man/GeoidEval.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "GEOIDEVAL 1"
-.TH GEOIDEVAL 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GEOIDEVAL 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -134,18 +134,19 @@ GeoidEval \-\- look up geoid heights
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBGeoidEval\fR [ \fB\-n\fR \fIname\fR ] [ \fB\-d\fR \fIdir\fR ] [ \fB\-l\fR ]
-[ \fB\-a\fR | \fB\-c\fR \fIsouth\fR \fIwest\fR \fInorth\fR \fIeast\fR ]
+[ \fB\-a\fR | \fB\-c\fR \fIsouth\fR \fIwest\fR \fInorth\fR \fIeast\fR ] [ \fB\-g\fR ]
[ \fB\-z\fR \fIzone\fR ] [ \fB\-\-msltohae\fR ] [ \fB\-\-haetomsl\fR ]
-[ \fB\-v\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-v\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
\&\fBGeoidEval\fR reads in positions on standard input and prints out the
-corresponding geoid heights on standard output. It also prints the
-northerly and easterly gradients of the geoid height (i.e., the rate at
-which the geoid height changes per unit distance along the \s-1WGS84\s0
-ellipsoid in the specified directions).
+corresponding geoid heights on standard output. Optionally, it also
+prints the northerly and easterly gradients of the geoid height.
.PP
Positions are given as latitude and longitude, \s-1UTM/UPS\s0, or \s-1MGRS\s0, in any
of the formats accepted by \fIGeoConvert\fR\|(1). (\s-1MGRS\s0 coordinates signify the
@@ -177,6 +178,14 @@ cache the entire data set in memory. See \s-1CACHE\s0.
.IX Item "-c"
cache the data bounded by \fIsouth\fR \fIwest\fR \fInorth\fR \fIeast\fR in memory.
See \s-1CACHE\s0.
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+print the northerly and easterly gradients after the geoid height (i.e.,
+the rate at which the geoid height changes per unit distance along the
+\&\s-1WGS84\s0 ellipsoid in the specified directions). As a result of the way
+that the geoid data is stored, the calculation of gradients can result
+in large quantization errors. This is particularly acute at high
+latitudes and for the easterly gradient.
.IP "\fB\-z\fR" 4
.IX Item "-z"
prefix each line of input by \fIzone\fR, e.g., \f(CW\*(C`38N\*(C'\fR. This should be used
@@ -198,6 +207,13 @@ input line with the height converted to height above the geoid (\s-1MSL\s0).
.IX Item "-v"
print information about the geoid on standard error before processing
the input.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -214,8 +230,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
@@ -231,21 +251,18 @@ installed):
\& bilinear error cubic error
\& name geoid grid max rms max rms
\& egm84\-30 EGM84 30\*(Aq 1.546 m 70 mm 0.274 m 14 mm
-\& egm84\-15 EGM84 15\*(Aq 0.413 m 18 mm 0.020 m 1 mm
-\& egm96\-15 EGM96 15\*(Aq 1.152 m 40 mm 0.169 m 7 mm
-\& egm96\-5 EGM96 5\*(Aq 0.140 m 5 mm 0.003 m 1 mm
-\& egm2008\-5 EGM2008 5\*(Aq 0.478 m 12 mm 0.294 m 5 mm
-\& egm2008\-2_5 EGM2008 2.5\*(Aq 0.135 m 3 mm 0.031 m 1 mm
-\& egm2008\-1 EGM2008 1\*(Aq 0.025 m 1 mm 0.003 m 1 mm
+\& egm84\-15 EGM84 15\*(Aq 0.413 m 18 mm 0.021 m 1.2 mm
+\& egm96\-15 EGM96 15\*(Aq 1.152 m 40 mm 0.169 m 7.0 mm
+\& egm96\-5 EGM96 5\*(Aq 0.140 m 4.6 mm .0032 m 0.7 mm
+\& egm2008\-5 EGM2008 5\*(Aq 0.478 m 12 mm 0.294 m 4.5 mm
+\& egm2008\-2_5 EGM2008 2.5\*(Aq 0.135 m 3.2 mm 0.031 m 0.8 mm
+\& egm2008\-1 EGM2008 1\*(Aq 0.025 m 0.8 mm .0022 m 0.7 mm
.Ve
.PP
By default, the \f(CW\*(C`egm96\-5\*(C'\fR geoid is used. This may changed by setting
the environment variable \f(CW\*(C`GEOID_NAME\*(C'\fR or with the \fB\-n\fR option. The
errors listed here are estimates of the quantization and interpolation
-errors in the reported heights compared to the specified geoid. As a
-result of the way that the geoid data is stored, the calculation of
-gradients can result in large quantization errors. This is particularly
-acute at high latitudes and for the easterly gradient.
+errors in the reported heights compared to the specified geoid.
.PP
The geoid data will be loaded from a directory specified at compile
time. This may changed by setting the environment variables
@@ -276,10 +293,7 @@ The cubic is constrained to be independent of longitude when evaluating
the height at one of the poles. Cubic interpolation is considerably
more accurate than bilinear; however it results in small discontinuities
in the returned height on cell boundaries. The gradients are computed
-by differentiating the interpolated results. As a result of the way
-that the geoid data is stored, the calculation of gradients can result
-in large quantization errors. This is particularly acute for fine
-grids, at high latitudes, and for the easterly gradient.
+by differentiating the interpolated results.
.SH "CACHE"
.IX Header "CACHE"
By default, the data file is randomly read to compute the geoid heights
@@ -357,7 +371,7 @@ level.)
The height of the \s-1EGM96\s0 geoid at Timbuktu
.PP
.Vb 2
-\& echo "16d46\*(Aq33N" "3d00\*(Aq34W" | GeoidEval
+\& echo 16:46:33N 3:00:34W | GeoidEval
\& => 28.7068 \-0.02e\-6 \-1.73e\-6
.Ve
.PP
diff --git a/man/GeoidEval.1.html b/man/GeoidEval.1.html
index 48d4505..13b32d2 100644
--- a/man/GeoidEval.1.html
+++ b/man/GeoidEval.1.html
@@ -49,20 +49,21 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>GeoidEval</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ] [ <strong>-l</strong> ]
-[ <strong>-a</strong> | <strong>-c</strong> <em>south</em> <em>west</em> <em>north</em> <em>east</em> ]
+[ <strong>-a</strong> | <strong>-c</strong> <em>south</em> <em>west</em> <em>north</em> <em>east</em> ] [ <strong>-g</strong> ]
[ <strong>-z</strong> <em>zone</em> ] [ <strong>--msltohae</strong> ] [ <strong>--haetomsl</strong> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p><strong>GeoidEval</strong> reads in positions on standard input and prints out the
-corresponding geoid heights on standard output. It also prints the
-northerly and easterly gradients of the geoid height (i.e., the rate at
-which the geoid height changes per unit distance along the WGS84
-ellipsoid in the specified directions).</p>
+corresponding geoid heights on standard output. Optionally, it also
+prints the northerly and easterly gradients of the geoid height.</p>
<p>Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any
of the formats accepted by <a href="GeoConvert.1.html"><code>GeoConvert(1)</code></a>. (MGRS coordinates signify the
<em>center</em> of the corresponding MGRS square.) If the <strong>-z</strong> option is
@@ -105,6 +106,16 @@ This utility can also compute the direction of gravity accurately.</p>
<p>cache the data bounded by <em>south</em> <em>west</em> <em>north</em> <em>east</em> in memory.
See <a href="#cache">CACHE</a>.</p>
</dd>
+<dt><strong><a name="g" class="item"><strong>-g</strong></a></strong></dt>
+
+<dd>
+<p>print the northerly and easterly gradients after the geoid height (i.e.,
+the rate at which the geoid height changes per unit distance along the
+WGS84 ellipsoid in the specified directions). As a result of the way
+that the geoid data is stored, the calculation of gradients can result
+in large quantization errors. This is particularly acute at high
+latitudes and for the easterly gradient.</p>
+</dd>
<dt><strong><a name="z" class="item"><strong>-z</strong></a></strong></dt>
<dd>
@@ -134,6 +145,15 @@ input line with the height converted to height above the geoid (MSL).</p>
<p>print information about the geoid on standard error before processing
the input.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -159,8 +179,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -181,19 +207,16 @@ installed):</p>
bilinear error cubic error
name geoid grid max rms max rms
egm84-30 EGM84 30' 1.546 m 70 mm 0.274 m 14 mm
- egm84-15 EGM84 15' 0.413 m 18 mm 0.020 m 1 mm
- egm96-15 EGM96 15' 1.152 m 40 mm 0.169 m 7 mm
- egm96-5 EGM96 5' 0.140 m 5 mm 0.003 m 1 mm
- egm2008-5 EGM2008 5' 0.478 m 12 mm 0.294 m 5 mm
- egm2008-2_5 EGM2008 2.5' 0.135 m 3 mm 0.031 m 1 mm
- egm2008-1 EGM2008 1' 0.025 m 1 mm 0.003 m 1 mm</pre>
+ egm84-15 EGM84 15' 0.413 m 18 mm 0.021 m 1.2 mm
+ egm96-15 EGM96 15' 1.152 m 40 mm 0.169 m 7.0 mm
+ egm96-5 EGM96 5' 0.140 m 4.6 mm .0032 m 0.7 mm
+ egm2008-5 EGM2008 5' 0.478 m 12 mm 0.294 m 4.5 mm
+ egm2008-2_5 EGM2008 2.5' 0.135 m 3.2 mm 0.031 m 0.8 mm
+ egm2008-1 EGM2008 1' 0.025 m 0.8 mm .0022 m 0.7 mm</pre>
<p>By default, the <code>egm96-5</code> geoid is used. This may changed by setting
the environment variable <a href="#geoid_name"><code>GEOID_NAME</code></a> or with the <strong>-n</strong> option. The
errors listed here are estimates of the quantization and interpolation
-errors in the reported heights compared to the specified geoid. As a
-result of the way that the geoid data is stored, the calculation of
-gradients can result in large quantization errors. This is particularly
-acute at high latitudes and for the easterly gradient.</p>
+errors in the reported heights compared to the specified geoid.</p>
<p>The geoid data will be loaded from a directory specified at compile
time. This may changed by setting the environment variables
<a href="#geoid_path"><code>GEOID_PATH</code></a> or <a href="#geographiclib_data"><code>GEOGRAPHICLIB_DATA</code></a>, or with the <strong>-d</strong> option. The
@@ -220,10 +243,7 @@ interpolation is based on a least-squares fit of a cubic polynomial to a
the height at one of the poles. Cubic interpolation is considerably
more accurate than bilinear; however it results in small discontinuities
in the returned height on cell boundaries. The gradients are computed
-by differentiating the interpolated results. As a result of the way
-that the geoid data is stored, the calculation of gradients can result
-in large quantization errors. This is particularly acute for fine
-grids, at high latitudes, and for the easterly gradient.</p>
+by differentiating the interpolated results.</p>
<p>
</p>
<hr />
@@ -331,7 +351,7 @@ level.)</p>
<h1><a name="examples">EXAMPLES</a></h1>
<p>The height of the EGM96 geoid at Timbuktu</p>
<pre>
- echo "16d46'33N" "3d00'34W" | GeoidEval
+ echo 16:46:33N 3:00:34W | GeoidEval
=> 28.7068 -0.02e-6 -1.73e-6</pre>
<p>The first number returned is the height of the geoid and the 2nd and 3rd
are its slopes in the northerly and easterly directions.</p>
diff --git a/man/GeoidEval.pod b/man/GeoidEval.pod
index 12262d7..ded4b1a 100644
--- a/man/GeoidEval.pod
+++ b/man/GeoidEval.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 74dfab88961b32d07f6e54d45eb3cf9f1f86642f $
+=for comment $Id: a3894e4de1e548a59e099d2a170ab330b25dbb21 $
=head1 NAME
@@ -7,19 +7,20 @@ GeoidEval -- look up geoid heights
=head1 SYNOPSIS
B<GeoidEval> [ B<-n> I<name> ] [ B<-d> I<dir> ] [ B<-l> ]
-[ B<-a> | B<-c> I<south> I<west> I<north> I<east> ]
+[ B<-a> | B<-c> I<south> I<west> I<north> I<east> ] [ B<-g> ]
[ B<-z> I<zone> ] [ B<--msltohae> ] [ B<--haetomsl> ]
-[ B<-v> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-v> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
B<GeoidEval> reads in positions on standard input and prints out the
-corresponding geoid heights on standard output. It also prints the
-northerly and easterly gradients of the geoid height (i.e., the rate at
-which the geoid height changes per unit distance along the WGS84
-ellipsoid in the specified directions).
+corresponding geoid heights on standard output. Optionally, it also
+prints the northerly and easterly gradients of the geoid height.
Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any
of the formats accepted by GeoConvert(1). (MGRS coordinates signify the
@@ -59,6 +60,15 @@ cache the entire data set in memory. See L<CACHE|cache>.
cache the data bounded by I<south> I<west> I<north> I<east> in memory.
See L<CACHE|cache>.
+=item B<-g>
+
+print the northerly and easterly gradients after the geoid height (i.e.,
+the rate at which the geoid height changes per unit distance along the
+WGS84 ellipsoid in the specified directions). As a result of the way
+that the geoid data is stored, the calculation of gradients can result
+in large quantization errors. This is particularly acute at high
+latitudes and for the easterly gradient.
+
=item B<-z>
prefix each line of input by I<zone>, e.g., C<38N>. This should be used
@@ -84,6 +94,14 @@ input line with the height converted to height above the geoid (MSL).
print information about the geoid on standard error before processing
the input.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -104,8 +122,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
@@ -124,20 +147,17 @@ installed):
bilinear error cubic error
name geoid grid max rms max rms
egm84-30 EGM84 30' 1.546 m 70 mm 0.274 m 14 mm
- egm84-15 EGM84 15' 0.413 m 18 mm 0.020 m 1 mm
- egm96-15 EGM96 15' 1.152 m 40 mm 0.169 m 7 mm
- egm96-5 EGM96 5' 0.140 m 5 mm 0.003 m 1 mm
- egm2008-5 EGM2008 5' 0.478 m 12 mm 0.294 m 5 mm
- egm2008-2_5 EGM2008 2.5' 0.135 m 3 mm 0.031 m 1 mm
- egm2008-1 EGM2008 1' 0.025 m 1 mm 0.003 m 1 mm
+ egm84-15 EGM84 15' 0.413 m 18 mm 0.021 m 1.2 mm
+ egm96-15 EGM96 15' 1.152 m 40 mm 0.169 m 7.0 mm
+ egm96-5 EGM96 5' 0.140 m 4.6 mm .0032 m 0.7 mm
+ egm2008-5 EGM2008 5' 0.478 m 12 mm 0.294 m 4.5 mm
+ egm2008-2_5 EGM2008 2.5' 0.135 m 3.2 mm 0.031 m 0.8 mm
+ egm2008-1 EGM2008 1' 0.025 m 0.8 mm .0022 m 0.7 mm
By default, the C<egm96-5> geoid is used. This may changed by setting
the environment variable C<GEOID_NAME> or with the B<-n> option. The
errors listed here are estimates of the quantization and interpolation
-errors in the reported heights compared to the specified geoid. As a
-result of the way that the geoid data is stored, the calculation of
-gradients can result in large quantization errors. This is particularly
-acute at high latitudes and for the easterly gradient.
+errors in the reported heights compared to the specified geoid.
The geoid data will be loaded from a directory specified at compile
time. This may changed by setting the environment variables
@@ -167,10 +187,7 @@ The cubic is constrained to be independent of longitude when evaluating
the height at one of the poles. Cubic interpolation is considerably
more accurate than bilinear; however it results in small discontinuities
in the returned height on cell boundaries. The gradients are computed
-by differentiating the interpolated results. As a result of the way
-that the geoid data is stored, the calculation of gradients can result
-in large quantization errors. This is particularly acute for fine
-grids, at high latitudes, and for the easterly gradient.
+by differentiating the interpolated results.
=head1 CACHE
@@ -268,7 +285,7 @@ level.)
The height of the EGM96 geoid at Timbuktu
- echo "16d46'33N" "3d00'34W" | GeoidEval
+ echo 16:46:33N 3:00:34W | GeoidEval
=> 28.7068 -0.02e-6 -1.73e-6
The first number returned is the height of the geoid and the 2nd and 3rd
diff --git a/man/GeoidEval.usage b/man/GeoidEval.usage
index cf4db97..43ead01 100644
--- a/man/GeoidEval.usage
+++ b/man/GeoidEval.usage
@@ -2,9 +2,10 @@ int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
" GeoidEval [ -n name ] [ -d dir ] [ -l ] [ -a | -c south west north east\n"
-" ] [ -z zone ] [ --msltohae ] [ --haetomsl ] [ -v ] [ --version | -h |\n"
-" --help ] [ --input-file infile | --input-string instring ] [\n"
-" --output-file outfile ]\n"
+" ] [ -g ] [ -z zone ] [ --msltohae ] [ --haetomsl ] [ -v ] [\n"
+" --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+" --input-file infile | --input-string instring ] [ --line-separator\n"
+" linesep ] [ --output-file outfile ]\n"
"\n"
"For full documentation type:\n"
" GeoidEval --help\n"
@@ -17,16 +18,15 @@ int usage(int retval, bool brief) {
"\n"
"SYNOPSIS\n"
" GeoidEval [ -n name ] [ -d dir ] [ -l ] [ -a | -c south west north east\n"
-" ] [ -z zone ] [ --msltohae ] [ --haetomsl ] [ -v ] [ --version | -h |\n"
-" --help ] [ --input-file infile | --input-string instring ] [\n"
-" --output-file outfile ]\n"
+" ] [ -g ] [ -z zone ] [ --msltohae ] [ --haetomsl ] [ -v ] [\n"
+" --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+" --input-file infile | --input-string instring ] [ --line-separator\n"
+" linesep ] [ --output-file outfile ]\n"
"\n"
"DESCRIPTION\n"
" GeoidEval reads in positions on standard input and prints out the\n"
-" corresponding geoid heights on standard output. It also prints the\n"
-" northerly and easterly gradients of the geoid height (i.e., the rate at\n"
-" which the geoid height changes per unit distance along the WGS84\n"
-" ellipsoid in the specified directions).\n"
+" corresponding geoid heights on standard output. Optionally, it also\n"
+" prints the northerly and easterly gradients of the geoid height.\n"
"\n"
" Positions are given as latitude and longitude, UTM/UPS, or MGRS, in any\n"
" of the formats accepted by GeoConvert(1). (MGRS coordinates signify\n"
@@ -50,6 +50,13 @@ int usage(int retval, bool brief) {
" -c cache the data bounded by south west north east in memory. See\n"
" CACHE.\n"
"\n"
+" -g print the northerly and easterly gradients after the geoid height\n"
+" (i.e., the rate at which the geoid height changes per unit distance\n"
+" along the WGS84 ellipsoid in the specified directions). As a\n"
+" result of the way that the geoid data is stored, the calculation of\n"
+" gradients can result in large quantization errors. This is\n"
+" particularly acute at high latitudes and for the easterly gradient.\n"
+"\n"
" -z prefix each line of input by zone, e.g., \"38N\". This should be\n"
" used when the input consists of UTM/UPS eastings and northings.\n"
"\n"
@@ -70,6 +77,13 @@ int usage(int retval, bool brief) {
" -v print information about the geoid on standard error before\n"
" processing the input.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -84,8 +98,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
@@ -99,20 +118,17 @@ int usage(int retval, bool brief) {
" bilinear error cubic error\n"
" name geoid grid max rms max rms\n"
" egm84-30 EGM84 30' 1.546 m 70 mm 0.274 m 14 mm\n"
-" egm84-15 EGM84 15' 0.413 m 18 mm 0.020 m 1 mm\n"
-" egm96-15 EGM96 15' 1.152 m 40 mm 0.169 m 7 mm\n"
-" egm96-5 EGM96 5' 0.140 m 5 mm 0.003 m 1 mm\n"
-" egm2008-5 EGM2008 5' 0.478 m 12 mm 0.294 m 5 mm\n"
-" egm2008-2_5 EGM2008 2.5' 0.135 m 3 mm 0.031 m 1 mm\n"
-" egm2008-1 EGM2008 1' 0.025 m 1 mm 0.003 m 1 mm\n"
+" egm84-15 EGM84 15' 0.413 m 18 mm 0.021 m 1.2 mm\n"
+" egm96-15 EGM96 15' 1.152 m 40 mm 0.169 m 7.0 mm\n"
+" egm96-5 EGM96 5' 0.140 m 4.6 mm .0032 m 0.7 mm\n"
+" egm2008-5 EGM2008 5' 0.478 m 12 mm 0.294 m 4.5 mm\n"
+" egm2008-2_5 EGM2008 2.5' 0.135 m 3.2 mm 0.031 m 0.8 mm\n"
+" egm2008-1 EGM2008 1' 0.025 m 0.8 mm .0022 m 0.7 mm\n"
"\n"
" By default, the \"egm96-5\" geoid is used. This may changed by setting\n"
" the environment variable \"GEOID_NAME\" or with the -n option. The\n"
" errors listed here are estimates of the quantization and interpolation\n"
-" errors in the reported heights compared to the specified geoid. As a\n"
-" result of the way that the geoid data is stored, the calculation of\n"
-" gradients can result in large quantization errors. This is\n"
-" particularly acute at high latitudes and for the easterly gradient.\n"
+" errors in the reported heights compared to the specified geoid.\n"
"\n"
" The geoid data will be loaded from a directory specified at compile\n"
" time. This may changed by setting the environment variables\n"
@@ -141,11 +157,7 @@ int usage(int retval, bool brief) {
" the height at one of the poles. Cubic interpolation is considerably\n"
" more accurate than bilinear; however it results in small\n"
" discontinuities in the returned height on cell boundaries. The\n"
-" gradients are computed by differentiating the interpolated results. As\n"
-" a result of the way that the geoid data is stored, the calculation of\n"
-" gradients can result in large quantization errors. This is\n"
-" particularly acute for fine grids, at high latitudes, and for the\n"
-" easterly gradient.\n"
+" gradients are computed by differentiating the interpolated results.\n"
"\n"
"CACHE\n"
" By default, the data file is randomly read to compute the geoid heights\n"
@@ -223,7 +235,7 @@ int usage(int retval, bool brief) {
"EXAMPLES\n"
" The height of the EGM96 geoid at Timbuktu\n"
"\n"
-" echo \"16d46'33N\" \"3d00'34W\" | GeoidEval\n"
+" echo 16:46:33N 3:00:34W | GeoidEval\n"
" => 28.7068 -0.02e-6 -1.73e-6\n"
"\n"
" The first number returned is the height of the geoid and the 2nd and\n"
diff --git a/man/Gravity.1 b/man/Gravity.1
index 4a99a22..f3a97ca 100644
--- a/man/Gravity.1
+++ b/man/Gravity.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "GRAVITY 1"
-.TH GRAVITY 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH GRAVITY 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -136,8 +136,11 @@ Gravity \-\- compute the earth's gravity field
\&\fBGravity\fR [ \fB\-n\fR \fIname\fR ] [ \fB\-d\fR \fIdir\fR ]
[ \fB\-G\fR | \fB\-D\fR | \fB\-A\fR | \fB\-H\fR ] [ \fB\-c\fR \fIlat\fR \fIh\fR ]
[ \fB\-p\fR \fIprec\fR ]
-[ \fB\-v\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-v\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -217,6 +220,13 @@ and 4 for the geoid height.
.IX Item "-v"
print information about the gravity model on standard error before
processing the input.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -233,8 +243,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
@@ -301,7 +315,7 @@ terminate; following lines will be converted.
The gravity field from \s-1EGM2008\s0 at the top of Mount Everest
.PP
.Vb 2
-\& echo "27d59\*(Aq17N" "86d55\*(Aq32E" 8820 | Gravity \-n egm2008
+\& echo 27:59:17N 86:55:32E 8820 | Gravity \-n egm2008
\& => \-0.00001 0.00103 \-9.76782
.Ve
.SH "SEE ALSO"
diff --git a/man/Gravity.1.html b/man/Gravity.1.html
index c052100..d929096 100644
--- a/man/Gravity.1.html
+++ b/man/Gravity.1.html
@@ -48,8 +48,11 @@
<p><strong>Gravity</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ]
[ <strong>-G</strong> | <strong>-D</strong> | <strong>-A</strong> | <strong>-H</strong> ] [ <strong>-c</strong> <em>lat</em> <em>h</em> ]
[ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -150,6 +153,15 @@ and 4 for the geoid height.</p>
<p>print information about the gravity model on standard error before
processing the input.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -175,8 +187,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -257,7 +275,7 @@ terminate; following lines will be converted.</p>
<h1><a name="examples">EXAMPLES</a></h1>
<p>The gravity field from EGM2008 at the top of Mount Everest</p>
<pre>
- echo "27d59'17N" "86d55'32E" 8820 | Gravity -n egm2008
+ echo 27:59:17N 86:55:32E 8820 | Gravity -n egm2008
=> -0.00001 0.00103 -9.76782</pre>
<p>
</p>
diff --git a/man/Gravity.pod b/man/Gravity.pod
index d2973d4..d30f034 100644
--- a/man/Gravity.pod
+++ b/man/Gravity.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 26a56ea50015eec6e0883697e3f7a9908d0b27c6 $
+=for comment $Id: bf56ca96d0775a0610ee03a5e6d92bb21afeff7b $
=head1 NAME
@@ -9,8 +9,11 @@ Gravity -- compute the earth's gravity field
B<Gravity> [ B<-n> I<name> ] [ B<-d> I<dir> ]
[ B<-G> | B<-D> | B<-A> | B<-H> ] [ B<-c> I<lat> I<h> ]
[ B<-p> I<prec> ]
-[ B<-v> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-v> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -103,6 +106,14 @@ and 4 for the geoid height.
print information about the gravity model on standard error before
processing the input.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -123,8 +134,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
@@ -201,7 +217,7 @@ terminate; following lines will be converted.
The gravity field from EGM2008 at the top of Mount Everest
- echo "27d59'17N" "86d55'32E" 8820 | Gravity -n egm2008
+ echo 27:59:17N 86:55:32E 8820 | Gravity -n egm2008
=> -0.00001 0.00103 -9.76782
=head1 SEE ALSO
diff --git a/man/Gravity.usage b/man/Gravity.usage
index 428a178..790a828 100644
--- a/man/Gravity.usage
+++ b/man/Gravity.usage
@@ -2,8 +2,9 @@ int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
" Gravity [ -n name ] [ -d dir ] [ -G | -D | -A | -H ] [ -c lat h ] [ -p\n"
-" prec ] [ -v ] [ --version | -h | --help ] [ --input-file infile |\n"
-" --input-string instring ] [ --output-file outfile ]\n"
+" prec ] [ -v ] [ --comment-delimiter commentdelim ] [ --version | -h |\n"
+" --help ] [ --input-file infile | --input-string instring ] [\n"
+" --line-separator linesep ] [ --output-file outfile ]\n"
"\n"
"For full documentation type:\n"
" Gravity --help\n"
@@ -16,8 +17,9 @@ int usage(int retval, bool brief) {
"\n"
"SYNOPSIS\n"
" Gravity [ -n name ] [ -d dir ] [ -G | -D | -A | -H ] [ -c lat h ] [ -p\n"
-" prec ] [ -v ] [ --version | -h | --help ] [ --input-file infile |\n"
-" --input-string instring ] [ --output-file outfile ]\n"
+" prec ] [ -v ] [ --comment-delimiter commentdelim ] [ --version | -h |\n"
+" --help ] [ --input-file infile | --input-string instring ] [\n"
+" --line-separator linesep ] [ --output-file outfile ]\n"
"\n"
"DESCRIPTION\n"
" Gravity reads in positions on standard input and prints out the\n"
@@ -86,6 +88,13 @@ int usage(int retval, bool brief) {
" -v print information about the gravity model on standard error before\n"
" processing the input.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -100,8 +109,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
@@ -164,7 +178,7 @@ int usage(int retval, bool brief) {
"EXAMPLES\n"
" The gravity field from EGM2008 at the top of Mount Everest\n"
"\n"
-" echo \"27d59'17N\" \"86d55'32E\" 8820 | Gravity -n egm2008\n"
+" echo 27:59:17N 86:55:32E 8820 | Gravity -n egm2008\n"
" => -0.00001 0.00103 -9.76782\n"
"\n"
"SEE ALSO\n"
diff --git a/man/MagneticField.1 b/man/MagneticField.1
index d2ff2e8..d340791 100644
--- a/man/MagneticField.1
+++ b/man/MagneticField.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "MAGNETICFIELD 1"
-.TH MAGNETICFIELD 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH MAGNETICFIELD 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -136,8 +136,11 @@ MagneticField \-\- compute the earth's magnetic field
\&\fBMagneticField\fR [ \fB\-n\fR \fIname\fR ] [ \fB\-d\fR \fIdir\fR ]
[ \fB\-t\fR \fItime\fR | \fB\-c\fR \fItime\fR \fIlat\fR \fIh\fR ]
[ \fB\-r\fR ] [ \fB\-T\fR \fItguard\fR ] [ \fB\-H\fR \fIhguard\fR ] [ \fB\-p\fR \fIprec\fR ]
-[ \fB\-v\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-v\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -215,6 +218,13 @@ places.
.IX Item "-v"
print information about the magnetic model on standard error before
processing the input.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -231,8 +241,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
@@ -310,7 +324,7 @@ way.
The magnetic field from \s-1WMM2010\s0 in Timbuktu on 2012\-01\-01
.PP
.Vb 3
-\& echo 2012\-01\-01 "16d46\*(Aq33N" "3d00\*(Aq34W" 300 | MagneticField \-r
+\& echo 2012\-01\-01 16:46:33N 3:00:34W 300 | MagneticField \-r
\& => \-2.55 12.43 33771.0 33737.6 \-1500.5 7446.0 34582.1
\& 0.10 \-0.07 34.3 36.8 54.4 \-35.3 25.9
.Ve
diff --git a/man/MagneticField.1.html b/man/MagneticField.1.html
index 8288971..cf39b66 100644
--- a/man/MagneticField.1.html
+++ b/man/MagneticField.1.html
@@ -48,8 +48,11 @@
<p><strong>MagneticField</strong> [ <strong>-n</strong> <em>name</em> ] [ <strong>-d</strong> <em>dir</em> ]
[ <strong>-t</strong> <em>time</em> | <strong>-c</strong> <em>time</em> <em>lat</em> <em>h</em> ]
[ <strong>-r</strong> ] [ <strong>-T</strong> <em>tguard</em> ] [ <strong>-H</strong> <em>hguard</em> ] [ <strong>-p</strong> <em>prec</em> ]
-[ <strong>-v</strong> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-v</strong> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -144,6 +147,15 @@ places.</p>
<p>print information about the magnetic model on standard error before
processing the input.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -169,8 +181,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
@@ -261,7 +279,7 @@ way.</p>
<h1><a name="examples">EXAMPLES</a></h1>
<p>The magnetic field from WMM2010 in Timbuktu on 2012-01-01</p>
<pre>
- echo 2012-01-01 "16d46'33N" "3d00'34W" 300 | MagneticField -r
+ echo 2012-01-01 16:46:33N 3:00:34W 300 | MagneticField -r
=> -2.55 12.43 33771.0 33737.6 -1500.5 7446.0 34582.1
0.10 -0.07 34.3 36.8 54.4 -35.3 25.9</pre>
<p>The first two numbers returned are the declination and inclination of
diff --git a/man/MagneticField.pod b/man/MagneticField.pod
index ec13bec..1fdf367 100644
--- a/man/MagneticField.pod
+++ b/man/MagneticField.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 00f0562fe0184e3805b4a15323153929dc9f306c $
+=for comment $Id: fe9a4ece2e3919b375542db7836d269d1dfdb9b6 $
=head1 NAME
@@ -9,8 +9,11 @@ MagneticField -- compute the earth's magnetic field
B<MagneticField> [ B<-n> I<name> ] [ B<-d> I<dir> ]
[ B<-t> I<time> | B<-c> I<time> I<lat> I<h> ]
[ B<-r> ] [ B<-T> I<tguard> ] [ B<-H> I<hguard> ] [ B<-p> I<prec> ]
-[ B<-v> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-v> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -99,6 +102,14 @@ places.
print information about the magnetic model on standard error before
processing the input.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -119,8 +130,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
@@ -208,7 +224,7 @@ way.
The magnetic field from WMM2010 in Timbuktu on 2012-01-01
- echo 2012-01-01 "16d46'33N" "3d00'34W" 300 | MagneticField -r
+ echo 2012-01-01 16:46:33N 3:00:34W 300 | MagneticField -r
=> -2.55 12.43 33771.0 33737.6 -1500.5 7446.0 34582.1
0.10 -0.07 34.3 36.8 54.4 -35.3 25.9
diff --git a/man/MagneticField.usage b/man/MagneticField.usage
index 7db4a39..0dbb9b7 100644
--- a/man/MagneticField.usage
+++ b/man/MagneticField.usage
@@ -2,9 +2,10 @@ int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
" MagneticField [ -n name ] [ -d dir ] [ -t time | -c time lat h ] [ -r ]\n"
-" [ -T tguard ] [ -H hguard ] [ -p prec ] [ -v ] [ --version | -h |\n"
-" --help ] [ --input-file infile | --input-string instring ] [\n"
-" --output-file outfile ]\n"
+" [ -T tguard ] [ -H hguard ] [ -p prec ] [ -v ] [ --comment-delimiter\n"
+" commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+" --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
+" outfile ]\n"
"\n"
"For full documentation type:\n"
" MagneticField --help\n"
@@ -17,9 +18,10 @@ int usage(int retval, bool brief) {
"\n"
"SYNOPSIS\n"
" MagneticField [ -n name ] [ -d dir ] [ -t time | -c time lat h ] [ -r ]\n"
-" [ -T tguard ] [ -H hguard ] [ -p prec ] [ -v ] [ --version | -h |\n"
-" --help ] [ --input-file infile | --input-string instring ] [\n"
-" --output-file outfile ]\n"
+" [ -T tguard ] [ -H hguard ] [ -p prec ] [ -v ] [ --comment-delimiter\n"
+" commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+" --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
+" outfile ]\n"
"\n"
"DESCRIPTION\n"
" MagneticField reads in times and positions on standard input and prints\n"
@@ -83,6 +85,13 @@ int usage(int retval, bool brief) {
" -v print information about the magnetic model on standard error before\n"
" processing the input.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -97,8 +106,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
@@ -170,7 +184,7 @@ int usage(int retval, bool brief) {
"EXAMPLES\n"
" The magnetic field from WMM2010 in Timbuktu on 2012-01-01\n"
"\n"
-" echo 2012-01-01 \"16d46'33N\" \"3d00'34W\" 300 | MagneticField -r\n"
+" echo 2012-01-01 16:46:33N 3:00:34W 300 | MagneticField -r\n"
" => -2.55 12.43 33771.0 33737.6 -1500.5 7446.0 34582.1\n"
" 0.10 -0.07 34.3 36.8 54.4 -35.3 25.9\n"
"\n"
diff --git a/man/Makefile.am b/man/Makefile.am
index 46349f0..546b5e7 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -2,7 +2,7 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 78a0c235fc4db6530faed372f0f78400573242d3 $
+# $Id: 1744bf09577749b0b2bb5775499fe4f0259cc02f $
MANPAGES = \
CartConvert.1 \
@@ -55,7 +55,7 @@ usage: $(USAGE)
htmlman: $(HTMLMAN)
.pod.usage:
- sh makeusage.sh $< > $*.usage
+ sh $(srcdir)/makeusage.sh $< > $*.usage
.pod.1:
pod2html --noindex $^ | $(PODFIX) > $*.1.html
@@ -96,5 +96,5 @@ EXTRA_DIST = Makefile.mk CMakeLists.txt makeusage.sh \
CartConvert.1.html ConicProj.1.html Geod.1.html GeodesicProj.1.html \
GeoidEval.1.html Gravity.1.html MagneticField.1.html Planimeter.1.html
-distclean-local:
+maintainer-clean-local:
rm -rf *.usage *.1.html *.1
diff --git a/man/Makefile.in b/man/Makefile.in
index 18bc939..a677552 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -19,7 +19,7 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 78a0c235fc4db6530faed372f0f78400573242d3 $
+# $Id: 1744bf09577749b0b2bb5775499fe4f0259cc02f $
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -426,7 +426,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-local
+distclean-am: clean-am distclean-generic
dvi: dvi-am
@@ -470,7 +470,8 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+ maintainer-clean-local
mostlyclean: mostlyclean-am
@@ -491,16 +492,17 @@ uninstall-man: uninstall-man1
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
- distclean distclean-generic distclean-libtool distclean-local \
- distdir dvi dvi-am html html-am info info-am install \
- install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-man1 install-pdf install-pdf-am install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
- ps ps-am uninstall uninstall-am uninstall-man uninstall-man1
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-man1 \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic \
+ maintainer-clean-local mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-man uninstall-man1
all: man
@@ -511,7 +513,7 @@ usage: $(USAGE)
htmlman: $(HTMLMAN)
.pod.usage:
- sh makeusage.sh $< > $*.usage
+ sh $(srcdir)/makeusage.sh $< > $*.usage
.pod.1:
pod2html --noindex $^ | $(PODFIX) > $*.1.html
@@ -538,7 +540,7 @@ Planimeter.1.html: Planimeter.pod
TransverseMercatorProj.1.html: TransverseMercatorProj.pod
pod2html --noindex $^ | $(PODFIX) > $@
-distclean-local:
+maintainer-clean-local:
rm -rf *.usage *.1.html *.1
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/man/Makefile.mk b/man/Makefile.mk
index 1197205..d282b0c 100644
--- a/man/Makefile.mk
+++ b/man/Makefile.mk
@@ -1,4 +1,4 @@
-# $Id: 6ff1f99e93e96bde6bd53462c0f4d9cfdc9588f7 $
+# $Id: 6d0f3921b8c739428669640b67932b7bf9f925d0 $
PROGRAMS = CartConvert \
ConicProj \
GeoConvert \
@@ -39,7 +39,8 @@ INSTALL = install -b
install:
test -d $(DEST) || mkdir -p $(DEST)
$(INSTALL) -m 644 $(MANPAGES) $(DEST)/
-distclean:
+
+maintainer-clean:
rm -f *.1 *.usage *.1.html
.PHONY: all install clean
diff --git a/man/Planimeter.1 b/man/Planimeter.1
index b42d364..67f3dfd 100644
--- a/man/Planimeter.1
+++ b/man/Planimeter.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "PLANIMETER 1"
-.TH PLANIMETER 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH PLANIMETER 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -134,8 +134,10 @@ Planimeter \-\- compute the area of geodesic polygons
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
\&\fBPlanimeter\fR [ \fB\-r\fR ] [ \fB\-s\fR ] [ \fB\-l\fR ] [ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -190,6 +192,13 @@ is allowed for \fIf\fR. (Also, if \fIf\fR > 1, the flattening is set to
\&\fIf\fR = 1/298.257223563. If entering vertices as \s-1UTM/UPS\s0 or \s-1MGRS\s0
coordinates, use the default ellipsoid, since the conversion of these
coordinates to latitude and longitude uses the \s-1WGS84\s0 parameters.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing. For a given polygon, the last such string found will be
+appended to the output line (separated by a space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -206,8 +215,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/Planimeter.1.html b/man/Planimeter.1.html
index 4705c61..37d5415 100644
--- a/man/Planimeter.1.html
+++ b/man/Planimeter.1.html
@@ -43,8 +43,10 @@
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>Planimeter</strong> [ <strong>-r</strong> ] [ <strong>-s</strong> ] [ <strong>-l</strong> ] [ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -109,6 +111,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
coordinates, use the default ellipsoid, since the conversion of these
coordinates to latitude and longitude uses the WGS84 parameters.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing. For a given polygon, the last such string found will be
+appended to the output line (separated by a space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -134,8 +145,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/man/Planimeter.pod b/man/Planimeter.pod
index 39657e4..a15925d 100644
--- a/man/Planimeter.pod
+++ b/man/Planimeter.pod
@@ -1,4 +1,4 @@
-=for comment $Id: d00ac2efb990c19bc93346851a06d6c672d054bd $
+=for comment $Id: 501af1a00d02bb4b2b99db921909290b647be941 $
=head1 NAME
@@ -7,8 +7,10 @@ Planimeter -- compute the area of geodesic polygons
=head1 SYNOPSIS
B<Planimeter> [ B<-r> ] [ B<-s> ] [ B<-l> ] [ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -71,6 +73,14 @@ I<f> = 1/298.257223563. If entering vertices as UTM/UPS or MGRS
coordinates, use the default ellipsoid, since the conversion of these
coordinates to latitude and longitude uses the WGS84 parameters.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing. For a given polygon, the last such string found will be
+appended to the output line (separated by a space).
+
=item B<--version>
print version and exit.
@@ -91,8 +101,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
diff --git a/man/Planimeter.usage b/man/Planimeter.usage
index a76be09..5d83e81 100644
--- a/man/Planimeter.usage
+++ b/man/Planimeter.usage
@@ -1,8 +1,9 @@
int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
-" Planimeter [ -r ] [ -s ] [ -l ] [ -e a f ] [ --version | -h | --help ]\n"
-" [ --input-file infile | --input-string instring ] [ --output-file\n"
+" Planimeter [ -r ] [ -s ] [ -l ] [ -e a f ] [ --comment-delimiter\n"
+" commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+" --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
" outfile ]\n"
"\n"
"For full documentation type:\n"
@@ -15,8 +16,9 @@ int usage(int retval, bool brief) {
" Planimeter -- compute the area of geodesic polygons\n"
"\n"
"SYNOPSIS\n"
-" Planimeter [ -r ] [ -s ] [ -l ] [ -e a f ] [ --version | -h | --help ]\n"
-" [ --input-file infile | --input-string instring ] [ --output-file\n"
+" Planimeter [ -r ] [ -s ] [ -l ] [ -e a f ] [ --comment-delimiter\n"
+" commentdelim ] [ --version | -h | --help ] [ --input-file infile |\n"
+" --input-string instring ] [ --line-separator linesep ] [ --output-file\n"
" outfile ]\n"
"\n"
"DESCRIPTION\n"
@@ -68,6 +70,13 @@ int usage(int retval, bool brief) {
" these coordinates to latitude and longitude uses the WGS84\n"
" parameters.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing. For a given polygon, the last such string found\n"
+" will be appended to the output line (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -82,8 +91,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
diff --git a/man/TransverseMercatorProj.1 b/man/TransverseMercatorProj.1
index bcfb127..2558937 100644
--- a/man/TransverseMercatorProj.1
+++ b/man/TransverseMercatorProj.1
@@ -1,4 +1,4 @@
-.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16)
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -124,7 +124,7 @@
.\" ========================================================================
.\"
.IX Title "TRANSVERSEMERCATORPROJ 1"
-.TH TRANSVERSEMERCATORPROJ 1 "2012-02-17" "GeographicLib 1.18" "GeographicLib Utilities"
+.TH TRANSVERSEMERCATORPROJ 1 "2012-04-24" "GeographicLib 1.21" "GeographicLib Utilities"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
@@ -135,8 +135,11 @@ TransverseMercatorProj \-\- perform transverse Mercator projection
.IX Header "SYNOPSIS"
\&\fBTransverseMercatorProj\fR [ \fB\-s\fR | \fB\-t\fR ]
[ \fB\-l\fR \fIlon0\fR ] [ \fB\-k\fR \fIk1\fR ] [ \fB\-r\fR ]
-[ \fB\-e\fR \fIa\fR \fIf\fR ] [ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
+[ \fB\-e\fR \fIa\fR \fIf\fR ]
+[ \fB\-\-comment\-delimiter\fR \fIcommentdelim\fR ]
+[ \fB\-\-version\fR | \fB\-h\fR | \fB\-\-help\fR ]
[ \fB\-\-input\-file\fR \fIinfile\fR | \fB\-\-input\-string\fR \fIinstring\fR ]
+[ \fB\-\-line\-separator\fR \fIlinesep\fR ]
[ \fB\-\-output\-file\fR \fIoutfile\fR ]
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
@@ -182,6 +185,13 @@ is allowed for \fIf\fR. (Also, if \fIf\fR > 1, the flattening is set to
1/\fIf\fR.) By default, the \s-1WGS84\s0 ellipsoid is used, \fIa\fR = 6378137 m,
\&\fIf\fR = 1/298.257223563. If the exact algorithm is used, \fIf\fR must be
positive.
+.IP "\fB\-\-comment\-delimiter\fR" 4
+.IX Item "--comment-delimiter"
+set the comment delimiter to \fIcommentdelim\fR (e.g., \*(L"#\*(R" or \*(L"//\*(R"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
.IP "\fB\-\-version\fR" 4
.IX Item "--version"
print version and exit.
@@ -198,8 +208,12 @@ name of \*(L"\-\*(R" stands for standard input.
.IP "\fB\-\-input\-string\fR" 4
.IX Item "--input-string"
read input from the string \fIinstring\fR instead of from standard input.
-All the semicolons in \fIinstring\fR are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in \fIinstring\fR are converted to newlines before the reading begins.
+.IP "\fB\-\-line\-separator\fR" 4
+.IX Item "--line-separator"
+set the line separator character to \fIlinesep\fR. By default this is a
+semicolon.
.IP "\fB\-\-output\-file\fR" 4
.IX Item "--output-file"
write output to the file \fIoutfile\fR instead of to standard output; a
diff --git a/man/TransverseMercatorProj.1.html b/man/TransverseMercatorProj.1.html
index 10cf80f..c3868d4 100644
--- a/man/TransverseMercatorProj.1.html
+++ b/man/TransverseMercatorProj.1.html
@@ -46,8 +46,11 @@
<h1><a name="synopsis">SYNOPSIS</a></h1>
<p><strong>TransverseMercatorProj</strong> [ <strong>-s</strong> | <strong>-t</strong> ]
[ <strong>-l</strong> <em>lon0</em> ] [ <strong>-k</strong> <em>k1</em> ] [ <strong>-r</strong> ]
-[ <strong>-e</strong> <em>a</em> <em>f</em> ] [ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
+[ <strong>-e</strong> <em>a</em> <em>f</em> ]
+[ <strong>--comment-delimiter</strong> <em>commentdelim</em> ]
+[ <strong>--version</strong> | <strong>-h</strong> | <strong>--help</strong> ]
[ <strong>--input-file</strong> <em>infile</em> | <strong>--input-string</strong> <em>instring</em> ]
+[ <strong>--line-separator</strong> <em>linesep</em> ]
[ <strong>--output-file</strong> <em>outfile</em> ]</p>
<p>
</p>
@@ -109,6 +112,15 @@ is allowed for <em>f</em>. (Also, if <em>f</em> > 1, the flattening is set t
<em>f</em> = 1/298.257223563. If the exact algorithm is used, <em>f</em> must be
positive.</p>
</dd>
+<dt><strong><a name="comment_delimiter" class="item"><strong>--comment-delimiter</strong></a></strong></dt>
+
+<dd>
+<p>set the comment delimiter to <em>commentdelim</em> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).</p>
+</dd>
<dt><strong><a name="version" class="item"><strong>--version</strong></a></strong></dt>
<dd>
@@ -134,8 +146,14 @@ name of "-" stands for standard input.</p>
<dd>
<p>read input from the string <em>instring</em> instead of from standard input.
-All the semicolons in <em>instring</em> are converted to newlines before the
-reading begins.</p>
+All occurrences of the line separator character (default is a semicolon)
+in <em>instring</em> are converted to newlines before the reading begins.</p>
+</dd>
+<dt><strong><a name="line_separator" class="item"><strong>--line-separator</strong></a></strong></dt>
+
+<dd>
+<p>set the line separator character to <em>linesep</em>. By default this is a
+semicolon.</p>
</dd>
<dt><strong><a name="output_file" class="item"><strong>--output-file</strong></a></strong></dt>
diff --git a/man/TransverseMercatorProj.pod b/man/TransverseMercatorProj.pod
index a5ffba7..ca690a5 100644
--- a/man/TransverseMercatorProj.pod
+++ b/man/TransverseMercatorProj.pod
@@ -1,4 +1,4 @@
-=for comment $Id: 7728035d533dbf4d09a47aa8554f234c84e70721 $
+=for comment $Id: 8a4775820ec5720d8a4f478595e88eb32f385475 $
=head1 NAME
@@ -8,8 +8,11 @@ TransverseMercatorProj -- perform transverse Mercator projection
B<TransverseMercatorProj> [ B<-s> | B<-t> ]
[ B<-l> I<lon0> ] [ B<-k> I<k1> ] [ B<-r> ]
-[ B<-e> I<a> I<f> ] [ B<--version> | B<-h> | B<--help> ]
+[ B<-e> I<a> I<f> ]
+[ B<--comment-delimiter> I<commentdelim> ]
+[ B<--version> | B<-h> | B<--help> ]
[ B<--input-file> I<infile> | B<--input-string> I<instring> ]
+[ B<--line-separator> I<linesep> ]
[ B<--output-file> I<outfile> ]
=head1 DESCRIPTION
@@ -65,6 +68,14 @@ is allowed for I<f>. (Also, if I<f> E<gt> 1, the flattening is set to
I<f> = 1/298.257223563. If the exact algorithm is used, I<f> must be
positive.
+=item B<--comment-delimiter>
+
+set the comment delimiter to I<commentdelim> (e.g., "#" or "//"). If
+set, the input lines will be scanned for this delimiter and, if found,
+the delimiter and the rest of the line will be removed prior to
+processing and subsequently appended to the output line (separated by a
+space).
+
=item B<--version>
print version and exit.
@@ -85,8 +96,13 @@ name of "-" stands for standard input.
=item B<--input-string>
read input from the string I<instring> instead of from standard input.
-All the semicolons in I<instring> are converted to newlines before the
-reading begins.
+All occurrences of the line separator character (default is a semicolon)
+in I<instring> are converted to newlines before the reading begins.
+
+=item B<--line-separator>
+
+set the line separator character to I<linesep>. By default this is a
+semicolon.
=item B<--output-file>
diff --git a/man/TransverseMercatorProj.usage b/man/TransverseMercatorProj.usage
index 79ffca5..50345f9 100644
--- a/man/TransverseMercatorProj.usage
+++ b/man/TransverseMercatorProj.usage
@@ -2,8 +2,9 @@ int usage(int retval, bool brief) {
if (brief)
( retval ? std::cerr : std::cout ) << "Usage:\n"
" TransverseMercatorProj [ -s | -t ] [ -l lon0 ] [ -k k1 ] [ -r ] [ -e a\n"
-" f ] [ --version | -h | --help ] [ --input-file infile | --input-string\n"
-" instring ] [ --output-file outfile ]\n"
+" f ] [ --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+" --input-file infile | --input-string instring ] [ --line-separator\n"
+" linesep ] [ --output-file outfile ]\n"
"\n"
"For full documentation type:\n"
" TransverseMercatorProj --help\n"
@@ -16,8 +17,9 @@ int usage(int retval, bool brief) {
"\n"
"SYNOPSIS\n"
" TransverseMercatorProj [ -s | -t ] [ -l lon0 ] [ -k k1 ] [ -r ] [ -e a\n"
-" f ] [ --version | -h | --help ] [ --input-file infile | --input-string\n"
-" instring ] [ --output-file outfile ]\n"
+" f ] [ --comment-delimiter commentdelim ] [ --version | -h | --help ] [\n"
+" --input-file infile | --input-string instring ] [ --line-separator\n"
+" linesep ] [ --output-file outfile ]\n"
"\n"
"DESCRIPTION\n"
" Perform the transverse Mercator projections. Convert geodetic\n"
@@ -56,6 +58,13 @@ int usage(int retval, bool brief) {
" 1/298.257223563. If the exact algorithm is used, f must be\n"
" positive.\n"
"\n"
+" --comment-delimiter\n"
+" set the comment delimiter to commentdelim (e.g., \"#\" or \"//\"). If\n"
+" set, the input lines will be scanned for this delimiter and, if\n"
+" found, the delimiter and the rest of the line will be removed prior\n"
+" to processing and subsequently appended to the output line\n"
+" (separated by a space).\n"
+"\n"
" --version\n"
" print version and exit.\n"
"\n"
@@ -70,8 +79,13 @@ int usage(int retval, bool brief) {
"\n"
" --input-string\n"
" read input from the string instring instead of from standard input.\n"
-" All the semicolons in instring are converted to newlines before the\n"
-" reading begins.\n"
+" All occurrences of the line separator character (default is a\n"
+" semicolon) in instring are converted to newlines before the reading\n"
+" begins.\n"
+"\n"
+" --line-separator\n"
+" set the line separator character to linesep. By default this is a\n"
+" semicolon.\n"
"\n"
" --output-file\n"
" write output to the file outfile instead of to standard output; a\n"
diff --git a/matlab/CMakeLists.txt b/matlab/CMakeLists.txt
index 08589d0..f9aef61 100644
--- a/matlab/CMakeLists.txt
+++ b/matlab/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: e21a8f0e68ba8c9c30728f895f631a00d842bbf1 $
+# $Id: 8da4ccf20ab1de73f6ac4c2d60d6857229a076af $
# Set up the matlab interface. The .m files just contain the
# documentation. The .cpp files implement the interface.
@@ -8,56 +8,56 @@ file (GLOB MATLAB_INTERFACES *.cpp)
install (FILES ${MATLAB_FILES} ${MATLAB_INTERFACES}
DESTINATION libexec/GeographicLib/matlab)
-# If HAVE_MEX then compile the interface routines. On non-Windows
+# If MEX then compile the interface routines. On non-Windows
# systems, an attempt is made to minimize the number of addition target
# generated. For some reason this does not work with Windows systems.
# On Windows systems, need also to copy the shared library to where the
# mex files live (in the build and install trees).
-if (HAVE_MEX)
+if (MEX)
if (WIN32)
include (InstallRequiredSystemLibraries)
install (PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
DESTINATION libexec/GeographicLib/matlab)
add_custom_target (matlab-all)
- else (WIN32)
+ else ()
set (INTERFACE_LIST)
- endif (WIN32)
+ endif ()
foreach (INTERFACE ${MATLAB_INTERFACES})
get_filename_component (TARGET ${INTERFACE} NAME_WE)
set (TARGET_INTERFACE ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.${MEXEXT})
if (WIN32)
add_custom_target (matlab-${TARGET} DEPENDS ${TARGET_INTERFACE})
add_custom_command (OUTPUT ${TARGET_INTERFACE}
- COMMAND
- ${MEX}
- -I${PROJECT_BINARY_DIR}/include -I${PROJECT_SOURCE_DIR}/include
- -L${PROJECT_BINARY_DIR}/src/Release -lGeographic
- ${INTERFACE}
- COMMENT "Building matlab interface for ${TARGET}"
- DEPENDS ${INTERFACE} Geographic)
+ COMMAND
+ ${MEX}
+ -I${PROJECT_BINARY_DIR}/include -I${PROJECT_SOURCE_DIR}/include
+ -L${PROJECT_BINARY_DIR}/src/Release -lGeographic
+ ${INTERFACE}
+ COMMENT "Building matlab interface for ${TARGET}"
+ DEPENDS ${INTERFACE} Geographic)
add_dependencies (matlab-${TARGET} Geographic)
add_dependencies (matlab-all matlab-${TARGET})
install (PROGRAMS ${TARGET_INTERFACE}
- DESTINATION libexec/GeographicLib/matlab CONFIGURATIONS Release)
- else (WIN32)
+ DESTINATION libexec/GeographicLib/matlab CONFIGURATIONS Release)
+ else ()
set (INTERFACE_LIST ${INTERFACE_LIST} ${TARGET_INTERFACE})
add_custom_command (OUTPUT ${TARGET_INTERFACE}
- COMMAND
- ${MEX} --mex
- -I${PROJECT_BINARY_DIR}/include -I${PROJECT_SOURCE_DIR}/include
- -L${PROJECT_BINARY_DIR}/src -lGeographic
- -Wl,-rpath=${CMAKE_INSTALL_PREFIX}/lib
- ${INTERFACE}
- COMMENT "Building matlab interface for ${TARGET}"
- DEPENDS ${INTERFACE} Geographic)
- endif (WIN32)
- endforeach (INTERFACE)
+ COMMAND
+ ${MEX} --mex
+ -I${PROJECT_BINARY_DIR}/include -I${PROJECT_SOURCE_DIR}/include
+ -L${PROJECT_BINARY_DIR}/src -lGeographic
+ -Wl,-rpath=${CMAKE_INSTALL_PREFIX}/lib
+ ${INTERFACE}
+ COMMENT "Building matlab interface for ${TARGET}"
+ DEPENDS ${INTERFACE} Geographic)
+ endif ()
+ endforeach ()
if (NOT WIN32)
add_custom_target (matlab-all DEPENDS ${INTERFACE_LIST})
add_dependencies (matlab-all Geographic)
install (PROGRAMS ${INTERFACE_LIST}
DESTINATION libexec/GeographicLib/matlab CONFIGURATIONS Release)
- endif (NOT WIN32)
+ endif ()
if (WIN32 AND GEOGRAPHIC_SHARED_LIB)
get_target_property (GEOGRAPHIC_LIBRARY_FILE Geographic LOCATION_RELEASE)
add_custom_command (TARGET matlab-all POST_BUILD
@@ -66,5 +66,5 @@ if (HAVE_MEX)
${GEOGRAPHIC_LIBRARY_FILE} NAME)
install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${GEOGRAPHIC_LIBRARY_NAME}
DESTINATION libexec/GeographicLib/matlab CONFIGURATIONS Release)
- endif (WIN32 AND GEOGRAPHIC_SHARED_LIB)
-endif (HAVE_MEX)
+ endif ()
+endif ()
diff --git a/matlab/Makefile.am b/matlab/Makefile.am
index 2680969..fd89ba7 100644
--- a/matlab/Makefile.am
+++ b/matlab/Makefile.am
@@ -2,39 +2,39 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: a8293d05276359f975210af0269924eddf6e800b $
+# $Id: 472c249909687bc3d74ec316a8a7d06e778fd826 $
MATLAB_INTERFACE = \
-geodesicdirect.cpp \
-geodesicinverse.cpp \
-geodesicline.cpp \
-geoidheight.cpp \
-mgrsforward.cpp \
-mgrsreverse.cpp \
-utmupsforward.cpp \
-utmupsreverse.cpp \
-geocentricforward.cpp \
-geocentricreverse.cpp \
-localcartesianforward.cpp \
-localcartesianreverse.cpp \
-polygonarea.cpp
+$(srcdir)/geodesicdirect.cpp \
+$(srcdir)/geodesicinverse.cpp \
+$(srcdir)/geodesicline.cpp \
+$(srcdir)/geoidheight.cpp \
+$(srcdir)/mgrsforward.cpp \
+$(srcdir)/mgrsreverse.cpp \
+$(srcdir)/utmupsforward.cpp \
+$(srcdir)/utmupsreverse.cpp \
+$(srcdir)/geocentricforward.cpp \
+$(srcdir)/geocentricreverse.cpp \
+$(srcdir)/localcartesianforward.cpp \
+$(srcdir)/localcartesianreverse.cpp \
+$(srcdir)/polygonarea.cpp
MATLAB_DOC = \
-geodesicdirect.m \
-geodesicinverse.m \
-geodesicline.m \
-geoidheight.m \
-mgrsforward.m \
-mgrsreverse.m \
-utmupsforward.m \
-utmupsreverse.m \
-geocentricforward.m \
-geocentricreverse.m \
-localcartesianforward.m \
-localcartesianreverse.m \
-polygonarea.m
-
-MATLAB_COMPILESCRIPT = geographiclibinterface.m
+$(srcdir)/geodesicdirect.m \
+$(srcdir)/geodesicinverse.m \
+$(srcdir)/geodesicline.m \
+$(srcdir)/geoidheight.m \
+$(srcdir)/mgrsforward.m \
+$(srcdir)/mgrsreverse.m \
+$(srcdir)/utmupsforward.m \
+$(srcdir)/utmupsreverse.m \
+$(srcdir)/geocentricforward.m \
+$(srcdir)/geocentricreverse.m \
+$(srcdir)/localcartesianforward.m \
+$(srcdir)/localcartesianreverse.m \
+$(srcdir)/polygonarea.m
+
+MATLAB_COMPILESCRIPT = $(srcdir)/geographiclibinterface.m
MATLAB_ALL = $(MATLAB_INTERFACE) $(MATLAB_DOC) $(MATLAB_COMPILESCRIPT)
diff --git a/matlab/Makefile.in b/matlab/Makefile.in
index b3495b4..ee0a47a 100644
--- a/matlab/Makefile.in
+++ b/matlab/Makefile.in
@@ -19,7 +19,7 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: a8293d05276359f975210af0269924eddf6e800b $
+# $Id: 472c249909687bc3d74ec316a8a7d06e778fd826 $
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -184,36 +184,36 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
MATLAB_INTERFACE = \
-geodesicdirect.cpp \
-geodesicinverse.cpp \
-geodesicline.cpp \
-geoidheight.cpp \
-mgrsforward.cpp \
-mgrsreverse.cpp \
-utmupsforward.cpp \
-utmupsreverse.cpp \
-geocentricforward.cpp \
-geocentricreverse.cpp \
-localcartesianforward.cpp \
-localcartesianreverse.cpp \
-polygonarea.cpp
+$(srcdir)/geodesicdirect.cpp \
+$(srcdir)/geodesicinverse.cpp \
+$(srcdir)/geodesicline.cpp \
+$(srcdir)/geoidheight.cpp \
+$(srcdir)/mgrsforward.cpp \
+$(srcdir)/mgrsreverse.cpp \
+$(srcdir)/utmupsforward.cpp \
+$(srcdir)/utmupsreverse.cpp \
+$(srcdir)/geocentricforward.cpp \
+$(srcdir)/geocentricreverse.cpp \
+$(srcdir)/localcartesianforward.cpp \
+$(srcdir)/localcartesianreverse.cpp \
+$(srcdir)/polygonarea.cpp
MATLAB_DOC = \
-geodesicdirect.m \
-geodesicinverse.m \
-geodesicline.m \
-geoidheight.m \
-mgrsforward.m \
-mgrsreverse.m \
-utmupsforward.m \
-utmupsreverse.m \
-geocentricforward.m \
-geocentricreverse.m \
-localcartesianforward.m \
-localcartesianreverse.m \
-polygonarea.m
-
-MATLAB_COMPILESCRIPT = geographiclibinterface.m
+$(srcdir)/geodesicdirect.m \
+$(srcdir)/geodesicinverse.m \
+$(srcdir)/geodesicline.m \
+$(srcdir)/geoidheight.m \
+$(srcdir)/mgrsforward.m \
+$(srcdir)/mgrsreverse.m \
+$(srcdir)/utmupsforward.m \
+$(srcdir)/utmupsreverse.m \
+$(srcdir)/geocentricforward.m \
+$(srcdir)/geocentricreverse.m \
+$(srcdir)/localcartesianforward.m \
+$(srcdir)/localcartesianreverse.m \
+$(srcdir)/polygonarea.m
+
+MATLAB_COMPILESCRIPT = $(srcdir)/geographiclibinterface.m
MATLAB_ALL = $(MATLAB_INTERFACE) $(MATLAB_DOC) $(MATLAB_COMPILESCRIPT)
matlabdir = $(libexecdir)/GeographicLib/matlab
EXTRA_DIST = Makefile.mk CMakeLists.txt $(MATLAB_ALL)
diff --git a/python/Makefile.am b/python/Makefile.am
index 367086d..43cec4b 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -2,18 +2,18 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 29cca1fbc4c0be28911bf0a2e6f8072b42cb68b9 $
+# $Id: 9b974cbcac490c66540bdd090786d14e12719d82 $
PACKAGE=geographiclib
PYTHON_FILES = \
- $(PACKAGE)/__init__.py \
- $(PACKAGE)/geomath.py \
- $(PACKAGE)/constants.py \
- $(PACKAGE)/accumulator.py \
- $(PACKAGE)/geodesiccapability.py \
- $(PACKAGE)/geodesic.py \
- $(PACKAGE)/geodesicline.py \
- $(PACKAGE)/polygonarea.py
+ $(srcdir)/$(PACKAGE)/__init__.py \
+ $(srcdir)/$(PACKAGE)/geomath.py \
+ $(srcdir)/$(PACKAGE)/constants.py \
+ $(srcdir)/$(PACKAGE)/accumulator.py \
+ $(srcdir)/$(PACKAGE)/geodesiccapability.py \
+ $(srcdir)/$(PACKAGE)/geodesic.py \
+ $(srcdir)/$(PACKAGE)/geodesicline.py \
+ $(srcdir)/$(PACKAGE)/polygonarea.py
pythondir=$(libdir)/python/site-packages/$(PACKAGE)
diff --git a/python/Makefile.in b/python/Makefile.in
index 63df2d6..1f8a30d 100644
--- a/python/Makefile.in
+++ b/python/Makefile.in
@@ -19,7 +19,7 @@
# Makefile.am
#
# Copyright (C) 2011, Charles Karney <charles at karney.com>
-# $Id: 29cca1fbc4c0be28911bf0a2e6f8072b42cb68b9 $
+# $Id: 9b974cbcac490c66540bdd090786d14e12719d82 $
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@@ -184,14 +184,14 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
PYTHON_FILES = \
- $(PACKAGE)/__init__.py \
- $(PACKAGE)/geomath.py \
- $(PACKAGE)/constants.py \
- $(PACKAGE)/accumulator.py \
- $(PACKAGE)/geodesiccapability.py \
- $(PACKAGE)/geodesic.py \
- $(PACKAGE)/geodesicline.py \
- $(PACKAGE)/polygonarea.py
+ $(srcdir)/$(PACKAGE)/__init__.py \
+ $(srcdir)/$(PACKAGE)/geomath.py \
+ $(srcdir)/$(PACKAGE)/constants.py \
+ $(srcdir)/$(PACKAGE)/accumulator.py \
+ $(srcdir)/$(PACKAGE)/geodesiccapability.py \
+ $(srcdir)/$(PACKAGE)/geodesic.py \
+ $(srcdir)/$(PACKAGE)/geodesicline.py \
+ $(srcdir)/$(PACKAGE)/polygonarea.py
pythondir = $(libdir)/python/site-packages/$(PACKAGE)
EXTRA_DIST = Makefile.mk $(PACKAGE)/CMakeLists.txt $(PYTHON_FILES) setup.py \
diff --git a/python/geographiclib/CMakeLists.txt b/python/geographiclib/CMakeLists.txt
index 6e30167..e223409 100644
--- a/python/geographiclib/CMakeLists.txt
+++ b/python/geographiclib/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: a459320200767bbb246edbb873525ecacdc04246 $
+# $Id: 1cd13969a90a73112ab8c4bd44fc2194ff0af9ff $
# Install the python files.
# Probably full-time python users should install the python package from
@@ -14,4 +14,4 @@ install (FILES ${PYTHON_FILES}
# conflicts.
if (WIN32)
install (FILES ../setup.py DESTINATION lib/python/site-packages)
-endif (WIN32)
+endif ()
diff --git a/python/geographiclib/accumulator.py b/python/geographiclib/accumulator.py
index 0abd2a7..7c85d88 100644
--- a/python/geographiclib/accumulator.py
+++ b/python/geographiclib/accumulator.py
@@ -10,7 +10,7 @@
# under the MIT/X11 License. For more information, see
# http://geographiclib.sourceforge.net/
#
-# $Id: 057b47320e60c424502f17f822629d5107c6f80d $
+# $Id: bbf905e5f404f97b10497ac32fa02b4203cb0c7d $
######################################################################
class Accumulator(object):
@@ -42,7 +42,7 @@ class Accumulator(object):
def Add(self, y):
# Here's Shewchuk's solution...
# hold exact sum as [s, t, u]
- y, u = Accumulator.sum(y, self._t) # Accumulate starting at
+ y, u = Accumulator.sum(y, self._t) # Accumulate starting at
self._s, self._t = Accumulator.sum(y, self._s) # least significant end
# Start is _s, _t decreasing and non-adjacent. Sum is now (s + t + u)
# exactly with s, t, u non-adjacent and in decreasing order (except
diff --git a/python/geographiclib/geodesic.py b/python/geographiclib/geodesic.py
index 12393eb..01c50d2 100644
--- a/python/geographiclib/geodesic.py
+++ b/python/geographiclib/geodesic.py
@@ -17,11 +17,11 @@
# Algorithms for geodesics, Sept. 2011,
# http://arxiv.org/abs/1109.4448
#
-# Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed
-# under the MIT/X11 License. For more information, see
+# Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and
+# licensed under the MIT/X11 License. For more information, see
# http://geographiclib.sourceforge.net/
#
-# $Id: 0df741f8ec25f4cccd4f69e9e2bed2ee152d42d0 $
+# $Id: 95edebf1ac240458e1ba8a63577c589f330f849d $
######################################################################
import math
@@ -102,7 +102,7 @@ class Geodesic(object):
AREA = 1<<14 | CAP_C4
ALL = OUT_ALL| CAP_ALL
- def SinCosSeries(sinp, sinx, cosx, c, n):
+ def SinCosSeries(sinp, sinx, cosx, c, n):
# Evaluate
# y = sinp ? sum(c[i] * sin( 2*i * x), i, 1, n) :
# sum(c[i] * cos((2*i+1) * x), i, 0, n-1) :
@@ -141,7 +141,7 @@ class Geodesic(object):
z = 0.0625 # 1/16
y = abs(x)
# The compiler mustn't "simplify" z - (z - y) to y
- y = z - (z - y) if y < z else y
+ y = z - (z - y) if y < z else y
return -y if x < 0 else y
AngRound = staticmethod(AngRound)
@@ -164,7 +164,7 @@ class Geodesic(object):
r3 = r * r2
# The discrimant of the quadratic equation for T3. This is zero on
# the evolute curve p^(1/3)+q^(1/3) = 1
- disc = S * (S + 2 * r3)
+ disc = S * (S + 2 * r3)
u = r
if (disc >= 0):
T3 = S + r3
@@ -182,7 +182,7 @@ class Geodesic(object):
# There are three possible cube roots. We choose the root which
# avoids cancellation. Note that disc < 0 implies that r < 0.
u += 2 * r * math.cos(ang / 3)
- v = math.sqrt(Math.sq(u) + q) # guaranteed positive
+ v = math.sqrt(Math.sq(u) + q) # guaranteed positive
# Avoid loss of accuracy when u < 0.
uv = q / (v - u) if u < 0 else u + v # u+v, guaranteed positive
w = (uv - q) / (2 * v) # positive?
@@ -275,7 +275,8 @@ class Geodesic(object):
(Math.atanh(math.sqrt(self._e2)) if self._e2 > 0 else
math.atan(math.sqrt(-self._e2))) /
math.sqrt(abs(self._e2))))/2
- self._etol2 = Geodesic.tol2_ / max(0.1, math.sqrt(abs(self._e2)))
+ # The sig12 threshold for "really short"
+ self._etol2 = 10 * Geodesic.tol2_ / max(0.1, math.sqrt(abs(self._e2)))
if not(Math.isfinite(self._a) and self._a > 0):
raise ValueError("Major radius is not positive")
if not(Math.isfinite(self._b) and self._b > 0):
@@ -411,7 +412,7 @@ class Geodesic(object):
m12a = ((w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
- self._f1 * csig1 * csig2 * J12)
# Missing a factor of _b
- s12b = (1 + A1m1) * sig12 + AB1
+ s12b = (1 + A1m1) * sig12 + AB1
if scalep:
csig12 = csig1 * csig2 + ssig1 * ssig2
J12 *= self._f1
@@ -443,13 +444,13 @@ class Geodesic(object):
sbet12a += cbet2 * sbet1
shortline = cbet12 >= 0 and sbet12 < 0.5 and lam12 <= math.pi / 6
- omg12 = (lam12 / math.sqrt(1 - self._e2 * Math.sq(cbet1)) if shortline
- else lam12)
+ omg12 = (lam12 if not shortline else
+ lam12 / math.sqrt(1 - self._e2 * Math.sq((cbet1 + cbet2) / 2)))
somg12 = math.sin(omg12); comg12 = math.cos(omg12)
salp1 = cbet2 * somg12
calp1 = (
- sbet12 + cbet2 * sbet1 * Math.sq(somg12) / (1 + comg12) if comg12 >= 0
+ sbet12 + cbet2 * sbet1 * Math.sq(somg12) / (1 + comg12) if comg12 >= 0
else sbet12a - cbet2 * sbet1 * Math.sq(somg12) / (1 - comg12))
ssig12 = math.hypot(salp1, calp1)
@@ -497,12 +498,12 @@ class Geodesic(object):
lamscale = betscale / cbet1
y = (lam12 - math.pi) / lamscale
- if y > -Geodesic.tol1_ and x > -1 - Geodesic.xthresh_:
+ if y > -Geodesic.tol1_ and x > -1 - Geodesic.xthresh_:
# strip near cut
if self._f >= 0:
salp1 = min(1.0, -x); calp1 = - math.sqrt(1 - Math.sq(salp1))
else:
- calp1 = max((0.0 if x > -Geodesic.tol1_ else -1.0), x)
+ calp1 = max((0.0 if x > -Geodesic.tol1_ else -1.0), x)
salp1 = math.sqrt(1 - Math.sq(calp1))
else:
# Estimate alp1, by solving the astroid problem.
@@ -764,14 +765,14 @@ class Geodesic(object):
if sig12 >= 0:
# Short lines (InverseStart sets salp2, calp2)
- w1 = math.sqrt(1 - self._e2 * Math.sq(cbet1))
- s12x = sig12 * self._a * w1
- m12x = (Math.sq(w1) * self._a / self._f1 *
- math.sin(sig12 * self._f1 / w1))
+ wm = math.sqrt(1 - self._e2 * Math.sq((cbet1 + cbet2) / 2))
+ s12x = sig12 * self._a * wm
+ m12x = (Math.sq(wm) * self._a / self._f1 *
+ math.sin(sig12 * self._f1 / wm))
if outmask & Geodesic.GEODESICSCALE:
- M12 = M21 = math.cos(sig12 * self._f1 / w1)
+ M12 = M21 = math.cos(sig12 * self._f1 / wm)
a12 = sig12 / Math.degree
- omg12 = lam12 / w1
+ omg12 = lam12 / wm
else:
# Newton's method
diff --git a/python/geographiclib/geodesicline.py b/python/geographiclib/geodesicline.py
index 28d59e3..15e1769 100644
--- a/python/geographiclib/geodesicline.py
+++ b/python/geographiclib/geodesicline.py
@@ -21,7 +21,7 @@
# under the MIT/X11 License. For more information, see
# http://geographiclib.sourceforge.net/
#
-# $Id: 3ce44a02ffcfde1dcd1f660c8fcfa11d024bb4c5 $
+# $Id: d5d0b60d8d88eaea0cdc504a6b73fc6fb6049f0c $
######################################################################
import math
@@ -102,7 +102,7 @@ class GeodesicLine(object):
Geodesic.C1pf(eps, self._C1pa)
if self._caps & Geodesic.CAP_C2:
- self._A2m1 = Geodesic.A2m1f(eps)
+ self._A2m1 = Geodesic.A2m1f(eps)
self._C2a = range(Geodesic.nC2_ + 1)
Geodesic.C2f(eps, self._C2a)
self._B21 = Geodesic.SinCosSeries(
@@ -172,7 +172,7 @@ class GeodesicLine(object):
# I.e., salp0 = 0, csig2 = 0. Break the degeneracy in this case
cbet2 = csig2 = Geodesic.tiny_
# tan(omg2) = sin(alp0) * tan(sig2)
- somg2 = self._salp0 * ssig2; comg2 = csig2 # No need to normalize
+ somg2 = self._salp0 * ssig2; comg2 = csig2 # No need to normalize
# tan(alp0) = cos(sig2)*tan(alp2)
salp2 = self._salp0; calp2 = self._calp0 * csig2 # No need to normalize
# omg12 = omg2 - omg1
@@ -215,7 +215,7 @@ class GeodesicLine(object):
w1 * (self._ssig1 * csig2))
- self._csig1 * csig2 * J12)
if outmask & Geodesic.GEODESICSCALE:
- M12 = csig12 + (self._k2 * (ssig2sq - ssig1sq) * ssig2 / (w1 + w2)
+ M12 = csig12 + (self._k2 * (ssig2sq - ssig1sq) * ssig2 / (w1 + w2)
- csig2 * J12) * self._ssig1 / w1
M21 = csig12 - (self._k2 * (ssig2sq - ssig1sq) * self._ssig1 / (w1 + w2)
- self._csig1 * J12) * ssig2 / w2
diff --git a/python/geographiclib/polygonarea.py b/python/geographiclib/polygonarea.py
index a0b467f..9692908 100644
--- a/python/geographiclib/polygonarea.py
+++ b/python/geographiclib/polygonarea.py
@@ -10,7 +10,7 @@
# under the MIT/X11 License. For more information, see
# http://geographiclib.sourceforge.net/
#
-# $Id: 994cf91b693942fc0efc2a9b1233d020015a7041 $
+# $Id: 4a2cf9d0cb7eeb7c9c3a2248f44e84a04e4e0b35 $
######################################################################
import math
@@ -149,7 +149,7 @@ class PolygonArea(object):
return num, perimeter, area
def Area(earth, points, polyline):
- poly = PolygonArea(earth, polyline)
+ poly = PolygonArea(earth, polyline)
for p in points:
poly.AddPoint(p['lat'], p['lon'])
return poly.Compute(False, True)
diff --git a/python/setup.py b/python/setup.py
index 9f44b6c..ba54dfd 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -4,19 +4,20 @@
#
# python setup.py install
#
-# in this directory. To upload the latest version to the python reposity run
+# in this directory. To upload the latest version to the python
+# repository run
#
# python setup.py sdist --formats gztar,zip upload
#
# The initial version of this file was provided by
# Andrew MacIntyre <Andrew.MacIntyre at acma.gov.au>.
#
-# $Id: 12bd54636c048825af9c9bfa33adc2eec4330a31 $
+# $Id: e5d240fa0c0790fdbbc0c3ff654325abf8f9ec71 $
from distutils.core import setup
setup(name="geographiclib",
- version="1.16",
+ version="1.20",
description=
"A translation of the GeographicLib::Geodesic class to Python",
author="Charles Karney",
diff --git a/src/AzimuthalEquidistant.cpp b/src/AzimuthalEquidistant.cpp
index 8832d97..1fba6bf 100644
--- a/src/AzimuthalEquidistant.cpp
+++ b/src/AzimuthalEquidistant.cpp
@@ -2,15 +2,15 @@
* \file AzimuthalEquidistant.cpp
* \brief Implementation for GeographicLib::AzimuthalEquidistant class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#include <GeographicLib/AzimuthalEquidistant.hpp>
#define GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP \
- "$Id: e89d51d8fc0c5e7e6941a7efed9f3c55f9b4ab67 $"
+ "$Id: 324fc318b35a411f024cfd5046ba58b8ef819df7 $"
RCSID_DECL(GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_CPP)
RCSID_DECL(GEOGRAPHICLIB_AZIMUTHALEQUIDISTANT_HPP)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bfc4594..32aeb9d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,29 +1,31 @@
-# $Id: 81e6e3a15baf50e87a39f20a56aed38865987dc2 $
+# $Id: db0813d9df0e4b911eb0282bbf2e5bebca5c6563 $
# Build the library...
# Include all the .cpp files in the library.
file (GLOB SOURCES *.cpp)
+file (GLOB HEADERS
+ ${PROJECT_BINARY_DIR}/include/GeographicLib/Config.h
+ ../include/GeographicLib/*.hpp)
# Define the library and specify whether it is shared or not.
if (GEOGRAPHIC_SHARED_LIB)
- add_library (Geographic SHARED ${SOURCES})
-else (GEOGRAPHIC_SHARED_LIB)
- add_library (Geographic STATIC ${SOURCES})
-endif (GEOGRAPHIC_SHARED_LIB)
+ add_library (Geographic SHARED ${SOURCES} ${HEADERS})
+else ()
+ add_library (Geographic STATIC ${SOURCES} ${HEADERS})
+endif ()
# Set the version number on the library
if (WIN32)
set_target_properties (Geographic PROPERTIES VERSION "${LIBVERSIONFULL}" )
-else (WIN32)
+else ()
set_target_properties (Geographic PROPERTIES
VERSION "${LIBVERSIONFULL}" SOVERSION "${LIBVERSION}" )
-endif (WIN32)
+endif ()
-# Specify where the library is installed, adding it to the export
-# GeographicLibDepends.
+# Specify where the library is installed, adding it to the export depends
install (TARGETS Geographic
- EXPORT GeographicLibDepends
+ EXPORT depends
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
diff --git a/src/CassiniSoldner.cpp b/src/CassiniSoldner.cpp
index 74e5dbd..e0cf058 100644
--- a/src/CassiniSoldner.cpp
+++ b/src/CassiniSoldner.cpp
@@ -2,15 +2,15 @@
* \file CassiniSoldner.cpp
* \brief Implementation for GeographicLib::CassiniSoldner class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#include <GeographicLib/CassiniSoldner.hpp>
#define GEOGRAPHICLIB_CASSINISOLDNER_CPP \
- "$Id: f267ed9f1d5af5f602a8997a7705efda7fc34395 $"
+ "$Id: 2823df38f3e31fd8b882e2f55ad72d6419b03246 $"
RCSID_DECL(GEOGRAPHICLIB_CASSINISOLDNER_CPP)
RCSID_DECL(GEOGRAPHICLIB_CASSINISOLDNER_HPP)
diff --git a/src/DMS.cpp b/src/DMS.cpp
index 7752cfa..84d07f0 100644
--- a/src/DMS.cpp
+++ b/src/DMS.cpp
@@ -2,8 +2,8 @@
* \file DMS.cpp
* \brief Implementation for GeographicLib::DMS class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
@@ -11,7 +11,7 @@
#include <algorithm>
#include <GeographicLib/Utility.hpp>
-#define GEOGRAPHICLIB_DMS_CPP "$Id: 305c71f5be8c0adce9f70fe7d2f16b38dc14fb7d $"
+#define GEOGRAPHICLIB_DMS_CPP "$Id: db38ddc05f7c27732da3aa820191a51200ce92ac $"
RCSID_DECL(GEOGRAPHICLIB_DMS_CPP)
RCSID_DECL(GEOGRAPHICLIB_DMS_HPP)
@@ -258,7 +258,8 @@ namespace GeographicLib {
return azi;
}
- string DMS::Encode(real angle, component trailing, unsigned prec, flag ind) {
+ string DMS::Encode(real angle, component trailing, unsigned prec, flag ind,
+ char dmssep) {
// Assume check on range of input angle has been made by calling
// routine (which might be able to offer a better diagnostic).
if (!Math::isfinite(angle))
@@ -297,7 +298,7 @@ namespace GeographicLib {
}
pieces[0] += idegree;
ostringstream s;
- s << fixed << setfill('0');
+ s << fixed << setfill('0');
if (ind == NONE && sign < 0)
s << '-';
switch (trailing) {
@@ -310,16 +311,20 @@ namespace GeographicLib {
default:
if (ind != NONE)
s << setw(1 + min(int(ind), 2));
- s << setprecision(0) << pieces[0] << char(tolower(dmsindicators_[0]));
+ s << setprecision(0) << pieces[0]
+ << (dmssep ? dmssep : char(tolower(dmsindicators_[0])));
switch (trailing) {
case MINUTE:
- s << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec)
- << pieces[1] << char(tolower(dmsindicators_[1]));
+ s << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec) << pieces[1];
+ if (!dmssep)
+ s << char(tolower(dmsindicators_[1]));
break;
case SECOND:
- s << setw(2) << pieces[1] << char(tolower(dmsindicators_[1]))
- << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec)
- << pieces[2] << char(tolower(dmsindicators_[2]));
+ s << setw(2)
+ << pieces[1] << (dmssep ? dmssep : char(tolower(dmsindicators_[1])))
+ << setw(2 + prec + (prec ? 1 : 0)) << setprecision(prec) << pieces[2];
+ if (!dmssep)
+ s << char(tolower(dmsindicators_[2]));
break;
default:
break;
@@ -330,4 +335,7 @@ namespace GeographicLib {
return s.str();
}
+ string DMS::Encode(real angle, component trailing, unsigned prec, flag ind)
+ { return Encode(angle, trailing, prec, ind, char(0)); }
+
} // namespace GeographicLib
diff --git a/src/EllipticFunction.cpp b/src/EllipticFunction.cpp
index 1f7ebaf..98396ad 100644
--- a/src/EllipticFunction.cpp
+++ b/src/EllipticFunction.cpp
@@ -2,15 +2,15 @@
* \file EllipticFunction.cpp
* \brief Implementation for GeographicLib::EllipticFunction class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#include <GeographicLib/EllipticFunction.hpp>
#define GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP \
- "$Id: 108304d60cace1c0d4ede6dba7f9c4594435f4f4 $"
+ "$Id: 00b30b3d051fce1da7eb0c7e74c1c03854de6ea3 $"
RCSID_DECL(GEOGRAPHICLIB_ELLIPTICFUNCTION_CPP)
RCSID_DECL(GEOGRAPHICLIB_ELLIPTICFUNCTION_HPP)
@@ -119,7 +119,7 @@ namespace GeographicLib {
s += mul * t * t;
}
x0 = (x0 + y0)/2;
- return (x0 * x0 - s) * Math::pi<real>() / (2 * (xn + yn));
+ return (x0 * x0 - s) * Math::pi<real>() / (2 * (xn + yn));
}
EllipticFunction::EllipticFunction(real m) throw()
diff --git a/src/GeoCoords.cpp b/src/GeoCoords.cpp
index e754d6e..9e21bab 100644
--- a/src/GeoCoords.cpp
+++ b/src/GeoCoords.cpp
@@ -2,8 +2,8 @@
* \file GeoCoords.cpp
* \brief Implementation for GeographicLib::GeoCoords class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
@@ -15,7 +15,7 @@
#include <GeographicLib/DMS.hpp>
#define GEOGRAPHICLIB_GEOCOORDS_CPP \
- "$Id: c54c9573960066921839ad1a80350d4df86020d5 $"
+ "$Id: 084d4ec9163dc9d8989b54b12a04bf0f44a8c23f $"
RCSID_DECL(GEOGRAPHICLIB_GEOCOORDS_CPP)
RCSID_DECL(GEOGRAPHICLIB_GEOCOORDS_HPP)
@@ -85,14 +85,18 @@ namespace GeographicLib {
return os.str();
}
- string GeoCoords::DMSRepresentation(int prec, bool swaplatlong) const {
+ string GeoCoords::DMSRepresentation(int prec, bool swaplatlong,
+ char dmssep) const {
prec = max(0, min(10, prec) + 5);
return DMS::Encode(swaplatlong ? _long : _lat, unsigned(prec),
- swaplatlong ? DMS::LONGITUDE : DMS::LATITUDE) +
+ swaplatlong ? DMS::LONGITUDE : DMS::LATITUDE, dmssep) +
" " + DMS::Encode(swaplatlong ? _lat : _long, unsigned(prec),
- swaplatlong ? DMS::LATITUDE : DMS::LONGITUDE);
+ swaplatlong ? DMS::LATITUDE : DMS::LONGITUDE, dmssep);
}
+ string GeoCoords::DMSRepresentation(int prec, bool swaplatlong) const
+ { return DMSRepresentation(prec, swaplatlong, char(0)); }
+
string GeoCoords::MGRSRepresentation(int prec) const {
// Max precision is um
prec = max(0, min(6, prec) + 5);
diff --git a/src/Geocentric.cpp b/src/Geocentric.cpp
index f7c398b..eb59f46 100644
--- a/src/Geocentric.cpp
+++ b/src/Geocentric.cpp
@@ -2,15 +2,15 @@
* \file Geocentric.cpp
* \brief Implementation for GeographicLib::Geocentric class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#include <GeographicLib/Geocentric.hpp>
#define GEOGRAPHICLIB_GEOCENTRIC_CPP \
- "$Id: d237d2d9a4fe5fad3d4f13147cd4cba15130543f $"
+ "$Id: b5135e8042dbbbcddfd5894c66b729bf5c43cab9 $"
RCSID_DECL(GEOGRAPHICLIB_GEOCENTRIC_CPP)
RCSID_DECL(GEOGRAPHICLIB_GEOCENTRIC_HPP)
@@ -102,7 +102,7 @@ namespace GeographicLib {
S = _e4a * p * q / 4, // S = r^3 * s
r2 = Math::sq(r),
r3 = r * r2,
- disc = S * (2 * r3 + S);
+ disc = S * (2 * r3 + S);
real u = r;
if (disc >= 0) {
real T3 = S + r3;
diff --git a/src/Geodesic.cpp b/src/Geodesic.cpp
index 65b9dec..6807788 100644
--- a/src/Geodesic.cpp
+++ b/src/Geodesic.cpp
@@ -2,8 +2,8 @@
* \file Geodesic.cpp
* \brief Implementation for GeographicLib::Geodesic class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011, 2012) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* This is a reformulation of the geodesic problem. The notation is as
@@ -30,7 +30,7 @@
#include <GeographicLib/GeodesicLine.hpp>
#define GEOGRAPHICLIB_GEODESIC_CPP \
- "$Id: ff2511fd7f024c20973838884776d929597eb044 $"
+ "$Id: dd137806b8a5ba58211a37eb87e163b8a9bd7aa7 $"
RCSID_DECL(GEOGRAPHICLIB_GEODESIC_CPP)
RCSID_DECL(GEOGRAPHICLIB_GEODESIC_HPP)
@@ -63,7 +63,8 @@ namespace GeographicLib {
(_e2 == 0 ? 1 :
(_e2 > 0 ? Math::atanh(sqrt(_e2)) : atan(sqrt(-_e2))) /
sqrt(abs(_e2))))/2) // authalic radius squared
- , _etol2(tol2_ / max(real(0.1), sqrt(abs(_e2))))
+ // The sig12 threshold for "really short"
+ , _etol2(10 * tol2_ / max(real(0.1), sqrt(abs(_e2))))
{
if (!(Math::isfinite(_a) && _a > 0))
throw GeographicErr("Major radius is not positive");
@@ -267,13 +268,13 @@ namespace GeographicLib {
if (sig12 >= 0) {
// Short lines (InverseStart sets salp2, calp2)
- real w1 = sqrt(1 - _e2 * Math::sq(cbet1));
- s12x = sig12 * _a * w1;
- m12x = Math::sq(w1) * _a / _f1 * sin(sig12 * _f1 / w1);
+ real wm = sqrt(1 - _e2 * Math::sq((cbet1 + cbet2) / 2));
+ s12x = sig12 * _a * wm;
+ m12x = Math::sq(wm) * _a / _f1 * sin(sig12 * _f1 / wm);
if (outmask & GEODESICSCALE)
- M12 = M21 = cos(sig12 * _f1 / w1);
+ M12 = M21 = cos(sig12 * _f1 / wm);
a12 = sig12 / Math::degree<real>();
- omg12 = lam12 / w1;
+ omg12 = lam12 / wm;
} else {
// Newton's method
@@ -453,7 +454,7 @@ namespace GeographicLib {
m12a = (w2 * (csig1 * ssig2) - w1 * (ssig1 * csig2))
- _f1 * csig1 * csig2 * J12;
// Missing a factor of _b
- s12b = (1 + A1m1) * sig12 + AB1;
+ s12b = (1 + A1m1) * sig12 + AB1;
if (scalep) {
real csig12 = csig1 * csig2 + ssig1 * ssig2;
J12 *= _f1;
@@ -481,7 +482,7 @@ namespace GeographicLib {
r3 = r * r2,
// The discrimant of the quadratic equation for T3. This is zero on
// the evolute curve p^(1/3)+q^(1/3) = 1
- disc = S * (S + 2 * r3);
+ disc = S * (S + 2 * r3);
real u = r;
if (disc >= 0) {
real T3 = S + r3;
@@ -532,13 +533,14 @@ namespace GeographicLib {
// bet12 = bet2 - bet1 in [0, pi); bet12a = bet2 + bet1 in (-pi, 0]
sbet12 = sbet2 * cbet1 - cbet2 * sbet1,
cbet12 = cbet2 * cbet1 + sbet2 * sbet1;
-#if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ < 6
+#if defined(__GNUC__) && __GNUC__ == 4 && \
+ (__GNUC_MINOR__ < 6 || defined(__MINGW32__))
// Volatile declaration needed to fix inverse cases
// 88.202499451857 0 -88.202499451857 179.981022032992859592
// 89.262080389218 0 -89.262080389218 179.992207982775375662
// 89.333123580033 0 -89.333123580032997687 179.99295812360148422
// which otherwise fail with g++ 4.4.4 x86 -O3 (Linux)
- // and g++ 4.4.0 (mingw).
+ // and g++ 4.4.0 (mingw) and g++ 4.6.1 (tdm mingw).
real sbet12a;
{
volatile real xx1 = sbet2 * cbet1;
@@ -551,7 +553,8 @@ namespace GeographicLib {
bool shortline = cbet12 >= 0 && sbet12 < real(0.5) &&
lam12 <= Math::pi<real>() / 6;
real
- omg12 = shortline ? lam12 / sqrt(1 - _e2 * Math::sq(cbet1)) : lam12,
+ omg12 = (!shortline ? lam12 :
+ lam12 / sqrt(1 - _e2 * Math::sq((cbet1 + cbet2) / 2))),
somg12 = sin(omg12), comg12 = cos(omg12);
salp1 = cbet2 * somg12;
@@ -611,12 +614,12 @@ namespace GeographicLib {
y = (lam12 - Math::pi<real>()) / lamscale;
}
- if (y > -tol1_ && x > -1 - xthresh_) {
+ if (y > -tol1_ && x > -1 - xthresh_) {
// strip near cut
if (_f >= 0) {
salp1 = min(real(1), -real(x)); calp1 = - sqrt(1 - Math::sq(salp1));
} else {
- calp1 = max(real(x > -tol1_ ? 0 : -1), real(x));
+ calp1 = max(real(x > -tol1_ ? 0 : -1), real(x));
salp1 = sqrt(1 - Math::sq(calp1));
}
} else {
@@ -743,7 +746,7 @@ namespace GeographicLib {
real dummy;
Lengths(eps, sig12, ssig1, csig1, ssig2, csig2,
cbet1, cbet2, dummy, dlam12, dummy,
- false, dummy, dummy, C1a, C2a);
+ false, dummy, dummy, C1a, C2a);
dlam12 /= calp2 * cbet2;
}
}
diff --git a/src/GeodesicLine.cpp b/src/GeodesicLine.cpp
index dadd8e8..fb7d235 100644
--- a/src/GeodesicLine.cpp
+++ b/src/GeodesicLine.cpp
@@ -2,8 +2,8 @@
* \file GeodesicLine.cpp
* \brief Implementation for GeographicLib::GeodesicLine class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com> and
- * licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* This is a reformulation of the geodesic problem. The notation is as
@@ -29,7 +29,7 @@
#include <GeographicLib/GeodesicLine.hpp>
#define GEOGRAPHICLIB_GEODESICLINE_CPP \
- "$Id: da385beb21c040e161c0d8acb4acb974d94000b3 $"
+ "$Id: d95fea8e73fd86fdc558e5b0397a97241cfe40c2 $"
RCSID_DECL(GEOGRAPHICLIB_GEODESICLINE_CPP)
RCSID_DECL(GEOGRAPHICLIB_GEODESICLINE_HPP)
diff --git a/src/Geographic.pro b/src/Geographic.pro
index 7946760..6136a7f 100644
--- a/src/Geographic.pro
+++ b/src/Geographic.pro
@@ -1,55 +1,73 @@
-# $Id: 746b385d2d9222946a8fc9050d09c839ec06b577 $
+# $Id: fb1395afc191fe67ced4b6e7227b5afaa2559a1c $
-VERSION = 9.0.1
+VERSION = 9.2.4
TEMPLATE = lib
INCLUDEPATH = ../include
INCLUDEDIR = $$INCLUDEPATH/GeographicLib
+SOURCES += AlbersEqualArea.cpp
+SOURCES += AzimuthalEquidistant.cpp
+SOURCES += CassiniSoldner.cpp
+SOURCES += CircularEngine.cpp
SOURCES += DMS.cpp
SOURCES += EllipticFunction.cpp
SOURCES += GeoCoords.cpp
-SOURCES += MGRS.cpp
-SOURCES += PolarStereographic.cpp
-SOURCES += TransverseMercator.cpp
-SOURCES += TransverseMercatorExact.cpp
-SOURCES += UTMUPS.cpp
SOURCES += Geocentric.cpp
-SOURCES += LocalCartesian.cpp
SOURCES += Geodesic.cpp
SOURCES += GeodesicLine.cpp
-SOURCES += PolygonArea.cpp
-SOURCES += AzimuthalEquidistant.cpp
-SOURCES += CassiniSoldner.cpp
SOURCES += Geoid.cpp
-SOURCES += LambertConformalConic.cpp
SOURCES += Gnomonic.cpp
+SOURCES += GravityCircle.cpp
+SOURCES += GravityModel.cpp
+SOURCES += LambertConformalConic.cpp
+SOURCES += LocalCartesian.cpp
+SOURCES += MGRS.cpp
+SOURCES += MagneticCircle.cpp
+SOURCES += MagneticModel.cpp
+SOURCES += NormalGravity.cpp
SOURCES += OSGB.cpp
-SOURCES += AlbersEqualArea.cpp
+SOURCES += PolarStereographic.cpp
+SOURCES += PolygonArea.cpp
+SOURCES += SphericalEngine.cpp
+SOURCES += TransverseMercator.cpp
+SOURCES += TransverseMercatorExact.cpp
+SOURCES += UTMUPS.cpp
+SOURCES += Utility.cpp
+HEADERS += $$INCLUDEDIR/Accumulator.hpp
+HEADERS += $$INCLUDEDIR/AlbersEqualArea.hpp
+HEADERS += $$INCLUDEDIR/AzimuthalEquidistant.hpp
+HEADERS += $$INCLUDEDIR/CassiniSoldner.hpp
+HEADERS += $$INCLUDEDIR/CircularEngine.hpp
+HEADERS += $$INCLUDEDIR/Constants.hpp
HEADERS += $$INCLUDEDIR/DMS.hpp
HEADERS += $$INCLUDEDIR/EllipticFunction.hpp
HEADERS += $$INCLUDEDIR/GeoCoords.hpp
-HEADERS += $$INCLUDEDIR/MGRS.hpp
-HEADERS += $$INCLUDEDIR/PolarStereographic.hpp
-HEADERS += $$INCLUDEDIR/TransverseMercator.hpp
-HEADERS += $$INCLUDEDIR/TransverseMercatorExact.hpp
-HEADERS += $$INCLUDEDIR/UTMUPS.hpp
HEADERS += $$INCLUDEDIR/Geocentric.hpp
-HEADERS += $$INCLUDEDIR/LocalCartesian.hpp
HEADERS += $$INCLUDEDIR/Geodesic.hpp
HEADERS += $$INCLUDEDIR/GeodesicLine.hpp
-HEADERS += $$INCLUDEDIR/PolygonArea.hpp
-HEADERS += $$INCLUDEDIR/AzimuthalEquidistant.hpp
-HEADERS += $$INCLUDEDIR/CassiniSoldner.hpp
HEADERS += $$INCLUDEDIR/Geoid.hpp
-HEADERS += $$INCLUDEDIR/LambertConformalConic.hpp
HEADERS += $$INCLUDEDIR/Gnomonic.hpp
+HEADERS += $$INCLUDEDIR/GravityCircle.hpp
+HEADERS += $$INCLUDEDIR/GravityModel.hpp
+HEADERS += $$INCLUDEDIR/LambertConformalConic.hpp
+HEADERS += $$INCLUDEDIR/LocalCartesian.hpp
+HEADERS += $$INCLUDEDIR/MGRS.hpp
+HEADERS += $$INCLUDEDIR/MagneticCircle.hpp
+HEADERS += $$INCLUDEDIR/MagneticModel.hpp
+HEADERS += $$INCLUDEDIR/Math.hpp
+HEADERS += $$INCLUDEDIR/NormalGravity.hpp
HEADERS += $$INCLUDEDIR/OSGB.hpp
-HEADERS += $$INCLUDEDIR/AlbersEqualArea.hpp
-
+HEADERS += $$INCLUDEDIR/PolarStereographic.hpp
+HEADERS += $$INCLUDEDIR/PolygonArea.hpp
+HEADERS += $$INCLUDEDIR/SphericalEngine.hpp
+HEADERS += $$INCLUDEDIR/SphericalHarmonic.hpp
+HEADERS += $$INCLUDEDIR/SphericalHarmonic1.hpp
+HEADERS += $$INCLUDEDIR/SphericalHarmonic2.hpp
+HEADERS += $$INCLUDEDIR/TransverseMercator.hpp
+HEADERS += $$INCLUDEDIR/TransverseMercatorExact.hpp
+HEADERS += $$INCLUDEDIR/UTMUPS.hpp
+HEADERS += $$INCLUDEDIR/Utility.hpp
HEADERS += $$INCLUDEDIR/Config.h
-HEADERS += $$INCLUDEDIR/Constants.hpp
-HEADERS += $$INCLUDEDIR/Math.hpp
-HEADERS += $$INCLUDEDIR/Accumulator.hpp
diff --git a/src/Geoid.cpp b/src/Geoid.cpp
index 5ef0f2e..7555dc4 100644
--- a/src/Geoid.cpp
+++ b/src/Geoid.cpp
@@ -2,8 +2,8 @@
* \file Geoid.cpp
* \brief Implementation for GeographicLib::Geoid class
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
@@ -11,9 +11,10 @@
#include <sstream>
#include <cstdlib>
#include <algorithm>
+#include <GeographicLib/Utility.hpp>
#define GEOGRAPHICLIB_GEOID_CPP \
- "$Id: e09552b0e1b520b1adda6ab58b3f5602d8e2311e $"
+ "$Id: 5c3c23dd877485af9c9e298ddb28c5aac12b5e6a $"
RCSID_DECL(GEOGRAPHICLIB_GEOID_CPP)
RCSID_DECL(GEOGRAPHICLIB_GEOID_HPP)
@@ -215,9 +216,10 @@ namespace GeographicLib {
, _eps( sqrt(numeric_limits<real>::epsilon()) )
, _threadsafe(false) // Set after cache is read
{
+ STATIC_ASSERT(sizeof(pixel_t) == pixel_size_, "pixel_t has the wrong size");
if (_dir.empty())
_dir = DefaultGeoidPath();
- _filename = _dir + "/" + _name + ".pgm";
+ _filename = _dir + "/" + _name + (pixel_size_ != 4 ? ".pgm" : ".pgm4");
_file.open(_filename.c_str(), ios::binary);
if (!(_file.good()))
throw GeographicErr("File not readable " + _filename);
@@ -266,8 +268,8 @@ namespace GeographicLib {
unsigned maxval;
if (!(_file >> maxval))
throw GeographicErr("Error reading maxval " + _filename);
- if (maxval != 0xffffu)
- throw GeographicErr("Maxval not equal to 2^16-1 " + _filename);
+ if (maxval != pixel_max_)
+ throw GeographicErr("Incorrect value of maxval " + _filename);
// Add 1 for whitespace after maxval
_datastart = (unsigned long long)(_file.tellg()) + 1ULL;
_swidth = (unsigned long long)(_width);
@@ -289,7 +291,7 @@ namespace GeographicLib {
throw GeographicErr("Raster height is even " + _filename);
_file.seekg(0, ios::end);
if (!_file.good() ||
- _datastart + 2ULL * _swidth * (unsigned long long)(_height) !=
+ _datastart + pixel_size_ * _swidth * (unsigned long long)(_height) !=
(unsigned long long)(_file.tellg()))
// Possibly this test should be "<" because the file contains, e.g., a
// second image. However, for now we are more strict.
@@ -408,7 +410,7 @@ namespace GeographicLib {
lat = min(lat, 90 - 1/(100 * _rlatres));
lat = max(lat, -90 + 1/(100 * _rlatres));
fy = (90 - lat) * _rlatres;
- fy -= int(fy);
+ fy -= int(fy);
real
phi = lat * _degree,
cosphi = cos(phi),
@@ -436,7 +438,7 @@ namespace GeographicLib {
try {
_data.clear();
// Use swap to release memory back to system
- vector< vector<unsigned short> >().swap(_data);
+ vector< vector<pixel_t> >().swap(_data);
}
catch (const exception&) {
}
@@ -486,7 +488,7 @@ namespace GeographicLib {
_yoffset = in;
try {
- _data.resize(_ysize, vector<unsigned short>(_xsize));
+ _data.resize(_ysize, vector<pixel_t>(_xsize));
for (int iy = min(oysize, _ysize); iy--;)
_data[iy].resize(_xsize);
}
@@ -496,10 +498,10 @@ namespace GeographicLib {
}
try {
- vector<char> buf(2 * _xsize);
for (int iy = in; iy <= is; ++iy) {
int iy1 = iy, iw1 = iw;
if (iy < 0 || iy >= _height) {
+ // Allow points "beyond" the poles to support interpolation
iy1 = iy1 < 0 ? -iy1 : 2 * (_height - 1) - iy1;
iw1 += _width/2;
if (iw1 >= _width)
@@ -507,16 +509,14 @@ namespace GeographicLib {
}
int xs1 = min(_width - iw1, _xsize);
filepos(iw1, iy1);
- _file.read(&(buf[0]), 2 * xs1);
+ Utility::readarray<pixel_t, pixel_t, true>
+ (_file, &(_data[iy - in][0]), xs1);
if (xs1 < _xsize) {
// Wrap around longitude = 0
filepos(0, iy1);
- _file.read(&(buf[2 * xs1]), 2 * (_xsize - xs1));
+ Utility::readarray<pixel_t, pixel_t, true>
+ (_file, &(_data[iy - in][xs1]), _xsize - xs1);
}
- for (int ix = 0; ix < _xsize; ++ix)
- _data[iy - in][ix] =
- (unsigned short)((unsigned char)buf[2 * ix] * 256u +
- (unsigned char)buf[2 * ix + 1]);
}
_cache = true;
}
diff --git a/src/GravityModel.cpp b/src/GravityModel.cpp
index 1961896..d90130c 100644
--- a/src/GravityModel.cpp
+++ b/src/GravityModel.cpp
@@ -2,8 +2,8 @@
* \file GravityModel.cpp
* \brief Implementation for GeographicLib::GravityModel class
*
- * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under
- * the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
@@ -13,7 +13,7 @@
#include <GeographicLib/GravityCircle.hpp>
#include <GeographicLib/Utility.hpp>
#define GEOGRAPHICLIB_GRAVITYMODEL_CPP \
- "$Id: 981871c55dc74dcd22153d4eeb5c07f8ec1e9525 $"
+ "$Id: 1897d0d53c7339ecdf20b1348637340e9f687f30 $"
RCSID_DECL(GEOGRAPHICLIB_GRAVITYMODEL_CPP)
RCSID_DECL(GEOGRAPHICLIB_GRAVITYMODEL_HPP)
@@ -82,7 +82,7 @@ namespace GeographicLib {
int pos = int(coeffstr.tellg());
coeffstr.seekg(0, ios::end);
if (pos != coeffstr.tellg())
- throw GeographicErr("Extra data in " + coeff);
+ throw GeographicErr("Extra data in " + coeff);
}
int nmx = _gravitational.Coefficients().nmx();
// Adjust the normalization of the normal potential to match the model.
@@ -206,7 +206,7 @@ namespace GeographicLib {
// No need to do the correction
correct = false;
real
- invR = correct ? 1 / Math::hypot(Math::hypot(X, Y), Z) : 1,
+ invR = correct ? 1 / Math::hypot(Math::hypot(X, Y), Z) : 1,
T = (gradp
? _disturbing(-1, X, Y, Z, deltaX, deltaY, deltaZ)
: _disturbing(-1, X, Y, Z));
@@ -282,7 +282,7 @@ namespace GeographicLib {
gamma0 = _earth.SurfaceGravity(lat),
dummy,
T = InternalT(X, Y, Z, dummy, dummy, dummy, false, false),
- invR = 1 / Math::hypot(Math::hypot(X, Y), Z),
+ invR = 1 / Math::hypot(Math::hypot(X, Y), Z),
correction = _corrmult * _correction(invR * X, invR * Y, invR * Z);
// _zeta0 has been included in _correction
return T/gamma0 + correction;
@@ -314,7 +314,7 @@ namespace GeographicLib {
_earth.Earth().IntForward(lat, 0, h, X, Y, Z, M);
// Y = 0, cphi = M[7], sphi = M[8];
real
- invR = 1 / Math::hypot(X, Z),
+ invR = 1 / Math::hypot(X, Z),
gamma0 = (caps & CAP_GAMMA0 ?_earth.SurfaceGravity(lat)
: Math::NaN<real>()),
fx, fy, fz, gamma;
diff --git a/src/LambertConformalConic.cpp b/src/LambertConformalConic.cpp
index 070a0ff..4d5af6d 100644
--- a/src/LambertConformalConic.cpp
+++ b/src/LambertConformalConic.cpp
@@ -10,7 +10,7 @@
#include <GeographicLib/LambertConformalConic.hpp>
#define GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP \
- "$Id: 2f32109c0193635dd5808a59d477b90959901eb6 $"
+ "$Id: da8f6ce89092006a26946d671edca1a7836e7ce6 $"
RCSID_DECL(GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_CPP)
RCSID_DECL(GEOGRAPHICLIB_LAMBERTCONFORMALCONIC_HPP)
@@ -166,7 +166,7 @@ namespace GeographicLib {
Math::sq(tbet1)/(1 + scbet1))
* Dhyp(tbet2, tbet1, scbet2, scbet1) * _fm;
// Dc(tphi2, tphi1)
- real den = Dasinh(tphi2, tphi1, scphi2, scphi1)
+ real den = Dasinh(tphi2, tphi1, scphi2, scphi1)
- Deatanhe(sphi2, sphi1) * Dsn(tphi2, tphi1, sphi2, sphi1);
_n = num/den;
@@ -242,7 +242,7 @@ namespace GeographicLib {
// nu = scphi * (shxiZ - shxi) - tphi * (chxiZ - chxi)
// mu = - scphi * (chxiZ - chxi) + tphi * (shxiZ - shxi)
// then
- // dchi = ((mu2 + mu1) - D(nu2, nu1) * (scphi2 + scphi1)) /
+ // dchi = ((mu2 + mu1) - D(nu2, nu1) * (scphi2 + scphi1)) /
// D(tchi2, tchi1)
real
xiZ = eatanhe(real(1)), shxiZ = sinh(xiZ), chxiZ = hyp(shxiZ),
diff --git a/src/LocalCartesian.cpp b/src/LocalCartesian.cpp
index 9d4a861..7eb6d6d 100644
--- a/src/LocalCartesian.cpp
+++ b/src/LocalCartesian.cpp
@@ -2,15 +2,15 @@
* \file LocalCartesian.cpp
* \brief Implementation for GeographicLib::LocalCartesian class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#include <GeographicLib/LocalCartesian.hpp>
#define GEOGRAPHICLIB_LOCALCARTESIAN_CPP \
- "$Id: 644a78ef382ef67447a8ef071f1dabeff89f460d $"
+ "$Id: 4d15764c089e07855bf6db300271e18f4fa89624 $"
RCSID_DECL(GEOGRAPHICLIB_LOCALCARTESIAN_CPP)
RCSID_DECL(GEOGRAPHICLIB_LOCALCARTESIAN_HPP)
diff --git a/src/MGRS.cpp b/src/MGRS.cpp
index df38a25..a05207f 100644
--- a/src/MGRS.cpp
+++ b/src/MGRS.cpp
@@ -2,15 +2,15 @@
* \file MGRS.cpp
* \brief Implementation for GeographicLib::MGRS class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#include <GeographicLib/MGRS.hpp>
#include <GeographicLib/Utility.hpp>
-#define GEOGRAPHICLIB_MGRS_CPP "$Id: 563342c620510330e64ab87673b2d0f8e152adf6 $"
+#define GEOGRAPHICLIB_MGRS_CPP "$Id: e4e6b419c8cd8544b3edab85b3352add0d1dd7cb $"
RCSID_DECL(GEOGRAPHICLIB_MGRS_CPP)
RCSID_DECL(GEOGRAPHICLIB_MGRS_HPP)
@@ -43,7 +43,7 @@ namespace GeographicLib {
{ maxupsSind_, maxupsNind_, maxutmcol_, maxutmcol_ };
const int MGRS::minnorthing_[4] =
{ minupsSind_, minupsNind_,
- minutmSrow_, minutmSrow_ - (maxutmSrow_ - minutmNrow_) };
+ minutmSrow_, minutmSrow_ - (maxutmSrow_ - minutmNrow_) };
const int MGRS::maxnorthing_[4] =
{ maxupsSind_, maxupsNind_,
maxutmNrow_ + (maxutmSrow_ - minutmNrow_), maxutmNrow_ };
@@ -58,9 +58,9 @@ namespace GeographicLib {
}
bool utmp = zone != 0;
CheckCoords(utmp, northp, x, y);
- if (!(zone >= 0 || zone <= 60))
+ if (!(zone >= UTMUPS::MINZONE && zone <= UTMUPS::MAXZONE))
throw GeographicErr("Zone " + Utility::str(zone) + " not in [0,60]");
- if (!(prec >= 0 || prec <= maxprec_))
+ if (!(prec >= 0 && prec <= maxprec_))
throw GeographicErr("MGRS precision " + Utility::str(prec)
+ " not in [0, "
+ Utility::str(int(maxprec_)) + "]");
@@ -166,14 +166,14 @@ namespace GeographicLib {
zone1 = 10 * zone1 + i;
++p;
}
- if (p > 0 && (zone1 == 0 || zone1 > 60))
+ if (p > 0 && !(zone1 >= UTMUPS::MINUTMZONE && zone1 <= UTMUPS::MAXUTMZONE))
throw GeographicErr("Zone " + Utility::str(zone1) + " not in [1,60]");
if (p > 2)
throw GeographicErr("More than 2 digits_ at start of MGRS "
+ mgrs.substr(0, p));
if (len - p < 3)
throw GeographicErr("MGRS string too short " + mgrs);
- bool utmp = zone1 != 0;
+ bool utmp = zone1 != UTMUPS::UPS;
int zonem1 = zone1 - 1;
const string& band = utmp ? latband_ : upsband_;
int iband = Utility::lookup(band, mgrs[p++]);
@@ -326,7 +326,7 @@ namespace GeographicLib {
// The following deals with these special cases.
int
// Fold [-10,-1] -> [9,0]
- sband = iband >= 0 ? iband : - iband - 1,
+ sband = iband >= 0 ? iband : -iband - 1,
// Fold [-90,-1] -> [89,0]
srow = irow >= 0 ? irow : -irow - 1,
// Fold [4,7] -> [3,0]
diff --git a/src/MagneticModel.cpp b/src/MagneticModel.cpp
index c90858a..6eb100d 100644
--- a/src/MagneticModel.cpp
+++ b/src/MagneticModel.cpp
@@ -14,7 +14,7 @@
#include <GeographicLib/Utility.hpp>
#define GEOGRAPHICLIB_MAGNETICMODEL_CPP \
- "$Id: caa93d8d88501ae144eb69febc642ced9319995b $"
+ "$Id: b0287ac014f10e4c6656b67f21c764432a47559a $"
RCSID_DECL(GEOGRAPHICLIB_MAGNETICMODEL_CPP)
RCSID_DECL(GEOGRAPHICLIB_MAGNETICMODEL_HPP)
@@ -85,7 +85,7 @@ namespace GeographicLib {
int pos = int(coeffstr.tellg());
coeffstr.seekg(0, ios::end);
if (pos != coeffstr.tellg())
- throw GeographicErr("Extra data in " + coeff);
+ throw GeographicErr("Extra data in " + coeff);
}
}
@@ -132,9 +132,9 @@ namespace GeographicLib {
else if (key == "MaxTime")
_tmax = Utility::num<real>(val);
else if (key == "MinHeight")
- _hmin = Utility::num<real>(val);
+ _hmin = Utility::num<real>(val);
else if (key == "MaxHeight")
- _hmax = Utility::num<real>(val);
+ _hmax = Utility::num<real>(val);
else if (key == "Normalization") {
if (val == "FULL" || val == "Full" || val == "full")
_norm = SphericalHarmonic::FULL;
diff --git a/src/Makefile.am b/src/Makefile.am
index f9f1766..866fb6f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,9 +2,9 @@
# Makefile.am
#
# Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-# $Id: c2f89d8f5caed6d1f3f0a0752b24be4970f57caa $
+# $Id: f4da355113a782652c871e23951589bb90e4578b $
-AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Wextra
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -Wall -Wextra
lib_LTLIBRARIES = libGeographic.la
diff --git a/src/Makefile.in b/src/Makefile.in
index a3a7086..0d81c9b 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -19,7 +19,7 @@
# Makefile.am
#
# Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-# $Id: c2f89d8f5caed6d1f3f0a0752b24be4970f57caa $
+# $Id: f4da355113a782652c871e23951589bb90e4578b $
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
@@ -245,7 +245,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-AM_CPPFLAGS = -I$(top_srcdir)/include -Wall -Wextra
+AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include -Wall -Wextra
lib_LTLIBRARIES = libGeographic.la
libGeographic_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
libGeographic_la_SOURCES = AlbersEqualArea.cpp \
diff --git a/src/NormalGravity.cpp b/src/NormalGravity.cpp
index 356a2d6..7106b8a 100644
--- a/src/NormalGravity.cpp
+++ b/src/NormalGravity.cpp
@@ -10,7 +10,7 @@
#include <GeographicLib/NormalGravity.hpp>
#define GEOGRAPHICLIB_NORMALGRAVITY_CPP \
- "$Id: a12ddd4a6c44a5760e9590781099532fbed53cac $"
+ "$Id: ccd3d6bd4bddefb0b40cbce0006d863f08d64db4 $"
RCSID_DECL(GEOGRAPHICLIB_NORMALGRAVITY_CPP)
RCSID_DECL(GEOGRAPHICLIB_NORMALGRAVITY_HPP)
@@ -89,14 +89,14 @@ namespace GeographicLib {
Math::real NormalGravity::qf(real ep2) throw() {
// Compute
//
- // ((1 + 3/e'^2) * atan(e') - 3/e')/2
+ // ((1 + 3/e'^2) * atan(e') - 3/e')/2
//
// See H+M, Eq 2-57, with E/u = e'. This suffers from two levels of
// cancelation. The e'^-1 and e'^1 terms drop out, so that the leading
// term is O(e'^3).
real ep = sqrt(ep2);
- if (abs(ep2) > real(0.5)) // Use the closed expression
- return ((1 + 3 / ep2) * atan(ep) - 3 / ep)/2;
+ if (abs(ep2) > real(0.5)) // Use the closed expression
+ return ((1 + 3 / ep2) * atan(ep) - 3 / ep)/2;
else {
real ep2n = 1, q = 0; // The series expansion H+M, Eq 2-86
for (int n = 1; ; ++n) {
@@ -116,7 +116,7 @@ namespace GeographicLib {
Math::real NormalGravity::qpf(real ep2) throw() {
// Compute
//
- // 3*(1 + 1/e'^2) * (1 - atan(e')/e') - 1
+ // 3*(1 + 1/e'^2) * (1 - atan(e')/e') - 1
//
// See H+M, Eq 2-67, with E/u = e'. This suffers from two levels of
// cancelation. The e'^-2 and e'^0 terms drop out, so that the leading
@@ -195,7 +195,7 @@ namespace GeographicLib {
gamu = - invw * (_GM
+ (_aomega2 * _E * qp
* (Math::sq(sbet) - 1/real(3)) / 2)) / Math::sq(uE),
- gamb = _aomega2 * q * sbet * cbet * invw / uE,
+ gamb = _aomega2 * q * sbet * cbet * invw / uE,
t = u * invw / uE;
// H+M, Eq 6-12
GammaX = t * cbet * gamu - invw * sbet * gamb;
diff --git a/src/OSGB.cpp b/src/OSGB.cpp
index f731192..104928d 100644
--- a/src/OSGB.cpp
+++ b/src/OSGB.cpp
@@ -2,15 +2,15 @@
* \file OSGB.cpp
* \brief Implementation for GeographicLib::OSGB class
*
- * Copyright (c) Charles Karney (2010, 2011, 2012) <charles at karney.com> and
- * licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2010-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#include <GeographicLib/OSGB.hpp>
#include <GeographicLib/Utility.hpp>
-#define GEOGRAPHICLIB_OSGB_CPP "$Id: 3412efffd5d1ac0d564ff4f6ae2094c2ca92649a $"
+#define GEOGRAPHICLIB_OSGB_CPP "$Id: 4bfb35c88866ed936faad797f3cef6f4ece36196 $"
RCSID_DECL(GEOGRAPHICLIB_OSGB_CPP)
RCSID_DECL(GEOGRAPHICLIB_OSGB_HPP)
diff --git a/src/PolarStereographic.cpp b/src/PolarStereographic.cpp
index 07796ba..9d7f18c 100644
--- a/src/PolarStereographic.cpp
+++ b/src/PolarStereographic.cpp
@@ -2,15 +2,15 @@
* \file PolarStereographic.cpp
* \brief Implementation for GeographicLib::PolarStereographic class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
#include <GeographicLib/PolarStereographic.hpp>
#define GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP \
- "$Id: 272e10eb6406c817889a0e792fb9196893d85817 $"
+ "$Id: 3a2dee07e6ef1c55ddcdc2178d818c8edd4d1cd4 $"
RCSID_DECL(GEOGRAPHICLIB_POLARSTEREOGRAPHIC_CPP)
RCSID_DECL(GEOGRAPHICLIB_POLARSTEREOGRAPHIC_HPP)
@@ -79,7 +79,7 @@ namespace GeographicLib {
secphi = Math::hypot(real(1), tau),
sig = sinh( eatanhe(tau / secphi) ),
taup = Math::hypot(real(1), sig) * tau - sig * secphi,
- rho = Math::hypot(real(1), taup) + abs(taup);
+ rho = Math::hypot(real(1), taup) + abs(taup);
rho = taup >= 0 ? (lat != 90 ? 1/rho : 0) : rho;
rho *= 2 * _k0 * _a / _c;
k = lat != 90 ? (rho / _a) * secphi * sqrt(_e2m + _e2 / Math::sq(secphi)) :
diff --git a/src/SphericalEngine.cpp b/src/SphericalEngine.cpp
index 638496b..53cd9b5 100644
--- a/src/SphericalEngine.cpp
+++ b/src/SphericalEngine.cpp
@@ -137,7 +137,7 @@
#include <GeographicLib/Utility.hpp>
#define GEOGRAPHICLIB_SPHERICALENGINE_CPP \
- "$Id: e6444458fb284298889582ce5be3a9f201542e3a $"
+ "$Id: 861a718d09c83cdd9bf58939d938a25797b9f306 $"
RCSID_DECL(GEOGRAPHICLIB_SPHERICALENGINE_CPP)
RCSID_DECL(GEOGRAPHICLIB_SPHERICALENGINE_HPP)
@@ -249,7 +249,7 @@ namespace GeographicLib {
v = A * vc + B * vc2 + wc ; vc2 = vc ; vc = v;
v = A * vs + B * vs2 + ws ; vs2 = vs ; vs = v;
if (gradp) {
- // Include the terms Sc[m] * P'[m,m](t) and Ss[m] * P'[m,m](t)
+ // Include the terms Sc[m] * P'[m,m](t) and Ss[m] * P'[m,m](t)
wtc += m * tu * wc; wts += m * tu * ws;
v = A * vrc + B * vrc2 + wrc; vrc2 = vrc; vrc = v;
v = A * vrs + B * vrs2 + wrs; vrs2 = vrs; vrs = v;
diff --git a/src/TransverseMercator.cpp b/src/TransverseMercator.cpp
index 01e07c9..5dd84cb 100644
--- a/src/TransverseMercator.cpp
+++ b/src/TransverseMercator.cpp
@@ -2,8 +2,8 @@
* \file TransverseMercator.cpp
* \brief Implementation for GeographicLib::TransverseMercator class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* This implementation follows closely
@@ -42,7 +42,7 @@
#include <GeographicLib/TransverseMercator.hpp>
#define GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP \
- "$Id: 07ae5b935a611df70b64c57bd6b171ce2a380436 $"
+ "$Id: 7b5a1854a015da061b8fdad0a4b35be7e06fcb9a $"
RCSID_DECL(GEOGRAPHICLIB_TRANSVERSEMERCATOR_CPP)
RCSID_DECL(GEOGRAPHICLIB_TRANSVERSEMERCATOR_HPP)
diff --git a/src/TransverseMercatorExact.cpp b/src/TransverseMercatorExact.cpp
index d54cb51..c700bf9 100644
--- a/src/TransverseMercatorExact.cpp
+++ b/src/TransverseMercatorExact.cpp
@@ -2,8 +2,8 @@
* \file TransverseMercatorExact.cpp
* \brief Implementation for GeographicLib::TransverseMercatorExact class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2011) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* The relevant section of Lee's paper is part V, pp 67–101,
@@ -42,7 +42,7 @@
#include <GeographicLib/TransverseMercatorExact.hpp>
#define GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP \
- "$Id: 6f1cf279b6f0c3fa2b05877d73a3f9260844fdf5 $"
+ "$Id: 125a2d11919018a84fb0c09ea2e77011a35a4a2d $"
RCSID_DECL(GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_CPP)
RCSID_DECL(GEOGRAPHICLIB_TRANSVERSEMERCATOREXACT_HPP)
diff --git a/src/UTMUPS.cpp b/src/UTMUPS.cpp
index 7791ed0..4a8bb5e 100644
--- a/src/UTMUPS.cpp
+++ b/src/UTMUPS.cpp
@@ -2,8 +2,8 @@
* \file UTMUPS.cpp
* \brief Implementation for GeographicLib::UTMUPS class
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
**********************************************************************/
@@ -15,7 +15,7 @@
#include <GeographicLib/Utility.hpp>
#define GEOGRAPHICLIB_UTMUPS_CPP \
- "$Id: 7308a2a52885238b84816ff380b85c6f090aa1d2 $"
+ "$Id: 5672b003ee47cd660377c111e3fca2b81da86323 $"
RCSID_DECL(GEOGRAPHICLIB_UTMUPS_CPP)
RCSID_DECL(GEOGRAPHICLIB_UTMUPS_HPP)
@@ -31,23 +31,23 @@ namespace GeographicLib {
{ MGRS::upseasting_ * MGRS::tile_, MGRS::upseasting_ * MGRS::tile_,
MGRS::maxutmSrow_ * MGRS::tile_, MGRS::minutmNrow_ * MGRS::tile_ };
const Math::real UTMUPS::mineasting_[4] =
- { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
- MGRS::minutmcol_ * MGRS::tile_, MGRS::minutmcol_ * MGRS::tile_ };
+ { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
+ MGRS::minutmcol_ * MGRS::tile_, MGRS::minutmcol_ * MGRS::tile_ };
const Math::real UTMUPS::maxeasting_[4] =
- { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
- MGRS::maxutmcol_ * MGRS::tile_, MGRS::maxutmcol_ * MGRS::tile_ };
+ { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
+ MGRS::maxutmcol_ * MGRS::tile_, MGRS::maxutmcol_ * MGRS::tile_ };
const Math::real UTMUPS::minnorthing_[4] =
- { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
+ { MGRS::minupsSind_ * MGRS::tile_, MGRS::minupsNind_ * MGRS::tile_,
MGRS::minutmSrow_ * MGRS::tile_,
(MGRS::minutmNrow_ + MGRS::minutmSrow_ - MGRS::maxutmSrow_)
* MGRS::tile_ };
const Math::real UTMUPS::maxnorthing_[4] =
- { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
+ { MGRS::maxupsSind_ * MGRS::tile_, MGRS::maxupsNind_ * MGRS::tile_,
(MGRS::maxutmSrow_ + MGRS::maxutmNrow_ - MGRS::minutmNrow_) * MGRS::tile_,
MGRS::maxutmNrow_ * MGRS::tile_ };
int UTMUPS::StandardZone(real lat, real lon, int setzone) {
- if (setzone < MINPSEUDOZONE || setzone > MAXZONE)
+ if (!(setzone >= MINPSEUDOZONE && setzone <= MAXZONE))
throw GeographicErr("Illegal zone requested " + Utility::str(setzone));
if (setzone >= MINZONE || setzone == INVALID)
return setzone;
@@ -128,7 +128,7 @@ namespace GeographicLib {
lat = lon = gamma = k = Math::NaN<real>();
return;
}
- if (! (zone >= MINZONE && zone <= MAXZONE))
+ if (!(zone >= MINZONE && zone <= MAXZONE))
throw GeographicErr("Zone " + Utility::str(zone)
+ " not in range [0, 60]");
bool utmp = zone != UPS;
@@ -230,7 +230,7 @@ namespace GeographicLib {
std::string UTMUPS::EncodeZone(int zone, bool northp) {
if (zone == INVALID)
return string("INV");
- if (! (zone >= MINZONE && zone <= MAXZONE))
+ if (!(zone >= MINZONE && zone <= MAXZONE))
throw GeographicErr("Zone " + Utility::str(zone)
+ " not in range [0, 60]");
ostringstream os;
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index d740656..0c1d14e 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -1,4 +1,4 @@
-# $Id: d72d0ce709c3f851494b674d9a85ca1afb4c535f $
+# $Id: 6e59195303d0fbf5e3d86159e0c2808bc1014fec $
# Build the tools...
@@ -7,9 +7,9 @@
# source tree.
if (MAINTAINER)
set (MANDIR ${PROJECT_BINARY_DIR}/man)
-else (MAINTAINER)
+else ()
set (MANDIR ${PROJECT_SOURCE_DIR}/man)
-endif (MAINTAINER)
+endif ()
include_directories (${MANDIR})
# Loop over all the tools, specifying the source and library.
@@ -19,7 +19,7 @@ foreach (TOOL ${TOOLS})
add_executable (${TOOL} ${TOOL}.cpp)
if (MAINTAINER)
add_dependencies (${TOOL} usage)
- endif (MAINTAINER)
+ endif ()
add_dependencies (tools ${TOOL})
set_source_files_properties (${TOOL}.cpp PROPERTIES
@@ -27,17 +27,16 @@ foreach (TOOL ${TOOLS})
target_link_libraries (${TOOL} Geographic)
-endforeach (TOOL)
+endforeach ()
# Set the run time path for shared libraries for non-Windows machines.
if (NOT WIN32)
set_target_properties (${TOOLS} PROPERTIES
INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)
-endif (NOT WIN32)
+endif ()
-# Specify where the tools are installed, adding them to the export
-# GeographicLibDepends.
-install (TARGETS ${TOOLS} EXPORT GeographicLibDepends DESTINATION bin)
+# Specify where the tools are installed
+install (TARGETS ${TOOLS} DESTINATION bin)
# Create the scripts for downloading the data files on non-Windows
# systems. This needs to substitute ${GEOGRAPHICLIB_DATA} as the
@@ -47,15 +46,15 @@ if (NOT WIN32)
foreach (SCRIPT ${SCRIPTS})
add_custom_command (OUTPUT ${SCRIPT}
COMMAND
- sed -e "s%@DEFAULTDIR@%${GEOGRAPHICLIB_DATA}%"
- ${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT}.sh >
- ${SCRIPT}
+ sed -e "s%@DEFAULTDIR@%${GEOGRAPHICLIB_DATA}%"
+ ${CMAKE_CURRENT_SOURCE_DIR}/${SCRIPT}.sh >
+ ${SCRIPT}
COMMAND chmod +x ${SCRIPT}
DEPENDS ${SCRIPT}.sh)
install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${SCRIPT} DESTINATION sbin)
- endforeach (SCRIPT)
+ endforeach ()
add_custom_target (scripts ALL DEPENDS ${SCRIPTS})
-endif (NOT WIN32)
+endif ()
# Copy the shared library on Windows systems to this directory (tools) so
# that the tests can be run.
@@ -65,7 +64,7 @@ if (WIN32 AND GEOGRAPHIC_SHARED_LIB)
add_custom_command (TARGET tools POST_BUILD
COMMAND ${CMAKE_COMMAND} -E
copy ${GEOGRAPHIC_LIBRARY_FILE} ${CMAKE_CFG_INTDIR}/)
-endif (WIN32 AND GEOGRAPHIC_SHARED_LIB)
+endif ()
# Turn on testing
enable_testing ()
@@ -119,6 +118,7 @@ set_tests_properties (Geod5
"90\\.00000 -150\\.00000 -180\\.00000;90\\.00000 30\\.00000 0\\.00000")
# Check fix for volatile sbet12a bug found 2011-06-25 (gcc 4.4.4 x86 -O3)
+# Found again on 2012-03-27 with tdm-mingw32 (g++ 4.6.1).
add_test (Geod6 Geod -i --input-string
"88.202499451857 0 -88.202499451857 179.981022032992859592")
add_test (Geod7 Geod -i --input-string
@@ -198,9 +198,9 @@ if (EXISTS ${GEOGRAPHICLIB_DATA}/geoids/egm96-5.pgm)
# Check fix for single-cell cache bug found 2010-11-23
add_test (GeoidEval0 GeoidEval -n egm96-5 --input-string "0d1 0d1;0d4 0d4")
set_tests_properties (GeoidEval0
- PROPERTIES PASS_REGULAR_EXPRESSION "^17\\.1602 .*
-17\\.1511 ")
-endif (EXISTS ${GEOGRAPHICLIB_DATA}/geoids/egm96-5.pgm)
+ PROPERTIES PASS_REGULAR_EXPRESSION "^17\\.1[56]..
+17\\.1[45]..")
+endif ()
if (EXISTS ${GEOGRAPHICLIB_DATA}/magnetic/wmm2010.wmm)
# Test case from WMM2010_Report.pdf, Sec 1.5, pp 14-15:
@@ -223,7 +223,7 @@ if (EXISTS ${GEOGRAPHICLIB_DATA}/magnetic/wmm2010.wmm)
PROPERTIES PASS_REGULAR_EXPRESSION
" 5535\\.5249148687 14765\\.3703243050 -50625\\.9305478794 .*
.* 20\\.4904268023 1\\.0272592716 83\\.5313962281 ")
-endif (EXISTS ${GEOGRAPHICLIB_DATA}/magnetic/wmm2010.wmm)
+endif ()
if (EXISTS ${GEOGRAPHICLIB_DATA}/gravity/egm2008.egm)
# Verify no overflow at poles with high degree model
@@ -232,4 +232,4 @@ if (EXISTS ${GEOGRAPHICLIB_DATA}/gravity/egm2008.egm)
set_tests_properties (Gravity0
PROPERTIES PASS_REGULAR_EXPRESSION
"-0\\.000146 0\\.000078 -9\\.832294")
-endif (EXISTS ${GEOGRAPHICLIB_DATA}/gravity/egm2008.egm)
+endif ()
diff --git a/tools/CartConvert.cpp b/tools/CartConvert.cpp
index 8ff17fa..2055672 100644
--- a/tools/CartConvert.cpp
+++ b/tools/CartConvert.cpp
@@ -2,8 +2,8 @@
* \file CartConvert.cpp
* \brief Command line utility for geodetic to cartesian coordinate conversions
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -38,7 +38,8 @@ int main(int argc, char* argv[]) {
a = Constants::WGS84_a<real>(),
f = Constants::WGS84_f<real>();
real lat0 = 0, lon0 = 0, h0 = 0;
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';';
for (int m = 1; m < argc; ++m) {
std::string arg(argv[m]);
@@ -77,10 +78,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
- } else if (arg == "--version") {
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
+ } else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: 990e4bdb8e7edc5c66bca635c284b696aa882956 $\n"
+ << ": $Id: b9e53a72ea7d026978678f3ab9d726a2d8485079 $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else
@@ -103,7 +114,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -131,11 +142,19 @@ int main(int argc, char* argv[]) {
int retval = 0;
while (std::getline(*input, s)) {
try {
+ std::string eol("\n");
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
std::istringstream str(s);
real lat, lon, h, x, y, z;
std::string stra, strb, strc;
if (!(str >> stra >> strb >> strc))
- throw GeographicErr("Incomplete input: " + s);
+ throw GeographicErr("Incomplete input: " + s);
if (reverse) {
x = Utility::num<real>(stra);
y = Utility::num<real>(strb);
@@ -154,7 +173,7 @@ int main(int argc, char* argv[]) {
ec.Reverse(x, y, z, lat, lon, h);
*output << Utility::str<real>(lat, 15) << " "
<< Utility::str<real>(lon, 15) << " "
- << Utility::str<real>(h, 12) << "\n";
+ << Utility::str<real>(h, 12) << eol;
} else {
if (localcartesian)
lc.Forward(lat, lon, h, x, y, z);
@@ -162,7 +181,7 @@ int main(int argc, char* argv[]) {
ec.Forward(lat, lon, h, x, y, z);
*output << Utility::str<real>(x, 10) << " "
<< Utility::str<real>(y, 10) << " "
- << Utility::str<real>(z, 10) << "\n";
+ << Utility::str<real>(z, 10) << eol;
}
}
catch (const std::exception& e) {
diff --git a/tools/ConicProj.cpp b/tools/ConicProj.cpp
index 7d0350f..507fd5b 100644
--- a/tools/ConicProj.cpp
+++ b/tools/ConicProj.cpp
@@ -2,8 +2,8 @@
* \file ConicProj.cpp
* \brief Command line utility for conical projections
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -38,7 +38,8 @@ int main(int argc, char* argv[]) {
real
a = Constants::WGS84_a<real>(),
f = Constants::WGS84_f<real>();
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';';
for (int m = 1; m < argc; ++m) {
std::string arg(argv[m]);
@@ -49,7 +50,7 @@ int main(int argc, char* argv[]) {
albers = arg == "-a";
if (m + 2 >= argc) return usage(1, true);
try {
- for (int i = 0; i < 2; ++i) {
+ for (int i = 0; i < 2; ++i) {
DMS::flag ind;
(i ? lat2 : lat1) = DMS::Decode(std::string(argv[++m]), ind);
if (ind == DMS::LONGITUDE)
@@ -107,10 +108,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: 28e29944bd28097eaff577dad02e18ea927a1a87 $\n"
+ << ": $Id: 8efb8dcae1b8e8f1abac4d5d6f60e8730ecaa81c $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else
@@ -133,7 +144,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -172,6 +183,14 @@ int main(int argc, char* argv[]) {
std::cout << std::fixed;
while (std::getline(*input, s)) {
try {
+ std::string eol("\n");
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
std::istringstream str(s);
real lat, lon, x, y, gamma, k;
std::string stra, strb;
@@ -193,7 +212,7 @@ int main(int argc, char* argv[]) {
*output << Utility::str<real>(lat, 15) << " "
<< Utility::str<real>(lon, 15) << " "
<< Utility::str<real>(gamma, 16) << " "
- << Utility::str<real>(k, 16) << "\n";
+ << Utility::str<real>(k, 16) << eol;
} else {
if (lcc)
lproj.Forward(lon0, lat, lon, x, y, gamma, k);
@@ -202,7 +221,7 @@ int main(int argc, char* argv[]) {
*output << Utility::str<real>(x, 10) << " "
<< Utility::str<real>(y, 10) << " "
<< Utility::str<real>(gamma, 16) << " "
- << Utility::str<real>(k, 16) << "\n";
+ << Utility::str<real>(k, 16) << eol;
}
}
catch (const std::exception& e) {
diff --git a/tools/GeoConvert.cpp b/tools/GeoConvert.cpp
index c1c584f..d68605e 100644
--- a/tools/GeoConvert.cpp
+++ b/tools/GeoConvert.cpp
@@ -2,8 +2,8 @@
* \file GeoConvert.cpp
* \brief Command line utility for geographic coordinate conversions
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -40,15 +40,20 @@ int main(int argc, char* argv[]) {
int prec = 0;
int zone = UTMUPS::MATCH;
bool centerp = true, swaplatlong = false;
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';', dmssep = char(0);
for (int m = 1; m < argc; ++m) {
std::string arg(argv[m]);
if (arg == "-g")
outputmode = GEOGRAPHIC;
- else if (arg == "-d")
+ else if (arg == "-d") {
outputmode = DMS;
- else if (arg == "-u")
+ dmssep = '\0';
+ } else if (arg == "-:") {
+ outputmode = DMS;
+ dmssep = ':';
+ } else if (arg == "-u")
outputmode = UTMUPS;
else if (arg == "-m")
outputmode = MGRS;
@@ -100,10 +105,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: e4d712327e515af5fc1f322b2bd55ddc3f91546a $\n"
+ << ": $Id: e39b9974b58d123fd979b1c3c086ae3ccccba72d $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else
@@ -126,7 +141,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -153,7 +168,15 @@ int main(int argc, char* argv[]) {
int retval = 0;
while (std::getline(*input, s)) {
+ std::string eol("\n");
try {
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
p.Reset(s, centerp, swaplatlong);
p.SetAltZone(zone);
switch (outputmode) {
@@ -161,7 +184,7 @@ int main(int argc, char* argv[]) {
os = p.GeoRepresentation(prec, swaplatlong);
break;
case DMS:
- os = p.DMSRepresentation(prec, swaplatlong);
+ os = p.DMSRepresentation(prec, swaplatlong, dmssep);
break;
case UTMUPS:
os = p.AltUTMUPSRepresentation(prec);
@@ -186,7 +209,7 @@ int main(int argc, char* argv[]) {
os = std::string("ERROR: ") + e.what();
retval = 1;
}
- *output << os << "\n";
+ *output << os << eol;
}
return retval;
}
diff --git a/tools/Geod.cpp b/tools/Geod.cpp
index 71f6d9e..f39273b 100644
--- a/tools/Geod.cpp
+++ b/tools/Geod.cpp
@@ -2,8 +2,8 @@
* \file Geod.cpp
* \brief Command line utility for geodesic calculations
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -31,18 +31,18 @@
typedef GeographicLib::Math::real real;
-std::string LatLonString(real lat, real lon, int prec, bool dms) {
+std::string LatLonString(real lat, real lon, int prec, bool dms, char dmssep) {
using namespace GeographicLib;
return dms ?
- DMS::Encode(lat, prec + 5, DMS::LATITUDE) + " " +
- DMS::Encode(lon, prec + 5, DMS::LONGITUDE) :
+ DMS::Encode(lat, prec + 5, DMS::LATITUDE, dmssep) + " " +
+ DMS::Encode(lon, prec + 5, DMS::LONGITUDE, dmssep) :
DMS::Encode(lat, prec + 5, DMS::NUMBER) + " " +
DMS::Encode(lon, prec + 5, DMS::NUMBER);
}
-std::string AzimuthString(real azi, int prec, bool dms) {
+std::string AzimuthString(real azi, int prec, bool dms, char dmssep) {
using namespace GeographicLib;
- return dms ? DMS::Encode(azi, prec + 5, DMS::AZIMUTH) :
+ return dms ? DMS::Encode(azi, prec + 5, DMS::AZIMUTH, dmssep) :
DMS::Encode(azi >= 180 ? azi - 360 : azi, prec + 5, DMS::NUMBER);
}
@@ -75,7 +75,8 @@ int main(int argc, char* argv[]) {
real lat1, lon1, azi1, lat2, lon2, azi2, s12, m12, a12, M12, M21, S12;
real azi2sense = 0;
int prec = 3;
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';', dmssep = char(0);
for (int m = 1; m < argc; ++m) {
std::string arg(argv[m]);
@@ -110,9 +111,13 @@ int main(int argc, char* argv[]) {
}
m += 2;
}
- else if (arg == "-d")
+ else if (arg == "-d") {
dms = true;
- else if (arg == "-b")
+ dmssep = '\0';
+ } else if (arg == "-:") {
+ dms = true;
+ dmssep = ':';
+ } else if (arg == "-b")
azi2sense = 180;
else if (arg == "-f")
full = true;
@@ -134,10 +139,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: 6fb53e2b731f1709ea62061e7dbd94e2b9a6aaf2 $\n"
+ << ": $Id: 68e3a8ec4a5717094498179912279a756f6e3f8b $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else
@@ -160,7 +175,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -193,6 +208,14 @@ int main(int argc, char* argv[]) {
int retval = 0;
while (std::getline(*input, s)) {
try {
+ std::string eol("\n");
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
std::istringstream str(s);
if (inverse) {
std::string slat1, slon1, slat2, slon2;
@@ -206,18 +229,18 @@ int main(int argc, char* argv[]) {
a12 = geod.Inverse(lat1, lon1, lat2, lon2, s12, azi1, azi2,
m12, M12, M21, S12);
if (full)
- *output << LatLonString(lat1, lon1, prec, dms) << " ";
- *output << AzimuthString(azi1, prec, dms) << " ";
+ *output << LatLonString(lat1, lon1, prec, dms, dmssep) << " ";
+ *output << AzimuthString(azi1, prec, dms, dmssep) << " ";
if (full)
- *output << LatLonString(lat2, lon2, prec, dms) << " ";
- *output << AzimuthString(azi2 + azi2sense, prec, dms) << " "
+ *output << LatLonString(lat2, lon2, prec, dms, dmssep) << " ";
+ *output << AzimuthString(azi2 + azi2sense, prec, dms, dmssep) << " "
<< DistanceStrings(s12, a12, full, arcmode, prec, dms);
if (full)
*output << " " << Utility::str<real>(m12, prec)
<< " " << Utility::str<real>(M12, prec+7)
<< " " << Utility::str<real>(M21, prec+7)
<< " " << Utility::str<real>(S12, std::max(prec-7, 0));
- *output << "\n";
+ *output << eol;
} else {
if (linecalc) {
std::string ss12;
@@ -251,10 +274,10 @@ int main(int argc, char* argv[]) {
if (arcmode)
std::swap(s12, a12);
if (full)
- *output << LatLonString(lat1, lon1, prec, dms) << " "
- << AzimuthString(azi1, prec, dms) << " ";
- *output << LatLonString(lat2, lon2, prec, dms) << " "
- << AzimuthString(azi2 + azi2sense, prec, dms);
+ *output << LatLonString(lat1, lon1, prec, dms, dmssep) << " "
+ << AzimuthString(azi1, prec, dms, dmssep) << " ";
+ *output << LatLonString(lat2, lon2, prec, dms, dmssep) << " "
+ << AzimuthString(azi2 + azi2sense, prec, dms, dmssep);
if (full)
*output << " "
<< DistanceStrings(s12, a12, full, arcmode, prec, dms)
@@ -262,7 +285,7 @@ int main(int argc, char* argv[]) {
<< " " << Utility::str<real>(M12, prec+7)
<< " " << Utility::str<real>(M21, prec+7)
<< " " << Utility::str<real>(S12, std::max(prec-7, 0));
- *output << "\n";
+ *output << eol;
}
}
catch (const std::exception& e) {
diff --git a/tools/GeodesicProj.cpp b/tools/GeodesicProj.cpp
index ad9bc6d..368b539 100644
--- a/tools/GeodesicProj.cpp
+++ b/tools/GeodesicProj.cpp
@@ -2,8 +2,8 @@
* \file GeodesicProj.cpp
* \brief Command line utility for geodesic projections
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -43,7 +43,8 @@ int main(int argc, char* argv[]) {
real
a = Constants::WGS84_a<real>(),
f = Constants::WGS84_f<real>();
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';';
for (int m = 1; m < argc; ++m) {
std::string arg(argv[m]);
@@ -84,10 +85,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: add83c03428521dde4441cc0de01d5b8313549b6 $\n"
+ << ": $Id: d6745c19af3da288a8f95b4c6a9003906409800c $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else
@@ -110,7 +121,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -148,6 +159,14 @@ int main(int argc, char* argv[]) {
std::cout << std::fixed;
while (std::getline(*input, s)) {
try {
+ std::string eol("\n");
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
std::istringstream str(s);
real lat, lon, x, y, azi, rk;
std::string stra, strb;
@@ -171,7 +190,7 @@ int main(int argc, char* argv[]) {
*output << Utility::str<real>(lat, 15) << " "
<< Utility::str<real>(lon, 15) << " "
<< Utility::str<real>(azi, 15) << " "
- << Utility::str<real>(rk, 16) << "\n";
+ << Utility::str<real>(rk, 16) << eol;
} else {
if (cassini)
cs.Forward(lat, lon, x, y, azi, rk);
@@ -182,7 +201,7 @@ int main(int argc, char* argv[]) {
*output << Utility::str<real>(x, 10) << " "
<< Utility::str<real>(y, 10) << " "
<< Utility::str<real>(azi, 15) << " "
- << Utility::str<real>(rk, 16) << "\n";
+ << Utility::str<real>(rk, 16) << eol;
}
}
catch (const std::exception& e) {
diff --git a/tools/GeoidEval.cpp b/tools/GeoidEval.cpp
index 9134c88..dd43946 100644
--- a/tools/GeoidEval.cpp
+++ b/tools/GeoidEval.cpp
@@ -2,8 +2,8 @@
* \file GeoidEval.cpp
* \brief Command line utility for evaluating geoid heights
*
- * Copyright (c) Charles Karney (2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2009-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -36,12 +36,14 @@ int main(int argc, char* argv[]) {
try {
using namespace GeographicLib;
typedef Math::real real;
- bool cacheall = false, cachearea = false, verbose = false, cubic = true;
+ bool cacheall = false, cachearea = false, verbose = false,
+ cubic = true, gradp = false;
real caches, cachew, cachen, cachee;
std::string dir;
std::string geoid = Geoid::DefaultGeoidName();
Geoid::convertflag heightmult = Geoid::NONE;
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';';
bool northp = false;
int zonenum = UTMUPS::INVALID;
@@ -90,9 +92,11 @@ int main(int argc, char* argv[]) {
} else if (arg == "-d") {
if (++m == argc) return usage(1, true);
dir = argv[m];
- } else if (arg == "-l") {
+ } else if (arg == "-l")
cubic = false;
- } else if (arg == "-v")
+ else if (arg == "-g")
+ gradp = true;
+ else if (arg == "-v")
verbose = true;
else if (arg == "--input-string") {
if (++m == argc) return usage(1, true);
@@ -103,10 +107,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: c241b424ccc91f1fa7e7f9cc74ef5f157023bc56 $\n"
+ << ": $Id: 6db1ff0b8309a39d0d9b0250dd73be964c5efb7c $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else {
@@ -135,7 +149,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -189,6 +203,16 @@ int main(int argc, char* argv[]) {
const char* spaces = " \t\n\v\f\r,"; // Include comma as space
while (std::getline(*input, s)) {
try {
+ std::string eol("\n");
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ std::string::size_type m1 =
+ m > 0 ? s.find_last_not_of(spaces, m - 1) : std::string::npos;
+ s = s.substr(0, m1 != std::string::npos ? m1 + 1 : m);
+ }
+ }
real height = 0;
if (zonenum != UTMUPS::INVALID) {
// Expect "easting northing" if heightmult == 0, or
@@ -232,15 +256,21 @@ int main(int argc, char* argv[]) {
real h = g(p.Latitude(), p.Longitude());
*output << s
<< Utility::str<real>(height + real(heightmult) * h, 4)
- << suff << "\n";
+ << suff << eol;
} else {
+ if (gradp) {
real gradn, grade;
real h = g(p.Latitude(), p.Longitude(), gradn, grade);
*output << Utility::str<real>(h, 4) << " "
<< Utility::str<real>(gradn * 1e6, 2)
<< (Math::isnan(gradn) ? " " : "e-6 ")
<< Utility::str<real>(grade * 1e6, 2)
- << (Math::isnan(grade) ? "\n" : "e-6\n");
+ << (Math::isnan(grade) ? "" : "e-6")
+ << eol;
+ } else {
+ real h = g(p.Latitude(), p.Longitude());
+ *output << Utility::str<real>(h, 4) << eol;
+ }
}
}
catch (const std::exception& e) {
diff --git a/tools/Gravity.cpp b/tools/Gravity.cpp
index cf08646..2321a67 100644
--- a/tools/Gravity.cpp
+++ b/tools/Gravity.cpp
@@ -2,8 +2,8 @@
* \file Gravity.cpp
* \brief Command line utility for evaluating gravity fields
*
- * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under
- * the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -40,7 +40,8 @@ int main(int argc, char* argv[]) {
bool verbose = false;
std::string dir;
std::string model = GravityModel::DefaultGravityName();
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';';
real lat = 0, h = 0;
bool circle = false;
int prec = -1;
@@ -76,7 +77,7 @@ int main(int argc, char* argv[]) {
throw GeographicErr("Bad hemisphere letter on latitude");
if (!(std::abs(lat) <= 90))
throw GeographicErr("Latitude not in [-90d, 90d]");
- h = Utility::num<real>(std::string(argv[++m]));
+ h = Utility::num<real>(std::string(argv[++m]));
circle = true;
}
catch (const std::exception& e) {
@@ -104,10 +105,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: fe8569b6e279ccef9b0576ef502dbc7537e82396 $\n"
+ << ": $Id: c87c647c3e973929010cdb2fd5d1eaa6aa739eca $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else {
@@ -138,7 +149,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -195,6 +206,14 @@ int main(int argc, char* argv[]) {
std::string s, stra, strb;
while (std::getline(*input, s)) {
try {
+ std::string eol("\n");
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
std::istringstream str(s);
real lon;
if (circle) {
@@ -229,7 +248,7 @@ int main(int argc, char* argv[]) {
}
*output << Utility::str<real>(gx, prec) << " "
<< Utility::str<real>(gy, prec) << " "
- << Utility::str<real>(gz, prec) << "\n";
+ << Utility::str<real>(gz, prec) << eol;
}
break;
case DISTURBANCE:
@@ -243,7 +262,8 @@ int main(int argc, char* argv[]) {
// Convert to mGals
*output << Utility::str<real>(deltax * 1e5, prec) << " "
<< Utility::str<real>(deltay * 1e5, prec) << " "
- << Utility::str<real>(deltaz * 1e5, prec) << "\n";
+ << Utility::str<real>(deltaz * 1e5, prec)
+ << eol;
}
break;
case ANOMALY:
@@ -258,14 +278,14 @@ int main(int argc, char* argv[]) {
eta *= 3600;
*output << Utility::str<real>(Dg01, prec) << " "
<< Utility::str<real>(xi, prec) << " "
- << Utility::str<real>(eta, prec) << "\n";
+ << Utility::str<real>(eta, prec) << eol;
}
break;
case UNDULATION:
default:
{
real N = circle ? c.GeoidHeight(lon) : g.GeoidHeight(lat, lon);
- *output << Utility::str<real>(N, prec) << "\n";
+ *output << Utility::str<real>(N, prec) << eol;
}
break;
}
diff --git a/tools/MagneticField.cpp b/tools/MagneticField.cpp
index 96047ac..94cee09 100644
--- a/tools/MagneticField.cpp
+++ b/tools/MagneticField.cpp
@@ -2,8 +2,8 @@
* \file MagneticField.cpp
* \brief Command line utility for evaluating magnetic fields
*
- * Copyright (c) Charles Karney (2011) <charles at karney.com> and licensed under
- * the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2011, 2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -39,7 +39,8 @@ int main(int argc, char* argv[]) {
bool verbose = false;
std::string dir;
std::string model = MagneticModel::DefaultMagneticName();
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';';
real time = 0, lat = 0, h = 0;
bool timeset = false, circle = false, rate = false;
real hguard = 500000, tguard = 50;
@@ -75,7 +76,7 @@ int main(int argc, char* argv[]) {
throw GeographicErr("Bad hemisphere letter on latitude");
if (!(std::abs(lat) <= 90))
throw GeographicErr("Latitude not in [-90d, 90d]");
- h = Utility::num<real>(std::string(argv[++m]));
+ h = Utility::num<real>(std::string(argv[++m]));
timeset = false;
circle = true;
}
@@ -126,10 +127,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: 9eed3e6df94c67923b1730fe0dae826a5a73163e $\n"
+ << ": $Id: cd55a73582dee908c12a23bee33362e7607268af $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else {
@@ -160,7 +171,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -229,6 +240,14 @@ int main(int argc, char* argv[]) {
std::string s, stra, strb;
while (std::getline(*input, s)) {
try {
+ std::string eol("\n");
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
std::istringstream str(s);
if (!(timeset || circle)) {
if (!(str >> stra))
@@ -292,7 +311,7 @@ int main(int argc, char* argv[]) {
<< Utility::str<real>(by, prec) << " "
<< Utility::str<real>(bx, prec) << " "
<< Utility::str<real>(-bz, prec) << " "
- << Utility::str<real>(F, prec) << "\n";
+ << Utility::str<real>(F, prec) << eol;
if (rate)
*output << DMS::Encode(Dt, prec + 1, DMS::NUMBER) << " "
<< DMS::Encode(It, prec + 1, DMS::NUMBER) << " "
@@ -300,7 +319,7 @@ int main(int argc, char* argv[]) {
<< Utility::str<real>(byt, prec) << " "
<< Utility::str<real>(bxt, prec) << " "
<< Utility::str<real>(-bzt, prec) << " "
- << Utility::str<real>(Ft, prec) << "\n";
+ << Utility::str<real>(Ft, prec) << eol;
}
catch (const std::exception& e) {
*output << "ERROR: " << e.what() << "\n";
diff --git a/tools/Makefile.am b/tools/Makefile.am
index e025fff..f1d639a 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -2,10 +2,11 @@
# Makefile.am
#
# Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-# $Id: 06061d19429c2ebd7073f9b0f321b6aa02bb0472 $
+# $Id: c212f6390b52c0be8aaa7ceba4ccabefe63fb1fd $
AM_CPPFLAGS = -Wall -funroll-loops -finline-functions -fomit-frame-pointer
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/man
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
+ -I$(top_builddir)/man -I$(top_srcdir)/man
LDADD = $(top_builddir)/src/libGeographic.la
DEPS = $(top_builddir)/src/libGeographic.la
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 8a6b93d..d16498c 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -19,7 +19,7 @@
# Makefile.am
#
# Copyright (C) 2009, Francesco P. Lovergine <frankie at debian.org>
-# $Id: 06061d19429c2ebd7073f9b0f321b6aa02bb0472 $
+# $Id: c212f6390b52c0be8aaa7ceba4ccabefe63fb1fd $
VPATH = @srcdir@
@@ -287,7 +287,9 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CPPFLAGS = -Wall -funroll-loops -finline-functions -fomit-frame-pointer
-INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/man
+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
+ -I$(top_builddir)/man -I$(top_srcdir)/man
+
LDADD = $(top_builddir)/src/libGeographic.la
DEPS = $(top_builddir)/src/libGeographic.la
CartConvert_SOURCES = CartConvert.cpp \
diff --git a/tools/Planimeter.cpp b/tools/Planimeter.cpp
index 530e778..54ab7bc 100644
--- a/tools/Planimeter.cpp
+++ b/tools/Planimeter.cpp
@@ -2,7 +2,7 @@
* \file Planimeter.cpp
* \brief Command line utility for measuring the area of geodesic polygons
*
- * Copyright (c) Charles Karney (2010, 2011) <charles at karney.com> and licensed
+ * Copyright (c) Charles Karney (2010-2012) <charles at karney.com> and licensed
* under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
@@ -42,7 +42,8 @@ int main(int argc, char* argv[]) {
a = Constants::WGS84_a<real>(),
f = Constants::WGS84_f<real>();
bool reverse = false, sign = true, polyline = false;
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';';
for (int m = 1; m < argc; ++m) {
std::string arg(argv[m]);
@@ -72,10 +73,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: 9e86fcfa71ff796f3ac3b4395f565456f2ae86eb $\n"
+ << ": $Id: dbb8a9a0d79f172256044e72f65ebc667801eeac $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else
@@ -98,7 +109,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -126,7 +137,15 @@ int main(int argc, char* argv[]) {
std::string s;
real perimeter, area;
unsigned num;
+ std::string eol("\n");
while (std::getline(*input, s)) {
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
bool endpoly = s.empty();
if (!endpoly) {
try {
@@ -145,9 +164,10 @@ int main(int argc, char* argv[]) {
<< Utility::str<real>(perimeter, 8);
if (!polyline)
*output << " " << Utility::str<real>(area, 3);
- *output << "\n";
+ *output << eol;
}
poly.Clear();
+ eol = "\n";
} else
poly.AddPoint(p.Latitude(), p.Longitude());
}
@@ -157,9 +177,10 @@ int main(int argc, char* argv[]) {
<< Utility::str<real>(perimeter, 8);
if (!polyline)
*output << " " << Utility::str<real>(area, 3);
- *output << "\n";
+ *output << eol;
}
poly.Clear();
+ eol = "\n";
return 0;
}
catch (const std::exception& e) {
diff --git a/tools/TransverseMercatorProj.cpp b/tools/TransverseMercatorProj.cpp
index 6236f57..0368bd0 100644
--- a/tools/TransverseMercatorProj.cpp
+++ b/tools/TransverseMercatorProj.cpp
@@ -2,8 +2,8 @@
* \file TransverseMercatorProj.cpp
* \brief Command line utility for transverse Mercator projections
*
- * Copyright (c) Charles Karney (2008, 2009, 2010, 2011) <charles at karney.com>
- * and licensed under the MIT/X11 License. For more information, see
+ * Copyright (c) Charles Karney (2008-2012) <charles at karney.com> and licensed
+ * under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* Compile and link with
@@ -41,7 +41,8 @@ int main(int argc, char* argv[]) {
f = Constants::WGS84_f<real>(),
k0 = Constants::UTM_k0<real>(),
lon0 = 0;
- std::string istring, ifile, ofile;
+ std::string istring, ifile, ofile, cdelim;
+ char lsep = ';';
for (int m = 1; m < argc; ++m) {
std::string arg(argv[m]);
@@ -101,10 +102,20 @@ int main(int argc, char* argv[]) {
} else if (arg == "--output-file") {
if (++m == argc) return usage(1, true);
ofile = argv[m];
+ } else if (arg == "--line-separator") {
+ if (++m == argc) return usage(1, true);
+ if (std::string(argv[m]).size() != 1) {
+ std::cerr << "Line separator must be a single character\n";
+ return 1;
+ }
+ lsep = argv[m][0];
+ } else if (arg == "--comment-delimiter") {
+ if (++m == argc) return usage(1, true);
+ cdelim = argv[m];
} else if (arg == "--version") {
std::cout
<< argv[0]
- << ": $Id: 9b13c08c33190c03afbd6fbab75246eb16e249cb $\n"
+ << ": $Id: dd2a53288a82171129091d16bec6d1457568eb4d $\n"
<< "GeographicLib version " << GEOGRAPHICLIB_VERSION_STRING << "\n";
return 0;
} else
@@ -127,7 +138,7 @@ int main(int argc, char* argv[]) {
} else if (!istring.empty()) {
std::string::size_type m = 0;
while (true) {
- m = istring.find(';', m);
+ m = istring.find(lsep, m);
if (m == std::string::npos)
break;
istring[m] = '\n';
@@ -160,6 +171,14 @@ int main(int argc, char* argv[]) {
std::cout << std::fixed;
while (std::getline(*input, s)) {
try {
+ std::string eol("\n");
+ if (!cdelim.empty()) {
+ std::string::size_type m = s.find(cdelim);
+ if (m != std::string::npos) {
+ eol = " " + s.substr(m) + "\n";
+ s = s.substr(0, m);
+ }
+ }
std::istringstream str(s);
real lat, lon, x, y;
std::string stra, strb;
@@ -182,7 +201,7 @@ int main(int argc, char* argv[]) {
*output << Utility::str<real>(lat, 15) << " "
<< Utility::str<real>(lon, 15) << " "
<< Utility::str<real>(gamma, 16) << " "
- << Utility::str<real>(k, 16) << "\n";
+ << Utility::str<real>(k, 16) << eol;
} else {
if (series)
TMS.Forward(lon0, lat, lon, x, y, gamma, k);
@@ -191,7 +210,7 @@ int main(int argc, char* argv[]) {
*output << Utility::str<real>(x, 10) << " "
<< Utility::str<real>(y, 10) << " "
<< Utility::str<real>(gamma, 16) << " "
- << Utility::str<real>(k, 16) << "\n";
+ << Utility::str<real>(k, 16) << eol;
}
}
catch (const std::exception& e) {
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/geographiclib.git
More information about the Pkg-grass-devel
mailing list