Isis 3.0 Developer's Reference (API) |
Home |
00001 #ifndef Displacement_h 00002 #define Displacement_h 00003 00023 namespace Isis { 00024 class Distance; 00025 00041 class Displacement { 00042 public: 00048 enum Units { 00050 Meters, 00052 Kilometers, 00054 Pixels 00055 }; 00056 00057 Displacement(); 00058 Displacement(double displacement, Units distanceUnit); 00059 Displacement(double displacementInPixels, double pixelsPerMeter); 00060 Displacement(const Distance &distanceToCopy); 00061 00065 ~Displacement() {}; 00066 00067 double GetMeters() const; 00068 void SetMeters(double displacementInMeters); 00069 00070 double GetKilometers() const; 00071 void SetKilometers(double displacementInKilometers); 00072 00073 double GetPixels(double pixelsPerMeter = 1.0) const; 00074 void SetPixels(double distanceInPixels, double pixelsPerMeter = 1.0); 00075 00076 bool Valid() const; 00077 00087 bool operator >(const Displacement &otherDisplacement) const; 00088 bool operator <(const Displacement &otherDisplacement) const; 00089 00090 00099 bool operator >=(const Displacement &otherDisplacement) const { 00100 return *this > otherDisplacement || *this == otherDisplacement; 00101 } 00102 00103 00112 bool operator <=(const Displacement &otherDisplacement) const { 00113 return *this < otherDisplacement || *this == otherDisplacement; 00114 } 00115 00126 bool operator !=(const Displacement &otherDisplacement) const { 00127 return !(*this == otherDisplacement); 00128 } 00129 00140 bool operator ==(const Displacement &otherDisplacement) const { 00141 return GetLength() == otherDisplacement.GetLength(); 00142 } 00143 00144 Displacement operator +(const Displacement &displacementToAdd) const; 00145 Displacement operator -(const Displacement &displacementToSub) const; 00146 Displacement operator -(const Distance &distanceToSub) const; 00147 double operator /(const Displacement &displacementToDiv) const; 00148 Displacement operator /(const double &valueToDiv) const; 00149 Displacement operator *(const double &valueToMult) const; 00150 friend Displacement operator *(double mult, Displacement displacement); 00151 void operator +=(const Displacement &displacementToAdd); 00152 void operator -=(const Displacement &displacementToSub); 00153 void operator -=(const Distance &distanceToSub); 00154 void operator /=(const double &valueToDiv); 00155 void operator *=(const double &valueToMult); 00156 00157 protected: 00158 double GetDisplacement(Units displacementUnit) const; 00159 void SetDisplacement(const double &displacement, Units displacementUnit); 00160 00161 private: 00162 double GetLength() const; 00167 double p_displacementInMeters; 00168 }; 00169 } 00170 00171 #endif