USGS

Isis 3.0 Developer's Reference (API)

Home

Isis::Sinusoidal Class Reference

Sinusoidal Map Projection. More...

#include <Sinusoidal.h>

Inherits Isis::Projection.

List of all members.

Public Types

enum  LatitudeType { Planetocentric, Planetographic }
 This enum defines the types of Latitude supported in this class. More...
enum  LongitudeDirection { PositiveEast, PositiveWest }
 This enum defines the types of Longitude directions supported in this class. More...

Public Member Functions

 Sinusoidal (Pvl &label, bool allowDefaults=false)
 Constructs a Sinusoidal object.
 ~Sinusoidal ()
 Destroys the Sinusoidal object.
bool operator== (const Projection &proj)
 Compares two Projection objects to see if they are equal.
QString Name () const
 Returns the name of the map projection, "Sinusoidal".
QString Version () const
 Returns the version of the map projection.
bool SetGround (const double lat, const double lon)
 This method is used to set the latitude/longitude (assumed to be of the correct LatitudeType, LongitudeDirection, and LongitudeDomain.
bool SetCoordinate (const double x, const double y)
 This method is used to set the projection x/y.
bool XYRange (double &minX, double &maxX, double &minY, double &maxY)
 This method is used to determine the x/y range which completely covers the area of interest specified by the lat/lon range.
PvlGroup Mapping ()
 This function returns the keywords that this projection uses.
PvlGroup MappingLatitudes ()
 This function returns the latitude keywords that this projection uses.
PvlGroup MappingLongitudes ()
 This function returns the longitude keywords that this projection uses.
bool operator!= (const Projection &proj)
 This method determines whether two map projection objects are not equal.
bool IsSky () const
 Returns true if projection is sky and false if it is land.
double EquatorialRadius () const
 This returns the equatorial radius of the target.
double PolarRadius () const
 This returns the polar radius of the target.
double Eccentricity () const
 This returns the eccentricity of the target,.
double LocalRadius (double lat) const
 This method returns the local radius in meters at the specified latitude position.
double LocalRadius () const
 This method returns the local radius in meters at the current latitude position.
virtual double TrueScaleLatitude () const
 This method returns the latitude of true scale.
virtual bool IsEquatorialCylindrical ()
 This method returns true if the projection is equatorial cylindrical.
bool IsPlanetocentric () const
 This indicates if the latitude type is planetocentric (as opposed to planetographic).
bool IsPlanetographic () const
 This indicates if the latitude type is planetographic (as opposed to planetocentric).
QString LatitudeTypeString () const
 This method returns the latitude type as a string.
double ToPlanetocentric (const double lat) const
 This method converts a planetographic latitude to a planetocentric latitude.
double ToPlanetographic (const double lat) const
 This method converts a planetocentric latitude to a planetographic latitude.
bool IsPositiveEast () const
 This indicates if the longitude direction type is positive west (as opposed to postive east).
bool IsPositiveWest () const
 This indicates if the longitude direction type is positive east (as opposed to postive west).
QString LongitudeDirectionString () const
 This method returns the longitude direction as a string.
bool Has180Domain () const
 This indicates if the longitude domain is -180 to 180 (as opposed to 0 to 360).
bool Has360Domain () const
 This indicates if the longitude domain is 0 to 360 (as opposed to -180 to 180).
QString LongitudeDomainString () const
 This method returns the longitude domain as a string.
bool HasGroundRange () const
 This indicates that the labels contained minimum and maximum latitudes and longitudes (e.g., a ground range coverage).
double MinimumLatitude () const
 This returns the minimum latitude of the area of interest.
double MaximumLatitude () const
 This returns the maximum latitude of the area of interest.
double MinimumLongitude () const
 This returns the minimum longitude of the area of interest.
double MaximumLongitude () const
 This returns the maximum longitude of the area of interest.
double Rotation () const
 Returns the value of the Rotation keyword from the mapping group.
void SetWorldMapper (WorldMapper *mapper)
 If desired the programmer can use this method to set a world mapper to be used in the SetWorld, WorldX, and WorldY methods.
bool IsGood () const
 This indicates if the last invocation of SetGround, SetCoordinate, SetUniversalGround, or SetWorld was with successful or not.
double Latitude () const
 This returns a latitude with correct latitude type as specified in the label object.
double Longitude () const
 This returns a longitude with correct longitude direction and domain as specified in the label object.
double XCoord () const
 This returns the projection X provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.
double YCoord () const
 This returns the projection Y provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.
bool SetUniversalGround (const double lat, const double lon)
 This method is used to set the latitude/longitude which must be Planetocentric (latitude) and PositiveEast/Domain360 (longitude).
double UniversalLatitude ()
 This returns a universal latitude (planetocentric).
double UniversalLongitude ()
 This returns a universal longitude (positive east in 0 to 360 domain).
bool SetWorld (const double x, const double y)
 This method is used to set a world coordinate.
double WorldX () const
 This returns the world X coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.
double WorldY () const
 This returns the world Y coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.
double ToWorldX (const double projectionX) const
 This method converts a projection x value to a world x value.
double ToWorldY (const double projectionY) const
 This method converts a projection y value to a world y value.
double ToProjectionX (const double worldX) const
 This method converts a world x value to a projection x value.
double ToProjectionY (const double worldY) const
 This method converts a world y value to a projection y value.
double Resolution () const
 This method returns the resolution for mapping world coordinates into projection coordinates.
double Scale () const
 This method returns the scale for mapping world coordinates into projection coordinates.
void SetUpperLeftCorner (const Displacement &x, const Displacement &y)
 This method sets the UpperLeftCornerX and UpperLeftCornerY keywords in the projection mapping group, in meters.

Static Public Member Functions

static double ToPlanetocentric (double lat, double eRadius, double pRadius)
 This method converts a planetographic latitude to a planetocentric latitude.
static double ToPlanetographic (double lat, double eRadius, double pRadius)
 This method converts a planetocentric latitude to a planetographic latitude.
static PvlGroup TargetRadii (QString target)
 Creates a Pvl Group with keywords TargetName, EquitorialRadius, and PolarRadius.
static PvlGroup TargetRadii (Pvl &cubeLab, PvlGroup &mapGroup)
 Convenience method to add the Target Radii information to the given Pvl Mapping Group.
static double ToHours (double angle)
 Converts the given angle (in degrees) to hours by using the ratio 15 degrees per hour.
static QString ToDMS (double angle)
 Converts the given angle (in degrees) to degrees, minutes, seconds.
static QString ToHMS (double angle)
 Converts the given angle (in degrees) to hours, minutes, seconds.
static double ToPositiveEast (const double lon, const int domain)
 This method converts a longitude into the positive east direction.
static double ToPositiveWest (const double lon, const int domain)
 This method converts a longitude into the positive west direction.
static double To180Domain (const double lon)
 This method converts a longitude into the -180 to 180 domain.
static double To360Domain (const double lon)
 This method converts a longitude into the 0 to 360 domain.

Protected Member Functions

void XYRangeCheck (const double latitude, const double longitude)
 This convience function is established to assist in the development of the XYRange virtual method.
bool xyRangeOblique (double &minX, double &maxX, double &minY, double &maxY)
 This method is used to find the XY range for oblique aspect projections (non-polar projections) by "walking" around each of the min/max lat/lon.
void SetXY (double x, double y)
 This protected method is a helper for derived classes.
void SetComputedXY (double x, double y)
 This protected method is a helper for derived classes.
double GetX () const
 Calculates the unrotated form of current x value.
double GetY () const
 Calculates the unrotated form of the current y value.
double qCompute (const double sinPhi) const
 A convience method to compute Snyder's q equation (3-12) for a given latitude, $\phi$.
double phi2Compute (const double t) const
 A convience method to compute latitude angle phi2 given small t, from Syder's recursive equation (7-9)
double mCompute (const double sinphi, const double cosphi) const
 A convience method to compute Snyder's m equation (14-15) for a given latitude, $\phi$.
double tCompute (const double phi, const double sinphi) const
 A convience method to compute Snyder's t equation (15-9) for a given latitude, $\phi$.
double e4Compute () const
 A convience method to compute.

Protected Attributes

WorldMapperm_mapper
 This points to a mapper passed into the SetWorldMapper method.
double m_latitude
 This contain a latitude value.
double m_longitude
 This contain a longitude value.
bool m_good
 Indicates if the contents of m_x, m_y, m_latitude, and m_longitude are valid.
LatitudeType m_latitudeType
 An enumerated type indicating the LatitudeType read from the labels.
LongitudeDirection m_longitudeDirection
 An enumerated type indicating the LongitudeDirection read from the labels.
int m_longitudeDomain
 This integer is either 180 or 360 and is read from the labels.
double m_equatorialRadius
 Polar radius of the target.
double m_polarRadius
 Polar radius of the target.
double m_eccentricity
 Planet Eccentricity.
bool m_sky
 Indicates whether projection is sky or land.
bool m_groundRangeGood
 Indicates if the ground range (min/max lat/lons) were read from the labels.
double m_minimumLatitude
 Contains the minimum latitude for the entire ground range.
double m_maximumLatitude
 Contains the maximum latitude for the entire ground range.
double m_minimumLongitude
 Contains the minimum longitude for the entire ground range.
double m_maximumLongitude
 Contains the maximum longitude for the entire ground range.
double m_minimumX
 The data elements m_minimumX, m_minimumY, m_maximumX, and m_maximumY are convience data elements when you write the XYRange virtual function.
double m_maximumX
 See minimumX description.
double m_minimumY
 See minimumX description.
double m_maximumY
 See minimumX description.
PvlGroup m_mappingGrp
 Mapping group that created this projection.

Detailed Description

Sinusoidal Map Projection.

This class provides methods for the forward and inverse equations of a Sinusoidal Equal-Area map projection (for a sphere).

The Sinusoidal projection is an equal-area, psuedo-cylindrical projection. The poles are represented as points, the center longitude and all latitudes as straight lines and all other longitudes as sinusoidal curves. The latitudes are equally spaced and parallel and the longitudes are equally spaced. True scale is found along the center longitude and all latitudes.

The code was converted to C++ from the Fortran version of the USGS General Cartographic Transformation Package (GCTP). This class inherits Projection and provides the two virtual methods SetGround (forward) and SetCoordinate (inverse) and a third virtual method, XYRange, for obtaining projection coordinate coverage for a latitude/longitude window.

Please see the Projection class for a full accounting of all the methods available.

Author:
2003-01-29 Jeff Anderson

Member Enumeration Documentation

This enum defines the types of Latitude supported in this class.

Enumerator:
Planetocentric 

Latitudes are measured as the angle from the equatorial plane to the plane through the center of the planet and a given point on the surface of the planet.

Planetographic 

Latitudes are measured as the angle from the equatorial plane to the normal to the surface of the planet at a given point.

This enum defines the types of Longitude directions supported in this class.

Enumerator:
PositiveEast 

Longitude values increase in the easterly direction.

PositiveWest 

Longitude values increase in the westerly direction.


Constructor & Destructor Documentation

Isis::Sinusoidal::Sinusoidal ( Pvl label,
bool  allowDefaults = false 
)

Constructs a Sinusoidal object.

Parameters:
labelThis argument must be a Label containing the proper mapping information as indicated in the Projection class. Additionally, the sinusoidal projection requires the center longitude to be defined in the keyword CenterLongitude.
allowDefaultsIf set to false the constructor expects that a keyword of CenterLongitude will be in the label. Otherwise it will attempt to compute the center longitude using the middle of the longitude range specified in the labels. Defaults to false
Exceptions:
IException

References _FILEINFO_, Isis::PvlObject::FindGroup(), Isis::PvlContainer::HasKeyword(), Isis::IException::Io, Isis::Projection::m_longitudeDirection, Isis::Projection::m_maximumLongitude, Isis::Projection::m_minimumLongitude, Isis::PI(), Isis::Projection::PositiveWest, Isis::toString(), and Isis::PvlObject::Traverse.

Isis::Sinusoidal::~Sinusoidal ( )

Destroys the Sinusoidal object.


Member Function Documentation

double Isis::Projection::e4Compute ( ) const [protected, inherited]

A convience method to compute.

\[ e4 = \sqrt{(1+e )^{1+e}(1-e)^{1-e}} \]

where e is the eccentricity of the body.

Returns:
double The value for the e4 formula.

References Isis::Projection::Eccentricity().

Referenced by Isis::PolarStereographic::PolarStereographic().

double Isis::Projection::Eccentricity ( ) const [inherited]

This returns the eccentricity of the target,.

\[ e = \sqrt{1 - \frac{PR^2}{ER^2}} \]

where PR is the polar radius and ER is the equatorial radius. Since polar and equatorial radii are required to be greater than zero, it follows that $ 0 \le e < 1 $ . Note that if the body is spherical, then PR = ER and so e = 0.

Returns:
double

References Isis::Projection::m_eccentricity.

Referenced by Isis::Projection::e4Compute(), Isis::Projection::mCompute(), Isis::Mercator::Mercator(), Isis::Projection::phi2Compute(), Isis::Projection::tCompute(), and Isis::TransverseMercator::TransverseMercator().

double Isis::Projection::EquatorialRadius ( ) const [inherited]

This returns the equatorial radius of the target.

The radius was obtained from the label during object construction.

Returns:
double

References Isis::Projection::m_equatorialRadius.

Referenced by Isis::GridGraphicsItem::GridGraphicsItem(), Isis::Projection::operator==(), and Isis::MosaicGridTool::setLatExtents().

bool Isis::Projection::Has180Domain ( ) const [inherited]

This indicates if the longitude domain is -180 to 180 (as opposed to 0 to 360).

The longitude domain was obtained from the label during object construction.

Returns:
bool

References Isis::Projection::m_longitudeDomain.

Referenced by Isis::MosaicSceneItem::reproject().

bool Isis::Projection::Has360Domain ( ) const [inherited]

This indicates if the longitude domain is 0 to 360 (as opposed to -180 to 180).

The longitude domain was obtained from the label during object construction.

Returns:
bool

References Isis::Projection::m_longitudeDomain.

bool Isis::Projection::HasGroundRange ( ) const [inherited]

This indicates that the labels contained minimum and maximum latitudes and longitudes (e.g., a ground range coverage).

If the projection has ground range coverage then the MinimumLatitude, MaximumLatitude, MinimumLongitude, and MaximumLongitude methods can be used. The ground range coverage essentially defines the area of user interest.

Returns:
bool

References Isis::Projection::m_groundRangeGood.

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::Projection::MappingLatitudes(), Isis::Projection::MappingLongitudes(), and Isis::Projection::xyRangeOblique().

bool Isis::Projection::IsEquatorialCylindrical ( ) [virtual, inherited]

This method returns true if the projection is equatorial cylindrical.

In other words, if the projection is cylindrical and an image projected at 0 is the same as an image projected at 360.

Returns:
bool true if the projection is equatorial cylindrical

Reimplemented in Isis::SimpleCylindrical, Isis::Equirectangular, and Isis::Mercator.

Referenced by Isis::ShapeModelFactory::create(), and Isis::ProcessMapMosaic::StartProcess().

bool Isis::Projection::IsGood ( ) const [inherited]

This indicates if the last invocation of SetGround, SetCoordinate, SetUniversalGround, or SetWorld was with successful or not.

If there was success then the Latitude, Longitude, XCoord, YCoord, UniversalLatitude, UniversalLongitude, WorldX, and WorldY methods can be utilized.

Returns:
bool True if the last call to SetGround, SetCoordinate, SetUniversalGround, or SetWorld was successful.

References Isis::Projection::m_good.

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::Chip::Load(), and Isis::Projection::XYRangeCheck().

bool Isis::Projection::IsPlanetographic ( ) const [inherited]

This indicates if the latitude type is planetographic (as opposed to planetocentric).

The latitude type was obtained from the label during object construction.

Returns:
bool

References Isis::Projection::m_latitudeType, and Isis::Projection::Planetographic.

bool Isis::Projection::IsPositiveEast ( ) const [inherited]

This indicates if the longitude direction type is positive west (as opposed to postive east).

The longitude type was obtained from the label during object construction.

Returns:
bool

References Isis::Projection::m_longitudeDirection, and Isis::Projection::PositiveEast.

bool Isis::Projection::IsPositiveWest ( ) const [inherited]

This indicates if the longitude direction type is positive east (as opposed to postive west).

The longitude type was obtained from the label during object construction.

Returns:
bool

References Isis::Projection::m_longitudeDirection, and Isis::Projection::PositiveWest.

Referenced by Isis::Projection::operator==().

bool Isis::Projection::IsSky ( ) const [inherited]

Returns true if projection is sky and false if it is land.

Returns:
bool

References Isis::Projection::m_sky.

Referenced by Isis::Camera::RaDecRange(), Isis::Camera::RaDecResolution(), Isis::Camera::SetImage(), and Isis::Camera::SetRightAscensionDeclination().

double Isis::Projection::Latitude ( ) const [inherited]

This returns a latitude with correct latitude type as specified in the label object.

The method can only be used if SetGround, SetCoordinate, SetUniversalGround, or SetWorld return with success. Success can also be checked using the IsGood method.

Returns:
double

References Isis::Projection::m_latitude.

Referenced by Isis::MosaicAreaTool::mouseButtonRelease(), Isis::MosaicFindTool::mouseButtonRelease(), Isis::MosaicGridTool::setLatExtents(), Isis::MosaicTrackTool::updateLabels(), and Isis::PolygonTools::XYToLatLon().

QString Isis::Projection::LatitudeTypeString ( ) const [inherited]

This method returns the latitude type as a string.

It will return either Planetocentric or Planetographic.

Returns:
string The latitude type, "Planetocentric" or "Planetographic".

References Isis::Projection::m_latitudeType, and Isis::Projection::Planetographic.

Referenced by Isis::MosaicGridTool::latType().

double Isis::Projection::LocalRadius ( double  latitude) const [inherited]

This method returns the local radius in meters at the specified latitude position.

For this method, the local radius is defined as the distance from the center of the planet to the surface of the planet at the given latitude.

\[ LR = \frac{ER*PR}{\sqrt{PR^2 \cos^2(LAT)+ER^2 \sin^2(LAT)}} \]

Parameters:
latitudeA latitude in degrees (assumed to be of the correct LatitudeType).
Exceptions:
IException::Unknown- "The given latitude is invalid."
Returns:
double The value for the local radius, in meters, at the given latitude.

References _FILEINFO_, a, c, Isis::Projection::m_equatorialRadius, Isis::Projection::m_polarRadius, Isis::Null, Isis::PI(), and Isis::IException::Unknown.

Referenced by Isis::ProjectionFactory::CreateForCube().

double Isis::Projection::LocalRadius ( ) const [inherited]

This method returns the local radius in meters at the current latitude position.

This is only usable if the use of SetGround or SetCoordinate was successful.

Returns:
double The value for the local radius, in meters, at the current latitude.

References Isis::Projection::m_latitude.

Referenced by Isis::Equirectangular::Equirectangular().

double Isis::Projection::Longitude ( ) const [inherited]

This returns a longitude with correct longitude direction and domain as specified in the label object.

The method can only be used if SetGround, SetCoordinate, SetUniversalGround, or SetWorld return with success. Success can also be checked using the IsGood method.

Returns:
double

References Isis::Projection::m_longitude.

Referenced by Isis::MosaicAreaTool::mouseButtonRelease(), Isis::MosaicFindTool::mouseButtonRelease(), Isis::Camera::SetImage(), Isis::MosaicGridTool::setLonExtents(), Isis::Projection::To180Domain(), Isis::Projection::To360Domain(), Isis::MosaicTrackTool::updateLabels(), and Isis::PolygonTools::XYToLatLon().

QString Isis::Projection::LongitudeDirectionString ( ) const [inherited]

This method returns the longitude direction as a string.

It will return either PositiveEast or PositiveWest.

Returns:
string The longitude direction, "PositiveEast" or "PositiveWest".

References Isis::Projection::m_longitudeDirection, and Isis::Projection::PositiveEast.

QString Isis::Projection::LongitudeDomainString ( ) const [inherited]

This method returns the longitude domain as a string.

It will return either 180 or 360.

Returns:
string The longitude domain, "180" or "360".

References Isis::Projection::m_longitudeDomain.

Referenced by Isis::MosaicGridTool::lonDomain().

PvlGroup Isis::Sinusoidal::Mapping ( ) [virtual]

This function returns the keywords that this projection uses.

Returns:
PvlGroup The keywords that this projection uses

Reimplemented from Isis::Projection.

References Isis::Projection::m_mappingGrp.

PvlGroup Isis::Sinusoidal::MappingLatitudes ( ) [virtual]

This function returns the latitude keywords that this projection uses.

Returns:
PvlGroup The latitude keywords that this projection uses

Reimplemented from Isis::Projection.

PvlGroup Isis::Sinusoidal::MappingLongitudes ( ) [virtual]

This function returns the longitude keywords that this projection uses.

Returns:
PvlGroup The longitude keywords that this projection uses

Reimplemented from Isis::Projection.

References Isis::Projection::m_mappingGrp.

double Isis::Projection::MaximumLatitude ( ) const [inherited]

This returns the maximum latitude of the area of interest.

The value was obtained from the labels during object construction. This method can only be used if HasGroundRange returns a true.

Returns:
double

References Isis::Projection::m_maximumLatitude.

Referenced by Isis::MosaicGridTool::setLatExtents(), and Isis::Projection::xyRangeOblique().

double Isis::Projection::MaximumLongitude ( ) const [inherited]

This returns the maximum longitude of the area of interest.

The value was obtained from the labels during object construction. This method can only be used if HasGroundRange returns a true.

Returns:
double

References Isis::Projection::m_maximumLongitude.

Referenced by Isis::MosaicGridTool::setLonExtents(), and Isis::Projection::xyRangeOblique().

double Isis::Projection::mCompute ( const double  sinphi,
const double  cosphi 
) const [protected, inherited]

A convience method to compute Snyder's m equation (14-15) for a given latitude, $\phi$.

\[ m = \frac{\cos(\phi)}{\sqrt{1-e^2 \sin^2(\phi)}} \]

where $e$ is the eccentricity for the body.

Parameters:
sinphisine of phi
cosphicosine of phi
Returns:
double Value for Snyder's m variable.

References Isis::Projection::Eccentricity().

Referenced by Isis::LambertConformal::LambertConformal(), and Isis::PolarStereographic::PolarStereographic().

double Isis::Projection::MinimumLatitude ( ) const [inherited]

This returns the minimum latitude of the area of interest.

The value was obtained from the labels during object construction. This method can only be used if HasGroundRange returns a true.

Returns:
double

References Isis::Projection::m_minimumLatitude.

Referenced by Isis::MosaicGridTool::setLatExtents(), and Isis::Projection::xyRangeOblique().

double Isis::Projection::MinimumLongitude ( ) const [inherited]

This returns the minimum longitude of the area of interest.

The value was obtained from the labels during object construction. This method can only be used if HasGroundRange returns a true.

Returns:
double

References Isis::Projection::m_minimumLongitude.

Referenced by Isis::MosaicGridTool::setLonExtents(), and Isis::Projection::xyRangeOblique().

QString Isis::Sinusoidal::Name ( ) const [virtual]

Returns the name of the map projection, "Sinusoidal".

Returns:
QString Name of projection, "Sinusoidal"

Implements Isis::Projection.

bool Isis::Projection::operator!= ( const Projection proj) [inherited]

This method determines whether two map projection objects are not equal.

True is returned if they have at least some differences in the radii, latitude type, longitude direction, resolution, or projection name.

Parameters:
projA reference to a Projection object to which this Projection will be compared.
Returns:
bool Indicates whether the Projection objects are not equivalent.
bool Isis::Sinusoidal::operator== ( const Projection proj) [virtual]

Compares two Projection objects to see if they are equal.

Parameters:
projProjection object to do comparison on
Returns:
bool Returns true if the Projection objects are equal, and false if they are not

Reimplemented from Isis::Projection.

double Isis::Projection::phi2Compute ( const double  t) const [protected, inherited]

A convience method to compute latitude angle phi2 given small t, from Syder's recursive equation (7-9)

\[ \phi_{i+1} = \frac{\pi}{2} - 2\arctan\left(t \left[\frac{1-e\sin(\phi_i)}{1+e\sin(\phi_i)}\right]^{e/2}\right) \]

where $e$ is the eccentricity for the body and $ \phi_0 = \frac{\pi}{2} - 2\arctan(t) $ .

Parameters:
tsmall t
Exceptions:
IException::Unknown- "Failed to converge in Projection::phi2Compute()"
Returns:
double The value for the latitude.

References _FILEINFO_, difference(), Isis::Projection::Eccentricity(), Isis::HALFPI(), and Isis::IException::Unknown.

Referenced by Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), and Isis::PolarStereographic::SetCoordinate().

