// // Linux GPS // /* prevent multiple inclusions */ #ifndef __GpsMath__ #define __GpsMath__ /* includes *****************************************************************/ #include #include #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