Isis 3.0 Object Programmers' Reference Home

# Isis::Angle Class Reference

Defines an angle and provides unit conversions. More...

`#include <Angle.h>`

Inheritance diagram for Isis::Angle:
[legend]
Collaboration diagram for Isis::Angle:
[legend]

List of all members.

## Public Types

enum  Units { Degrees, Radians }

The set of usable angle measurement units.

More...

## Public Member Functions

Angle ()
Constructs a blank angle object which needs a value to be set in order to do any calculations.
Angle (double angle, Units unit)
Constructs an angle object with the entered value and unit.
Angle (const Angle &angle)
Constructs an angle object from another Angle object.
virtual ~Angle ()
Destroys the angle object.
bool isValid () const
This indicates whether we have a legitimate angle stored or are in an unset, or invalid, state.
Angleoperator= (const Angle &angle2)
Assign angle object equal to another.
Angle operator+ (const Angle &angle2) const
Angle operator- (const Angle &angle2) const
Subtract angle value from another and return the resulting angle.
Angle operator* (double value) const
Multiply this angle by a double and return the resulting angle.
Angle operator/ (double value) const
Divide this angle by a double.
double operator/ (Angle value) const
Divide this angle by another angle and return the ratio.
bool operator< (const Angle &angle2) const
Test if the other angle is less than the current angle.
bool operator> (const Angle &angle2) const
Test if the other angle is greater than the current angle.
void operator+= (const Angle &angle2)
Add angle value to another as double and replace original.
void operator-= (const Angle &angle2)
Subtract angle value from another and set this instance to the resulting angle.
Angle operator* (int value) const
Multiply this angle by an integer and return the resulting angle.
void operator*= (double value)
Multiply this angle by a double and set this instance to the resulting angle.
Angle operator/ (int value) const
Divide this angle by an integer and return the resulting angle.
void operator/= (double value)
Divide this angle by a double and return the resulting angle.
bool operator== (const Angle &angle2) const
Test if another angle is equal to this angle.
bool operator!= (const Angle &angle2) const
Test if another angle is not equal to this angle.
bool operator<= (const Angle &angle2) const
Test if the other angle is less than or equal to the current angle.
bool operator>= (const Angle &angle2) const
Test if the other angle is greater than or equal to the current angle.
Convert an angle to a double.
double degrees () const
Get the angle in units of Degrees.
Set the angle in units of Radians.
void setDegrees (double degrees)
Set the angle in units of Degrees.
virtual QString toString (bool includeUnits=true) const
Get the angle in human-readable form.

## Static Public Member Functions

static Angle fullRotation ()
Makes an angle to represent a full rotation (0-360 or 0-2pi).

## Protected Member Functions

double unitWrapValue (const Units &unit) const
Return wrap value in desired units.
virtual double angle (const Units &unit) const
Return angle value in desired units.
virtual void setAngle (const double &angle, const Units &unit)
Set angle value in desired units.

## Private Attributes

The angle measure, always stored in radians.

## Friends

Angle operator* (double mult, Angle angle)

## Detailed Description

Defines an angle and provides unit conversions.

For internal use only.

History:
History:
2012-02-16 Steven Lambright - Brought up to method and member naming standards.
History:
2012-03-22 Steven Lambright - Renamed text() to toString().
History:
2012-06-29 Steven Lambright and Kimberly Oyama - Removed duplicate code from the contstructor. Added the fullRotation() method which creates an angle of 360 degrees and modified the unit test to exercise this. References #958.
History:
2012-07-26 Steven Lambright and Kimberly Oyama - Modified the < and > operators to make sure they do not return true if the two operands are the same. Updated the unitTest to exercise this change. References #604.
History:
2013-02-01 Steven Lambright - Added QDebug() printout capabilities. References #1060.

Definition at line 53 of file Angle.h.

## Member Enumeration Documentation

 enum Isis::Angle::Units

The set of usable angle measurement units.

Enumerator:
 Degrees Degrees are generally considered more human readable, 0-360 is one circle, however most math does not use this unit. Use these for displaying to the user and accepting input from the user. Radians Radians are generally used in mathematical equations, 0-2*PI is one circle, however these are more difficult for users to understand when displayed since they have PI in them. This is the default unit and is necessary for most math library calls.

Definition at line 57 of file Angle.h.

## Constructor & Destructor Documentation

 Isis::Angle::Angle ( )

Constructs a blank angle object which needs a value to be set in order to do any calculations.

Definition at line 38 of file Angle.cpp.

 Isis::Angle::Angle ( double angle, Units unit )