double Isis::Projection::PolarRadius ( ) const [inherited]

This returns the polar radius of the target.

The radius was obtained from the label during object construction.

Returns:
double

References Isis::Projection::m_polarRadius.

Referenced by Isis::GridGraphicsItem::GridGraphicsItem(), Isis::Projection::operator==(), and Isis::MosaicGridTool::setLatExtents().

double Isis::Projection::qCompute ( const double  sinPhi) const [protected, inherited]

A convience method to compute Snyder's q equation (3-12) for a given latitude, $\phi$.

\[ q = (1 - e^2) \left[ \frac{\sin(\phi)}{1 - e^2 \sin^2(\phi)} - \frac{1}{2e} \ln\left(\frac{1 - e \sin(\phi)}{1 + e \sin(\phi)}\right) \right] \]

where $e$ is the eccentricity for the body.

Parameters:
sinPhiThe sine value for a latitude, phi.
Exceptions:
IException::Unknown- "Snyder's q variable should only be computed for ellipsoidal projections."
Returns:
double Value for Snyder's q variable.

References _FILEINFO_, Isis::Projection::m_eccentricity, and Isis::IException::Unknown.

double Isis::Projection::Resolution ( ) const [inherited]

This method returns the resolution for mapping world coordinates into projection coordinates.

