2016-10-24 00:21:40 +02:00
|
|
|
#ifndef COORDINATES_H
|
|
|
|
#define COORDINATES_H
|
|
|
|
|
|
|
|
#include <cmath>
|
2017-06-29 22:29:27 +02:00
|
|
|
#include <QPair>
|
2016-10-24 00:21:40 +02:00
|
|
|
#include <QDebug>
|
|
|
|
|
2017-11-26 18:54:03 +01:00
|
|
|
#ifndef M_PI
|
|
|
|
#define M_PI 3.14159265358979323846
|
|
|
|
#endif // M_PI
|
|
|
|
#define deg2rad(d) (((d)*M_PI)/180.0)
|
|
|
|
#define rad2deg(d) (((d)*180.0)/M_PI)
|
|
|
|
|
2016-10-24 00:21:40 +02:00
|
|
|
class Coordinates
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Coordinates() {_lon = NAN; _lat = NAN;}
|
|
|
|
Coordinates(const Coordinates &c) {_lon = c._lon; _lat = c._lat;}
|
|
|
|
Coordinates(qreal lon, qreal lat) {_lon = lon; _lat = lat;}
|
2017-03-29 00:17:47 +02:00
|
|
|
|
2016-10-31 22:59:08 +01:00
|
|
|
qreal &rlon() {return _lon;}
|
|
|
|
qreal &rlat() {return _lat;}
|
2016-10-24 00:21:40 +02:00
|
|
|
void setLon(qreal lon) {_lon = lon;}
|
|
|
|
void setLat(qreal lat) {_lat = lat;}
|
|
|
|
qreal lon() const {return _lon;}
|
|
|
|
qreal lat() const {return _lat;}
|
|
|
|
|
2016-10-29 10:40:30 +02:00
|
|
|
bool isNull() const
|
2017-06-30 18:38:16 +02:00
|
|
|
{return std::isnan(_lon) && std::isnan(_lat);}
|
2016-10-29 10:40:30 +02:00
|
|
|
bool isValid() const
|
2017-07-02 09:39:31 +02:00
|
|
|
{return (_lon >= -180.0 && _lon <= 180.0
|
|
|
|
&& _lat >= -90.0 && _lat <= 90.0);}
|
2016-10-29 10:40:30 +02:00
|
|
|
|
2016-10-24 00:21:40 +02:00
|
|
|
qreal distanceTo(const Coordinates &c) const;
|
2016-12-06 01:48:26 +01:00
|
|
|
QPair<Coordinates, Coordinates> boundingRect(qreal distance) const;
|
2016-10-24 00:21:40 +02:00
|
|
|
|
|
|
|
private:
|
|
|
|
qreal _lat, _lon;
|
|
|
|
};
|
|
|
|
|
2017-03-18 01:30:31 +01:00
|
|
|
inline bool operator==(const Coordinates &c1, const Coordinates &c2)
|
|
|
|
{return (c1.lat() == c2.lat() && c1.lon() == c2.lon());}
|
|
|
|
inline bool operator!=(const Coordinates &c1, const Coordinates &c2)
|
|
|
|
{return !(c1 == c2);}
|
2017-06-29 22:29:27 +02:00
|
|
|
|
2017-11-26 18:54:03 +01:00
|
|
|
QDebug operator<<(QDebug dbg, const Coordinates &c);
|
2016-10-24 00:21:40 +02:00
|
|
|
|
|
|
|
#endif // COORDINATES_H
|