#ifndef ELLIPSOID_H #define ELLIPSOID_H #include #include #include #include class Ellipsoid { public: Ellipsoid() : _radius(NAN), _flattening(NAN) {} Ellipsoid(double radius, double flattening) : _radius(radius), _flattening(flattening) {} double radius() const {return _radius;} double flattening() const {return _flattening;} bool isNull() const {return (std::isnan(_radius) && std::isnan(_flattening));} bool isValid() const {return !(std::isnan(_radius) || std::isnan(_flattening));} static const Ellipsoid *ellipsoid(int id); static void loadList(const QString &path); private: double _radius; double _flattening; static QMap WGS84(); static QMap _ellipsoids; }; inline bool operator==(const Ellipsoid &e1, const Ellipsoid &e2) {return (e1.radius() == e2.radius() && e1.flattening() == e2.flattening());} QDebug operator<<(QDebug dbg, const Ellipsoid &ellipsoid); #endif // ELLIPSOID_H