USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::CameraGroundMap Class Reference

Convert between undistorted focal plane and ground coordinates. More...

#include <CameraGroundMap.h>

Inheritance diagram for Isis::CameraGroundMap:
Inheritance graph
Collaboration diagram for Isis::CameraGroundMap:
Collaboration graph

Public Types

enum  PartialType { WRT_Latitude, WRT_Longitude, WRT_Radius }
 

Public Member Functions

 CameraGroundMap (Camera *parent)
 
virtual ~CameraGroundMap ()
 Destructor.
 
virtual bool SetFocalPlane (const double ux, const double uy, const double uz)
 Compute ground position from focal plane coordinate.
 
virtual bool SetGround (const Latitude &lat, const Longitude &lon)
 Compute undistorted focal plane coordinate from ground position.
 
virtual bool SetGround (const SurfacePoint &surfacePoint)
 Compute undistorted focal plane coordinate from ground position that includes a local radius.
 
virtual bool GetXY (const SurfacePoint &spoint, double *cudx, double *cudy)
 Compute undistorted focal plane coordinate from ground position using current Spice from SetImage call.
 
virtual bool GetXY (const double lat, const double lon, const double radius, double *cudx, double *cudy)
 Compute undistorted focal plane coordinate from ground position using current Spice from SetImage call.
 
virtual bool GetdXYdPosition (const SpicePosition::PartialType varType, int coefIndex, double *cudx, double *cudy)
 Compute derivative w/r to position of focal plane coordinate from ground position using current Spice from SetImage call.
 
virtual bool GetdXYdOrientation (const SpiceRotation::PartialType varType, int coefIndex, double *cudx, double *cudy)
 Compute derivative of focal plane coordinate w/r to orientation from ground position using current Spice from SetImage call.
 
virtual bool GetdXYdPoint (std::vector< double > d_lookB, double *cudx, double *cudy)
 Compute derivative of focal plane coordinate w/r to ground point from ground position using current Spice from SetImage call.
 
std::vector< double > PointPartial (SurfacePoint spoint, PartialType wrt)
 Compute derivative with respect to indicated variable of conversion function from lat/lon/rad to rectangular coord.
 
double DQuotient (std::vector< double > &look, std::vector< double > &dlook, int index)
 Convenience method for quotient rule applied to look vector.
 
double FocalPlaneX () const
 Return undistorted focal plane x.
 
double FocalPlaneY () const
 Return undistorted focal plane y.
 

Protected Attributes

Camerap_camera
 
double p_focalPlaneX
 
double p_focalPlaneY
 

Private Member Functions

void LookCtoFocalPlaneXY ()
 Calculate focalplane x/y from lookvector in camera.
 

Private Attributes

std::vector< double > p_lookJ
 Look vector in J2000 calculated from ground coordinates in GetXY and used for partials.
 

Detailed Description

Convert between undistorted focal plane and ground coordinates.

This base class is used to convert between undistorted focal plane coordinates (x/y) in millimeters and ground coordinates lat/lon. This class handles the case of framing cameras.

See Also
Camera
Author
2005-02-08 Jeff Anderson
History:

2005-11-16 Jeff Anderson Fixed bug in SetGround not setting the proper boolean return value

2007-06-11 Debbie A. Cook - Added overloaded method SetGround that includes a radius argument and the method LookCtoFocalPlaneXY() to handle the common functionality between the SetGround methods

2008-07-14 Steven Lambright Added NaifStatus calls

2009-10-14 Debbie A. Cook Added new virtual method GetXY(lat,lon,radius, lookJ)

2009-11-27 Debbie A. Cook Modified virtual method GetXY(lat,lon,radius,lookJ,cudx,cudy)

2010-03-19 Debbie A. Cook Modified virtual method to return cudx and cudy; added methods GetdXYdPosition, GetdXYdOrientation, GetdXYdPoint, PointPartial, and DQuotient; and added members PartialType (from BundleAdjust) and p_lookJ.

2010-08-05 Debbie A. Cook Added another version of GetXY to support changes from binary control net upgrade

2010-11-22 Debbie A. Cook Moved PointPartial call out of GetdXYdPoint to allow BundleAdjust to avoid multiple calls for every measure. The application must call PointPartial to get the body-fixed look vector derivative prior to calling this method.

2011-02-09 Steven Lambright SetGround now uses the Latitude, Longitude and SurfacePoint classes.

2011-03-18 Debbie A. Cook Added reference to surface point in GetXY

2012-07-06 Debbie A. Cook Updated Spice members to be more compliant with Isis coding standards. References #972.

2012-10-10 Debbie A. Cook Modified to use new Target class. References Mantis ticket #775 and #1114.

2013-02-22 Debbie A. Cook Fixed LookCtoFocalPlaneXY method to properly handle instruments with a look direction along the negative z axis. Fixes Mantis ticket #1524

2014-04-17 Jeannie Backer - Replaced local variable names with more descriptive names. References #1659.

Definition at line 79 of file CameraGroundMap.h.

Constructor & Destructor Documentation

virtual Isis::CameraGroundMap::~CameraGroundMap ( )
inlinevirtual

Destructor.

Definition at line 84 of file CameraGroundMap.h.

Member Function Documentation

double Isis::CameraGroundMap::DQuotient ( std::vector< double > &  look,
std::vector< double > &  dlook,
int  index 
)

Convenience method for quotient rule applied to look vector.

This method will compute the derivative of the following function (coordinate x or y) / (coordinate z)

Parameters
looklook vector in camera frame
dlookderivative of look vector in camera frame
indexvector value to differentiate
Returns
derivative

Definition at line 385 of file CameraGroundMap.cpp.

double Isis::CameraGroundMap::FocalPlaneX ( ) const
inline

Return undistorted focal plane x.

Definition at line 113 of file CameraGroundMap.h.

Referenced by Isis::Camera::RawFocalPlanetoImage().

double Isis::CameraGroundMap::FocalPlaneY ( ) const
inline

Return undistorted focal plane y.

Definition at line 118 of file CameraGroundMap.h.

Referenced by Isis::Camera::RawFocalPlanetoImage().

bool Isis::CameraGroundMap::GetdXYdOrientation ( const SpiceRotation::PartialType  varType,
int  coefIndex,
double *  dx,
double *  dy 
)
virtual

Compute derivative of focal plane coordinate w/r to orientation from ground position using current Spice from SetImage call.

This method will compute the derivative of the undistorted focal plane coordinate for a ground position with respect to the instrument orientation, using the current Spice settings (time and kernels) without resetting the current point values for lat/lon/radius/x/y.

Parameters
varTypeenumerated partial type (definitions in SpicePosition)
coefIndexcoefficient index of fit polynomial
*dxpointer to partial derivative of undistorted focal plane x
*dypointer to partial derivative of undistorted focal plane y
Returns
conversion was successful

Definition at line 280 of file CameraGroundMap.cpp.

References Isis::SpiceRotation::ReferenceVector(), and Isis::SpiceRotation::ToReferencePartial().

Referenced by Isis::BundleAdjust::AddPartials(), and Isis::BundleAdjust::ComputePartials_DC().

bool Isis::CameraGroundMap::GetdXYdPoint ( std::vector< double >  d_lookB,
double *  dx,
double *  dy 
)
virtual

Compute derivative of focal plane coordinate w/r to ground point from ground position using current Spice from SetImage call.

This method will compute the derivative of the undistorted focal plane coordinate for a ground position with respect to lat, lon, or radius, using the current Spice settings (time and kernels) without resetting the current point values for lat/lon/radius/x/y.

Parameters
varTypeenumerated partial type (definitions in SpicePosition)
coefIndexcoefficient index of fit polynomial
*dxpointer to partial derivative of undistorted focal plane x
*dypointer to partial derivative of undistorted focal plane y
Returns
conversion was successful

Reimplemented in Isis::RadarGroundMap.

Definition at line 312 of file CameraGroundMap.cpp.

References Isis::SpiceRotation::J2000Vector(), and Isis::SpiceRotation::ReferenceVector().

Referenced by Isis::BundleAdjust::AddPartials(), and Isis::BundleAdjust::ComputePartials_DC().

bool Isis::CameraGroundMap::GetdXYdPosition ( const SpicePosition::PartialType  varType,
int  coefIndex,
double *  dx,
double *  dy 
)
virtual

Compute derivative w/r to position of focal plane coordinate from ground position using current Spice from SetImage call.

This method will compute the derivative of the undistorted focal plane coordinate for a ground position with respect to a spacecraft position coordinate, using the current Spice settings (time and kernels) without resetting the current point values for lat/lon/radius/x/y.

Parameters
varTypeenumerated partial type (definitions in SpicePosition)
coefIndexcoefficient index of fit polynomial
*dxpointer to partial derivative of undistorted focal plane x
*dypointer to partial derivative of undistorted focal plane y
Returns
conversion was successful

Reimplemented in Isis::RadarGroundMap.

Definition at line 243 of file CameraGroundMap.cpp.

References Isis::SpicePosition::CoordinatePartial(), and Isis::SpiceRotation::ReferenceVector().

Referenced by Isis::BundleAdjust::AddPartials(), and Isis::BundleAdjust::ComputePartials_DC().

