OpenCPN Partial API docs
Loading...
Searching...
No Matches
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
23class 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 */
27public:
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_*/