119 #if !defined(GEODESIC_H)
126 #define GEODESIC_VERSION_MAJOR 1
131 #define GEODESIC_VERSION_MINOR 42
136 #define GEODESIC_VERSION_PATCH 0
143 #define GEODESIC_VERSION_NUM(a,b,c) ((((a) * 10000 + (b)) * 100) + (c))
156 #define GEODESIC_VERSION \
157 GEODESIC_VERSION_NUM(GEODESIC_VERSION_MAJOR, \
158 GEODESIC_VERSION_MINOR, \
159 GEODESIC_VERSION_PATCH)
161 #if defined(__cplusplus)
173 double f1, e2, ep2, n, b, c2, etol2;
174 double A3x[6], C3x[15], C4x[21];
189 double b, c2, f1, salp0, calp0, k2,
190 salp1, calp1, ssig1, csig1, dn1, stau1, ctau1, somg1, comg1,
191 A1m1, A2m1, A3c, B11, B21, B31, A4, B41;
192 double C1a[6+1], C1pa[6+1], C2a[6+1], C3a[6], C4a[6];
264 double lat1,
double lon1,
double azi1,
unsigned caps);
304 double lat1,
double lon1,
double azi1,
double s12,
305 double* plat2,
double* plon2,
double* pazi2);
347 double lat1,
double lon1,
double lat2,
double lon2,
348 double* ps12,
double* pazi1,
double* pazi2);
397 double* plat2,
double* plon2,
double* pazi2);
443 double lat1,
double lon1,
double azi1,
444 unsigned flags,
double s12_a12,
445 double* plat2,
double* plon2,
double* pazi2,
446 double* ps12,
double* pm12,
double* pM12,
double* pM21,
478 double lat1,
double lon1,
double lat2,
double lon2,
479 double* ps12,
double* pazi1,
double* pazi2,
480 double* pm12,
double* pM12,
double* pM21,
554 unsigned flags,
double s12_a12,
555 double* plat2,
double* plon2,
double* pazi2,
556 double* ps12,
double* pm12,
557 double* pM12,
double* pM21,
602 double lat,
double lon);
623 double azi,
double s);
668 int reverse,
int sign,
669 double* pA,
double* pP);
700 double lat,
double lon,
701 int reverse,
int sign,
702 double* pA,
double* pP);
733 double azi,
double s,
734 int reverse,
int sign,
735 double* pA,
double* pP);
771 double lats[],
double lons[],
int n,
772 double* pA,
double* pP);
800 #if defined(__cplusplus)
unsigned geod_polygon_testedge(const struct geod_geodesic *g, const struct geod_polygon *p, double azi, double s, int reverse, int sign, double *pA, double *pP)
double geod_genposition(const struct geod_geodesicline *l, unsigned flags, double s12_a12, double *plat2, double *plon2, double *pazi2, double *ps12, double *pm12, double *pM12, double *pM21, double *pS12)
void geod_polygon_addedge(const struct geod_geodesic *g, struct geod_polygon *p, double azi, double s)
void geod_position(const struct geod_geodesicline *l, double s12, double *plat2, double *plon2, double *pazi2)
void geod_lineinit(struct geod_geodesicline *l, const struct geod_geodesic *g, double lat1, double lon1, double azi1, unsigned caps)
double geod_geninverse(const struct geod_geodesic *g, double lat1, double lon1, double lat2, double lon2, double *ps12, double *pazi1, double *pazi2, double *pm12, double *pM12, double *pM21, double *pS12)
void geod_polygon_addpoint(const struct geod_geodesic *g, struct geod_polygon *p, double lat, double lon)
void geod_polygon_init(struct geod_polygon *p, int polylinep)
void geod_direct(const struct geod_geodesic *g, double lat1, double lon1, double azi1, double s12, double *plat2, double *plon2, double *pazi2)
unsigned geod_polygon_compute(const struct geod_geodesic *g, const struct geod_polygon *p, int reverse, int sign, double *pA, double *pP)
void geod_polygonarea(const struct geod_geodesic *g, double lats[], double lons[], int n, double *pA, double *pP)
double geod_gendirect(const struct geod_geodesic *g, double lat1, double lon1, double azi1, unsigned flags, double s12_a12, double *plat2, double *plon2, double *pazi2, double *ps12, double *pm12, double *pM12, double *pM21, double *pS12)
unsigned geod_polygon_testpoint(const struct geod_geodesic *g, const struct geod_polygon *p, double lat, double lon, int reverse, int sign, double *pA, double *pP)
void geod_inverse(const struct geod_geodesic *g, double lat1, double lon1, double lat2, double lon2, double *ps12, double *pazi1, double *pazi2)
void geod_init(struct geod_geodesic *g, double a, double f)