Constructs an angle object with the entered value and unit.

Parameters:
 angle The initial angle value in units of the unit parameter unit The unit of the initial angle (see Angle::Units)

Definition at line 48 of file Angle.cpp.

References setAngle().

 Isis::Angle::Angle ( const Angle & fromAngle )

Constructs an angle object from another Angle object.

Parameters:
 fromAngle The angle object to copy on initialization

Definition at line 58 of file Angle.cpp.

 Isis::Angle::~Angle ( ) ` [virtual]`

Destroys the angle object.

Definition at line 67 of file Angle.cpp.

## Member Function Documentation

 double Isis::Angle::angle ( const Units & unit ) const` [protected, virtual]`

Return angle value in desired units.

Parameters:
 unit Desired units of the angle (see Angle::Units)
Returns:
angle value in specified units

Definition at line 270 of file Angle.cpp.

 double Isis::Angle::degrees ( ) const` [inline]`
 Angle Isis::Angle::fullRotation ( ) ` [static]`

Makes an angle to represent a full rotation (0-360 or 0-2pi).

Returns:
the angle of 1 full rotation

Definition at line 89 of file Angle.cpp.

References Angle(), and Degrees.

 bool Isis::Angle::isValid ( ) const

This indicates whether we have a legitimate angle stored or are in an unset, or invalid, state.

Returns:
True if we have a legitimate angle value, false if not initialized

Definition at line 79 of file Angle.cpp.

 bool Isis::Angle::operator!= ( const Angle & angle2 ) const` [inline]`

Test if another angle is not equal to this angle.

Takes the negated result of the '==' operator.

Parameters:
 angle2 The comparison angle (on right-hand-side of != operator)
Returns:
true if the angle does not equal the comparision angle

Definition at line 193 of file Angle.h.

 Angle Isis::Angle::operator* ( int value ) const` [inline]`

Multiply this angle by an integer and return the resulting angle.

Parameters:
 value The integer value to multiply with this angle
Returns:
Product of the angles

Definition at line 133 of file Angle.h.

 Angle Isis::Angle::operator* ( double value ) const

Multiply this angle by a double and return the resulting angle.

If this is an invalid angle, then the result will be an invalid angle.

Parameters:
 value The value to multiply to this angle
Returns:
Multiplied angle

Definition at line 137 of file Angle.cpp.

 void Isis::Angle::operator*= ( double value ) ` [inline]`

Multiply this angle by a double and set this instance to the resulting angle.

Parameters:
 value The double value to multiply with this angle

Definition at line 144 of file Angle.h.

 Angle Isis::Angle::operator+ ( const Angle & angle2 ) const

If either of these are invalid angles, then the result will be an invalid angle.

Parameters:
 angle2 The angle to add to this angle
Returns:
sum angle

Definition at line 101 of file Angle.cpp.

 void Isis::Angle::operator+= ( const Angle & angle2 ) ` [inline]`

Add angle value to another as double and replace original.

Parameters:
 angle2 The angle to add to this angle
Returns:
sum angle, replaces original

Definition at line 111 of file Angle.h.

 Angle Isis::Angle::operator- ( const Angle & angle2 ) const

Subtract angle value from another and return the resulting angle.

If either of these are invalid angles, then the result will be an invalid angle.

Parameters:
 angle2 The angle to subtract from this angle
Returns:
difference angle

Definition at line 119 of file Angle.cpp.

 void Isis::Angle::operator-= ( const Angle & angle2 ) ` [inline]`

Subtract angle value from another and set this instance to the resulting angle.

Parameters:
 angle2 The angle to subtract from this angle

Definition at line 122 of file Angle.h.

 Angle Isis::Angle::operator/ ( int value ) const` [inline]`

Divide this angle by an integer and return the resulting angle.

Parameters:
 value The double value to use as the divisor
Returns:
Quotient of the angles

Definition at line 155 of file Angle.h.

 double Isis::Angle::operator/ ( Angle value ) const

Divide this angle by another angle and return the ratio.

Parameters:
 value The ratio, Null if invalid
Returns:
Quotient of the angles

Definition at line 177 of file Angle.cpp.

 Angle Isis::Angle::operator/ ( double value ) const

Divide this angle by a double.

Parameters:
 value The double value to use as the divisor
Returns:
Quotient of the angles

Definition at line 164 of file Angle.cpp.

 void Isis::Angle::operator/= ( double value ) ` [inline]`

Divide this angle by a double and return the resulting angle.

Parameters:
 value The double value to use as the divisor

