118 #if !defined(GEODESIC_H)
125 #define GEODESIC_VERSION_MAJOR 1
130 #define GEODESIC_VERSION_MINOR 52
135 #define GEODESIC_VERSION_PATCH 0
142 #define GEODESIC_VERSION_NUM(a,b,c) ((((a) * 10000 + (b)) * 100) + (c))
155 #define GEODESIC_VERSION \
156 GEODESIC_VERSION_NUM(GEODESIC_VERSION_MAJOR, \
157 GEODESIC_VERSION_MINOR, \
158 GEODESIC_VERSION_PATCH)
160 #if !defined(GEOD_DLL)
161 #if defined(_MSC_VER) && defined(PROJ_MSVC_DLL_EXPORT)
162 #define GEOD_DLL __declspec(dllexport)
163 #elif defined(__GNUC__)
164 #define GEOD_DLL __attribute__ ((visibility("default")))
170 #if defined(PROJ_RENAME_SYMBOLS)
171 #include "proj_symbol_rename.h"
174 #if defined(__cplusplus)
186 double f1, e2, ep2, n, b, c2, etol2;
187 double A3x[6], C3x[15], C4x[21];
207 double b, c2, f1, salp0, calp0, k2,
208 ssig1, csig1, dn1, stau1, ctau1, somg1, comg1,
209 A1m1, A2m1, A3c, B11, B21, B31, A4, B41;
210 double C1a[6+1], C1pa[6+1], C2a[6+1], C3a[6], C4a[6];
280 double lat1,
double lon1,
double azi1,
double s12,
281 double* plat2,
double* plon2,
double* pazi2);
322 double lat1,
double lon1,
double azi1,
323 unsigned flags,
double s12_a12,
324 double* plat2,
double* plon2,
double* pazi2,
325 double* ps12,
double* pm12,
326 double* pM12,
double* pM21,
368 double lat1,
double lon1,
369 double lat2,
double lon2,
370 double* ps12,
double* pazi1,
double* pazi2);
400 double lat1,
double lon1,
401 double lat2,
double lon2,
402 double* ps12,
double* pazi1,
double* pazi2,
403 double* pm12,
double* pM12,
double* pM21,
447 double lat1,
double lon1,
double azi1,
473 double lat1,
double lon1,
474 double azi1,
double s12,
504 double lat1,
double lon1,
double azi1,
505 unsigned flags,
double s12_a12,
530 double lat1,
double lon1,
531 double lat2,
double lon2,
580 double* plat2,
double* plon2,
double* pazi2);
647 unsigned flags,
double s12_a12,
648 double* plat2,
double* plon2,
double* pazi2,
649 double* ps12,
double* pm12,
650 double* pM12,
double* pM21,
681 unsigned flags,
double s13_a13);
731 double lat,
double lon);
751 double azi,
double s);
800 int reverse,
int sign,
801 double* pA,
double* pP);
831 double lat,
double lon,
832 int reverse,
int sign,
833 double* pA,
double* pP);
862 double azi,
double s,
863 int reverse,
int sign,
864 double* pA,
double* pP);
900 double lats[],
double lons[],
int n,
901 double* pA,
double* pP);
929 #if defined(__cplusplus)
double GEOD_DLL 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)
void GEOD_DLL geod_polygon_addedge(const struct geod_geodesic *g, struct geod_polygon *p, double azi, double s)
void GEOD_DLL geod_polygon_addpoint(const struct geod_geodesic *g, struct geod_polygon *p, double lat, double lon)
void GEOD_DLL geod_setdistance(struct geod_geodesicline *l, double s13)
void GEOD_DLL geod_gensetdistance(struct geod_geodesicline *l, unsigned flags, double s13_a13)
unsigned GEOD_DLL 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_DLL geod_polygon_clear(struct geod_polygon *p)
void GEOD_DLL geod_init(struct geod_geodesic *g, double a, double f)
void GEOD_DLL geod_directline(struct geod_geodesicline *l, const struct geod_geodesic *g, double lat1, double lon1, double azi1, double s12, unsigned caps)
void GEOD_DLL geod_inverse(const struct geod_geodesic *g, double lat1, double lon1, double lat2, double lon2, double *ps12, double *pazi1, double *pazi2)
unsigned GEOD_DLL 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)
void GEOD_DLL geod_lineinit(struct geod_geodesicline *l, const struct geod_geodesic *g, double lat1, double lon1, double azi1, unsigned caps)
unsigned GEOD_DLL geod_polygon_compute(const struct geod_geodesic *g, const struct geod_polygon *p, int reverse, int sign, double *pA, double *pP)
void GEOD_DLL geod_position(const struct geod_geodesicline *l, double s12, double *plat2, double *plon2, double *pazi2)
double GEOD_DLL 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)
double GEOD_DLL 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_DLL geod_direct(const struct geod_geodesic *g, double lat1, double lon1, double azi1, double s12, double *plat2, double *plon2, double *pazi2)
void GEOD_DLL geod_polygonarea(const struct geod_geodesic *g, double lats[], double lons[], int n, double *pA, double *pP)
void GEOD_DLL geod_inverseline(struct geod_geodesicline *l, const struct geod_geodesic *g, double lat1, double lon1, double lat2, double lon2, unsigned caps)
void GEOD_DLL geod_gendirectline(struct geod_geodesicline *l, const struct geod_geodesic *g, double lat1, double lon1, double azi1, unsigned flags, double s12_a12, unsigned caps)
void GEOD_DLL geod_polygon_init(struct geod_polygon *p, int polylinep)