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 Distance(), operator!=(), operator*(), operator*, operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/(), operator<(), operator<=(), operator=(), 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 Distance(), Meters, 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 Isis::FeatureNomenclature::featureDiameterGreaterThan(), operator*(), operator*=(), operator+(), operator+=(), operator-(), Isis::Displacement::operator-=(), operator-=(), operator/(), operator/(), operator/=(), operator<(), operator>(), Isis::SurfacePoint::ResetLocalRadius(), Isis::ControlPoint::SetAprioriSurfacePoint(), Isis::Camera::SetGround(), Isis::CameraGroundMap::SetGround(), Isis::CSMCamera::SetGround(), Isis::LineScanCameraGroundMap::SetGround(), Isis::RadarGroundMap::SetGround(), Isis::SurfacePoint::SetRectangular(), Isis::SurfacePoint::SetRectangularSigmas(), Isis::SurfacePoint::SetSpherical(), Isis::SurfacePoint::SetSphericalSigmas(), and toString().
| double Isis::Distance::kilometers | ( | ) | const |
Get the distance in kilometers.
References distance(), and Kilometers.
Referenced by Isis::BundleLidarRangeConstraint::applyConstraint(), Isis::SurfacePoint::DistanceToDouble(), Isis::BundleControlPoint::formatBundleLatitudinalOutputDetailString(), Isis::SpacecraftPosition::getDistanceLightTime(), Isis::Camera::GetLocalNormal(), Isis::SurfacePoint::GetLocalRadiusWeight(), Isis::SurfacePoint::GetXWeight(), Isis::SurfacePoint::GetYWeight(), Isis::SurfacePoint::GetZWeight(), Isis::TriangularPlate::hasPoint(), Isis::VimsGroundMap::Init(), Isis::DemShape::intersectSurface(), Isis::SurfacePoint::LatitudinalDerivative(), Isis::BundleTargetBody::localRadius(), Isis::CameraGroundMap::MeanRadiusPartial(), Isis::BundleSolutionInfo::outputPointsCSV(), Isis::TriangularPlate::point(), Isis::CameraGroundMap::PointPartial(), Isis::SurfacePoint::ResetLocalRadius(), Isis::RadarGroundMap::SetFocalPlane(), Isis::VimsGroundMap::SetGround(), Isis::BundleTargetBody::setSolveSettings(), Isis::SurfacePoint::SetSphericalMatrix(), Isis::Sensor::SpacecraftAltitude(), and Isis::LidarData::write().
| double Isis::Distance::meters | ( | ) | const |
Get the distance in meters.
References distance(), and Meters.
Referenced by Isis::CameraStatistics::addStats(), Isis::ControlNetFilter::CubeDistanceFilter(), Isis::Displacement::Displacement(), Distance(), Isis::SurfacePoint::DistanceToDouble(), Isis::AdjustedLatitudeSigmaFilter::evaluate(), Isis::AdjustedLongitudeSigmaFilter::evaluate(), Isis::AdjustedRadiusFilter::evaluate(), Isis::AdjustedRadiusSigmaFilter::evaluate(), Isis::AdjustedXSigmaFilter::evaluate(), Isis::AdjustedYSigmaFilter::evaluate(), Isis::AdjustedZSigmaFilter::evaluate(), Isis::APrioriLatitudeSigmaFilter::evaluate(), Isis::APrioriLongitudeSigmaFilter::evaluate(), Isis::APrioriRadiusFilter::evaluate(), Isis::APrioriRadiusSigmaFilter::evaluate(), Isis::APrioriXSigmaFilter::evaluate(), Isis::APrioriYSigmaFilter::evaluate(), Isis::APrioriZSigmaFilter::evaluate(), Isis::QnetCubeDistanceFilter::filter(), Isis::QnetPointDistanceFilter::filter(), Isis::BundleControlPoint::formatAdjustedSigmaString(), Isis::GroundGrid::GroundGrid(), Isis::SurfacePoint::LatitudeToMeters(), Isis::SurfacePoint::LongitudeToMeters(), Isis::SurfacePoint::MetersToLatitude(), Isis::SurfacePoint::MetersToLongitude(), operator!=(), operator*(), operator*=(), operator+(), operator+=(), operator-(), Isis::Displacement::operator-=(), operator-=(), operator/(), operator/(), operator/=(), operator<(), operator=(), operator==(), operator>(), Isis::ControlNetFilter::PointDistanceFilter(), Isis::ControlNetFilter::PointLatLonFilter(), Isis::ProjectionFactory::RingsCreateForCube(), Isis::SurfacePoint::SetRectangularSigmas(), Isis::SurfacePoint::SetSphericalMatrix(), Isis::SurfacePoint::SetSphericalSigmas(), Isis::SurfacePoint::SetSphericalSigmasDistance(), 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 Distance(), and 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 Distance(), 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 Distance(), 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 Distance(), 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 Distance(), 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_, Distance(), 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 |
References Distance().
Assign this distance to the value of another distance.
| distanceToCopy | This is the distance we are to duplicate exactly |
References Distance(), Meters, 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 Distance(), and 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_, Distance(), 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 |
References Distance().
| 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.
Referenced by Isis::RawCubeChunk::RawCubeChunk().
|
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::readSigma().
| 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 |
References Distance().