![]() |
Isis 3 Programmer 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. | |
Private Attributes | |
| double | m_distanceInMeters |
| This is the distance value that this class is encapsulating, always stored in meters. | |
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.
2011-04-18 Steven Lambright Improved special pixel math handling
2012-02-16 Steven Lambright - Brought up to method and member naming standards.
2012-03-22 Steven Lambright - Added toString().
2012-03-22 Steven Lambright - Added solarRadii(), setSolarRadii(), and the unit SolarRadii. References #1232.
Definition at line 34 of file Distance.h.
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 |
Definition at line 41 of file Distance.h.
| 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.
Definition at line 21 of file Distance.cpp.
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 |
Definition at line 36 of file Distance.cpp.
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 |
Definition at line 52 of file Distance.cpp.
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 |
Definition at line 64 of file Distance.cpp.
References Meters, and setDistance().
|
virtual |
This will free the memory allocated by this instance of the Distance class.
Definition at line 73 of file Distance.cpp.
References m_distanceInMeters, and 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. |
Definition at line 405 of file Distance.cpp.
References Kilometers, m_distanceInMeters, 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.
Definition at line 192 of file Distance.cpp.
References distance(), Meters, and Isis::Null.
Referenced by Isis::StereoTool::calculateElevation(), 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(), Isis::SurfacePoint::SetRectangularPoint(), toString(), Isis::SunShadowTool::updateRow(), and Isis::SunShadowTool::updateShadowHeightEdit().
| double Isis::Distance::kilometers | ( | ) | const |
Get the distance in kilometers.
Definition at line 106 of file Distance.cpp.
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(), Isis::SunShadowTool::updateRow(), Isis::SunShadowTool::updateShadowHeightEdit(), and Isis::LidarData::write().
| double Isis::Distance::meters | ( | ) | const |
Get the distance in meters.
Definition at line 85 of file Distance.cpp.
References distance(), and Meters.
Referenced by Isis::StereoTool::calculateElevation(), Isis::QnetCubeDistanceFilter::filter(), Isis::BundleControlPoint::formatAdjustedSigmaString(), Isis::CameraPointInfo::GetPointInfo(), Isis::SpatialPlotTool::getSpatialStatistics(), Isis::SurfacePoint::LatitudeToMeters(), Isis::SurfacePoint::LongitudeToMeters(), Isis::StereoTool::measureSaved(), Isis::SurfacePoint::MetersToLatitude(), Isis::SurfacePoint::MetersToLongitude(), operator!=(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator/(), operator/(), operator/=(), operator<(), operator==(), operator>(), Isis::BundleSolutionInfo::outputText(), Isis::SunShadowTool::recalculateShadowHeight(), Isis::Camera::ringRangeResolution(), Isis::Image::save(), Isis::Shape::save(), Isis::SurfacePoint::SetSphericalMatrix(), Isis::BundleControlPoint::setWeights(), Isis::ControlNetVersioner::toPvl(), toString(), Isis::MeasureTool::updateDist(), Isis::SunShadowTool::updateRow(), Isis::SunShadowTool::updateShadowHeightEdit(), Isis::QnetTool::updateSurfacePointInfo(), and Isis::ControlNetVersioner::writeFirstPoint().
|
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 |
Definition at line 133 of file Distance.h.
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 |
Definition at line 313 of file Distance.cpp.
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 |
Definition at line 387 of file Distance.cpp.
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 |
Definition at line 254 of file Distance.cpp.
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 |
Definition at line 340 of file Distance.cpp.
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 |
Definition at line 268 of file Distance.cpp.
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 |
Definition at line 357 of file Distance.cpp.
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) |
Definition at line 284 of file Distance.cpp.
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) |
Definition at line 298 of file Distance.cpp.
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 |
Definition at line 372 of file Distance.cpp.
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 |
Definition at line 222 of file Distance.cpp.
References 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 |
Definition at line 107 of file Distance.h.
Assign this distance to the value of another distance.
| distanceToCopy | This is the distance we are to duplicate exactly |
Definition at line 239 of file Distance.cpp.
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 |
Definition at line 120 of file Distance.h.
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 |
Definition at line 204 of file Distance.cpp.
References 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 |
Definition at line 94 of file Distance.h.
| 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 |
Definition at line 131 of file Distance.cpp.
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. |
Definition at line 452 of file Distance.cpp.
References distance(), Isis::IsSpecial(), Kilometers, m_distanceInMeters, 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. |
Definition at line 118 of file Distance.cpp.
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. |
Definition at line 96 of file Distance.cpp.
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 |
Definition at line 145 of file Distance.cpp.
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. |
Definition at line 167 of file Distance.cpp.
References setDistance(), and SolarRadii.
| double Isis::Distance::solarRadii | ( | ) | const |
Get the distance in solar radii (a unit of ~696,265km).
Definition at line 155 of file Distance.cpp.
References distance(), and SolarRadii.
| QString Isis::Distance::toString | ( | ) | const |
Get a textual representation of this distance.
Definition at line 177 of file Distance.cpp.
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 |
Definition at line 329 of file Distance.cpp.
|
private |
This is the distance value that this class is encapsulating, always stored in meters.
Definition at line 159 of file Distance.h.
Referenced by distance(), setDistance(), and ~Distance().