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. | |
| 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, bool test=true) |
| 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 instrument using current state from SetImage call. | |
| 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. | |
| 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. | |
| 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. | |
| 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) | |
| 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) | |
| double | DQuotient (std::vector< double > &look, std::vector< double > &dlook, int index) |
| Convenience method for quotient rule applied to look vector. | |
| double | FocalPlaneX () const |
| double | FocalPlaneY () const |
Protected Member Functions | |
| void | LookCtoFocalPlaneXY () |
| Calculate focalplane x/y from lookvector in camera. | |
Protected Attributes | |
| Camera * | p_camera |
| Camera. | |
| double | p_focalPlaneX |
| Camera's x focal plane coordinate. | |
| double | p_focalPlaneY |
| Camera's y focal plane coordinate. | |
| std::vector< double > | m_pB |
| Surface point calculated from ground coordinates in GetXY and used for partials. | |
| std::vector< double > | m_lookJ |
| Look vector in J2000 calculated from ground coordinates in GetXY and used for partials. | |
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.
| Isis::CameraGroundMap::CameraGroundMap | ( | Camera * | parent | ) |
Constructor.
| parent | Pointer to camera to be used for mapping with ground |
References p_camera.
Referenced by Isis::IrregularBodyCameraGroundMap::IrregularBodyCameraGroundMap(), Isis::LineScanCameraGroundMap::LineScanCameraGroundMap(), Isis::PushFrameCameraGroundMap::PushFrameCameraGroundMap(), Isis::RadarGroundMap::RadarGroundMap(), and Isis::VimsGroundMap::VimsGroundMap().
|
inlinevirtual |
Destructor.
| 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 |
Referenced by GetdXYdOrientation(), GetdXYdPoint(), GetdXYdPosition(), and GetdXYdTOrientation().
| 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" |
References _FILEINFO_, Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLongitude(), Isis::IException::Programmer, Isis::Angle::radians(), WRT_MajorAxis, WRT_MinorAxis, and WRT_PolarAxis.
Referenced by Isis::IsisBundleObservation::computeTargetPartials().
|
inline |
References p_focalPlaneX.
|
inline |
References p_focalPlaneY.
|
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 |
References DQuotient(), m_lookJ, p_camera, Isis::SpiceRotation::ReferenceVector(), and Isis::SpiceRotation::ToReferencePartial().
Referenced by Isis::IsisBundleObservation::computeImagePartials().
|
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.
References DQuotient(), Isis::SpiceRotation::J2000Vector(), m_lookJ, p_camera, and Isis::SpiceRotation::ReferenceVector().
Referenced by Isis::IsisBundleObservation::computePoint3DPartials(), and Isis::IsisBundleObservation::computeTargetPartials().
|
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.
References Isis::SpicePosition::CoordinatePartial(), DQuotient(), m_lookJ, p_camera, and Isis::SpiceRotation::ReferenceVector().
Referenced by Isis::IsisBundleObservation::computeImagePartials().
|
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 |
References DQuotient(), m_lookJ, m_pB, p_camera, Isis::SpiceRotation::ReferenceVector(), and Isis::SpiceRotation::toJ2000Partial().
Referenced by Isis::IsisBundleObservation::computeTargetPartials().
|
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 |
References Isis::Angle::Degrees, GetXY(), and Isis::Distance::Meters.
|
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.
References Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), Isis::SpiceRotation::J2000Vector(), Isis::Displacement::kilometers(), m_lookJ, m_pB, p_camera, Isis::PI, and Isis::SpiceRotation::ReferenceVector().
Referenced by Isis::ControlPoint::ComputeResiduals(), Isis::ControlPoint::ComputeResiduals_Millimeters(), Isis::IsisBundleObservation::computeRHSPartials(), GetXY(), and Isis::IrregularBodyCameraGroundMap::GetXY().
|
protected |
Calculate focalplane x/y from lookvector in camera.
Compute undistorted focal plane coordinate from camera look vector.
References p_camera, p_focalPlaneX, and p_focalPlaneY.
Referenced by SetGround(), and SetGround().
| 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 |
References Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), Isis::Displacement::kilometers(), and Isis::Distance::kilometers().
Referenced by Isis::IsisBundleObservation::computeTargetPartials().
| 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 |
References Isis::SurfacePoint::GetLatitude(), Isis::SurfacePoint::GetLocalRadius(), Isis::SurfacePoint::GetLongitude(), Isis::Distance::kilometers(), Isis::Angle::radians(), WRT_Latitude, and WRT_Longitude.
|
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.
References Isis::NaifStatus::CheckErrors(), and p_camera.
Compute undistorted focal plane coordinate from ground position.
| lat | planetocentric latitude in degrees |
| lon | planetocentric longitude in degrees |
Reimplemented in Isis::LineScanCameraGroundMap, Isis::PushFrameCameraGroundMap, Isis::RadarGroundMap, and Isis::VimsGroundMap.
References Isis::Angle::Degrees, Isis::Angle::degrees(), Isis::Distance::isValid(), LookCtoFocalPlaneXY(), Isis::Distance::Meters, and p_camera.
Referenced by Isis::PushFrameCameraGroundMap::SetGround().
|
virtual |
Compute undistorted focal plane coordinate from ground position that includes a local radius.
| surfacePoint | Surface point (ground position) |
Reimplemented in Isis::LineScanCameraGroundMap, Isis::PushFrameCameraGroundMap, Isis::RadarGroundMap, and Isis::VimsGroundMap.
References LookCtoFocalPlaneXY(), and p_camera.
|
protected |
Look vector in J2000 calculated from ground coordinates in GetXY and used for partials.
Referenced by GetdXYdOrientation(), GetdXYdPoint(), GetdXYdPosition(), GetdXYdTOrientation(), and GetXY().
|
protected |
Surface point calculated from ground coordinates in GetXY and used for partials.
Referenced by GetdXYdTOrientation(), and GetXY().
|
protected |
Referenced by CameraGroundMap(), Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::LineScanCameraGroundMap::FindSpacecraftDistance(), GetdXYdOrientation(), GetdXYdPoint(), GetdXYdPosition(), GetdXYdTOrientation(), GetXY(), Isis::VimsGroundMap::Init(), LookCtoFocalPlaneXY(), SetFocalPlane(), Isis::VimsGroundMap::SetFocalPlane(), SetGround(), SetGround(), Isis::LineScanCameraGroundMap::SetGround(), Isis::PushFrameCameraGroundMap::SetGround(), and Isis::VimsGroundMap::SetGround().
|
protected |
Camera's x focal plane coordinate.
Referenced by Isis::LineScanCameraGroundMap::FindFocalPlane(), FocalPlaneX(), LookCtoFocalPlaneXY(), Isis::RadarGroundMap::SetGround(), and Isis::VimsGroundMap::SetGround().
|
protected |
Camera's y focal plane coordinate.
Referenced by Isis::LineScanCameraGroundMap::FindFocalPlane(), FocalPlaneY(), LookCtoFocalPlaneXY(), Isis::RadarGroundMap::SetGround(), and Isis::VimsGroundMap::SetGround().