USGS

Isis 3.0 Developer's Reference (API)

Home

Isis::Distance Class Reference
[Utility]

Distance measurement, usually in meters. More...

#include <Distance.h>

List of all members.

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.
Distanceoperator= (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)

Detailed Description

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.

Author:
2010-10-12 Steven Lambright

Member Enumeration Documentation

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


Constructor & Destructor Documentation

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.

Parameters:
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 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.

Parameters:
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.

Parameters:
distanceToCopy This is the distance we are making an exact duplicate of

References Meters, meters(), and setDistance().

Isis::Distance::~Distance (  )  [virtual]

This will free the memory allocated by this instance of the Distance class.

References Isis::Null.


Member Function Documentation

double Isis::Distance::distance ( Units  distanceUnit  )  const [protected, virtual]

This is a helper method to access distances in a universal manner with uniform error checking.

Parameters:
distanceUnit Unit of the return value. If this is invalid, an exception will be thrown.
Returns:
The distance in units of distanceUnit

References _FILEINFO_, Kilometers, Meters, Isis::Null, Pixels, Isis::IException::Programmer, and SolarRadii.

Referenced by isValid(), kilometers(), meters(), pixels(), and solarRadii().

bool Isis::Distance::isValid (  )  const
double Isis::Distance::kilometers (  )  const
double Isis::Distance::meters (  )  const
bool Isis::Distance::operator!= ( const Distance otherDistance  )  const [inline]

Compare two distances with the != operator.

Two uninitialized distances are equal to each other.

Parameters:
otherDistance This is the distance we're comparing to, i.e. on the right hand side of the operator when used
Returns:
True if this distance is not equal to the given distance

References meters().

Distance Isis::Distance::operator* ( const double &  valueToMult  )  const

Multiply this distance by a value (5m * 2 = 10m).

Parameters:
valueToMult This is the value to multiply by
Returns:
Resulting value

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.

Parameters:
valueToMult This is the value we are going to multiply by

References Isis::IsSpecial(), isValid(), meters(), Meters, Isis::Null, and setDistance().

Distance Isis::Distance::operator+ ( const Distance distanceToAdd  )  const

Add another distance to this distance (1km + 1m = 1005m).

Parameters:
distanceToAdd This is the distance we are adding to ourselves
Returns:
Resulting distance, self not modified

References Distance(), isValid(), Meters, and meters().

void Isis::Distance::operator+= ( const Distance distanceToAdd  ) 

Add and assign the given distance to ourselves.

Parameters:
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.

Parameters:
distanceToSub This is the distance we are subtracting from ourself
Returns:
Resulting distance, self not modified

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.

Parameters:
distanceToSub This is the distance we are to subtract

References isValid(), meters(), Meters, Isis::Null, and setDistance().

Distance Isis::Distance::operator/ ( const double &  valueToDiv  )  const

Divide a value from this distance (5m / 2 = 2.5m).

Parameters:
valueToDiv This is the divisor displacement (denominator)
Returns:
Resulting value

References Distance(), Isis::IsSpecial(), isValid(), Meters, and meters().

double Isis::Distance::operator/ ( const Distance distanceToDiv  )  const

Divide another distance into this distance (5m / 1m = 5).

Parameters:
distanceToDiv This is the divisor displacement (denominator)
Returns:
Resulting value

References isValid(), meters(), and Isis::Null.

void Isis::Distance::operator/= ( const double &  valueToDiv  ) 

Divide this distance by a value and assign the result to ourself.

Parameters:
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.

Parameters:
otherDistance This is the distance we're comparing to, i.e. on the right hand side of the operator when used
Returns:
True if this distance is less than the given distance

References _FILEINFO_, isValid(), meters(), and Isis::IException::Programmer.

bool Isis::Distance::operator<= ( const Distance otherDistance  )  const [inline]

Compare two distances with the less than or equal to operator.

Parameters:
otherDistance This is the distance we're comparing to, i.e. on the right hand side of the operator when used
Returns:
True if this distance is less than or equal to the given distance
Distance & Isis::Distance::operator= ( const Distance distanceToCopy  ) 

Assign this distance to the value of another distance.

Parameters:
distanceToCopy This is the distance we are to duplicate exactly
Returns:
Resulting distance, a reference to this distance after assignment

References Meters, meters(), and setDistance().

bool Isis::Distance::operator== ( const Distance otherDistance  )  const [inline]

Compare two distances with the == operator.

Two uninitialized distances are equal to each other.

Parameters:
otherDistance This is the distance we're comparing to, i.e. on the right hand side of the operator when used
Returns:
True if this distance is equal to the given distance

References meters().

bool Isis::Distance::operator> ( const Distance otherDistance  )  const

Compare two distances with the greater than operator.

Parameters:
otherDistance This is the distance we're comparing to, i.e. on the right hand side of the operator when used
Returns:
True if this distance is greater than the given distance

References _FILEINFO_, isValid(), meters(), and Isis::IException::Programmer.

bool Isis::Distance::operator>= ( const Distance otherDistance  )  const [inline]

Compare two distances with the greater than or equal to operator.

Parameters:
otherDistance This is the distance we're comparing to, i.e. on the right hand side of the operator when used
Returns:
True if this distance is greater than or equal to the given distance
double Isis::Distance::pixels ( double  pixelsPerMeter = 1.0  )  const

Get the distance in pixels using the given conversion ratio.

Parameters:
pixelsPerMeter Pixels/Meters conversion ratio to use, stored data is always in meters
Returns:
Current distance, in pixels, guaranteed to be >= 0.0 if pixelsPerMeter is positive

References distance(), and Meters.

Referenced by Isis::RawCubeChunk::RawCubeChunk().

void Isis::Distance::setDistance ( const double &  distance,
Units  distanceUnit 
) [protected, virtual]

This is a helper method to set distances in a universal manner with uniform error checking.

Parameters:
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_, Isis::IsSpecial(), Kilometers, Meters, Isis::Null, Pixels, Isis::IException::Programmer, and SolarRadii.

Referenced by Distance(), operator*=(), operator+=(), operator-=(), operator/=(), operator=(), setKilometers(), setMeters(), setPixels(), and setSolarRadii().

void Isis::Distance::setKilometers ( double  distanceInKilometers  ) 

Set the distance in kilometers.

Parameters:
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.

Parameters:
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().

void Isis::Distance::setPixels ( double  distanceInPixels,
double  pixelsPerMeter = 1.0 
)

Set the distance in pixels.

Parameters:
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.

Parameters:
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).

Returns:
Current distance, in solar radii, guaranteed to be >= 0.0

References distance(), and SolarRadii.

QString Isis::Distance::toString (  )  const

Get a textual representation of this distance.

Returns:
XXX meters (or empty string if not valid).

References isValid(), and meters().

Referenced by Isis::FeatureNomenclature::Feature::diameterString().


Friends And Related Function Documentation

Distance operator* ( double  mult,
Distance  dist 
) [friend]

The documentation for this class was generated from the following files: