aboutsummaryrefslogtreecommitdiff
path: root/src/geodesic.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/geodesic.h')
-rw-r--r--src/geodesic.h67
1 files changed, 45 insertions, 22 deletions
diff --git a/src/geodesic.h b/src/geodesic.h
index 6b2afc5a..1a1892a7 100644
--- a/src/geodesic.h
+++ b/src/geodesic.h
@@ -108,12 +108,12 @@
* twice about restructuring the internals of the C code since this may make
* porting fixes from the C++ code more difficult.
*
- * Copyright (c) Charles Karney (2012-2014) <charles@karney.com> and licensed
+ * Copyright (c) Charles Karney (2012-2015) <charles@karney.com> and licensed
* under the MIT/X11 License. For more information, see
* http://geographiclib.sourceforge.net/
*
* This library was distributed with
- * <a href="../index.html">GeographicLib</a> 1.40.
+ * <a href="../index.html">GeographicLib</a> 1.43.
**********************************************************************/
#if !defined(GEODESIC_H)
@@ -128,13 +128,36 @@
* The minor version of the geodesic library. (This tracks the version of
* GeographicLib.)
**********************************************************************/
-#define GEODESIC_VERSION_MINOR 40
+#define GEODESIC_VERSION_MINOR 43
/**
* The patch level of the geodesic library. (This tracks the version of
* GeographicLib.)
**********************************************************************/
#define GEODESIC_VERSION_PATCH 0
+/**
+ * Pack the version components into a single integer. Users should not rely on
+ * this particular packing of the components of the version number; see the
+ * documentation for GEODESIC_VERSION, below.
+ **********************************************************************/
+#define GEODESIC_VERSION_NUM(a,b,c) ((((a) * 10000 + (b)) * 100) + (c))
+
+/**
+ * The version of the geodesic library as a single integer, packed as MMmmmmpp
+ * where MM is the major version, mmmm is the minor version, and pp is the
+ * patch level. Users should not rely on this particular packing of the
+ * components of the version number. Instead they should use a test such as
+ * \code
+ #if GEODESIC_VERSION >= GEODESIC_VERSION_NUM(1,40,0)
+ ...
+ #endif
+ * \endcode
+ **********************************************************************/
+#define GEODESIC_VERSION \
+ GEODESIC_VERSION_NUM(GEODESIC_VERSION_MAJOR, \
+ GEODESIC_VERSION_MINOR, \
+ GEODESIC_VERSION_PATCH)
+
#if defined(__cplusplus)
extern "C" {
#endif
@@ -383,8 +406,7 @@ extern "C" {
* @param[in] azi1 azimuth at point 1 (degrees).
* @param[in] flags bitor'ed combination of geod_flags(); \e flags &
* GEOD_ARCMODE determines the meaning of \e s12_a12 and \e flags &
- * GEOD_LONG_NOWRAP prevents the value of \e lon2 being wrapped into
- * the range [&minus;180&deg;, 180&deg;).
+ * GEOD_LONG_UNROLL "unrolls" \e lon2.
* @param[in] s12_a12 if \e flags & GEOD_ARCMODE is 0, this is the distance
* between point 1 and point 2 (meters); otherwise it is the arc length
* between point 1 and point 2 (degrees); it can be negative.
@@ -409,12 +431,12 @@ extern "C" {
* "return" arguments \e plat2, etc., may be replaced by 0, if you do not
* need some quantities computed.
*
- * With \e flags & GEOD_LONG_NOWRAP bit set, the quantity \e lon2 &minus;
- * \e lon1 indicates how many times the geodesic wrapped around the
- * ellipsoid. Because \e lon2 might be outside the normal allowed range
- * for longitudes, [&minus;540&deg;, 540&deg;), be sure to normalize it,
- * e.g., with fmod(\e lon2, 360.0) before using it in subsequent
- * calculations
+ * With \e flags & GEOD_LONG_UNROLL bit set, the longitude is "unrolled" so
+ * that the quantity \e lon2 &minus; \e lon1 indicates how many times and in
+ * what sense the geodesic encircles the ellipsoid. Because \e lon2 might be
+ * outside the normal allowed range for longitudes, [&minus;540&deg;,
+ * 540&deg;), be sure to normalize it, e.g., with fmod(\e lon2, 360.0) before
+ * using it in subsequent calculations
**********************************************************************/
double geod_gendirect(const struct geod_geodesic* g,
double lat1, double lon1, double azi1,
@@ -464,10 +486,8 @@ extern "C" {
* geodesic line.
* @param[in] flags bitor'ed combination of geod_flags(); \e flags &
* GEOD_ARCMODE determines the meaning of \e s12_a12 and \e flags &
- * GEOD_LONG_NOWRAP prevents the value of \e lon2 being wrapped into
- * the range [&minus;180&deg;, 180&deg;); if \e flags & GEOD_ARCMODE is
- * 0, then \e l must have been initialized with \e caps |=
- * GEOD_DISTANCE_IN.
+ * GEOD_LONG_UNROLL "unrolls" \e lon2; if \e flags & GEOD_ARCMODE is 0,
+ * then \e l must have been initialized with \e caps |= GEOD_DISTANCE_IN.
* @param[in] s12_a12 if \e flags & GEOD_ARCMODE is 0, this is the
* distance between point 1 and point 2 (meters); otherwise it is the
* arc length between point 1 and point 2 (degrees); it can be
@@ -499,12 +519,12 @@ extern "C" {
* computed. Requesting a value which \e l is not capable of computing
* is not an error; the corresponding argument will not be altered.
*
- * With \e flags & GEOD_LONG_NOWRAP bit set, the quantity \e lon2 &minus;
- * \e lon1 indicates how many times the geodesic wrapped around the
- * ellipsoid. Because \e lon2 might be outside the normal allowed range
- * for longitudes, [&minus;540&deg;, 540&deg;), be sure to normalize it,
- * e.g., with fmod(\e lon2, 360.0) before using it in subsequent
- * calculations
+ * With \e flags & GEOD_LONG_UNROLL bit set, the longitude is "unrolled" so
+ * that the quantity \e lon2 &minus; \e lon1 indicates how many times and in
+ * what sense the geodesic encircles the ellipsoid. Because \e lon2 might be
+ * outside the normal allowed range for longitudes, [&minus;540&deg;,
+ * 540&deg;), be sure to normalize it, e.g., with fmod(\e lon2, 360.0) before
+ * using it in subsequent calculations
*
* Example, compute way points between JFK and Singapore Changi Airport
* using geod_genposition(). In this example, the points are evenly space in
@@ -771,7 +791,10 @@ extern "C" {
enum geod_flags {
GEOD_NOFLAGS = 0U, /**< No flags */
GEOD_ARCMODE = 1U<<0, /**< Position given in terms of arc distance */
- GEOD_LONG_NOWRAP = 1U<<15 /**< Don't wrap longitude */
+ GEOD_LONG_UNROLL = 1U<<15, /**< Unroll the longitude */
+ /**< @cond SKIP */
+ GEOD_LONG_NOWRAP = GEOD_LONG_UNROLL /* For backward compatibility only */
+ /**< @endcond */
};
#if defined(__cplusplus)