bool Isis::CameraGroundMap::GetXY ( const SurfacePoint point,
double *  cudx,
double *  cudy 
)
virtual

Compute undistorted focal plane coordinate from ground position using current Spice from SetImage call.

This method will compute the undistorted focal plane coordinate for a ground position, using the current Spice settings (time and kernels) without resetting the current point values for lat/lon/radius/p_pB/x/y. The class value for p_look is set by this method.

Parameters
point
Returns
conversion was successful

Reimplemented in Isis::RadarGroundMap.

Definition at line 146 of file CameraGroundMap.cpp.

References Isis::Displacement::kilometers(), Isis::PI(), and Isis::SpiceRotation::ReferenceVector().

Referenced by Isis::BundleAdjust::AddPartials(), Isis::BundleAdjust::ComputePartials_DC(), Isis::ControlPoint::ComputeResiduals(), and Isis::ControlPoint::ComputeResiduals_Millimeters().

bool Isis::CameraGroundMap::GetXY ( const double  lat,
const double  lon,
const double  radius,
double *  cudx,
double *  cudy 
)
virtual

Compute undistorted focal plane coordinate from ground position using current Spice from SetImage call.

This method will compute the undistorted focal plane coordinate for a ground position, using the current Spice settings (time and kernels) without resetting the current point values for lat/lon/radius/p_pB/x/y. The class value for p_look is set by this method.

Parameters
latLatitude in degrees
lonLongitude in degrees
radius
Returns
conversion was successful

Definition at line 220 of file CameraGroundMap.cpp.

void Isis::CameraGroundMap::LookCtoFocalPlaneXY ( )
private

Calculate focalplane x/y from lookvector in camera.

Compute undistorted focal plane coordinate from camera look vector.

Definition at line 105 of file CameraGroundMap.cpp.

std::vector< double > Isis::CameraGroundMap::PointPartial ( SurfacePoint  spoint,
PartialType  wrt 
)

Compute derivative with respect to indicated variable of conversion function from lat/lon/rad to rectangular coord.

Parameters
latplanetocentric latitude in degrees
lonplanetocentric longitude in degrees
radiuslocal radius in meters
wrttake derivative with respect to this value
Returns
partialDerivative

Definition at line 343 of file CameraGroundMap.cpp.

References Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLocalRadius(), Isis::SurfacePoint::GetLongitude(), Isis::Distance::kilometers(), and Isis::Angle::radians().

Referenced by Isis::BundleAdjust::AddPartials(), and Isis::BundleAdjust::ComputePartials_DC().

bool Isis::CameraGroundMap::SetFocalPlane ( const double  ux,
const double  uy,
const double  uz 
)
virtual

Compute ground position from focal plane coordinate.

This method will compute the ground position given an undistorted focal plane coordinate. Note that the latitude/longitude value can be obtained from the camera class passed into the constructor.

Parameters
uxdistorted focal plane x in millimeters
uydistorted focal plane y in millimeters
uzdistorted focal plane z in millimeters
Returns
conversion was successful

Reimplemented in Isis::RadarGroundMap, and Isis::VimsGroundMap.

Definition at line 55 of file CameraGroundMap.cpp.

Referenced by Isis::Camera::SetImage().

bool Isis::CameraGroundMap::SetGround ( const Latitude lat,
const Longitude lon 
)
virtual

Compute undistorted focal plane coordinate from ground position.

Parameters
latplanetocentric latitude in degrees
lonplanetocentric longitude in degrees
Returns
conversion was successful

Reimplemented in Isis::RadarGroundMap, Isis::VimsGroundMap, Isis::LineScanCameraGroundMap, and Isis::PushFrameCameraGroundMap.

Definition at line 80 of file CameraGroundMap.cpp.

References Isis::Angle::degrees().

Referenced by Isis::PushFrameCameraGroundMap::SetGround(), Isis::Camera::SetGround(), and Isis::Camera::SetUniversalGround().

bool Isis::CameraGroundMap::SetGround ( const SurfacePoint surfacePoint)
virtual

Compute undistorted focal plane coordinate from ground position that includes a local radius.

Parameters
latplanetocentric latitude in degrees
lonplanetocentric longitude in degrees
radiuslocal radius in meters
Returns
conversion was successful

Reimplemented in Isis::RadarGroundMap, Isis::VimsGroundMap, Isis::LineScanCameraGroundMap, and Isis::PushFrameCameraGroundMap.

Definition at line 125 of file CameraGroundMap.cpp.

Member Data Documentation

std::vector<double> Isis::CameraGroundMap::p_lookJ
private

Look vector in J2000 calculated from ground coordinates in GetXY and used for partials.

Definition at line 129 of file CameraGroundMap.h.


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