1 #ifndef COORDINATES_H 2 #define COORDINATES_H 3 4 #include <cmath> 5 #include <QDebug> 6 7 #define deg2rad(d) (((d)*M_PI)/180.0) 8 #define rad2deg(d) (((d)*180.0)/M_PI) 9 10 class Coordinates 11 { 12 public: Coordinates()13 Coordinates() {_lon = NAN; _lat = NAN;} Coordinates(double lon,double lat)14 Coordinates(double lon, double lat) {_lon = lon; _lat = lat;} 15 rlon()16 double &rlon() {return _lon;} rlat()17 double &rlat() {return _lat;} setLon(double lon)18 void setLon(double lon) {_lon = lon;} setLat(double lat)19 void setLat(double lat) {_lat = lat;} lon()20 double lon() const {return _lon;} lat()21 double lat() const {return _lat;} 22 isNull()23 bool isNull() const 24 {return std::isnan(_lon) && std::isnan(_lat);} isValid()25 bool isValid() const 26 {return (_lon >= -180.0 && _lon <= 180.0 27 && _lat >= -90.0 && _lat <= 90.0);} 28 29 double distanceTo(const Coordinates &c) const; 30 31 private: 32 double _lat, _lon; 33 }; 34 35 Q_DECLARE_TYPEINFO(Coordinates, Q_PRIMITIVE_TYPE); 36 37 inline bool operator==(const Coordinates &c1, const Coordinates &c2) 38 {return (c1.lat() == c2.lat() && c1.lon() == c2.lon());} 39 inline bool operator!=(const Coordinates &c1, const Coordinates &c2) 40 {return !(c1 == c2);} 41 42 #ifndef QT_NO_DEBUG 43 QDebug operator<<(QDebug dbg, const Coordinates &c); 44 #endif // QT_NO_DEBUG 45 46 #endif // COORDINATES_H 47