Isis Developer Reference
|
Distance measurement, usually in meters. More...
#include <Distance.h>
Public Types | |
enum | Units { Meters , Kilometers , Pixels , SolarRadii } |
This is a list of available units to access and store Distances in. More... | |
Public Member Functions | |
Distance () | |
This initializes the distance to an invalid state. | |
Distance (double distance, Units distanceUnit) | |
This is the general purpose constructor for Distance. | |
Distance (double distanceInPixels, double pixelsPerMeter) | |
This is a constructor for Distance given pixels with a conversion ratio. | |
Distance (const Distance &distanceToCopy) | |
This is the copy constructor for Distance. | |
virtual | ~Distance () |
This will free the memory allocated by this instance of the Distance class. | |
double | meters () const |
Get the distance in meters. | |
void | setMeters (double distanceInMeters) |
Set the distance in meters. | |
double | kilometers () const |
Get the distance in kilometers. | |
void | setKilometers (double distanceInKilometers) |
Set the distance in kilometers. | |
double | pixels (double pixelsPerMeter=1.0) const |
Get the distance in pixels using the given conversion ratio. | |
void | setPixels (double distanceInPixels, double pixelsPerMeter=1.0) |
Set the distance in pixels. | |
double | solarRadii () const |
Get the distance in solar radii (a unit of ~696,265km). | |
void | setSolarRadii (double distanceInSolarRadii) |
Set the distance in solar radii. | |
QString | toString () const |
Get a textual representation of this distance. | |
bool | isValid () const |
Test if this distance has been initialized or not. | |
bool | operator> (const Distance &otherDistance) const |
Compare two distances with the greater than operator. | |
bool | operator< (const Distance &otherDistance) const |
Compare two distances with the less than operator. | |
bool | operator>= (const Distance &otherDistance) const |
Compare two distances with the greater than or equal to operator. | |
bool | operator<= (const Distance &otherDistance) const |
Compare two distances with the less than or equal to operator. | |
bool | operator== (const Distance &otherDistance) const |
Compare two distances with the == operator. | |
bool | operator!= (const Distance &otherDistance) const |
Compare two distances with the != operator. | |
Distance & | operator= (const Distance &distanceToCopy) |
Assign this distance to the value of another distance. | |
Distance | operator+ (const Distance &distanceToAdd) const |
Add another distance to this distance (1km + 1m = 1005m) | |
Displacement | operator- (const Distance &distanceToSub) const |
Subtract another distance from this distance (1km - 1m = 995m). | |
double | operator/ (const Distance &distanceToDiv) const |
Divide another distance into this distance (5m / 1m = 5). | |
Distance | operator/ (const double &valueToDiv) const |
Divide a value from this distance (5m / 2 = 2.5m). | |
Distance | operator* (const double &valueToMult) const |
Multiply this distance by a value (5m * 2 = 10m). | |
void | operator+= (const Distance &distanceToAdd) |
Add and assign the given distance to ourselves. | |
void | operator-= (const Distance &distanceToSub) |
Subtract and assign the given distance from ourself. | |
void | operator/= (const double &valueToDiv) |
Divide this distance by a value and assign the result to ourself. | |
void | operator*= (const double &valueToMult) |
Multiply this distance by a value and assign the result to ourself. | |
Protected Member Functions | |
virtual double | distance (Units distanceUnit) const |
This is a helper method to access distances in a universal manner with uniform error checking. | |
virtual void | setDistance (const double &distance, Units distanceUnit) |
This is a helper method to set distances in a universal manner with uniform error checking. | |
Friends | |
Distance | operator* (double mult, Distance dist) |
Multiply this distance by a value (5m * 2 = 10m). | |
Distance measurement, usually in meters.
This class is designed to encapsulate the concept of a distance. This is typically used for Radius and XYZ values but is also available as a general purpose class. This class does not accept 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. |
SolarRadii | "Solar radius is a unit of distance used to express the size of stars in astronomy equal to the current radius of the Sun. " We're using 6.9599*10^8 meters, because that's the actual unit value, even though the radius has been more accurately calculated to 6.96342*10^8 m. http://en.wikipedia.org/wiki/Solar_radius http://www.astro.wisc.edu/~dolan/constants.html https://www.cfa.harvard.edu/~dfabricant/huchra/ay145/constants.html |
Isis::Distance::Distance | ( | ) |
This initializes the distance to an invalid state.
You must set the distance later on with operator= or one of the Set methods.
References Meters, Isis::Null, and setDistance().
Referenced by operator*(), operator+(), and operator/().
Isis::Distance::Distance | ( | double | distance, |
Units | distanceUnit ) |
This is the general purpose constructor for Distance.
This will initialize with the given distance. If Pixels are supplied as the units, then a default pixels/meter = 1.0 will be used.
distance | The distance to initialize with, must be in units of distanceUnit and not be negative |
distanceUnit | The unit distance is in, can be any value in Distance::Units |
References distance(), Meters, Pixels, and setDistance().
Isis::Distance::Distance | ( | double | distanceInPixels, |
double | pixelsPerMeter ) |
This is a constructor for Distance given pixels with a conversion ratio.
This will initialize with the pixels converted to meters.
distanceInPixels | The distance to initialize with, must be in units of pixels and should not be negative |
pixelsPerMeter | The pixels/meter conversion factor |
References Meters, and setDistance().
Isis::Distance::Distance | ( | const Distance & | distanceToCopy | ) |
This is the copy constructor for Distance.
The distance passed in will be exactly duplicated.
distanceToCopy | This is the distance we are making an exact duplicate of |
References Meters, and setDistance().
|
virtual |
This will free the memory allocated by this instance of the Distance class.
References Isis::Null.
|
protectedvirtual |
This is a helper method to access distances in a universal manner with uniform error checking.
distanceUnit | Unit of the return value. If this is invalid, an exception will be thrown. |
References _FILEINFO_, Kilometers, Meters, Isis::Null, Pixels, Isis::IException::Programmer, and SolarRadii.
Referenced by Distance(), isValid(), kilometers(), meters(), pixels(), setDistance(), and solarRadii().
bool Isis::Distance::isValid | ( | ) | const |
Test if this distance has been initialized or not.
References distance(), Meters, and Isis::Null.
Referenced by operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/(), operator/=(), operator<(), operator>(), Isis::Image::save(), Isis::Shape::save(), Isis::RadarGroundMap::SetGround(), Isis::Camera::SetGround(), Isis::CSMCamera::SetGround(), and toString().
double Isis::Distance::kilometers | ( | ) | const |
Get the distance in kilometers.
References distance(), and Kilometers.
Referenced by Isis::BundleLidarRangeConstraint::applyConstraint(), Isis::BundleTargetBody::applyParameterCorrections(), Isis::BundleControlPoint::formatBundleLatitudinalOutputDetailString(), Isis::BundleTargetBody::formatBundleOutputString(), Isis::BundleControlPoint::formatBundleRectangularOutputDetailString(), Isis::SpacecraftPosition::getDistanceLightTime(), Isis::SurfacePoint::GetLocalRadiusWeight(), Isis::SpacecraftPosition::getRadiusLightTime(), Isis::SurfacePoint::GetXWeight(), Isis::SurfacePoint::GetYWeight(), Isis::SurfacePoint::GetZWeight(), Isis::TriangularPlate::hasPoint(), Isis::VimsGroundMap::Init(), Isis::EquatorialCylindricalShape::intersectSurface(), Isis::SurfacePoint::LatitudinalDerivative(), Isis::CameraGroundMap::MeanRadiusPartial(), Isis::TriangularPlate::point(), Isis::RadarGroundMap::SetFocalPlane(), Isis::BundleTargetBody::setSolveSettings(), Isis::SurfacePoint::SetSphericalMatrix(), Isis::TargetInfoWidget::TargetInfoWidget(), and Isis::LidarData::write().
double Isis::Distance::meters | ( | ) | const |
Get the distance in meters.
References distance(), and Meters.
Referenced by Isis::AdjustedLatitudeSigmaFilter::evaluate(), Isis::AdjustedLongitudeSigmaFilter::evaluate(), Isis::AdjustedRadiusFilter::evaluate(), Isis::AdjustedRadiusSigmaFilter::evaluate(), Isis::APrioriLatitudeSigmaFilter::evaluate(), Isis::APrioriLongitudeSigmaFilter::evaluate(), Isis::APrioriRadiusFilter::evaluate(), Isis::APrioriRadiusSigmaFilter::evaluate(), Isis::QnetCubeDistanceFilter::filter(), Isis::BundleControlPoint::formatAdjustedSigmaString(), Isis::AbstractPointItem::getData(), Isis::SurfacePoint::LatitudeToMeters(), Isis::SurfacePoint::LongitudeToMeters(), Isis::SurfacePoint::MetersToLatitude(), Isis::SurfacePoint::MetersToLongitude(), operator!=(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/(), operator/=(), operator<(), operator==(), operator>(), Isis::BundleSolutionInfo::outputText(), Isis::Image::save(), Isis::Shape::save(), Isis::SurfacePoint::SetSphericalMatrix(), Isis::BundleControlPoint::setWeights(), Isis::ControlNetVersioner::toPvl(), and toString().
|
inline |
Compare two distances with the != operator.
Two uninitialized distances are equal to each other.
otherDistance | This is the distance we're comparing to, i.e. on the right hand side of the operator when used |
References meters().
Distance Isis::Distance::operator* | ( | const double & | valueToMult | ) | const |
Multiply this distance by a value (5m * 2 = 10m).
valueToMult | This is the value to multiply by |
References Distance(), Isis::IsSpecial(), isValid(), Meters, and meters().
void Isis::Distance::operator*= | ( | const double & | valueToMult | ) |
Multiply this distance 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 setDistance().
Add another distance to this distance (1km + 1m = 1005m)
distanceToAdd | This is the distance we are adding to ourselves |
References Distance(), isValid(), Meters, and meters().
void Isis::Distance::operator+= | ( | const Distance & | distanceToAdd | ) |
Add and assign the given distance to ourselves.
distanceToAdd | This is the distance we are to duplicate exactly |
References isValid(), Meters, meters(), Isis::Null, and setDistance().
Displacement Isis::Distance::operator- | ( | const Distance & | distanceToSub | ) | const |
Subtract another distance from this distance (1km - 1m = 995m).
This could throw an exception if the result is negative.
distanceToSub | This is the distance we are subtracting from ourself |
References isValid(), Isis::Displacement::Meters, and meters().
void Isis::Distance::operator-= | ( | const Distance & | distanceToSub | ) |
Subtract and assign the given distance from ourself.
This could throw an exception if the result is negative, in which case the new value is never applied.
distanceToSub | This is the distance we are to subtract |
References isValid(), Meters, meters(), Isis::Null, and setDistance().
double Isis::Distance::operator/ | ( | const Distance & | distanceToDiv | ) | const |
Divide another distance into this distance (5m / 1m = 5).
distanceToDiv | This is the divisor displacement (denominator) |
References isValid(), meters(), and Isis::Null.
Distance Isis::Distance::operator/ | ( | const double & | valueToDiv | ) | const |
Divide a value from this distance (5m / 2 = 2.5m).
valueToDiv | This is the divisor displacement (denominator) |
References Distance(), Isis::IsSpecial(), isValid(), Meters, and meters().
void Isis::Distance::operator/= | ( | const double & | valueToDiv | ) |
Divide this distance by a value and assign the result to ourself.
valueToDiv | This is the displacement we are to divide by |
References Isis::IsSpecial(), isValid(), Meters, meters(), Isis::Null, and setDistance().
bool Isis::Distance::operator< | ( | const Distance & | otherDistance | ) | const |
Compare two distances with the less than operator.
otherDistance | This is the distance 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 two distances with the less than or equal to operator.
otherDistance | This is the distance we're comparing to, i.e. on the right hand side of the operator when used |
Assign this distance to the value of another distance.
distanceToCopy | This is the distance we are to duplicate exactly |
References Meters, and setDistance().
|
inline |
Compare two distances with the == operator.
Two uninitialized distances are equal to each other.
otherDistance | This is the distance we're comparing to, i.e. on the right hand side of the operator when used |
References meters().
bool Isis::Distance::operator> | ( | const Distance & | otherDistance | ) | const |
Compare two distances with the greater than operator.
otherDistance | This is the distance 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 two distances with the greater than or equal to operator.
otherDistance | This is the distance we're comparing to, i.e. on the right hand side of the operator when used |
double Isis::Distance::pixels | ( | double | pixelsPerMeter = 1.0 | ) | const |
Get the distance in pixels using the given conversion ratio.
pixelsPerMeter | Pixels/Meters conversion ratio to use, stored data is always in meters |
References distance(), and Meters.
|
protectedvirtual |
This is a helper method to set distances in a universal manner with uniform error checking.
distance | The distance, in units of distanceUnit, to set this class to. If this is negative an exception will be thrown and the state unmodified. |
distanceUnit | Unit of distance. If this is invalid, an exception will be thrown and the state left unmodified. |
References _FILEINFO_, distance(), Isis::IsSpecial(), Kilometers, Meters, Isis::Null, Pixels, Isis::IException::Programmer, and SolarRadii.
Referenced by Distance(), Distance(), Distance(), Distance(), operator*=(), operator+=(), operator-=(), operator/=(), operator=(), setKilometers(), setMeters(), setPixels(), and setSolarRadii().
void Isis::Distance::setKilometers | ( | double | distanceInKilometers | ) |
Set the distance in kilometers.
distanceInKilometers | This is the value to set this distance to, given in kilometers. This will throw an exception if the value is negative. |
References Kilometers, and setDistance().
void Isis::Distance::setMeters | ( | double | distanceInMeters | ) |
Set the distance in meters.
distanceInMeters | This is the value to set this distance to, given in meters. This will throw an exception if the value is negative. |
References Meters, and setDistance().
Referenced by Isis::BundleResults::initialize().
void Isis::Distance::setPixels | ( | double | distanceInPixels, |
double | pixelsPerMeter = 1.0 ) |
Set the distance in pixels.
distanceInPixels | This is the value to set this distance to, given in pixels. This will throw an exception if the distance is negative after the conversion to meters. |
pixelsPerMeter | Pixels/Meters conversion ratio to use, stored data is always in meters |
References Meters, and setDistance().
void Isis::Distance::setSolarRadii | ( | double | distanceInSolarRadii | ) |
Set the distance in solar radii.
distanceInSolarRadii | This is the value to set this distance to, given in solar radii. This will throw an exception if the value is negative. |
References setDistance(), and SolarRadii.
double Isis::Distance::solarRadii | ( | ) | const |
Get the distance in solar radii (a unit of ~696,265km).
References distance(), and SolarRadii.
QString Isis::Distance::toString | ( | ) | const |
Get a textual representation of this distance.
References isValid(), meters(), and Isis::toString().
Multiply this distance by a value (5m * 2 = 10m).
mult | This is the value to multiply by |
dist | This is the distance to multiply into |