geodesic (3)
Leading comments
@(#)geodesic.3
NAME
geod_init - initialize an ellipsoidgeod_direct geod_gendirect - the direct geodesic problem
geod_inverse geod_geninverse - the inverse geodesic problem
geod_lineinit geod_directline geod_gendirectline geod_inverseline - initialize a geodesic line
geod_setdistance geod_gensetdistance - set distance to reference point
geod_position geod_genposition - a position on a geodesic line
geod_polygon_init - initialize a polygon
geod_addpoint geod_addedge - add to a polygon
geod_polygon_compute geod_polygon_testpoint geod_polygon_testedge - compute properties of polygon
geod_polygon_clear - clear polygon
geod_polygonarea - the area of a polygon
SYNOPSIS
#include <geodesic.h>
and link against the proj library.
DESCRIPTION
This library is a port of the geodesic routines in the C++ library, GeographicLib, to C. It solves the direct and inverse geodesic problems on an ellipsoid of revolution. In addition, the reduced length of a geodesic and the area between a geodesic and the equator can be computed. The results are accurate to round off for |f| < 1/50, where f is the flattening. Note that the geodesic routines measure angles (latitudes, longitudes, and azimuths) in degrees, unlike the rest of the proj library, which uses radians. The documentation for this library is included in geodesic.h. A formatted version of the documentation is available at geographiclib.sf.net/1.46/CEXAMPLE
The following program reads in lines with the coordinates for two points in decimal degrees (lat1, lon1, lat2, lon2) and prints out azi1, azi2, s12 for the geodesic line between each pair of points on the WGS84 ellipsoid. (N.B. azi2 is the forward azimuth at point 2.)#include <stdio.h> #include <geodesic.h> int main() { double a = 6378137, f = 1/298.257223563; /* WGS84 */ double lat1, lon1, azi1, lat2, lon2, azi2, s12; struct geod_geodesic g; geod_init(&g, a, f); while (scanf("%lf %lf %lf %lf", &lat1, &lon1, &lat2, &lon2) == 4) { geod_inverse(&g, lat1, lon1, lat2, lon2, &s12, &azi1, &azi2); printf("%.8f %.8f %.3f\n", azi1, azi2, s12); } return 0; }
LIBRARY
libproj.a - library of projections and support proceduresSEE ALSO
Full online documentation for geodesic(3),geographiclib.sf.net/1.46/C
GeographicLib, geographiclib.sf.net
The GeodesicExact class in GeographicLib solves the geodesic problems in terms of elliptic integrals; the results are accurate for arbitrary f.
C. F. F. Karney, Algorithms for Geodesics,
J. Geodesy 87, 43-55 (2013);
DOI: dx.doi.org/10.1007/s00190-012-0578-z
geographiclib.sf.net/geod-addenda.html
A geodesic bibliography,
geographiclib.sf.net/geodesic-papers/biblio.html
The Wikipedia page, Geodesics on an ellipsoid,
en.wikipedia.org/wiki/Geodesics_on_an_ellipsoid