]> git.mxchange.org Git - simgear.git/blobdiff - simgear/math/sg_geodesy.hxx
Allow removing of the texture data after it is sent to OpenGL
[simgear.git] / simgear / math / sg_geodesy.hxx
index b9f7d6db17ff9ced97838bfc5e78025ac41b756d..21acaa35e6bc1dc07ce886bbea3d28be09b7147b 100644 (file)
@@ -1,8 +1,9 @@
-// sg_geodesy.hxx -- routines to convert between geodetic and geocentric 
-//                   coordinate systems.
-//
-// Copied and adapted directly from LaRCsim/ls_geodesy.c
-//
+/**
+ * \file sg_geodesy.hxx
+ * Routines to convert between geodetic and geocentric coordinate systems.
+ * Copied and adapted directly from LaRCsim/ls_geodesy.c
+ */
+
 // See below for the complete original LaRCsim comments.
 //
 // $Id$
 #include <simgear/math/polar3d.hxx>
 
 
-// sgGeocToGeod(lat_geoc, radius, *lat_geod, *alt, *sea_level_r)
-//     INPUTS: 
-//         lat_geoc    Geocentric latitude, radians, + = North
-//         radius      C.G. radius to earth center (meters)
-//
-//     OUTPUTS:
-//         lat_geod    Geodetic latitude, radians, + = North
-//         alt         C.G. altitude above mean sea level (meters)
-//         sea_level_r radius from earth center to sea level at
-//                      local vertical (surface normal) of C.G. (meters)
-
-void sgGeocToGeod( double lat_geoc, double radius, double
-                  *lat_geod, double *alt, double *sea_level_r );
-
-
-// sgGeodToGeoc( lat_geod, alt, *sl_radius, *lat_geoc )
-//     INPUTS: 
-//         lat_geod    Geodetic latitude, radians, + = North
-//         alt         C.G. altitude above mean sea level (meters)
-//
-//     OUTPUTS:
-//         sl_radius   SEA LEVEL radius to earth center (meters)
-//                      (add Altitude to get true distance from earth center.
-//         lat_geoc    Geocentric latitude, radians, + = North
-//
-
-void sgGeodToGeoc( double lat_geod, double alt, double *sl_radius,
-                     double *lat_geoc );
-
-
-// convert a geodetic point lon(radians), lat(radians), elev(meter) to
-// a cartesian point
-
+/** 
+ * Convert from geocentric coordinates to geodetic coordinates
+ * @param lat_geoc (in) Geocentric latitude, radians, + = North
+ * @param radius (in) C.G. radius to earth center (meters)
+ * @param lat_geod (out) Geodetic latitude, radians, + = North
+ * @param alt (out) C.G. altitude above mean sea level (meters)
+ * @param sea_level_r (out) radius from earth center to sea level at
+ *        local vertical (surface normal) of C.G. (meters)
+ */
+void sgGeocToGeod( const double& lat_geoc, const double& radius,
+                   double *lat_geod, double *alt, double *sea_level_r );
+
+
+/**
+ * Convert from geodetic coordinates to geocentric coordinates
+ * @param lat_geod (in) Geodetic latitude, radians, + = North
+ * @param alt (in) C.G. altitude above mean sea level (meters)
+ * @param sl_radius (out) SEA LEVEL radius to earth center (meters)
+ *        (add Altitude to get true distance from earth center.
+ * @param lat_geoc (out) Geocentric latitude, radians, + = North
+ */
+void sgGeodToGeoc( const double& lat_geod, const double& alt,
+                   double *sl_radius, double *lat_geoc );
+
+
+/**
+ * Convert a geodetic point lon(radians), lat(radians), elev(meter) to
+ * a cartesian point.
+ * @param geodetic point
+ * @return cartesian point
+ */
 inline Point3D sgGeodToCart(const Point3D& geod) {
     double gc_lon, gc_lat, sl_radius;
 
@@ -71,17 +70,40 @@ inline Point3D sgGeodToCart(const Point3D& geod) {
 }
 
 
-// given, alt, lat1, lon1, az1 and distance (s), calculate lat2, lon2
-// and az2.  Lat, lon, and azimuth are in degrees.  distance in meters
-int geo_direct_wgs_84 ( double alt, double lat1, double lon1, double az1, 
-                       double s, double *lat2, double *lon2,  double *az2 );
-
-
-// given alt, lat1, lon1, lat2, lon2, calculate starting and ending
-// az1, az2 and distance (s).  Lat, lon, and azimuth are in degrees.
-// distance in meters
-int geo_inverse_wgs_84( double alt, double lat1, double lon1, double lat2,
-                       double lon2, double *az1, double *az2, double *s );
+/**
+ * Given a starting position and an offset radial and distance,
+ * calculate an ending positon on a wgs84 ellipsoid.
+ * @param alt (in) meters
+ * @param lat1 (in) degrees
+ * @param lon1 (in) degrees
+ * @param az1 (in) degrees
+ * @param s (in) distance in meters
+ * @param lat2 (out) degrees
+ * @param lon2 (out) degrees
+ * @param az2 (out) return course in degrees
+ */
+int geo_direct_wgs_84 ( const double& alt, const double& lat1,
+                        const double& lon1, const double& az1, 
+                       const double& s, double *lat2, double *lon2,
+                        double *az2 );
+
+
+/**
+ * Given an altitude and two sets of (lat, lon) calculate great circle
+ * distance between them as well as the starting and ending azimuths.
+ * @param alt (in) meters
+ * @param lat1 (in) degrees
+ * @param lon1 (in) degrees
+ * @param lat2 (in) degrees
+ * @param lon2 (in) degrees
+ * @param az1 (out) start heading degrees
+ * @param az2 (out) end heading degrees
+ * @param s (out) distance meters
+ */
+int geo_inverse_wgs_84( const double& alt, const double& lat1,
+                        const double& lon1, const double& lat2,
+                       const double& lon2, double *az1, double *az2,
+                        double *s );
 
 
 /***************************************************************************