USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::LineScanCameraGroundMap Class Reference

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

#include <LineScanCameraGroundMap.h>

Inheritance diagram for Isis::LineScanCameraGroundMap:
Inheritance graph
[legend]
Collaboration diagram for Isis::LineScanCameraGroundMap:
Collaboration graph
[legend]

List of all members.

Public Types

enum  PartialType { WRT_Latitude, WRT_Longitude, WRT_Radius }

Public Member Functions

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

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

For internal use only.

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 67 of file LineScanCameraGroundMap.h.


Constructor & Destructor Documentation

Isis::LineScanCameraGroundMap::LineScanCameraGroundMap ( Camera cam  )  [inline]

Constructor.

Parameters:
cam pointer to camera model

Definition at line 73 of file LineScanCameraGroundMap.h.

virtual Isis::LineScanCameraGroundMap::~LineScanCameraGroundMap (  )  [inline, virtual]

Destructor.

Definition at line 76 of file LineScanCameraGroundMap.h.


Member Function Documentation

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:
look look vector in camera frame
dlook derivative of look vector in camera frame
index vector value to differentiate
Returns:
derivative

Definition at line 367 of file CameraGroundMap.cpp.

Referenced by Isis::CameraGroundMap::GetdXYdOrientation(), Isis::CameraGroundMap::GetdXYdPoint(), and Isis::CameraGroundMap::GetdXYdPosition().

double Isis::CameraGroundMap::FocalPlaneX (  )  const [inline, inherited]

Return undistorted focal plane x.

Definition at line 108 of file CameraGroundMap.h.

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

double Isis::CameraGroundMap::FocalPlaneY (  )  const [inline, inherited]

Return undistorted focal plane y.

Definition at line 113 of file CameraGroundMap.h.

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

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

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:
varType enumerated partial type (definitions in SpicePosition)
coefIndex coefficient index of fit polynomial
*dx pointer to partial derivative of undistorted focal plane x
*dy pointer to partial derivative of undistorted focal plane y
Returns:
conversion was successful

Definition at line 262 of file CameraGroundMap.cpp.

References Isis::Camera::DistortionMap(), Isis::CameraGroundMap::DQuotient(), Isis::Spice::instrumentRotation(), Isis::CameraGroundMap::p_lookJ, and Isis::CameraDistortionMap::UndistortedFocalPlaneZ().

Referenced by Isis::BundleAdjust::AddPartials().

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

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:
varType enumerated partial type (definitions in SpicePosition)
coefIndex coefficient index of fit polynomial
*dx pointer to partial derivative of undistorted focal plane x
*dy pointer to partial derivative of undistorted focal plane y
Returns:
conversion was successful

Reimplemented in Isis::RadarGroundMap.

Definition at line 294 of file CameraGroundMap.cpp.

References Isis::Spice::bodyRotation(), Isis::Camera::DistortionMap(), Isis::CameraGroundMap::DQuotient(), Isis::Spice::instrumentRotation(), Isis::CameraGroundMap::p_lookJ, and Isis::CameraDistortionMap::UndistortedFocalPlaneZ().

Referenced by Isis::BundleAdjust::AddPartials().

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

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:
varType enumerated partial type (definitions in SpicePosition)
coefIndex coefficient index of fit polynomial
*dx pointer to partial derivative of undistorted focal plane x
*dy pointer to partial derivative of undistorted focal plane y
Returns:
conversion was successful

Reimplemented in Isis::RadarGroundMap.

Definition at line 225 of file CameraGroundMap.cpp.

References Isis::SpicePosition::CoordinatePartial(), Isis::Camera::DistortionMap(), Isis::CameraGroundMap::DQuotient(), Isis::Spice::instrumentPosition(), Isis::Spice::instrumentRotation(), Isis::CameraGroundMap::p_lookJ, and Isis::CameraDistortionMap::UndistortedFocalPlaneZ().

Referenced by Isis::BundleAdjust::AddPartials().

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

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:
lat Latitude in degrees
lon Longitude in degrees
radius 
Returns:
conversion was successful

Definition at line 202 of file CameraGroundMap.cpp.

References Isis::Angle::Degrees, Isis::CameraGroundMap::GetXY(), and Isis::Distance::Meters.

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

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 128 of file CameraGroundMap.cpp.

References Isis::Spice::bodyRotation(), dist, Isis::Camera::DistortionMap(), emission, Isis::Spice::instrumentPosition(), Isis::Spice::instrumentRotation(), Isis::Target::isSky(), Isis::Displacement::kilometers(), Isis::CameraGroundMap::p_lookJ, Isis::PI(), Isis::Spice::target(), and Isis::CameraDistortionMap::UndistortedFocalPlaneZ().

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

std::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:
lat planetocentric latitude in degrees
lon planetocentric longitude in degrees
radius local radius in meters
wrt take derivative with respect to this value
Returns:
partialDerivative

Definition at line 325 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().

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

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:
ux distorted focal plane x in millimeters
uy distorted focal plane y in millimeters
uz distorted focal plane z in millimeters
Returns:
conversion was successful

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

Definition at line 53 of file CameraGroundMap.cpp.

References Isis::NaifStatus::CheckErrors(), and Isis::Sensor::SetLookDirection().

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

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

Compute undistorted focal plane coordinate from ground position.

Parameters:
lat planetocentric latitude in degrees
lon planetocentric longitude in degrees
radius local radius in meters
Returns:
conversion was successful

Definition at line 194 of file LineScanCameraGroundMap.cpp.

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

Compute undistorted focal plane coordinate from ground position.

Parameters:
surfacePoint 3D point on the surface of the planet
Returns:
conversion was successful

Reimplemented from Isis::CameraGroundMap.

Definition at line 208 of file LineScanCameraGroundMap.cpp.

bool Isis::LineScanCameraGroundMap::SetGround ( const Latitude lat,
const Longitude lon 
) [virtual]

Compute undistorted focal plane coordinate from ground position.

Parameters:
lat planetocentric latitude in degrees
lon planetocentric longitude in degrees
Returns:
conversion was successful

Reimplemented from Isis::CameraGroundMap.

Definition at line 176 of file LineScanCameraGroundMap.cpp.

References Isis::Sensor::LocalRadius(), and radius.


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