Updraft  1.0
Open source glider flight visualisation tool.
ellipsoid.h
Go to the documentation of this file.
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_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines