Isis Developer Reference
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, WRT_MajorAxis,
  WRT_MinorAxis, WRT_PolarAxis
}
 Radius axes types to use when computing partials. More...
 

Public Member Functions

 CameraGroundMap (Camera *parent)
 Constructor. More...
 
virtual ~CameraGroundMap ()
 Destructor. More...
 
virtual bool SetFocalPlane (const double ux, const double uy, const double uz)
 Compute ground position from focal plane coordinate. More...
 
virtual bool SetGround (const Latitude &lat, const Longitude &lon)
 Compute undistorted focal plane coordinate from ground position. More...
 
virtual bool SetGround (const SurfacePoint &surfacePoint)
 Compute undistorted focal plane coordinate from ground position that includes a local radius. More...
 
virtual bool GetXY (const SurfacePoint &spoint, double *cudx, double *cudy, bool test=true)
 Compute undistorted focal plane coordinate from ground position using current Spice from SetImage call. More...
 
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. More...
 
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. More...
 
virtual bool GetdXYdOrientation (const SpiceRotation::PartialType varType, int coefIndex, double *cudx, double *cudy)
 Compute derivative of focal plane coordinate w/r to instrument using current state from SetImage call. More...
 
virtual bool GetdXYdTOrientation (const SpiceRotation::PartialType varType, int coefIndex, double *cudx, double *cudy)
 Compute derivative of focal plane coordinate w/r to target body using current state. More...
 
virtual bool GetdXYdPoint (std::vector< double > d_pB, double *dx, double *dy)
 Compute derivative of focal plane coordinate w/r to ground point using current state. More...
 
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. More...
 
std::vector< double > EllipsoidPartial (SurfacePoint spoint, PartialType raxis)
 Compute derivative of focal plane coordinate w/r to one of the ellipsoidal radii (a, b, or c) More...
 
std::vector< double > MeanRadiusPartial (SurfacePoint spoint, Distance meanRadius)
 Compute derivative of focal plane coordinate w/r to mean of the ellipsoidal radii (a, b, c) More...
 
double DQuotient (std::vector< double > &look, std::vector< double > &dlook, int index)
 Convenience method for quotient rule applied to look vector. More...
 
double FocalPlaneX () const
 
double FocalPlaneY () const
 

Protected Attributes

Camerap_camera
 Camera. More...
 
double p_focalPlaneX
 Camera's x focal plane coordinate. More...
 
double p_focalPlaneY
 Camera's y focal plane coordinate. More...
 

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

Member Enumeration Documentation

◆ PartialType

Radius axes types to use when computing partials.

When computing partials, this enum represents the "with respect to" variable in the computation.

Enumerator
WRT_Latitude 
WRT_Longitude 
WRT_Radius 
WRT_MajorAxis 
WRT_MinorAxis 
WRT_PolarAxis 

Constructor & Destructor Documentation

◆ CameraGroundMap()

Isis::CameraGroundMap::CameraGroundMap ( Camera parent)

Constructor.

Parameters
parentPointer to camera to be used for mapping with ground

References Isis::Camera::SetGroundMap().

◆ ~CameraGroundMap()

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

Destructor.

Member Function Documentation

◆ DQuotient()

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
double derivative Computed derivative

◆ EllipsoidPartial()

vector< double > Isis::CameraGroundMap::EllipsoidPartial ( SurfacePoint  spoint,
PartialType  raxis 
)

Compute derivative of focal plane coordinate w/r to one of the ellipsoidal radii (a, b, or c)

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

Parameters
spointSurface point whose derivative is to be evalutated
raxisRadius axis enumerated partial type (definitions in this header)
Exceptions
IException::Programmer"Invalid partial type for this method"
Returns
vector<double> partialDerivative of body-fixed point with respect to selected ellipsoid axis

References _FILEINFO_, Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLongitude(), and Isis::Angle::radians().

Referenced by Isis::IsisBundleObservation::computeTargetPartials().

◆ FocalPlaneX()

double Isis::CameraGroundMap::FocalPlaneX ( ) const
inline
Returns
The undistorted focal plane x

References p_focalPlaneX.

◆ FocalPlaneY()

double Isis::CameraGroundMap::FocalPlaneY ( ) const
inline
Returns
The undistorted focal plane y

References p_focalPlaneY.

◆ GetdXYdOrientation()

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

Compute derivative of focal plane coordinate w/r to instrument using current state 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
*dxout] pointer to partial derivative of undistorted focal plane x
*dy[out] pointer to partial derivative of undistorted focal plane y
Returns
bool If conversion was successful

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

