Isis 3 Programmer Reference
Isis::LineScanCameraGroundMap Class Reference

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

#include <LineScanCameraGroundMap.h>

Inheritance diagram for Isis::LineScanCameraGroundMap:
Inheritance graph
Collaboration diagram for Isis::LineScanCameraGroundMap:
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

 LineScanCameraGroundMap (Camera *cam)
 Constructor. More...
 
virtual ~LineScanCameraGroundMap ()
 Destructor. 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. More...
 
virtual bool SetGround (const SurfacePoint &surfacePoint, const int &approxLine)
 Compute undistorted focal plane coordinate from ground position. More...
 
virtual bool SetFocalPlane (const double ux, const double uy, const double uz)
 Compute ground position from focal plane coordinate. 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 Types

enum  FindFocalPlaneStatus { Success, BoundingProblem, Failure }
 

Protected Member Functions

FindFocalPlaneStatus FindFocalPlane (const int &approxLine, const SurfacePoint &surfacePoint)
 
double FindSpacecraftDistance (int line, const SurfacePoint &surfacePoint)
 

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...
 

Private Member Functions

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

Private Attributes

std::vector< double > m_pB
 Surface point calculated from ground coordinates in GetXY and used for partials. More...
 
std::vector< double > m_lookJ
 Look vector in J2000 calculated from ground coordinates in GetXY and used for partials. More...
 

Detailed Description

Convert between undistorted focal plane and ground coordinates.

This class is used to convert between undistorted focal plane coordinates (x/y) in millimeters and ground coordinates lat/lon for line scan cameras.

See also
Camera
Author
2005-02-08 Jeff Anderson
History:
2005-02-08 Jeff Anderson - Original version
History:
2005-08-24 Jeff Anderson - Fixed bug when algorithm was checking for the backside of the planet and convergence failed (checkHidden)
History:
2005-11-16 Jeff Anderson - Fixed bug when a image covers more than 180 degrees in an orbit which would cause two focal plane roots to be inside the start/end time range.
History:
2007-12-21 Debbie A. Cook - Added overloaded method SetGround that includes a radius argument
History:
2009-03-02 Steven Lambright - Added an additional method of finding the point in SetGround(...) if the original algorithm fails. The spacecraft position at the beginning and end of the image are now being used to estimate the correct line if the bounding check fails the first time through.
History:
2010-06-17 Steven Lambright - More tolerant of failures in the distortion models for finding the bounds of the search in FindSpacecraftDistance
History:
2010-12-07 Steven Lambright - SetGround(double,double) now goes straight to the radius instead of using SetUniversalGround to get the radius.
History:
2012-07-06 Debbie A. Cook, Updated Spice members to be more compliant with Isis coding standards. References #972.

Definition at line 49 of file LineScanCameraGroundMap.h.

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.

Definition at line 87 of file CameraGroundMap.h.

Constructor & Destructor Documentation

◆ LineScanCameraGroundMap()

Isis::LineScanCameraGroundMap::LineScanCameraGroundMap ( Camera cam)

Constructor.

Parameters
campointer to camera model

Definition at line 197 of file LineScanCameraGroundMap.cpp.

◆ ~LineScanCameraGroundMap()

Isis::LineScanCameraGroundMap::~LineScanCameraGroundMap ( )
virtual

Destructor.

Definition at line 203 of file LineScanCameraGroundMap.cpp.

Member Function Documentation

◆ DQuotient()

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

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

Definition at line 550 of file CameraGroundMap.cpp.

◆ EllipsoidPartial()

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

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

Definition at line 436 of file CameraGroundMap.cpp.

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

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

◆ FocalPlaneX()

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

Definition at line 122 of file CameraGroundMap.h.

References Isis::CameraGroundMap::p_focalPlaneX.

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

◆ FocalPlaneY()

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

Definition at line 129 of file CameraGroundMap.h.

References Isis::CameraGroundMap::p_focalPlaneY.

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

◆ GetdXYdOrientation()

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

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

Definition at line 318 of file CameraGroundMap.cpp.

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 
)
virtualinherited

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.

Definition at line 398 of file CameraGroundMap.cpp.

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 
)
virtualinherited

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.

Definition at line 279 of file CameraGroundMap.cpp.

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 
)
virtualinherited

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

Definition at line 354 of file CameraGroundMap.cpp.

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 
)
virtualinherited

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

Definition at line 254 of file CameraGroundMap.cpp.

◆ GetXY() [2/2]

bool Isis::CameraGroundMap::GetXY ( const SurfacePoint point,
double *  cudx,
double *  cudy,
bool  test = true 
)
virtualinherited

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.

Definition at line 152 of file CameraGroundMap.cpp.

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

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

◆ LookCtoFocalPlaneXY()

void Isis::CameraGroundMap::LookCtoFocalPlaneXY ( )
privateinherited

Calculate focalplane x/y from lookvector in camera.

Compute undistorted focal plane coordinate from camera look vector.

Definition at line 106 of file CameraGroundMap.cpp.

◆ MeanRadiusPartial()

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

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 ???

Definition at line 486 of file CameraGroundMap.cpp.

References Isis::Displacement::kilometers(), and Isis::Distance::kilometers().

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

◆ PointPartial()

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

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

Definition at line 508 of file CameraGroundMap.cpp.

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 
)
virtualinherited

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.

Definition at line 50 of file CameraGroundMap.cpp.

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

◆ SetGround() [1/3]

bool Isis::LineScanCameraGroundMap::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 from Isis::CameraGroundMap.

Definition at line 212 of file LineScanCameraGroundMap.cpp.

References Isis::Distance::isValid(), Isis::Sensor::LocalRadius(), and Isis::CameraGroundMap::p_camera.

◆ SetGround() [2/3]

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

Compute undistorted focal plane coordinate from ground position.

Parameters
surfacePoint3D point on the surface of the planet
Returns
conversion was successful

Reimplemented from Isis::CameraGroundMap.

Definition at line 247 of file LineScanCameraGroundMap.cpp.

◆ SetGround() [3/3]

bool Isis::LineScanCameraGroundMap::SetGround ( const SurfacePoint surfacePoint,
const int &  approxLine 
)
virtual

Compute undistorted focal plane coordinate from ground position.

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

Definition at line 233 of file LineScanCameraGroundMap.cpp.

Member Data Documentation

◆ m_lookJ

std::vector<double> Isis::CameraGroundMap::m_lookJ
privateinherited

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

Definition at line 143 of file CameraGroundMap.h.

◆ m_pB

std::vector<double> Isis::CameraGroundMap::m_pB
privateinherited

Surface point calculated from ground coordinates in GetXY and used for partials.

Definition at line 141 of file CameraGroundMap.h.

◆ p_camera

◆ p_focalPlaneX

double Isis::CameraGroundMap::p_focalPlaneX
protectedinherited

◆ p_focalPlaneY

double Isis::CameraGroundMap::p_focalPlaneY
protectedinherited

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