-int geo_inverse_wgs_84( double alt, double lat1,
- double lon1, double lat2,
- double lon2, double *az1, double *az2,
- double *s );
+inline int geo_inverse_wgs_84( double lat1, double lon1, double lat2,
+ double lon2, double *az1, double *az2,
+ double *s )
+{
+ return !SGGeodesy::inverse(SGGeod::fromDeg(lon1, lat1),
+ SGGeod::fromDeg(lon2, lat2), *az1, *az2, *s);
+}
+inline int geo_inverse_wgs_84( double alt, double lat1,
+ double lon1, double lat2,
+ double lon2, double *az1, double *az2,
+ double *s )
+{ return geo_inverse_wgs_84(lat1, lon1, lat2, lon2, az1, az2, s); }
+
+
+/**
+ * Given an altitude and two sets of (lat, lon) calculate great circle
+ * distance between them as well as the starting and ending azimuths.
+ * @param p1 (in) first position
+ * @param p2 (in) fsecond position
+ * @param az1 (out) start heading degrees
+ * @param az2 (out) end heading degrees
+ * @param s (out) distance meters
+ */
+inline int geo_inverse_wgs_84(const SGGeod& p1, const SGGeod& p2,
+ double *az1, double *az2, double *s )
+{
+ return !SGGeodesy::inverse(p1, p2, *az1, *az2, *s);
+}