Referenced by Isis::IsisBundleObservation::computeImagePartials().

◆ GetdXYdPoint()

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

Compute derivative of focal plane coordinate w/r to ground point using current state.

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
d_pBPoint vector
*dx[out] pointer to partial derivative of undistorted focal plane x
*dy[out] pointer to partial derivative of undistorted focal plane y
Returns
conversion was successful

Reimplemented in Isis::RadarGroundMap.

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

Referenced by Isis::IsisBundleObservation::computePoint3DPartials(), and Isis::IsisBundleObservation::computeTargetPartials().

◆ GetdXYdPosition()

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
*dx[out] pointer to partial derivative of undistorted focal plane x
*dy[out] pointer to partial derivative of undistorted focal plane y
Returns
bool If conversion was successful

Reimplemented in Isis::RadarGroundMap.

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

Referenced by Isis::IsisBundleObservation::computeImagePartials().

◆ GetdXYdTOrientation()

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

Compute derivative of focal plane coordinate w/r to target body using current state.

This method will compute the derivative of the undistorted focal plane coordinate for a ground position with respect to the target body 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
*dx[out] pointer to partial derivative of undistorted focal plane x
*dy[out] pointer to partial derivative of undistorted focal plane y
Returns
bool If conversion was successful

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

Referenced by Isis::IsisBundleObservation::computeTargetPartials().

◆ GetXY() [1/2]

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/m_pB/x/y. The class value for m_lookJ is set by this method.

Parameters
latLatitude in degrees
lonLongitude in degrees
radiusRadius in meters
cudx[out] Pointer to computed undistored x focal plane coordinate
cudy[out] Pointer to computed undistored y focal plane coordinate
Returns
bool If conversion was successful
See also
the application socetlinescankeywords

◆ GetXY() [2/2]

bool Isis::CameraGroundMap::GetXY ( const SurfacePoint point,
double *  cudx,
double *  cudy,
bool  test = true 
)
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/m_pB/x/y. The class value for m_lookJ is set by this method.

Parameters
pointSurface point (ground position)
cudx[out] Pointer to computed undistorted x focal plane coordinate
cudy[out] Pointer to computed undistorted y focal plane coordinate
testOptional parameter to indicate whether to do the back-of-planet test.
Returns
bool If conversion was successful

Reimplemented in Isis::RadarGroundMap.

References Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), Isis::SpiceRotation::J2000Vector(), Isis::Displacement::kilometers(), Isis::PI, and Isis::SpiceRotation::ReferenceVector().

Referenced by Isis::ControlPoint::ComputeResiduals(), Isis::ControlPoint::ComputeResiduals_Millimeters(), and Isis::IsisBundleObservation::computeRHSPartials().

◆ MeanRadiusPartial()

vector< double > Isis::CameraGroundMap::MeanRadiusPartial ( SurfacePoint  spoint,
Distance  meanRadius 
)

Compute derivative of focal plane coordinate w/r to mean of the ellipsoidal radii (a, b, c)

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

Parameters
spointSurface point whose derivative is to be evalutated
meanRadiusComputed mean of radii
Returns
vector<double> partialDerivative of body-fixed point with respect to mean radius TODO This method assumes the radii of all points in the adjustment have been set identically to the ???

References Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), Isis::Displacement::kilometers(), and Isis::Distance::kilometers().

Referenced by Isis::IsisBundleObservation::computeTargetPartials().

◆ PointPartial()

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
spointSurface point (ground position)
wrttake derivative with respect to this value
Returns
vector<double> partialDerivative Computed derivative

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

◆ SetFocalPlane()

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 pointer passed into the constructor.

Parameters
uxundistorted focal plane x in millimeters
uyundistorted focal plane y in millimeters
uzundistorted focal plane z in millimeters
Returns
bool If conversion was successful

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

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

◆ SetGround() [1/2]

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
bool If conversion was successful

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

References Isis::Angle::degrees(), and Isis::Distance::isValid().

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

◆ SetGround() [2/2]

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

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

Parameters
surfacePointSurface point (ground position)
Returns
bool If conversion was successful

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

Member Data Documentation

◆ p_camera

◆ p_focalPlaneX

double Isis::CameraGroundMap::p_focalPlaneX
protected

◆ p_focalPlaneY

double Isis::CameraGroundMap::p_focalPlaneY
protected

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