Isis 3 Programmer Reference
|
Convert between undistorted focal plane and ground coordinates. More...
#include <CameraGroundMap.h>
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 | |
Camera * | p_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... | |
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.
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.
2015-07-24 Debbie A. Cook - Added new methods GetdXYdTOrientation(), EllipsoidPartial() and MeanRadiusPartial() along with new member p_pB. References Mantis ticket TBD.
2016-06-27 Ian Humphrey - Updated documentation and coding standards. Fixes #3971.
2017-08-30 Summer Stapleton - Updated documentation. References #4807.
2019-04-15 Debbie A. Cook - Added optional bool argument to main GetXY method to allow the bundle adjustment to skip the back of planet test during iterations. Also changed the name of the angle variable to cosangle to be more descriptive. References #2591.
Definition at line 90 of file CameraGroundMap.h.
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 104 of file CameraGroundMap.h.
Isis::CameraGroundMap::CameraGroundMap | ( | Camera * | parent | ) |
Constructor.
parent | Pointer to camera to be used for mapping with ground |
Definition at line 47 of file CameraGroundMap.cpp.
References Isis::Camera::SetGroundMap().
|
inlinevirtual |
Destructor.
Definition at line 95 of file CameraGroundMap.h.
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)
look | look vector in camera frame |
dlook | derivative of look vector in camera frame |
index | vector value to differentiate |
Definition at line 566 of file CameraGroundMap.cpp.
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.
spoint | Surface point whose derivative is to be evalutated |
raxis | Radius axis enumerated partial type (definitions in this header) |
IException::Programmer | "Invalid partial type for this method" |
Definition at line 452 of file CameraGroundMap.cpp.
References _FILEINFO_, Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLongitude(), and Isis::Angle::radians().
Referenced by Isis::BundleAdjust::computePartials().
|
inline |
Definition at line 139 of file CameraGroundMap.h.
References p_focalPlaneX.
Referenced by Isis::Camera::RawFocalPlanetoImage().
|
inline |
Definition at line 146 of file CameraGroundMap.h.
References p_focalPlaneY.
Referenced by Isis::Camera::RawFocalPlanetoImage().
|
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.
varType | enumerated partial type (definitions in SpicePosition) |
coefIndex | coefficient 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 |
Definition at line 334 of file CameraGroundMap.cpp.
References Isis::SpiceRotation::ReferenceVector(), and Isis::SpiceRotation::ToReferencePartial().
Referenced by Isis::BundleAdjust::computePartials().
|
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.
d_pB | Point vector |
*dx | [out] pointer to partial derivative of undistorted focal plane x |
*dy | [out] pointer to partial derivative of undistorted focal plane y |
Reimplemented in Isis::RadarGroundMap.
Definition at line 414 of file CameraGroundMap.cpp.
References Isis::SpiceRotation::J2000Vector(), and Isis::SpiceRotation::ReferenceVector().
Referenced by Isis::BundleAdjust::computePartials().
|
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.
varType | enumerated partial type (definitions in SpicePosition) |
coefIndex | coefficient 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 |
Reimplemented in Isis::RadarGroundMap.
Definition at line 295 of file CameraGroundMap.cpp.
References Isis::SpicePosition::CoordinatePartial(), and Isis::SpiceRotation::ReferenceVector().
Referenced by Isis::BundleAdjust::computePartials().
|
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.
varType | enumerated partial type (definitions in SpicePosition) |
coefIndex | coefficient 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 |
Definition at line 370 of file CameraGroundMap.cpp.
References Isis::SpiceRotation::ReferenceVector(), and Isis::SpiceRotation::toJ2000Partial().
Referenced by Isis::BundleAdjust::computePartials().
|
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.
point | Surface point (ground position) |
cudx | [out] Pointer to computed undistorted x focal plane coordinate |
cudy | [out] Pointer to computed undistorted y focal plane coordinate |
test | Optional parameter to indicate whether to do the back-of-planet test. |
Reimplemented in Isis::RadarGroundMap.
Definition at line 168 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(), and Isis::ControlPoint::ComputeResiduals_Millimeters().
|
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.
lat | Latitude in degrees |
lon | Longitude in degrees |
radius | Radius in meters |
cudx | [out] Pointer to computed undistored x focal plane coordinate |
cudy | [out] Pointer to computed undistored y focal plane coordinate |
Definition at line 270 of file CameraGroundMap.cpp.
|
private |
Calculate focalplane x/y from lookvector in camera.
Compute undistorted focal plane coordinate from camera look vector.
Definition at line 122 of file CameraGroundMap.cpp.
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.
spoint | Surface point whose derivative is to be evalutated |
meanRadius | Computed mean of radii |
Definition at line 502 of file CameraGroundMap.cpp.
References Isis::Displacement::kilometers(), and Isis::Distance::kilometers().
Referenced by Isis::BundleAdjust::computePartials().
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.
spoint | Surface point (ground position) |
wrt | take derivative with respect to this value |
Definition at line 524 of file CameraGroundMap.cpp.
References Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLocalRadius(), Isis::SurfacePoint::GetLongitude(), Isis::Distance::kilometers(), and Isis::Angle::radians().
|
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.
ux | undistorted focal plane x in millimeters |
uy | undistorted focal plane y in millimeters |
uz | undistorted focal plane z in millimeters |
Reimplemented in Isis::RadarGroundMap, and Isis::VimsGroundMap.
Definition at line 66 of file CameraGroundMap.cpp.
Referenced by Isis::Camera::SetImage().
Compute undistorted focal plane coordinate from ground position.
lat | planetocentric latitude in degrees |
lon | planetocentric longitude in degrees |
Reimplemented in Isis::RadarGroundMap, Isis::VimsGroundMap, Isis::LineScanCameraGroundMap, and Isis::PushFrameCameraGroundMap.
Definition at line 92 of file CameraGroundMap.cpp.
References Isis::Angle::degrees().
Referenced by Isis::PushFrameCameraGroundMap::SetGround(), Isis::Camera::SetGround(), and Isis::Camera::SetUniversalGround().
|
virtual |
Compute undistorted focal plane coordinate from ground position that includes a local radius.
surfacePoint | Surface point (ground position) |
Reimplemented in Isis::RadarGroundMap, Isis::VimsGroundMap, Isis::LineScanCameraGroundMap, and Isis::PushFrameCameraGroundMap.
Definition at line 142 of file CameraGroundMap.cpp.
|
private |
Look vector in J2000 calculated from ground coordinates in GetXY and used for partials.
Definition at line 160 of file CameraGroundMap.h.
|
private |
Surface point calculated from ground coordinates in GetXY and used for partials.
Definition at line 158 of file CameraGroundMap.h.
|
protected |
Definition at line 148 of file CameraGroundMap.h.
Referenced by Isis::PushFrameCameraGroundMap::FindDistance(), Isis::PushFrameCameraGroundMap::FindSpacecraftDistance(), Isis::VimsGroundMap::Init(), Isis::VimsGroundMap::SetFocalPlane(), Isis::PushFrameCameraGroundMap::SetGround(), Isis::LineScanCameraGroundMap::SetGround(), and Isis::VimsGroundMap::SetGround().
|
protected |
Camera's x focal plane coordinate.
Definition at line 152 of file CameraGroundMap.h.
Referenced by FocalPlaneX(), and Isis::VimsGroundMap::SetGround().
|
protected |
Camera's y focal plane coordinate.
Definition at line 153 of file CameraGroundMap.h.
Referenced by FocalPlaneY(), and Isis::VimsGroundMap::SetGround().