For example, if the world coordinate system is an image then this routine returns the number of meters per pixel. Likewise, if the world coordinate system is a piece of paper, it might return the number of meters per inch of paper. If the SetWorldMapper method is not invoked then this method returns 1.0

Returns:
double The resolution, in appropriate units.

References Isis::Projection::m_mapper, and Isis::WorldMapper::Resolution().

Referenced by Isis::ProcessExport::CreateWorldFile(), Isis::Projection::operator==(), and Isis::UniversalGroundMap::Resolution().

double Isis::Projection::Rotation ( ) const [inherited]

Returns the value of the Rotation keyword from the mapping group.

Returns:
double The rotation of the map.
double Isis::Projection::Scale ( ) const [inherited]

This method returns the scale for mapping world coordinates into projection coordinates.

For example, if the world coordinate system is an image then this routine returns the number of pixels per degree. Likewise, if the world coordinate system is a piece of paper, it might return the number of inches of paper per degree. If the SetWorldMapper method is not invoked then this method returns 1.0

Returns:
double The scale for mapping.

References a, Isis::Projection::m_equatorialRadius, Isis::Projection::m_mapper, Isis::Projection::m_polarRadius, Isis::PI(), Isis::WorldMapper::Resolution(), and Isis::Projection::TrueScaleLatitude().

void Isis::Projection::SetComputedXY ( double  x,
double  y 
) [protected, inherited]

This protected method is a helper for derived classes.

It takes unrotated x and y values, rotates them using the rotation angle data member, and stores the results in the current x and y data members.

Parameters:
xThe unrotated x coordinate.
yThe unrotated y coordinate.

References Isis::Projection::m_good, Isis::Null, and Isis::PI().

Referenced by Isis::PointPerspective::SetGround(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Robinson::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::Orthographic::SetGround(), Isis::LambertConformal::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::PolarStereographic::SetGround(), Isis::Equirectangular::SetGround(), Isis::SimpleCylindrical::SetGround(), SetGround(), and Isis::Projection::SetGround().

bool Isis::Sinusoidal::SetCoordinate ( const double  x,
const double  y 
) [virtual]

This method is used to set the projection x/y.

The Set forces an attempted calculation of the corresponding latitude/longitude position. This may or may not be successful and a status is returned as such.

Parameters:
xX coordinate of the projection in units that are the same as the radii in the label
yY coordinate of the projection in units that are the same as the radii in the label
Returns:
bool

Reimplemented from Isis::Projection.

References Isis::Projection::GetX(), Isis::Projection::GetY(), Isis::HALFPI(), Isis::Projection::m_equatorialRadius, Isis::Projection::m_good, Isis::Projection::m_latitude, Isis::Projection::m_longitude, Isis::Projection::m_longitudeDirection, Isis::PI(), Isis::Projection::PositiveWest, and Isis::Projection::SetXY().

bool Isis::Sinusoidal::SetGround ( const double  lat,
const double  lon 
) [virtual]

This method is used to set the latitude/longitude (assumed to be of the correct LatitudeType, LongitudeDirection, and LongitudeDomain.

The Set forces an attempted calculation of the projection X/Y values. This may or may not be successful and a status is returned as such.

Parameters:
latLatitude value to project
lonLongitude value to project
Returns:
bool

Reimplemented from Isis::Projection.

References Isis::Projection::m_equatorialRadius, Isis::Projection::m_good, Isis::Projection::m_latitude, Isis::Projection::m_longitude, Isis::Projection::m_longitudeDirection, Isis::PI(), Isis::Projection::PositiveWest, Isis::Projection::SetComputedXY(), x, and y.

bool Isis::Projection::SetUniversalGround ( const double  lat,
const double  lon 
) [inherited]
void Isis::Projection::SetUpperLeftCorner ( const Displacement x,
const Displacement y 
) [inherited]

This method sets the UpperLeftCornerX and UpperLeftCornerY keywords in the projection mapping group, in meters.

Parameters:
xthe upper left corner x value
ythe upper left corner y value

References Isis::PvlContainer::AddKeyword(), Isis::Projection::m_mappingGrp, Isis::Displacement::meters(), Isis::PvlContainer::Replace, and Isis::toString().

Referenced by Isis::ProjectionFactory::CreateForCube(), and Isis::ProjectionFactory::CreateFromCube().

bool Isis::Projection::SetWorld ( const double  worldX,
const double  worldY 
) [inherited]

This method is used to set a world coordinate.

A world coordinate is a different coordinate type that has a one-to-one mapping to the projection coordinate system. For example, mapping pixel samples and lines to projection x's and y's. The Set forces an attempted calculation of the corresponding latitude/longitude position. This may or may not be successful and a status is returned as such. Note that is only applies if the Projection object was given an WorldMapper object during construction. If an WorldMapper was not supplied then SetWorld operates exactly the same as SetCoordinate (impling that world coordinate and projection coordinate are identical).

Parameters:
worldXWorld X coordinate in units that are specified by the WorldMapper object (e.g., pixels, millimeters, etc)
worldYWorld Y coordinate in units that are specified by the WorldMapper object (e.g., pixels, millimeters, etc)
Returns:
bool Indicates whether the method was successful.

References Isis::Projection::m_mapper, Isis::WorldMapper::ProjectionX(), Isis::WorldMapper::ProjectionY(), and Isis::Projection::SetCoordinate().

Referenced by Isis::ProcessExport::CreateWorldFile(), Isis::UniversalGroundMap::GroundRange(), Isis::Chip::Load(), Isis::UniversalGroundMap::SetImage(), Isis::Camera::SetImage(), Isis::SubArea::UpdateLabel(), and Isis::PolygonTools::XYToLatLon().

void Isis::Projection::SetWorldMapper ( WorldMapper mapper) [inherited]

If desired the programmer can use this method to set a world mapper to be used in the SetWorld, WorldX, and WorldY methods.

Mappers typically transform a projection coordinate (x/y) into the desired working coordinate system, for example, cube pixels or inches on a piece of paper. They transform in both directions (world to projection and projection to world). This allows for conversions from line/sample to latitude/longitude and vice versa. This projection will take ownership of the WorldMapper pointer.

Parameters:
mapperPointer to the mapper

References Isis::Projection::m_mapper.

Referenced by Isis::ProjectionFactory::CreateForCube(), and Isis::ProjectionFactory::CreateFromCube().

void Isis::Projection::SetXY ( double  x,
double  y 
) [protected, inherited]
PvlGroup Isis::Projection::TargetRadii ( QString  target) [static, inherited]

Creates a Pvl Group with keywords TargetName, EquitorialRadius, and PolarRadius.

The values for the radii will be retrieved from the most recent Target Attitude and Shape Naif kernel available in the Isis data area.

Parameters:
targetThe name of the body for which the radii will be retrieved.
Exceptions:
IException::Io- "Could not convert target name to NAIF code."
Returns:
PvlGroup Group named "Mapping" with keywords TargetName, EquatorialRadius, and PolarRadius.

References _FILEINFO_, Isis::NaifStatus::CheckErrors(), code, Isis::FileName::expanded(), Isis::FileName::highestVersion(), Isis::IException::Io, Isis::toString(), and Isis::IException::Unknown.

Referenced by Isis::Latitude::add(), Isis::Latitude::Latitude(), Isis::Projection::Projection(), and Isis::Projection::TargetRadii().

PvlGroup Isis::Projection::TargetRadii ( Pvl cubeLab,
PvlGroup mapGroup 
) [static, inherited]

Convenience method to add the Target Radii information to the given Pvl Mapping Group.

This method

Parameters:
cubeLabPvl labels for the image.
mapGroupPvlGroup that contains mapping parameters for the projection.
Returns:
PvlGroup The Mapping Group for the projection with keywords EquatorialRadius and PolarRadius.

References Isis::PvlContainer::DeleteKeyword(), Isis::PvlObject::FindGroup(), Isis::PvlContainer::FindKeyword(), Isis::PvlContainer::HasKeyword(), Isis::Projection::TargetRadii(), and Isis::PvlObject::Traverse.

double Isis::Projection::tCompute ( const double  phi,
const double  sinphi 
) const [protected, inherited]

A convience method to compute Snyder's t equation (15-9) for a given latitude, $\phi$.

\[ t = \frac{\tan\left(\frac{\pi}{4} - \frac{\phi}{2}\right)} {\left[\frac{1-e\sin(\phi)} {1+e\sin(\phi)}\right]^{e/2}} \]

where $e$ is the eccentricity for the body.

Parameters:
phiphi
sinphisin of phi
Returns:
double The value for Snyder's t variable.

References Isis::Projection::Eccentricity(), and Isis::HALFPI().

Referenced by Isis::LambertConformal::LambertConformal(), Isis::PolarStereographic::PolarStereographic(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), and Isis::PolarStereographic::SetGround().

double Isis::Projection::To180Domain ( const double  lon) [static, inherited]

This method converts a longitude into the -180 to 180 domain.

It will leave the longitude unchanged if it is already in the domain.

Parameters:
lonLongitude to convert into the -180 to 180 domain.
Exceptions:
IException::Unknown- "The given longitude is invalid."
Returns:
double The longitude, converted to 180 domain.

References _FILEINFO_, Isis::Angle::Degrees, Isis::Projection::Longitude(), Isis::Null, and Isis::IException::Unknown.

Referenced by Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Projection::SetUniversalGround(), Isis::Projection::ToPositiveEast(), and Isis::Projection::ToPositiveWest().

double Isis::Projection::To360Domain ( const double  lon) [static, inherited]

This method converts a longitude into the 0 to 360 domain.

It will leave the longitude unchanged if it is already in the domain.

Parameters:
lonLongitude to convert into the 0 to 360 domain.
Returns:
double The longitude, converted to 360 domain.

References _FILEINFO_, Isis::Angle::Degrees, Isis::Projection::Longitude(), Isis::Null, and Isis::IException::Unknown.

Referenced by Isis::PointPerspective::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Projection::SetUniversalGround(), Isis::Projection::ToPositiveEast(), Isis::Projection::ToPositiveWest(), and Isis::Projection::UniversalLongitude().

QString Isis::Projection::ToDMS ( double  angle) [static, inherited]

Converts the given angle (in degrees) to degrees, minutes, seconds.

Outputs in the form xxx yym zz.zzzs, for example, 206.291 degrees is 206 17m 27.6s

Parameters:
angleAngle in degrees to be converted to degrees, minutes, seconds
Returns:
string The angle in Degrees, minutes, seconds
QString Isis::Projection::ToHMS ( double  angle) [static, inherited]

Converts the given angle (in degrees) to hours, minutes, seconds.

Outputs in the form xxh yym zz.zzzs For example, 206.291 will be 13h 45m 09.84s

Parameters:
angleAngle in degrees to be converted to hours, minutes, seconds
Returns:
string The angle in Hours, minutes, seconds

References Isis::Projection::ToHours().

double Isis::Projection::ToHours ( double  angle) [static, inherited]

Converts the given angle (in degrees) to hours by using the ratio 15 degrees per hour.

Parameters:
angleAngle in degrees to be converted to hours
Returns:
double The number of hours for the given angle.

Referenced by Isis::Projection::ToHMS().

double Isis::Projection::ToPlanetocentric ( const double  lat) const [inherited]

This method converts a planetographic latitude to a planetocentric latitude.

It utilizes the equatorial and polar radii found in the labels to perform the computation.

Parameters:
latPlanetographic latitude to convert.
See also:
ToPlanetocentric(lat, eRadius, pRadius)
Returns:
double The latitude, converted to planetocentric.

References Isis::Projection::m_equatorialRadius, and Isis::Projection::m_polarRadius.

Referenced by Isis::PointPerspective::SetCoordinate(), Isis::LunarAzimuthalEqualArea::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), and Isis::Projection::UniversalLatitude().

double Isis::Projection::ToPlanetocentric ( double  lat,
double  eRadius,
double  pRadius 
) [static, inherited]

This method converts a planetographic latitude to a planetocentric latitude.

Parameters:
latPlanetographic latitude to convert.
eRadiusEquatorial radius.
pRadiusPolar radius
Exceptions:
IException::Unknown- "The given latitude is invalid."
Returns:
double The latitude, converted to planetocentric.

References _FILEINFO_, Isis::Null, Isis::PI(), and Isis::IException::Unknown.

double Isis::Projection::ToPlanetographic ( const double  lat) const [inherited]
double Isis::Projection::ToPlanetographic ( double  lat,
double  eRadius,
double  pRadius 
) [static, inherited]

This method converts a planetocentric latitude to a planetographic latitude.

It is static so that a projection object does not need to exist.

Parameters:
latPlanetocentric latitude to convert.
eRadiusEquatorial radius.
pRadiusPolar radius
Exceptions:
IException::Unknown- "The given latitude is invalid."
Returns:
double The latitude, converted to planetographic.

References _FILEINFO_, Isis::Null, Isis::PI(), and Isis::IException::Unknown.

double Isis::Projection::ToPositiveEast ( const double  lon,
const int  domain 
) [static, inherited]

This method converts a longitude into the positive east direction.

Parameters:
lonLongitude to convert into the positive east direction.
domainMust be an integer value of 180 (for -180 to 180) or 360 (for 0 to 360).
Exceptions:
IException::Unknown- "The given longitude is invalid."
IException::Unknown- "Unable to convert longitude. Domain is not 180 or 360."
Returns:
double Longitude value, in positive east direction.

References _FILEINFO_, Isis::Null, Isis::Projection::To180Domain(), Isis::Projection::To360Domain(), Isis::toString(), and Isis::IException::Unknown.

double Isis::Projection::ToPositiveWest ( const double  lon,
const int  domain 
) [static, inherited]

This method converts a longitude into the positive west direction.

Parameters:
lonLongitude to convert into the positive west direction.
domainMust be an integer value of 180 (for -180 to 180) or 360 (for 0 to 360).
Exceptions:
IException::Unknown- "The given longitude is invalid."
IException::Unknown- "Unable to convert longitude. Domain is not 180 or 360."
Returns:
double Longitude value, in positive west direction.

References _FILEINFO_, Isis::Null, Isis::Projection::To180Domain(), Isis::Projection::To360Domain(), Isis::toString(), and Isis::IException::Unknown.

double Isis::Projection::ToProjectionX ( const double  worldX) const [inherited]

This method converts a world x value to a projection x value.

For example, if the world coordinate system is an image then this method converts a sample position to a projection x value. Note that if SetWorldMapper is not used then this routine simply returns the value of the argument. That is, no mapping occurs.

Parameters:
worldXWorld x coordinate
Exceptions:
IException::Unknown- "The given x-value is invalid."
Returns:
double The projection X coordinate value.

References _FILEINFO_, Isis::Projection::m_mapper, Isis::Null, Isis::WorldMapper::ProjectionX(), and Isis::IException::Unknown.

Referenced by Isis::OverlapStatistics::OverlapStatistics(), and Isis::ProcessMapMosaic::StartProcess().

double Isis::Projection::ToProjectionY ( const double  worldY) const [inherited]

This method converts a world y value to a projection y value.

For example, if the world coordinate system is an image then this method converts a line position to a projection y value. Note that if SetWorldMapper is not used then this routine simply returns the value of the argument. That is, no mapping occurs.

Parameters:
worldYWorld y coordinate
Exceptions:
IException::Unknown- "The given y-value is invalid."
Returns:
double The projection Y coordinate value.

References _FILEINFO_, Isis::Projection::m_mapper, Isis::Null, Isis::WorldMapper::ProjectionY(), and Isis::IException::Unknown.

Referenced by Isis::OverlapStatistics::OverlapStatistics(), and Isis::ProcessMapMosaic::StartProcess().

double Isis::Projection::ToWorldX ( const double  projectionX) const [inherited]

This method converts a projection x value to a world x value.

For example, if the world coordinate system is an image then this method converts a projection x to a sample position. Note that if SetWorldMapper is not used then this routine simply returns the value of the argument. That is, no mapping occurs.

Parameters:
projectionXProjection x value in meters
Exceptions:
IException::Unknown- "The given x-value is invalid."
Returns:
double The world X coordinate value.

References _FILEINFO_, Isis::Projection::m_mapper, Isis::Null, Isis::IException::Unknown, and Isis::WorldMapper::WorldX().

Referenced by Isis::OverlapStatistics::OverlapStatistics(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::ProcessMapMosaic::StartProcess().

double Isis::Projection::ToWorldY ( const double  projectionY) const [inherited]

This method converts a projection y value to a world y value.

For example, if the world coordinate system is an image then this method converts a projection y to a line position. Note that if SetWorldMapper is not used then this routine simply returns the value of the argument. That is, no mapping occurs.

Parameters:
projectionYProjection y value in meters
Exceptions:
IException::Unknown- "The given y-value is invalid."
Returns:
double The world Y coordinate value.

References _FILEINFO_, Isis::Projection::m_mapper, Isis::Null, Isis::IException::Unknown, and Isis::WorldMapper::WorldY().

Referenced by Isis::OverlapStatistics::OverlapStatistics(), Isis::ProcessMapMosaic::SetOutputCube(), and Isis::ProcessMapMosaic::StartProcess().

double Isis::Projection::TrueScaleLatitude ( ) const [virtual, inherited]

This method returns the latitude of true scale.

It is a virtual function and if it is not overriden the default latitude of true scale is 0 (at the equator). Otherwise it is projection specific. For example, the center latitude for Mercator, Equidistant, or a parallel for conic projections. This method is used by the Scale routine to ensure the local radius is used in the computation.

Returns:
double The latitude where the projection is not distorted.

Reimplemented in Isis::LambertAzimuthalEqualArea, Isis::Equirectangular, Isis::PolarStereographic, Isis::LambertConformal, Isis::Orthographic, Isis::Mercator, and Isis::PointPerspective.

Referenced by Isis::ProjectionFactory::CreateForCube(), and Isis::Projection::Scale().

double Isis::Projection::UniversalLatitude ( ) [inherited]

This returns a universal latitude (planetocentric).

The method can only be used if SetGround, SetCoordinate, SetUniversalGround, or SetWorld return with success. Success can also be checked using the IsGood method.

Returns:
double The universal latitude.

References Isis::Projection::m_latitude, Isis::Projection::m_latitudeType, Isis::Projection::Planetographic, and Isis::Projection::ToPlanetocentric().

Referenced by Isis::UniversalGroundMap::GroundRange(), Isis::Chip::Load(), Isis::Camera::SetImage(), and Isis::UniversalGroundMap::UniversalLatitude().

double Isis::Projection::UniversalLongitude ( ) [inherited]

This returns a universal longitude (positive east in 0 to 360 domain).

The method can only be used if SetGround, SetCoordinate, SetUniversalGround, or SetWorld return with success. Success can also be checked using the IsGood method.

Returns:
double The universal longitude.

References Isis::Projection::m_longitude, Isis::Projection::m_longitudeDirection, Isis::Projection::PositiveWest, and Isis::Projection::To360Domain().

Referenced by Isis::UniversalGroundMap::GroundRange(), Isis::Chip::Load(), Isis::Camera::SetImage(), and Isis::UniversalGroundMap::UniversalLongitude().

QString Isis::Sinusoidal::Version ( ) const [virtual]

Returns the version of the map projection.

Returns:
QString Version number

Implements Isis::Projection.

double Isis::Projection::WorldX ( ) const [inherited]

This returns the world X coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.

Success can also be checked using the IsGood method. The units of X will be in the units as specified by the WorldMapper object which was given to the SetWorldMapper method. If a mapper object was not given then world coordinates are the same as the projection coordinates (i.e., WorldX and XCoord will return the same value).

Returns:
double The world X coordinate.

References Isis::Projection::m_mapper, and Isis::WorldMapper::WorldX().

Referenced by Isis::Chip::Load(), Isis::DemShape::localRadius(), Isis::UniversalGroundMap::Sample(), Isis::Camera::SetRightAscensionDeclination(), and Isis::ProcessMapMosaic::StartProcess().

double Isis::Projection::WorldY ( ) const [inherited]

This returns the world Y coordinate provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.

Success can also be checked using the IsGood method. The units of Y will be in the units as specified by the WorldMapper object which was given to the SetWorldMapper. If a mapper object was not given then world coordinates are the same as the projection coordinates (i.e., WorldY and YCoord will return the same value).

Returns:
double The world Y coordinate.

References Isis::Projection::m_mapper, and Isis::WorldMapper::WorldY().

Referenced by Isis::UniversalGroundMap::Line(), Isis::Chip::Load(), Isis::DemShape::localRadius(), and Isis::Camera::SetRightAscensionDeclination().

double Isis::Projection::XCoord ( ) const [inherited]

This returns the projection X provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.

Success can also be checked using the IsGood method. The units of X will be in the same . units as the radii obtained from the label.

Returns:
double

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::ProcessExport::CreateWorldFile(), Isis::MosaicFindTool::getUserGroundPoint(), Isis::GridGraphicsItem::GridGraphicsItem(), Isis::PolygonTools::LatLonToXY(), Isis::MosaicSceneItem::reproject(), Isis::MosaicGridTool::setLatExtents(), Isis::SubArea::UpdateLabel(), Isis::MosaicAreaTool::userChangedBox(), and Isis::LambertConformal::XYRange().

bool Isis::Sinusoidal::XYRange ( double &  minX,
double &  maxX,
double &  minY,
double &  maxY 
) [virtual]

This method is used to determine the x/y range which completely covers the area of interest specified by the lat/lon range.

The latitude/longitude range may be obtained from the labels. The purpose of this method is to return the x/y range so it can be used to compute how large a map may need to be. For example, how big a piece of paper is needed or how large of an image needs to be created. The method may fail as indicated by its return value.

Parameters:
minXMinimum x projection coordinate which covers the latitude longitude range specified in the labels.
maxXMaximum x projection coordinate which covers the latitude longitude range specified in the labels.
minYMinimum y projection coordinate which covers the latitude longitude range specified in the labels.
maxYMaximum y projection coordinate which covers the latitude longitude range specified in the labels.
Returns:
bool

Reimplemented from Isis::Projection.

References Isis::Projection::m_maximumLatitude, Isis::Projection::m_maximumLongitude, Isis::Projection::m_maximumX, Isis::Projection::m_maximumY, Isis::Projection::m_minimumLatitude, Isis::Projection::m_minimumLongitude, Isis::Projection::m_minimumX, Isis::Projection::m_minimumY, and Isis::Projection::XYRangeCheck().

void Isis::Projection::XYRangeCheck ( const double  latitude,
const double  longitude 
) [protected, inherited]

This convience function is established to assist in the development of the XYRange virtual method.

It allows the developer to test ground points (lat/lon) to see if they produce a minimum/maximum projection coordinate. For example in Sinusoidal,

       bool Sinusoidal::XYRange(double &minX, double &maxX,
                                    double &minY, double &maxY) {
        // Check the corners of the lat/lon range
         XYRangeCheck (m_minimumLatitude,m_minimumLongitude);
         XYRangeCheck (m_maximumLatitude,m_minimumLongitude);
         XYRangeCheck (m_minimumLatitude,m_maximumLongitude);
         XYRangeCheck (m_maximumLatitude,m_maximumLongitude);

         // If the latitude crosses the equator check there
         if ((m_minimumLatitude < 0.0) && (m_maximumLatitude > 0.0)) {
           XYRangeCheck (0.0,m_minimumLongitude);
           XYRangeCheck (0.0,m_maximumLongitude);
         }

         // Make sure everything is ordered
         if (m_minimumX >= m_maximumX) return false;
         if (m_minimumY >= m_maximumY) return false;

         // Return X/Y min/maxs
         minX = m_minimumX;
         maxX = m_maximumX;
         minY = m_minimumY;
         maxY = m_maximumY;
         return true;
      }
Parameters:
latitudeTest for min/max projection coordinates at this latitude
longitudeTest for min/max projection coordinates at this longitude

References Isis::Projection::IsGood(), Isis::Projection::m_good, Isis::Projection::m_maximumX, Isis::Projection::m_maximumY, Isis::Projection::m_minimumX, Isis::Projection::m_minimumY, Isis::Null, and Isis::Projection::SetGround().

Referenced by Isis::PointPerspective::XYRange(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::Orthographic::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::Equirectangular::XYRange(), Isis::SimpleCylindrical::XYRange(), and XYRange().

bool Isis::Projection::xyRangeOblique ( double &  minX,
double &  maxX,
double &  minY,
double &  maxY 
) [protected, inherited]

This method is used to find the XY range for oblique aspect projections (non-polar projections) by "walking" around each of the min/max lat/lon.

Parameters:
minXMinimum x projection coordinate which covers the latitude longitude range specified in the labels.
maxXMaximum x projection coordinate which covers the latitude longitude range specified in the labels.
minYMinimum y projection coordinate which covers the latitude longitude range specified in the labels.
maxYMaximum y projection coordinate which covers the latitude longitude range specified in the labels.
Returns:
bool Indicates whether the method was successful.
See also:
XYRange()
Author:
Stephen Lambright

References Isis::Projection::HasGroundRange(), Isis::Projection::m_maximumX, Isis::Projection::m_maximumY, Isis::Projection::m_minimumX, Isis::Projection::m_minimumY, Isis::Projection::MaximumLatitude(), Isis::Projection::MaximumLongitude(), min(), Isis::Projection::MinimumLatitude(), Isis::Projection::MinimumLongitude(), and Isis::Null.

Referenced by Isis::ObliqueCylindrical::XYRange().

double Isis::Projection::YCoord ( ) const [inherited]

This returns the projection Y provided SetGround, SetCoordinate, SetUniversalGround, or SetWorld returned with success.

Success can also be checked using the IsGood method. The units of Y will be in the same units as the radii obtained from the label.

Returns:
double

Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::ProcessExport::CreateWorldFile(), Isis::MosaicFindTool::getUserGroundPoint(), Isis::GridGraphicsItem::GridGraphicsItem(), Isis::PolygonTools::LatLonToXY(), Isis::MosaicSceneItem::reproject(), Isis::MosaicGridTool::setLatExtents(), Isis::SubArea::UpdateLabel(), Isis::MosaicAreaTool::userChangedBox(), and Isis::LambertConformal::XYRange().


Member Data Documentation

bool Isis::Projection::m_groundRangeGood [protected, inherited]

Indicates if the ground range (min/max lat/lons) were read from the labels.

Referenced by Isis::Projection::HasGroundRange(), Isis::Projection::Projection(), and Isis::Projection::XYRange().

An enumerated type indicating the LatitudeType read from the labels.

It can be either Planetographic or Planetocentric.

Referenced by Isis::Projection::IsPlanetocentric(), Isis::Projection::IsPlanetographic(), Isis::Projection::LatitudeTypeString(), Isis::Projection::Projection(), Isis::Projection::SetUniversalGround(), and Isis::Projection::UniversalLatitude().

An enumerated type indicating the LongitudeDirection read from the labels.

It can be either PositiveEast or PositiveWest. Indicating which direction the positive axis for longitude is.

Referenced by Isis::Equirectangular::Equirectangular(), Isis::Projection::IsPositiveEast(), Isis::Projection::IsPositiveWest(), Isis::LambertConformal::LambertConformal(), Isis::Projection::LongitudeDirectionString(), Isis::Mercator::Mercator(), Isis::Orthographic::Orthographic(), Isis::PointPerspective::PointPerspective(), Isis::PolarStereographic::PolarStereographic(), Isis::Projection::Projection(), Isis::Robinson::Robinson(), Isis::PointPerspective::SetCoordinate(), Isis::Robinson::SetCoordinate(), Isis::TransverseMercator::SetCoordinate(), Isis::Mercator::SetCoordinate(), Isis::Orthographic::SetCoordinate(), Isis::LambertConformal::SetCoordinate(), Isis::ObliqueCylindrical::SetCoordinate(), Isis::PolarStereographic::SetCoordinate(), Isis::Equirectangular::SetCoordinate(), Isis::SimpleCylindrical::SetCoordinate(), SetCoordinate(), Isis::PointPerspective::SetGround(), Isis::LunarAzimuthalEqualArea::SetGround(), Isis::Robinson::SetGround(), Isis::TransverseMercator::SetGround(), Isis::Mercator::SetGround(), Isis::LambertConformal::SetGround(), Isis::Orthographic::SetGround(), Isis::ObliqueCylindrical::SetGround(), Isis::PolarStereographic::SetGround(), Isis::Equirectangular::SetGround(), Isis::SimpleCylindrical::SetGround(), SetGround(), Isis::Projection::SetUniversalGround(), Isis::SimpleCylindrical::SimpleCylindrical(), Sinusoidal(), Isis::TransverseMercator::TransverseMercator(), Isis::Projection::UniversalLongitude(), Isis::LambertConformal::XYRange(), and Isis::PolarStereographic::XYRange().

WorldMapper* Isis::Projection::m_mapper [protected, inherited]

This points to a mapper passed into the SetWorldMapper method.

This mapper allows the programmer to specify a different world coordinate system. Thus the programmer could pass in line/sample positions in order to obtain a latitude/longitude or set a lat/lon and get a line/sample.

Referenced by Isis::Projection::Projection(), Isis::Projection::Resolution(), Isis::Projection::Scale(), Isis::Projection::SetWorld(), Isis::Projection::SetWorldMapper(), Isis::Projection::ToProjectionX(), Isis::Projection::ToProjectionY(), Isis::Projection::ToWorldX(), Isis::Projection::ToWorldY(), Isis::Projection::WorldX(), Isis::Projection::WorldY(), and Isis::Projection::~Projection().

double Isis::Projection::m_minimumX [protected, inherited]

The data elements m_minimumX, m_minimumY, m_maximumX, and m_maximumY are convience data elements when you write the XYRange virtual function.

They are used in conjuction with the XYRangeCheck convience method. After utilizing XYRangeCheck to test boundary conditions in the XYRange method these values will contain the projection x/y coverage for the ground range specified by min/max lat/lon.

Referenced by Isis::Projection::Projection(), Isis::PointPerspective::XYRange(), Isis::LunarAzimuthalEqualArea::XYRange(), Isis::Robinson::XYRange(), Isis::TransverseMercator::XYRange(), Isis::Mercator::XYRange(), Isis::Orthographic::XYRange(), Isis::LambertConformal::XYRange(), Isis::PolarStereographic::XYRange(), Isis::Equirectangular::XYRange(), Isis::SimpleCylindrical::XYRange(), XYRange(), Isis::Projection::XYRangeCheck(), and Isis::Projection::xyRangeOblique().

double Isis::Projection::m_polarRadius [protected, inherited]

Polar radius of the target.

This is a unitless value so that if the radius are in inches then the m_x and m_y will be in inches. Of course the units must be the same as the equatorial radius. The value is read from the labels.

Referenced by Isis::Projection::LocalRadius(), Isis::Projection::PolarRadius(), Isis::Projection::Projection(), Isis::Projection::Scale(), Isis::Projection::ToPlanetocentric(), and Isis::Projection::ToPlanetographic().

bool Isis::Projection::m_sky [protected, inherited]

Indicates whether projection is sky or land.

Referenced by Isis::Projection::IsSky(), and Isis::Projection::Projection().


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