00001 #ifndef PHX_TERRAIN_H
00002 #define PHX_TERRAIN_H
00003
00009 namespace Phx {
00010
00015 class Terrain {
00016 public:
00017
00032 class HeightInterface {
00033 public:
00034 virtual position(const EcefVector& position) = 0;
00035 EcefVector position(void) const { return mPosition; }
00036
00037 double slewRate(void) const { return mSlewRate; }
00038 virtual void slewRate(double rate) = 0;
00039
00047 virtual double heightAgl(void) const = 0;
00048
00056 virtual double heightMsl(void) const = 0;
00057
00058 virtual double resolution(void) const { return mResolution; }
00059 virtual void resolution(double resolution) = 0;
00060
00061 protected:
00062 void setPosition(const EcefVector& position) { mPosition = position; }
00063 void setSlewRate(double rate) { mRate = rate; }
00064
00065 private:
00066 EcefVector mPosition;
00067 double mRate;
00068 };
00069
00074 virtual Ptr<HeightInterface> newHeightInterface(void) = 0;
00075
00076
00077
00078
00079
00080 };
00081
00082
00083 };
00084
00085 #endif