Files
Cnomicon/include/libgps++/GpsMath.h
2021-01-22 10:16:20 -05:00

82 lines
2.1 KiB
C++

//
// Linux GPS
//
/* prevent multiple inclusions */
#ifndef __GpsMath__
#define __GpsMath__
/* includes *****************************************************************/
#include <math.h>
#include <stdint.h>
#include "netlib.h"
/* defines ******************************************************************/
// degrees <-> radians
#define DEG2RAD(X) ((X)*M_PI/180.0)
#define RAD2DEG(X) ((X)*180.0/M_PI)
// (nautical mile to km) to meters per degree
#define MPERDEG (111.13285*1000.0)
#define EARTHRADIUS 6378100.0 // meters
// speed conversions
#define KNOTS_KPH 1.85200
#define KNOTS_METERSPERSEC (KNOTS_KPH*1000.0/3600.0)
#define KPH2MSEC(X) ((X)*0.277777778)
#define MSEC2KPH(X) ((X)/0.277777778)
/* macros *******************************************************************/
/* structs & typedefs *******************************************************/
/* c class definitions ******************************************************/
//
// GpsLinux because it depennds on GPSd, the HAMLIB and NMEAP libraries
//
class GpsMath {
// public data
public:
// parser
// protected data
protected:
// private data
private:
// static data
// private methods
// public methods
public:
// constructors
GpsMath();
// destructor
virtual ~GpsMath();
// virtual functions
// public methods
// static methods
static double Minutes2Degrees(char *value, char *side = NULL);
static void Degrees2Minutes(double deg, char *buf, int max, bool lat);
static timespec String2Time(const char *hhmmss, const char *ddmmyy);
static double Bearing( double lat1, double lon1, double lat2, double lon2 );
static double Distance( double lat1, double lon1, double lat2, double lon2 );
static double DistanceX( double lat1, double lon1, double lat2, double lon2 );
static double DistanceY( double lat1, double lon1, double lat2, double lon2 );
static double DistanceXY(double lat1, double lon1, double lat2, double lon2, double &x, double &y );
static double Travel( double *lat, double *lon, double *ele, double x, double y, double z);
};
#endif