USGS

Isis 3.0 Developer's Reference (API)

Home

Displacement.h

Go to the documentation of this file.
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