Definition at line 165 of file Angle.h.

 bool Isis::Angle::operator< ( const Angle & angle2 ) const

Test if the other angle is less than the current angle.

If either is invalid, then an exception will be thrown.

Parameters:
 angle2 The comparison angle (on right-hand-side of < operator)
Returns:
True if the angle is less than the comparision angle

Definition at line 191 of file Angle.cpp.

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

 bool Isis::Angle::operator<= ( const Angle & angle2 ) const` [inline]`

Test if the other angle is less than or equal to the current angle.

Parameters:
 angle2 The comparison angle (on right-hand-side of < operator)
Returns:
true if the angle is less than or equal to the comparision angle

Definition at line 204 of file Angle.h.

 Angle& Isis::Angle::operator= ( const Angle & angle2 ) ` [inline]`

Assign angle object equal to another.

Parameters:
 angle2 The angle value to copy
Returns:
The new angle value

Reimplemented in Isis::Latitude, and Isis::Longitude.

Definition at line 90 of file Angle.h.

 bool Isis::Angle::operator== ( const Angle & angle2 ) const` [inline]`

Test if another angle is equal to this angle.

This does not compensate for going around a circle: Angle(360, Angle::Degrees) does not equal Angle(0, Angle::Degrees)

Invalid angles are equal to each other.

Parameters:
 angle2 The comparison angle (on right-hand-side of == operator)
Returns:
true if the angle equals the comparision angle

Definition at line 181 of file Angle.h.

 bool Isis::Angle::operator> ( const Angle & angle2 ) const

Test if the other angle is greater than the current angle.

If either is invalid, then an exception will be thrown.

Parameters:
 angle2 The comparison angle (on right-hand-side of > operator)
Returns:
True if the angle is greater than the comparision angle

Definition at line 208 of file Angle.cpp.

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

 bool Isis::Angle::operator>= ( const Angle & angle2 ) const` [inline]`

Test if the other angle is greater than or equal to the current angle.

Parameters:
 angle2 The comparison angle (on right-hand-side of < operator)
Returns:
true if the angle is greater than or equal to the comparision angle

Definition at line 216 of file Angle.h.

 double Isis::Angle::radians ( ) const` [inline]`

Convert an angle to a double.

This will return the radians version of the angle.

Returns:

operator double() const { return angle(Radians); } Get the angle in units of Radians.

Returns:
A double-value representing this angle. Null if not valid.

Definition at line 233 of file Angle.h.

 void Isis::Angle::setAngle ( const double & angle, const Units & unit ) ` [protected, virtual]`

Set angle value in desired units.

Parameters:
 angle The angle value in units of the unit parameter unit Desired units of the angle (see Angle::Units)

Definition at line 304 of file Angle.cpp.

 void Isis::Angle::setDegrees ( double degrees ) ` [inline]`

Set the angle in units of Degrees.

Parameters:
 degrees The new angle value, Null for invalid angle

Definition at line 253 of file Angle.h.

References Degrees, and setAngle().

 void Isis::Angle::setRadians ( double radians ) ` [inline]`

Set the angle in units of Radians.

Parameters:
 radians The new angle value, Null for invalid angle

Definition at line 246 of file Angle.h.

 QString Isis::Angle::toString ( bool includeUnits = `true` ) const` [virtual]`

Get the angle in human-readable form.

Parameters:
 includeUnits Include the angle's units in the text.
Returns:
A user-displayable angle string.

Definition at line 224 of file Angle.cpp.

References degrees(), and isValid().

 double Isis::Angle::unitWrapValue ( const Units & unit ) const` [protected]`

Return wrap value in desired units.

The 'wrap' value is the value where one circle occurs - angles greater than this are conceptually 'wrapping' back to zero. For example, this is 2*PI in radians because 2*PI == 0 on a circle. Please keep in mind we still differentiate those two angles.

Parameters:
 unit Desired units of the Angle wrap constant (see Angle::Units)
Returns:
Wrap value in specified units

Definition at line 247 of file Angle.cpp.

References _FILEINFO_, Degrees, Isis::PI(), Isis::IException::Programmer, and Radians.

Referenced by Isis::Longitude::positiveWest(), and Isis::Longitude::setPositiveWest().

## Member Data Documentation

 double Isis::Angle::m_radians` [private]`

The angle measure, always stored in radians.

If degrees are requested then a conversion is done on the fly.

Definition at line 267 of file Angle.h.

Referenced by angle(), Angle(), isValid(), setAngle(), and ~Angle().

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