Isis Developer Reference
Displacement.h
Go to the documentation of this file.
1#ifndef Displacement_h
2#define Displacement_h
3
9/* SPDX-License-Identifier: CC0-1.0 */
10
11namespace Isis {
12 class Distance;
13
32 public:
46
48 Displacement(double displacement, Units distanceUnit);
49 Displacement(double displacementInPixels, double pixelsPerMeter);
50 Displacement(const Distance &distanceToCopy);
51
56
57 double meters() const;
58 void setMeters(double displacementInMeters);
59
60 double kilometers() const;
61 void setKilometers(double displacementInKilometers);
62
63 double pixels(double pixelsPerMeter = 1.0) const;
64 void setPixels(double distanceInPixels, double pixelsPerMeter = 1.0);
65
66 bool isValid() const;
67
77 bool operator >(const Displacement &otherDisplacement) const;
78 bool operator <(const Displacement &otherDisplacement) const;
79
80
89 bool operator >=(const Displacement &otherDisplacement) const {
90 return *this > otherDisplacement || *this == otherDisplacement;
91 }
92
93
102 bool operator <=(const Displacement &otherDisplacement) const {
103 return *this < otherDisplacement || *this == otherDisplacement;
104 }
105
116 bool operator !=(const Displacement &otherDisplacement) const {
117 return !(*this == otherDisplacement);
118 }
119
130 bool operator ==(const Displacement &otherDisplacement) const {
131 return m_displacementInMeters ==
132 otherDisplacement.m_displacementInMeters;
133 }
134
135 Displacement operator +(const Displacement &displacementToAdd) const;
136 Displacement operator -(const Displacement &displacementToSub) const;
137 Displacement operator -(const Distance &distanceToSub) const;
138 double operator /(const Displacement &displacementToDiv) const;
139 Displacement operator /(const double &valueToDiv) const;
140 Displacement operator *(const double &valueToMult) const;
142 void operator +=(const Displacement &displacementToAdd);
143 void operator -=(const Displacement &displacementToSub);
144 void operator -=(const Distance &distanceToSub);
145 void operator /=(const double &valueToDiv);
146 void operator *=(const double &valueToMult);
147
148 protected:
149 double displacement(Units displacementUnit) const;
150 void setDisplacement(const double &displacement, Units displacementUnit);
151
152 private:
157 double m_displacementInMeters;
158 };
159}
160
161#endif
Displacement is a signed length, usually in meters.
Definition Displacement.h:31
double pixels(double pixelsPerMeter=1.0) const
Get the displacement in pixels using the given conversion ratio.
Definition Displacement.cpp:117
void setDisplacement(const double &displacement, Units displacementUnit)
This is a helper method to set displacements in a universal manner with uniform error checking.
Definition Displacement.cpp:400
Displacement operator-(const Displacement &displacementToSub) const
Subtract another displacement from this displacement (1km - 5m = 995m).
Definition Displacement.cpp:206
Displacement operator+(const Displacement &displacementToAdd) const
Add another displacement to this displacement (1km + 5m = 1005m)
Definition Displacement.cpp:191
bool operator<=(const Displacement &otherDisplacement) const
Compare the lengths of 2 displacements with the <= operator.
Definition Displacement.h:102
void operator/=(const double &valueToDiv)
Divide this displacement by a value and assign the result to ourself.
Definition Displacement.cpp:329
bool operator!=(const Displacement &otherDisplacement) const
Compare the lengths of 2 displacements with the != operator.
Definition Displacement.h:116
double kilometers() const
Get the displacement in kilometers.
Definition Displacement.cpp:94
bool isValid() const
Test if this displacement has been initialized or not.
Definition Displacement.cpp:141
Displacement()
This initializes the displacement to an invalid state.
Definition Displacement.cpp:20
double operator/(const Displacement &displacementToDiv) const
Divide another displacement into this displacement (5m / 1m = 5).
Definition Displacement.cpp:236
bool operator==(const Displacement &otherDisplacement) const
Compare the lengths of 2 displacements with the == operator.
Definition Displacement.h:130
bool operator>=(const Displacement &otherDisplacement) const
Compare the distances of 2 displacements with the >= operator.
Definition Displacement.h:89
void setMeters(double displacementInMeters)
Set the displacement in meters.
Definition Displacement.cpp:84
bool operator>(const Displacement &otherDisplacement) const
Get the displacement in meters.
Definition Displacement.cpp:154
friend Displacement operator*(double mult, Displacement displacement)
Multiply displacement by a value (5m * 2 = 10m).
Definition Displacement.cpp:279
Units
This is a list of available units to access and store Distances in.
Definition Displacement.h:38
@ Pixels
The distance is being specified in pixels.
Definition Displacement.h:44
@ Kilometers
The distance is being specified in kilometers.
Definition Displacement.h:42
@ Meters
The distance is being specified in meters.
Definition Displacement.h:40
~Displacement()
Free the memory allocated by this instance of the displacement class.
Definition Displacement.h:55
void setPixels(double distanceInPixels, double pixelsPerMeter=1.0)
Set the displacement in pixels.
Definition Displacement.cpp:130
void operator-=(const Displacement &displacementToSub)
Subtract the given displacement from ourself and assign.
Definition Displacement.cpp:303
void operator+=(const Displacement &displacementToAdd)
Add and assign the given displacement to ourselves.
Definition Displacement.cpp:290
void setKilometers(double displacementInKilometers)
Set the displacement in kilometers.
Definition Displacement.cpp:105
bool operator<(const Displacement &otherDisplacement) const
Compare two displacements with the less than operator.
Definition Displacement.cpp:173
void operator*=(const double &valueToMult)
Multiply this displacement by a value and assign the result to ourself.
Definition Displacement.cpp:342
double displacement(Units displacementUnit) const
This is a helper method to access displacements in a universal manner with uniform error checking.
Definition Displacement.cpp:358
double meters() const
Get the displacement in meters.
Definition Displacement.cpp:73
Distance measurement, usually in meters.
Definition Distance.h:34
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16