Updraft
1.0
Open source glider flight visualisation tool.
|
00001 #ifndef UPDRAFT_SRC_LIBRARIES_UTIL_ELLIPSOID_H_ 00002 #define UPDRAFT_SRC_LIBRARIES_UTIL_ELLIPSOID_H_ 00003 00004 #include "util.h" 00005 00006 namespace osg { 00007 class EllipsoidModel; 00008 } 00009 00010 namespace GeographicLib { 00011 class Geodesic; 00012 } 00013 00014 namespace Updraft { 00015 namespace Util { 00016 00017 enum EllipsoidType { 00018 ELLIPSOID_WGS84, 00019 ELLIPSOID_FAI_SPHERE 00020 }; 00021 00022 class Location; 00023 00027 class UTIL_EXPORT Ellipsoid { 00028 public: 00029 Ellipsoid(const QString &name_, EllipsoidType type_); 00030 00031 virtual ~Ellipsoid(); 00032 00034 QString getName() const; 00035 00037 EllipsoidType getType() const; 00038 00040 static QString getEllipsoidTypeName(EllipsoidType type); 00041 00043 EllipsoidType getEllipsoidType(const QString& typeName); 00044 00046 qreal getEquatRadius() const; 00047 00049 qreal getPolarRadius() const; 00050 00052 qreal getFlattening() const; 00053 00054 const osg::EllipsoidModel* getOsgEllipsoidModel() const; 00055 00060 qreal distance(const Location &l1, const Location &l2) const; 00061 00068 qreal distanceAzimuth(const Location &l1, const Location &l2, 00069 qreal *azimuth) const; 00070 00074 static qreal countFlattening(qreal rE, qreal rP); 00075 00079 static qreal countPolarRadius(qreal r, qreal f); 00080 00081 protected: 00082 EllipsoidType type; 00083 QString name; 00084 qreal equatRadius; 00085 qreal flattening; 00086 00088 osg::EllipsoidModel *osgEllipsoidModel; 00089 00091 GeographicLib::Geodesic *geodesic; 00092 }; 00093 00094 } // End namespace Util 00095 } // End namespace Updraft 00096 00097 #endif // UPDRAFT_SRC_LIBRARIES_UTIL_ELLIPSOID_H_