Isis 3 Programmer Reference
|
This class is designed to encapsulate the concept of a Longitude. More...
#include <Longitude.h>
Public Types | |
enum | Direction { PositiveEast, PositiveWest } |
Possible longitude directions: Is a positive longitude towards east or towards west? More... | |
enum | Domain { Domain360, Domain180 } |
Use LongitudeDomain360 if 0-360 is the primary range of the longitude values with 180 being the 'center'. More... | |
enum | Units { Degrees, Radians } |
The set of usable angle measurement units. More... | |
Public Member Functions | |
Longitude () | |
Create a blank Longitude object with 0-360 domain. More... | |
Longitude (double longitude, Angle::Units longitudeUnits, Direction lonDir=PositiveEast, Domain lonDomain=Domain360) | |
Create and initialize a Longitude value. More... | |
Longitude (Angle longitude, Direction lonDir=PositiveEast, Domain lonDomain=Domain360) | |
Create and initialize a Longitude value. More... | |
Longitude (double longitude, PvlGroup mapping, Angle::Units longitudeUnits) | |
Create and initialize a Longitude value. More... | |
Longitude (const Longitude &longitudeToCopy) | |
This copies the given longitude exactly. More... | |
~Longitude () | |
This cleans up the Longitude class. More... | |
double | positiveEast (Angle::Units units=Angle::Radians) const |
Get the longitude in the PositiveEast coordinate system. More... | |
void | setPositiveEast (double longitude, Angle::Units units=Angle::Radians) |
Set the longitude given a value in the PositiveEast longitude system. More... | |
double | positiveWest (Angle::Units units=Angle::Radians) const |
Get the longitude in the PositiveWest coordinate system. More... | |
void | setPositiveWest (double longitude, Angle::Units units=Angle::Radians) |
Set the longitude given a value in the PositiveWest longitude system. More... | |
Longitude | force180Domain () const |
This returns a longitude that is constricted to -180 to 180 degrees. More... | |
Longitude | force360Domain () const |
This returns a longitude that is constricted to 0-360 degrees. More... | |
bool | inRange (Longitude min, Longitude max) const |
Checks if this longitude value is within the given range. More... | |
Longitude & | operator= (const Longitude &longitudeToCopy) |
Same as positiveEast. More... | |
bool | isValid () const |
This indicates whether we have a legitimate angle stored or are in an unset, or invalid, state. More... | |
Angle | operator+ (const Angle &angle2) const |
Add angle value to another. More... | |
Angle | operator- (const Angle &angle2) const |
Subtract angle value from another and return the resulting angle. More... | |
Angle | operator* (double value) const |
Multiply this angle by a double and return the resulting angle. More... | |
Angle | operator* (int value) const |
Multiply this angle by an integer and return the resulting angle. More... | |
Angle | operator/ (double value) const |
Divide this angle by a double. More... | |
double | operator/ (Angle value) const |
Divide this angle by another angle and return the ratio. More... | |
Angle | operator/ (int value) const |
Divide this angle by an integer and return the resulting angle. More... | |
bool | operator< (const Angle &angle2) const |
Test if the other angle is less than the current angle. More... | |
bool | operator> (const Angle &angle2) const |
Test if the other angle is greater than the current angle. More... | |
void | operator+= (const Angle &angle2) |
Add angle value to another as double and replace original. More... | |
void | operator-= (const Angle &angle2) |
Subtract angle value from another and set this instance to the resulting angle. More... | |
void | operator*= (double value) |
Multiply this angle by a double and set this instance to the resulting angle. More... | |
void | operator/= (double value) |
Divide this angle by a double and return the resulting angle. More... | |
bool | operator== (const Angle &angle2) const |
Test if another angle is equal to this angle. More... | |
bool | operator!= (const Angle &angle2) const |
Test if another angle is not equal to this angle. More... | |
bool | operator<= (const Angle &angle2) const |
Test if the other angle is less than or equal to the current angle. More... | |
bool | operator>= (const Angle &angle2) const |
Test if the other angle is greater than or equal to the current angle. More... | |
double | radians () const |
Convert an angle to a double. More... | |
double | degrees () const |
Get the angle in units of Degrees. More... | |
void | setRadians (double radians) |
Set the angle in units of Radians. More... | |
void | setDegrees (double degrees) |
Set the angle in units of Degrees. More... | |
virtual QString | toString (bool includeUnits=true) const |
Get the angle in human-readable form. More... | |
double | unitWrapValue (const Units &unit) const |
Return wrap value in desired units. More... | |
virtual double | angle (const Units &unit) const |
Return angle value in desired units. More... | |
virtual void | setAngle (const double &angle, const Units &unit) |
Set angle value in desired units. More... | |
Static Public Member Functions | |
static QList< QPair< Longitude, Longitude > > | to360Range (Longitude startLon, Longitude endLon) |
Calculates where the longitude range is in 0-360. More... | |
static Angle | fullRotation () |
Makes an angle to represent a full rotation (0-360 or 0-2pi). More... | |
Private Attributes | |
Domain | m_currentDomain |
This is necessary for converting to PositiveWest and back. More... | |
double | m_radians |
The angle measure, always stored in radians. More... | |
This class is designed to encapsulate the concept of a Longitude.
This is used primary for surface points but is also a general purpose class. This class accepts values past the longitude domain limits. This adds the concept of longitude direction to the Angle class.
Definition at line 40 of file Longitude.h.
Possible longitude directions: Is a positive longitude towards east or towards west?
Enumerator | |
---|---|
PositiveEast | As the longitude increases the actual position is more east. |
PositiveWest | As the longitude increases the actual position is more west. |
Definition at line 46 of file Longitude.h.
Use LongitudeDomain360 if 0-360 is the primary range of the longitude values with 180 being the 'center'.
use LongitudeDomain180 if 0 is the 'center' longitude. This is used for converting between longitude directions, because a 'center' longitude of 0 (-180 to 180) implies negation is all that needs done to reverse the longitude direction, whereas if you are in the 360 domain, where 180 is the center, more needs done.
Enumerator | |
---|---|
Domain360 | As the longitude increases the actual position is more east. |
Domain180 | As the longitude increases the actual position is more west. |
Definition at line 62 of file Longitude.h.
|
inherited |
The set of usable angle measurement units.
Isis::Longitude::Longitude | ( | ) |
Create a blank Longitude object with 0-360 domain.
Definition at line 24 of file Longitude.cpp.
References Domain360, and m_currentDomain.
Referenced by force180Domain(), force360Domain(), and to360Range().
Isis::Longitude::Longitude | ( | double | longitude, |
Angle::Units | longitudeUnits, | ||
Direction | lonDir = PositiveEast , |
||
Domain | lonDomain = Domain360 |
||
) |
Create and initialize a Longitude value.
This value can wrap the planet any number of times regardless of the domain.
longitude | The longitude value this instance will represent |
longitudeUnits | The angular units of the longitude value (degs, rads) |
lonDir | True if moving east means an increase in longitude |
lonDomain | Domain of the given longitude value |
Definition at line 103 of file Longitude.cpp.
References m_currentDomain, PositiveEast, PositiveWest, Isis::IException::Programmer, setPositiveEast(), and setPositiveWest().
Isis::Longitude::Longitude | ( | Angle | longitude, |
Direction | lonDir = PositiveEast , |
||
Domain | lonDomain = Domain360 |
||
) |
Create and initialize a Longitude value.
This value can wrap the planet any number of times regardless of the domain.
longitude | The longitude value this instance will represent |
lonDir | True if moving east means an increase in longitude |
lonDomain | Domain of the given longitude value |
Definition at line 76 of file Longitude.cpp.
References m_currentDomain, PositiveEast, PositiveWest, Isis::IException::Programmer, Isis::Angle::Radians, Isis::Angle::radians(), setPositiveEast(), and setPositiveWest().
Isis::Longitude::Longitude | ( | double | longitude, |
PvlGroup | mapping, | ||
Angle::Units | longitudeUnits | ||
) |
Create and initialize a Longitude value.
This value can wrap the planet any number of times regardless of the domain. The longitude domain and direction are read from the mapping group.
longitude | The longitude value this instance will represent |
mapping | The mapping group containing the longitude direction and domain |
longitudeUnits | The angular units of the longitude value (degs, rads) |
Definition at line 39 of file Longitude.cpp.
References Domain180, Domain360, m_currentDomain, Isis::IException::Programmer, setPositiveEast(), and setPositiveWest().
Isis::Longitude::Longitude | ( | const Longitude & | longitudeToCopy | ) |
This copies the given longitude exactly.
longitudeToCopy | The latitude we're duplicating |
Definition at line 126 of file Longitude.cpp.
References m_currentDomain.
Isis::Longitude::~Longitude | ( | ) |
This cleans up the Longitude class.
Definition at line 135 of file Longitude.cpp.
|
virtualinherited |
Return angle value in desired units.
unit | Desired units of the angle (see Angle::Units) |
Definition at line 289 of file Angle.cpp.
References Isis::Angle::Degrees, Isis::Angle::m_radians, Isis::Null, Isis::IException::Programmer, Isis::RAD2DEG, and Isis::Angle::Radians.
Referenced by Isis::Angle::Angle(), Isis::Angle::degrees(), force360Domain(), Isis::Angle::operator<(), Isis::Angle::operator==(), Isis::Angle::operator>(), Isis::Latitude::planetocentric(), positiveEast(), positiveWest(), Isis::Angle::radians(), Isis::Latitude::setAngle(), and Isis::Angle::setAngle().
|
inlineinherited |
Get the angle in units of Degrees.
Definition at line 232 of file Angle.h.
References Isis::Angle::angle(), and Isis::Angle::Degrees.
Referenced by Isis::Angle::Angle(), Isis::MosaicGridTool::autoGrid(), Isis::MosaicAreaTool::calcLatLonRange(), Isis::PhotometricFunction::compute(), Isis::ControlPointEditWidget::createTemporaryGroundMeasure(), Isis::MosaicGridTool::drawGrid(), Isis::QnetSetAprioriDialog::fillAverageAprioriLineEdits(), Isis::QnetSetAprioriDialog::fillCurrentAprioriLineEdits(), Isis::QnetSetAprioriDialog::fillReferenceAprioriLineEdits(), Isis::QnetTool::findPointLocation(), force180Domain(), force360Domain(), Isis::BundleControlPoint::formatBundleLatitudinalOutputDetailString(), Isis::BundleTargetBody::formatBundleOutputString(), Isis::BundleControlPoint::formatBundleRectangularOutputDetailString(), Isis::ImageTreeWidgetItem::ImageTreeWidgetItem(), Isis::DemShape::localRadius(), Isis::ControlNetFilter::PointLatLonFilter(), Isis::MosaicGridToolConfigDialog::readSettings(), Isis::MosaicGridToolConfigDialog::refreshWidgetStates(), Isis::FeatureNomenclature::runQuery(), Isis::Latitude::setAngle(), Isis::Angle::setDegrees(), Isis::CameraGroundMap::SetGround(), Isis::VimsGroundMap::SetGround(), Isis::UniversalGroundMap::SetGround(), Isis::Camera::SetGround(), Isis::CSMCamera::SetGround(), Isis::ControlPointEditWidget::setShapesForPoint(), Isis::BundleTargetBody::setSolveSettings(), Isis::UniversalGroundMap::SetUnboundGround(), Isis::CSMCamera::subSpacecraftPoint(), Isis::RingPlaneProjection::To180Domain(), Isis::TProjection::To180Domain(), Isis::RingPlaneProjection::To360Domain(), Isis::TProjection::To360Domain(), Isis::ControlNetVersioner::toPvl(), Isis::MosaicGridTool::toPvl(), Isis::Angle::toString(), Isis::Sensor::UniversalLatitude(), Isis::Sensor::UniversalLongitude(), Isis::BundleControlPoint::updateAdjustedSurfacePointLatitudinally(), Isis::MeasureTool::updateDist(), Isis::SunShadowTool::updateRow(), Isis::AdvancedTrackTool::updateRow(), Isis::ControlPointEditWidget::updateSurfacePointInfo(), and Isis::QnetTool::updateSurfacePointInfo().
Longitude Isis::Longitude::force180Domain | ( | ) | const |
This returns a longitude that is constricted to -180 to 180 degrees.
Definition at line 289 of file Longitude.cpp.
References Isis::Angle::Angle(), Isis::Angle::Degrees, Isis::Angle::degrees(), force360Domain(), Isis::Angle::isValid(), and Longitude().
Referenced by Isis::RingPlaneProjection::To180Domain(), and Isis::TProjection::To180Domain().
Longitude Isis::Longitude::force360Domain | ( | ) | const |
This returns a longitude that is constricted to 0-360 degrees.
Definition at line 267 of file Longitude.cpp.
References Isis::Angle::angle(), Isis::Angle::Degrees, Isis::Angle::degrees(), Isis::Angle::isValid(), and Longitude().
Referenced by Isis::Spice::computeSolarLongitude(), force180Domain(), inRange(), Isis::RingPlaneProjection::To360Domain(), and Isis::TProjection::To360Domain().
|
staticinherited |
Makes an angle to represent a full rotation (0-360 or 0-2pi).
Definition at line 106 of file Angle.cpp.
References Isis::Angle::Angle(), and Isis::Angle::Degrees.
Referenced by Isis::Hillshade::shadedValue(), and to360Range().
Checks if this longitude value is within the given range.
Defines the range as the change from the minimum longitude to the maximum longitude (an angle), and returns whether the change from the minimum longitude to this longitude is less than or equal to the maximum change allowed (the range).
All longitude values are restricted to a 0-360 range for the sake of comparison. If the provided min and max longitude values are nominally different, but resolve to the same value when clamped to the 0-360 range, (for example: min=0 and max=360 => adjustedMin=0 and adjustedMax=0), then every point will be considered valid (because the whole planet is the range).
min | The beginning of the valid longitude range |
max | The end of the valid longitude range |
Definition at line 319 of file Longitude.cpp.
References force360Domain(), Isis::PI, Isis::Angle::radians(), and to360Range().
Referenced by Isis::QnetPointRangeFilter::filter().
|
inherited |
This indicates whether we have a legitimate angle stored or are in an unset, or invalid, state.
Definition at line 95 of file Angle.cpp.
References Isis::Angle::m_radians, and Isis::Null.
Referenced by Isis::FeatureNomenclatureTool::FeaturePosition::applyExtentType(), Isis::GroundGrid::CreateGrid(), force180Domain(), force360Domain(), Isis::UniversalGroundMap::GroundRange(), Isis::DemShape::localRadius(), Isis::SunShadowTool::mouseMove(), Isis::Angle::operator*(), Isis::Angle::operator+(), Isis::Angle::operator-(), Isis::Angle::operator/(), Isis::Angle::operator<(), Isis::Angle::operator>(), Isis::Latitude::planetographic(), Isis::NaifDskPlateModel::point(), Isis::Image::save(), Isis::Shape::save(), Isis::ControlPoint::SetAprioriSurfacePoint(), Isis::Hillshade::setAzimuth(), Isis::GroundGrid::SetGroundLimits(), Isis::SurfacePoint::SetSpherical(), Isis::SurfacePoint::SetSphericalPoint(), Isis::SurfacePoint::SetSphericalSigmas(), Isis::Hillshade::setZenith(), to360Range(), Isis::Angle::toString(), and Isis::SunShadowTool::updateRow().
|
inlineinherited |
|
inherited |
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.
value | The value to multiply to this angle |
Definition at line 154 of file Angle.cpp.
References Isis::Angle::Angle(), Isis::Angle::isValid(), Isis::Angle::Radians, and Isis::Angle::radians().
|
inlineinherited |
|
inlineinherited |
Add angle value to another.
If either of these are invalid angles, then the result will be an invalid angle.
angle2 | The angle to add to this angle |
Definition at line 118 of file Angle.cpp.
References Isis::Angle::Angle(), Isis::Angle::isValid(), Isis::Angle::Radians, and Isis::Angle::radians().
|
inlineinherited |
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.
angle2 | The angle to subtract from this angle |
Definition at line 136 of file Angle.cpp.
References Isis::Angle::Angle(), Isis::Angle::isValid(), Isis::Angle::Radians, and Isis::Angle::radians().
|
inlineinherited |
|
inherited |
Divide this angle by another angle and return the ratio.
value | The ratio, Null if invalid |
Definition at line 194 of file Angle.cpp.
References Isis::Angle::isValid(), Isis::Null, and Isis::Angle::radians().
|
inherited |
Divide this angle by a double.
value | The double value to use as the divisor |
Definition at line 181 of file Angle.cpp.
References Isis::Angle::Angle(), Isis::Angle::isValid(), Isis::Angle::Radians, and Isis::Angle::radians().
|
inlineinherited |
|
inlineinherited |
|
inherited |
Test if the other angle is less than the current angle.
If either is invalid, then an exception will be thrown.
angle2 | The comparison angle (on right-hand-side of < operator) |
Definition at line 208 of file Angle.cpp.
References Isis::Angle::angle(), Isis::Angle::isValid(), Isis::IException::Programmer, and Isis::Angle::Radians.
|
inlineinherited |
Same as positiveEast.
Assign the values in the given longitude to ourselves.
operator double() const { return positiveEast(); }
This will make an exact duplicate.
longitudeToCopy | The longitude we're duplicating with the current instance |
Definition at line 252 of file Longitude.cpp.
References m_currentDomain, positiveEast(), and setPositiveEast().
|
inlineinherited |
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.
angle2 | The comparison angle (on right-hand-side of == operator) |
Definition at line 174 of file Angle.h.
References Isis::Angle::angle(), and Isis::Angle::Radians.
|
inherited |
Test if the other angle is greater than the current angle.
If either is invalid, then an exception will be thrown.
angle2 | The comparison angle (on right-hand-side of > operator) |
Definition at line 226 of file Angle.cpp.
References Isis::Angle::angle(), Isis::Angle::isValid(), Isis::IException::Programmer, and Isis::Angle::Radians.
|
inlineinherited |
double Isis::Longitude::positiveEast | ( | Angle::Units | units = Angle::Radians | ) | const |
Get the longitude in the PositiveEast coordinate system.
units | The angular units to get the longitude in |
Definition at line 146 of file Longitude.cpp.
References Isis::Angle::angle().
Referenced by operator=(), and Isis::NaifDskPlateModel::point().
double Isis::Longitude::positiveWest | ( | Angle::Units | units = Angle::Radians | ) | const |
Get the longitude in the PositiveWest coordinate system.
units | The angular units to get the longitude in |
Definition at line 158 of file Longitude.cpp.
References Isis::Angle::angle(), Domain360, Isis::IsSpecial(), m_currentDomain, and Isis::Angle::unitWrapValue().
|
inlineinherited |
Convert an angle to a double.
This will return the radians version of the angle.
operator double() const { return angle(Radians); } Get the angle in units of Radians.
Definition at line 226 of file Angle.h.
References Isis::Angle::angle(), and Isis::Angle::Radians.
Referenced by Isis::Latitude::add(), Isis::MosaicAreaTool::calcLatLonRange(), Isis::CameraGroundMap::EllipsoidPartial(), Isis::SurfacePoint::GetDistanceToPoint(), Isis::Camera::GetLocalNormal(), inRange(), Isis::Latitude::Latitude(), Isis::EmbreeShapeModel::latlonToRay(), Isis::BulletShapeModel::latlonToVector(), Isis::EllipsoidShape::localRadius(), Isis::BundleTargetBody::localRadius(), Longitude(), Isis::SunShadowTool::mouseMove(), Isis::Angle::operator*(), Isis::Angle::operator+(), Isis::Angle::operator-(), Isis::Angle::operator/(), Isis::Angle::operator=(), Isis::FeatureNomenclatureTool::ViewportFeatureDisplay::paint(), Isis::Latitude::planetographic(), Isis::CameraGroundMap::PointPartial(), Isis::SunShadowTool::recalculateShadowHeight(), Isis::LinearAlgebra::rotate(), Isis::Image::save(), Isis::Shape::save(), Isis::SpiceRotation::setEphemerisTimePckPolyFunction(), Isis::VimsGroundMap::SetGround(), Isis::Latitude::setPlanetographic(), Isis::Angle::setRadians(), Isis::BundleTargetBody::setSolveSettings(), Isis::SurfacePoint::SetSphericalPoint(), Isis::SurfacePoint::SetSphericalSigmas(), Isis::Hillshade::shadedValue(), Isis::MeasureTool::updateDist(), and Isis::SunShadowTool::updateRow().
|
virtualinherited |
Set angle value in desired units.
angle | The angle value in units of the unit parameter |
unit | Desired units of the angle (see Angle::Units) |
Reimplemented in Isis::Latitude.
Definition at line 323 of file Angle.cpp.
References Isis::Angle::angle(), Isis::DEG2RAD, Isis::Angle::Degrees, Isis::IsSpecial(), Isis::Angle::m_radians, Isis::Null, Isis::IException::Programmer, and Isis::Angle::Radians.
Referenced by Isis::Angle::Angle(), Isis::Angle::operator=(), Isis::Latitude::setAngle(), Isis::Angle::setDegrees(), setPositiveEast(), setPositiveWest(), and Isis::Angle::setRadians().
|
inlineinherited |
Set the angle in units of Degrees.
degrees | The new angle value, Null for invalid angle |
Definition at line 246 of file Angle.h.
References Isis::Angle::Degrees, Isis::Angle::degrees(), and Isis::Angle::setAngle().
void Isis::Longitude::setPositiveEast | ( | double | longitude, |
Angle::Units | units = Angle::Radians |
||
) |
Set the longitude given a value in the PositiveEast longitude system.
longitude | The positive east longitude to set ourselves to |
units | The angular units longitude is in |
Definition at line 199 of file Longitude.cpp.
References Isis::Angle::setAngle().
Referenced by Longitude(), and operator=().
void Isis::Longitude::setPositiveWest | ( | double | longitude, |
Angle::Units | units = Angle::Radians |
||
) |
Set the longitude given a value in the PositiveWest longitude system.
longitude | The positive west longitude to set ourselves to |
units | The angular units longitude is in |
Definition at line 210 of file Longitude.cpp.
References Domain360, Isis::IsSpecial(), m_currentDomain, Isis::Angle::setAngle(), and Isis::Angle::unitWrapValue().
Referenced by Longitude().
|
inlineinherited |
Set the angle in units of Radians.
radians | The new angle value, Null for invalid angle |
Definition at line 239 of file Angle.h.
References Isis::Angle::Radians, Isis::Angle::radians(), and Isis::Angle::setAngle().
Referenced by Isis::LinearAlgebra::toAxisAngle(), and Isis::LinearAlgebra::toEulerAngles().
|
static |
Calculates where the longitude range is in 0-360.
This method will return 2 subranges if the total range intersects the 0/360 line. For instance, if the input range is -10-10, the output ranges will be 350-360 and 0-10. If the longitude range is invalid then an empty list will result.
startLon | the western edge of the longitude range |
endLon | the eastern edge of the range |
Definition at line 364 of file Longitude.cpp.
References Isis::Angle::Degrees, Isis::Angle::fullRotation(), Isis::Angle::isValid(), and Longitude().
Referenced by inRange(), and Isis::FeatureNomenclature::queryFeatures().
|
virtualinherited |
Get the angle in human-readable form.
includeUnits | Include the angle's units in the text. |
Definition at line 243 of file Angle.cpp.
References Isis::Angle::degrees(), Isis::Angle::isValid(), and Isis::toString().
Referenced by Isis::Latitude::inRange(), Isis::Latitude::Latitude(), Isis::operator<<(), Isis::Latitude::planetographic(), and Isis::Hillshade::shadedValue().
|
inherited |
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.
unit | Desired units of the Angle wrap constant (see Angle::Units) |
Definition at line 266 of file Angle.cpp.
References Isis::Angle::Degrees, Isis::PI, Isis::IException::Programmer, and Isis::Angle::Radians.
Referenced by positiveWest(), and setPositiveWest().
|
private |
This is necessary for converting to PositiveWest and back.
Definition at line 111 of file Longitude.h.
Referenced by Longitude(), operator=(), positiveWest(), and setPositiveWest().
|
privateinherited |
The angle measure, always stored in radians.
If degrees are requested then a conversion is done on the fly.
Definition at line 258 of file Angle.h.
Referenced by Isis::Angle::Angle(), Isis::Angle::angle(), Isis::Angle::isValid(), Isis::Angle::setAngle(), and Isis::Angle::~Angle().