Isis 3 Developer Reference
|
Displacement is a signed length, usually in meters. More...
#include <Displacement.h>
Public Types | |
enum | Units { Meters, Kilometers, Pixels } |
This is a list of available units to access and store Distances in. More... | |
Public Member Functions | |
Displacement () | |
This initializes the displacement to an invalid state. More... | |
Displacement (double displacement, Units distanceUnit) | |
This is the general purpose constructor for Displacement. More... | |
Displacement (double displacementInPixels, double pixelsPerMeter) | |
This is a constructor for Displacement given pixels with a conversion ratio. More... | |
Displacement (const Distance &distanceToCopy) | |
This creates a displacement equal to a distance. More... | |
~Displacement () | |
Free the memory allocated by this instance of the displacement class. More... | |
double | meters () const |
Get the displacement in meters. More... | |
void | setMeters (double displacementInMeters) |
Set the displacement in meters. More... | |
double | kilometers () const |
Get the displacement in kilometers. More... | |
void | setKilometers (double displacementInKilometers) |
Set the displacement in kilometers. More... | |
double | pixels (double pixelsPerMeter=1.0) const |
Get the displacement in pixels using the given conversion ratio. More... | |
void | setPixels (double distanceInPixels, double pixelsPerMeter=1.0) |
Set the displacement in pixels. More... | |
bool | isValid () const |
Test if this displacement has been initialized or not. More... | |
bool | operator> (const Displacement &otherDisplacement) const |
Get the displacement in meters. More... | |
bool | operator< (const Displacement &otherDisplacement) const |
Compare two displacements with the less than operator. More... | |
bool | operator>= (const Displacement &otherDisplacement) const |
Compare the distances of 2 displacements with the >= operator. More... | |
bool | operator<= (const Displacement &otherDisplacement) const |
Compare the lengths of 2 displacements with the <= operator. More... | |
bool | operator!= (const Displacement &otherDisplacement) const |
Compare the lengths of 2 displacements with the != operator. More... | |
bool | operator== (const Displacement &otherDisplacement) const |
Compare the lengths of 2 displacements with the == operator. More... | |
Displacement | operator+ (const Displacement &displacementToAdd) const |
Add another displacement to this displacement (1km + 5m = 1005m) More... | |
Displacement | operator- (const Displacement &displacementToSub) const |
Subtract another displacement from this displacement (1km - 5m = 995m). More... | |
Displacement | operator- (const Distance &distanceToSub) const |
Subtract a distance from this displacement (1km - 5m = 995m). More... | |
double | operator/ (const Displacement &displacementToDiv) const |
Divide another displacement into this displacement (5m / 1m = 5). More... | |
Displacement | operator/ (const double &valueToDiv) const |
Divide a value from this displacement (5m / 2 = 2.5m). More... | |
Displacement | operator* (const double &valueToMult) const |
Multiply this displacement by a value (5m * 2 = 10m). More... | |
void | operator+= (const Displacement &displacementToAdd) |
Add and assign the given displacement to ourselves. More... | |
void | operator-= (const Displacement &displacementToSub) |
Subtract the given displacement from ourself and assign. More... | |
void | operator-= (const Distance &distanceToSub) |
Subtract the given distance from ourself and assign. More... | |
void | operator/= (const double &valueToDiv) |
Divide this displacement by a value and assign the result to ourself. More... | |
void | operator*= (const double &valueToMult) |
Multiply this displacement by a value and assign the result to ourself. More... | |
Protected Member Functions | |
double | displacement (Units displacementUnit) const |
This is a helper method to access displacements in a universal manner with uniform error checking. More... | |
void | setDisplacement (const double &displacement, Units displacementUnit) |
This is a helper method to set displacements in a universal manner with uniform error checking. More... | |
Friends | |
Displacement | operator* (double mult, Displacement displacement) |
Multiply displacement by a value (5m * 2 = 10m). More... | |
Displacement is a signed length, usually in meters.
This class is designed to encapsulate the concept of a displacement. A displacement has a distance and a sense of direction indicated by a sign (+ or -). It is typically used for vectors or coordinates, but is also available as a general purpose class. This class does accept both positive and negative values.
This is a list of available units to access and store Distances in.
These values can be passed to the constructor to specify which unit the double you are passing in is in.
Enumerator | |
---|---|
Meters | The distance is being specified in meters. |
Kilometers | The distance is being specified in kilometers. |
Pixels | The distance is being specified in pixels. |
Isis::Displacement::Displacement | ( | ) |
This initializes the displacement to an invalid state.
You must set the displacement later on with operator= or one of the Set methods.
References Meters, Isis::Null, and setDisplacement().
Referenced by operator*(), and operator/().
Isis::Displacement::Displacement | ( | double | displacement, |
Units | displacementUnit | ||
) |
This is the general purpose constructor for Displacement.
This will initialize with the given displacement. If Pixels are supplied as the units, then a default pixels/meter = 1.0 will be used.
displacement | The initial displacement; must be in units of displacementUnit |
displacementUnit | The unit of displacement; can be any value in displacement::Units |
References displacement(), Meters, Pixels, and setDisplacement().
Isis::Displacement::Displacement | ( | double | displacementInPixels, |
double | pixelsPerMeter | ||
) |
This is a constructor for Displacement given pixels with a conversion ratio.
This will initialize with the pixels converted to meters.
displacementInPixels | The displacement to initialize with, must be in units of pixels and should not be negative |
pixelsPerMeter | The pixels/meter conversion factor |
References Meters, and setDisplacement().
Isis::Displacement::Displacement | ( | const Distance & | distanceToCopy | ) |
This creates a displacement equal to a distance.
distanceToCopy | This is the distance we are duplicating |
References Meters, Isis::Distance::meters(), and setDisplacement().
|
inline |
Free the memory allocated by this instance of the displacement class.
|
protected |
This is a helper method to access displacements in a universal manner with uniform error checking.
displacementUnit | Unit of the return value. If this is invalid, an exception will be thrown. |
References _FILEINFO_, Kilometers, Meters, Isis::Null, Pixels, and Isis::IException::Programmer.
Referenced by Displacement(), isValid(), kilometers(), meters(), pixels(), and setDisplacement().
bool Isis::Displacement::isValid | ( | ) | const |
Test if this displacement has been initialized or not.
References displacement(), Meters, and Isis::Null.
Referenced by Isis::ControlPoint::HasAprioriCoordinates(), operator*(), operator*=(), operator+=(), operator-=(), operator/(), operator/=(), operator<(), operator>(), and Isis::Area3D::setArea().
double Isis::Displacement::kilometers | ( | ) | const |
Get the displacement in kilometers.
References displacement(), and Kilometers.
Referenced by Isis::DemShape::calculateDefaultNormal(), Isis::EllipsoidShape::calculateLocalNormal(), Isis::Sensor::Coordinate(), Isis::SurfacePoint::DisplacementToDouble(), Isis::PlaneShape::emissionAngle(), Isis::BundleControlPoint::formatBundleLatitudinalOutputDetailString(), Isis::BundleControlPoint::formatBundleRectangularOutputDetailString(), Isis::CameraGroundMap::GetXY(), Isis::RadarGroundMap::GetXY(), Isis::PlaneShape::incidenceAngle(), Isis::DemShape::intersectSurface(), Isis::Camera::LocalPhotometricAngles(), Isis::PlaneShape::localRadius(), Isis::CameraGroundMap::MeanRadiusPartial(), Isis::Sensor::SlantDistance(), and Isis::Sensor::SolarDistance().
double Isis::Displacement::meters | ( | ) | const |
Get the displacement in meters.
References displacement(), and Meters.
Referenced by Isis::ControlPointV0001::ControlPointV0001(), Isis::SurfacePoint::DisplacementToDouble(), operator*(), operator*=(), operator+=(), operator-=(), operator/(), operator/=(), operator<(), operator>(), Isis::Area3D::setArea(), Isis::Projection::SetUpperLeftCorner(), and Isis::ControlNetVersioner::toPvl().
|
inline |
Compare the lengths of 2 displacements with the != operator.
Two uninitialized displacements are equal to each other.
otherDisplacement | This is the displacement we are comparing to, i.e. it is on the right-hand-side of the operator when used |
Displacement Isis::Displacement::operator* | ( | const double & | valueToMult | ) | const |
Multiply this displacement by a value (5m * 2 = 10m).
valueToMult | This is the value to multiply by |
References Displacement(), Isis::IsSpecial(), isValid(), Meters, and meters().
void Isis::Displacement::operator*= | ( | const double & | valueToMult | ) |
Multiply this displacement by a value and assign the result to ourself.
valueToMult | This is the value we are going to multiply by |
References Isis::IsSpecial(), isValid(), Meters, meters(), Isis::Null, and setDisplacement().
Displacement Isis::Displacement::operator+ | ( | const Displacement & | displacementToAdd | ) | const |
Add another displacement to this displacement (1km + 5m = 1005m)
displacementToAdd | This is the displacement we are adding to ourselves |
void Isis::Displacement::operator+= | ( | const Displacement & | displacementToAdd | ) |
Add and assign the given displacement to ourselves.
displacementToAdd | This is the displacement we are to add |
References isValid(), Meters, meters(), Isis::Null, and setDisplacement().
Displacement Isis::Displacement::operator- | ( | const Displacement & | displacementToSub | ) | const |
Subtract another displacement from this displacement (1km - 5m = 995m).
displacementToSub | This is the displacement we are subtracting from ourself |
Displacement Isis::Displacement::operator- | ( | const Distance & | distanceToSub | ) | const |
Subtract a distance from this displacement (1km - 5m = 995m).
distanceToSub | This is the displacement we are subtracting from ourself |
void Isis::Displacement::operator-= | ( | const Displacement & | displacementToSub | ) |
Subtract the given displacement from ourself and assign.
displacementToSub | This is the displacement we are to subtract |
References isValid(), Meters, meters(), Isis::Null, and setDisplacement().
void Isis::Displacement::operator-= | ( | const Distance & | distanceToSub | ) |
Subtract the given distance from ourself and assign.
distanceToSub | This is the distance we are to subtract |
References isValid(), Isis::Distance::isValid(), Meters, meters(), Isis::Distance::meters(), Isis::Null, and setDisplacement().
double Isis::Displacement::operator/ | ( | const Displacement & | displacementToDiv | ) | const |
Divide another displacement into this displacement (5m / 1m = 5).
displacementToDiv | This is the divisor displacement (denominator) |
References isValid(), meters(), and Isis::Null.
Displacement Isis::Displacement::operator/ | ( | const double & | valueToDiv | ) | const |
Divide a value from this displacement (5m / 2 = 2.5m).
valueToDiv | This is the divisor displacement (denominator) |
References Displacement(), Isis::IsSpecial(), isValid(), Meters, and meters().
void Isis::Displacement::operator/= | ( | const double & | valueToDiv | ) |
Divide this displacement by a value and assign the result to ourself.
valueToDiv | This is the value we are going to divide by |
References Isis::IsSpecial(), isValid(), Meters, meters(), Isis::Null, and setDisplacement().
bool Isis::Displacement::operator< | ( | const Displacement & | otherDisplacement | ) | const |
Compare two displacements with the less than operator.
otherdisplacement | This is the displacement we're comparing to, i.e. on the right-hand-side of the operator when used |
References _FILEINFO_, isValid(), meters(), and Isis::IException::Programmer.
|
inline |
Compare the lengths of 2 displacements with the <= operator.
otherDisplacement | This is the displacement we are comparing i.e. it is on the right-hand-side of the operator when used |
|
inline |
Compare the lengths of 2 displacements with the == operator.
Two uninitialized displacements are equal to each other.
otherDisplacement | This is the displacement we are comparing to, i.e. it is on the right-hand-side of the operator when used |
bool Isis::Displacement::operator> | ( | const Displacement & | otherDisplacement | ) | const |
Get the displacement in meters.
Compare two displacements with the greater than operator.
This is equivalent to meters()
operator double() const { return meters(); }
otherdisplacement | This is the displacement we're comparing to, i.e. it is on the right-hand-side of the operator when used |
References _FILEINFO_, isValid(), meters(), and Isis::IException::Programmer.
|
inline |
Compare the distances of 2 displacements with the >= operator.
otherDisplacement | This is the displacement we are comparing to, i.e. it is on the right-hand-side of the operator when used |
double Isis::Displacement::pixels | ( | double | pixelsPerMeter = 1.0 | ) | const |
Get the displacement in pixels using the given conversion ratio.
pixelsPerMeter | Pixels/Meters conversion ratio to use, stored data is always in meters |
References displacement(), and Meters.
Referenced by Isis::RawCubeChunk::RawCubeChunk().
|
protected |
This is a helper method to set displacements in a universal manner with uniform error checking.
displacement | The displacement, in units of displacementUnit, to set this class to. If this is negative an exception will be thrown and the state unmodified. |
displacementUnit | Unit of displacement. If this is invalid, an exception will be thrown and the state left unmodified. |
References _FILEINFO_, displacement(), Isis::IsSpecial(), Kilometers, Meters, Isis::Null, Pixels, and Isis::IException::Programmer.
Referenced by Displacement(), operator*=(), operator+=(), operator-=(), operator/=(), setKilometers(), setMeters(), and setPixels().
void Isis::Displacement::setKilometers | ( | double | displacementInKilometers | ) |
Set the displacement in kilometers.
displacementInKilometers | This is the value to set as the displacement, given in kilometers. |
References Kilometers, and setDisplacement().
void Isis::Displacement::setMeters | ( | double | displacementInMeters | ) |
Set the displacement in meters.
displacementInMeters | This is the value to set this displacement to, given in meters. |
References Meters, and setDisplacement().
void Isis::Displacement::setPixels | ( | double | displacementInPixels, |
double | pixelsPerMeter = 1.0 |
||
) |
Set the displacement in pixels.
displacementInPixels | This is the value to set this displacement to, given in pixels. |
pixelsPerMeter | Pixels/Meters conversion ratio to use, stored data is always in meters |
References Meters, and setDisplacement().
|
friend |
Multiply displacement by a value (5m * 2 = 10m).
mult | This is the value to multiply by |
displacement | This is the distance to multiply into |