OpenCPN Partial API docs
geodesic.h
1 #ifndef GEODESIC_H_
2 #define GEODESIC_H_
3 
4 #define _USE_MATH_DEFINES
5 
6 #include <cstddef>
7 
8 #ifndef M_PI
9 #define M_PI 3.1415926535897931160E0 /* pi */
10 #endif
11 
12 #define GEODESIC_WGS84_SEMI_MAJORAXIS 6378137.0
13 #define GEODESIC_WGS84_SEMI_MINORAXIS 6356752.3142
14 #define GEODESIC_DEG2RAD(d) ((d) * (M_PI / 180.0))
15 #define GEODESIC_RAD2DEG(r) ((r) * (180.0 / M_PI))
16 #define GEODESIC_METERS2NM(m) ((m)*0.000539956803)
17 #define GEODESIC_NM2METERS(nm) ((nm) / 0.000539956803)
18 #define GEODESIC_METERS2FT(m) ((m)*3.2808399)
19 #define GEODESIC_FT2METERS(ft) ((ft) / 3.2808399)
20 #define GEODESIC_MPERS2KT(mpers) ((mpers)*1.9438445)
21 #define GEODESIC_KT2MPERS(mpers) ((mpers) / 1.9438445)
22 
23 class Geodesic {
24  /* Find the distance (meters) and bearings between two Lon/Lat pairs (given in
25  * degrees) Results are in meters and degrees as appropriate
26  */
27 public:
28  static double GreatCircleDistBear(double Lon1, double Lat1, double Lon2,
29  double Lat2, double *Dist = NULL,
30  double *Bear1 = NULL, double *Bear2 = NULL);
31  static void GreatCircleTravel(double Lon1, double Lat1, double Dist,
32  double Bear1, double *Lon2 = NULL,
33  double *Lat2 = NULL, double *Bear2 = NULL);
34 };
35 
36 #endif /*GEODESIC_H_*/