## 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 http://geographiclib.sf.net/1.44/C

## EXAMPLE

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\n", &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; }