Isis 3 Programmer Reference
|
Convert between undistorted focal plane coordinate (slant range) and ground coordinates. More...
#include <RadarGroundMap.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 | |
RadarGroundMap (Camera *parent, Radar::LookDirection ldir, double waveLength) | |
virtual | ~RadarGroundMap () |
Destructor. | |
virtual bool | SetFocalPlane (const double ux, const double uy, const double uz) |
Compute ground position from slant range. | |
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=false) |
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 | GetdXYdPoint (std::vector< double > d_lookB, double *dx, double *dy) |
Compute derivative of focal plane coordinate w/r to ground point from ground position using current Spice from SetImage call. | |
void | SetRangeSigma (double rangeSigma) |
Set the range sigma. | |
double | RangeSigma () |
Return the range sigma. | |
void | SetDopplerSigma (double dopplerSigma) |
Set the doppler sigma. | |
double | YScale () |
Return the doppler sigma. | |
double | WaveLength () |
Return the wavelength. | |
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 | 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. | |
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 | |
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. | |
Private Member Functions | |
double | ComputeXv (SpiceDouble X[3]) |
double | GetRadius (const Latitude &lat, const Longitude &lon) |
bool | Iterate (SpiceDouble &R, const double &slantRangeSqr, const SpiceDouble c[], const SpiceDouble r[], SpiceDouble X[], SpiceDouble &lat, SpiceDouble &lon, const std::vector< double > &Xsc, const bool &useSlopeEqn, const double &slope) |
Iteration loop for computing ground position from slant range. | |
Private Attributes | |
Radar::LookDirection | p_lookDirection |
double | p_tolerance |
double | p_slantRange |
units are km | |
double | p_dopplerFreq |
units are hertz | |
double | p_timeTolerance |
double | p_rangeSigma |
Scaling factor to convert meters to focal plane coord. | |
double | p_dopplerSigma |
Scaling factor to convert hertz to focal plane coord. | |
double | p_waveLength |
std::vector< double > | p_lookB |
std::vector< double > | p_sB |
double | p_groundSlantRange |
units are km | |
double | p_groundDopplerFreq |
units are hertz | |
Camera * | p_camera |
Convert between undistorted focal plane coordinate (slant range) and ground coordinates.
This class is used to convert between undistorted focal plane coordinate (the slant range) and ground coordinates lat/lon. This class handles the case of Radar instruments.
2009-07-01 Janet Barrett - Fixed intrack, crosstrack, and radial coordinate calculations; changed boundary check to use radius instead of lat,lon; updated calculation of Doppler shift
2009-10-30 Debbie A. Cook - Fixed rotation of velocity vector in SetFocalPlane, SetGround, and ComputeXv
2009-11-10 Janet Barrett - Added iteration check to SetFocalPlane to take care of situation where DEM radius does not converge
2009-11-20 Janet Barrett - Added a check to the SetGround method to determine what side of the spacecraft the focal plane coordinate falls. This fixed the mirror image problem that occurred when projecting the image.
2009-12-14 Debbie A. Cook - Added ComputeXY method
2010-03-19 Debbe A. Cook - added class members p_wavelength, p_lookB, p_sB, p_slantRange, and p_dopplerFreq; and methods SlantRangeSigma, WaveLength, DopplerSigma, SetSlantRangeSigma, GetXY, GetXYdPosition, and GetXYdPoint. Removed method SetWeightFactors.
2010-08-05 Debbie A. Cook - changed to use Surface point class
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.
2010-12-17 Debbie A. Cook - Corrected units to kilometers in GetXY
2012-01-03 Janet Barrett - Got rid of call to SetLookDirection in the SetFocalPlane method. The call to SetLookDirection was duplicating the functionality of the SetFocalPlane method.
2012-01-04 Janet Barrett - Added check for valid radius in the SetGround method.
2012-01-27 Janet Barrett - The iterative algorithm in the SetFocalPlane method was failing on some points when using the DEM shape model. To fix this problem, I decreased the tolerance from 1E-8 to 1E-6 and increased the number of iterations from 30 to 100.
2012-04-03 Janet Barrett - The iteration code was moved to its own method so that it can be run multiple times if necessary. The first iteration should suffice for those pixels that have shallow slopes. For those pixels that lie on steep slopes (up to 2x the incidence angle), then an additional iteration call is needed. In the future, we may need to add more calls to the iteration method if the slope is greater than 2x the incidence angle. The slope variable will need to be halved each time the iteration method is called until a solution is found. So, for example, if we needed to call the iteration method a third time, the slope variable would be set to .25.
2012-04-11 Janet Barrett - Removed call to SetLookDirection from the SetGround method.
2012-07-06 Debbie A. Cook, Updated Spice members to be more compliant with Isis coding standards. References #972.
2013-02-11 Debbie A. Cook, Fixed SetGround method by adding call to set the surface point in the ShapeModel so that photometric angles can be calculated. References #775
2016-07-19 Kristin Berry, Updated SetGround to call p_camera->Sensor::SetGround so that RA, DEC values will be set on level 2 images. References #2400.
2019-05-15 Debbie A. Cook - Added optional bool argument to match parent GetXY method to allow the bundle adjustment to skip the back of planet test during iterations. References #2591.
Definition at line 94 of file RadarGroundMap.h.
|
inherited |
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 91 of file CameraGroundMap.h.
Isis::RadarGroundMap::RadarGroundMap | ( | Camera * | parent, |
Radar::LookDirection | ldir, | ||
double | waveLength ) |
Definition at line 16 of file RadarGroundMap.cpp.
|
inlinevirtual |
Destructor.
Definition at line 99 of file RadarGroundMap.h.
|
private |
Definition at line 406 of file RadarGroundMap.cpp.
|
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)
look | look vector in camera frame |
dlook | derivative of look vector in camera frame |
index | vector value to differentiate |
Definition at line 550 of file CameraGroundMap.cpp.
Referenced by Isis::CameraGroundMap::GetdXYdOrientation(), Isis::CameraGroundMap::GetdXYdPoint(), Isis::CameraGroundMap::GetdXYdPosition(), and Isis::CameraGroundMap::GetdXYdTOrientation().
|
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.
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 436 of file CameraGroundMap.cpp.
References Isis::IException::Programmer.
|
inlineinherited |
Definition at line 126 of file CameraGroundMap.h.
References Isis::CameraGroundMap::p_focalPlaneX.
Referenced by Isis::Camera::RawFocalPlanetoImage().
|
inlineinherited |
Definition at line 133 of file CameraGroundMap.h.
References Isis::CameraGroundMap::p_focalPlaneY.
Referenced by Isis::Camera::RawFocalPlanetoImage().
|
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.
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 318 of file CameraGroundMap.cpp.
References Isis::Camera::DistortionMap(), Isis::CameraGroundMap::DQuotient(), Isis::Spice::instrumentRotation(), Isis::CameraGroundMap::m_lookJ, Isis::CameraGroundMap::p_camera, and Isis::CameraDistortionMap::UndistortedFocalPlaneZ().
Referenced by Isis::IsisBundleObservation::computeImagePartials().
|
virtual |
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.
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 |
Reimplemented from Isis::CameraGroundMap.
Definition at line 496 of file RadarGroundMap.cpp.
|
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 | pointer to partial derivative of undistorted focal plane x |
*dy | pointer to partial derivative of undistorted focal plane y |
Reimplemented from Isis::CameraGroundMap.
Definition at line 461 of file RadarGroundMap.cpp.
|
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.
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 354 of file CameraGroundMap.cpp.
References Isis::Spice::bodyRotation(), Isis::Camera::DistortionMap(), Isis::CameraGroundMap::DQuotient(), Isis::Spice::instrumentRotation(), Isis::CameraGroundMap::m_lookJ, Isis::CameraGroundMap::m_pB, Isis::CameraGroundMap::p_camera, and Isis::CameraDistortionMap::UndistortedFocalPlaneZ().
|
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.
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 254 of file CameraGroundMap.cpp.
References Isis::Angle::Degrees, Isis::CameraGroundMap::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/x/y and related radar parameter p_slantRange.
spoint |
Reimplemented from Isis::CameraGroundMap.
Definition at line 361 of file RadarGroundMap.cpp.
|
private |
Iteration loop for computing ground position from slant range.
ux | Slant range distance in meters scaled to focal plane |
uy | Doppler shift (always 0.0) |
uz | Not used |
Definition at line 143 of file RadarGroundMap.cpp.
References Isis::PI.
|
protectedinherited |
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.
References Isis::Camera::DistortionMap(), Isis::CameraGroundMap::p_camera, Isis::CameraGroundMap::p_focalPlaneX, Isis::CameraGroundMap::p_focalPlaneY, and Isis::CameraDistortionMap::UndistortedFocalPlaneZ().
Referenced by Isis::CameraGroundMap::SetGround(), and Isis::CameraGroundMap::SetGround().
|
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.
spoint | Surface point whose derivative is to be evalutated |
meanRadius | Computed mean of radii |
Definition at line 486 of file CameraGroundMap.cpp.
References Isis::Distance::kilometers().
|
inherited |
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 508 of file CameraGroundMap.cpp.
|
inline |
|
inline |
Set the doppler sigma.
Definition at line 123 of file RadarGroundMap.h.
References p_dopplerSigma.
Referenced by Isis::MiniRF::MiniRF().
|
virtual |
Compute ground position from slant range.
ux | Slant range distance in meters scaled to focal plane |
uy | Doppler shift (always 0.0) |
uz | Not used |
Reimplemented from Isis::CameraGroundMap.
Definition at line 45 of file RadarGroundMap.cpp.
References Isis::Distance::kilometers(), Isis::PI, and Isis::SpiceRotation::ReferenceVector().
Compute undistorted focal plane coordinate from ground position.
lat | planetocentric latitude in degrees |
lon | planetocentric longitude in degrees |
Reimplemented from Isis::CameraGroundMap.
Definition at line 200 of file RadarGroundMap.cpp.
References Isis::Distance::isValid().
|
virtual |
Compute undistorted focal plane coordinate from ground position that includes a local radius.
lat | planetocentric latitude in degrees |
lon | planetocentric longitude in degrees |
radius | local radius in meters |
Reimplemented from Isis::CameraGroundMap.
Definition at line 218 of file RadarGroundMap.cpp.
References Isis::SpiceRotation::ReferenceVector(), and Isis::SurfacePoint::ToNaifArray().
|
inline |
Set the range sigma.
Definition at line 113 of file RadarGroundMap.h.
References p_rangeSigma.
Referenced by Isis::MiniRF::MiniRF().
|
inline |
Return the wavelength.
Definition at line 133 of file RadarGroundMap.h.
|
inline |
Return the doppler sigma.
Definition at line 128 of file RadarGroundMap.h.
References p_dopplerSigma.
|
protectedinherited |
Look vector in J2000 calculated from ground coordinates in GetXY and used for partials.
Definition at line 146 of file CameraGroundMap.h.
Referenced by Isis::CameraGroundMap::GetdXYdOrientation(), Isis::CameraGroundMap::GetdXYdPoint(), Isis::CameraGroundMap::GetdXYdPosition(), Isis::CameraGroundMap::GetdXYdTOrientation(), and Isis::CameraGroundMap::GetXY().
|
protectedinherited |
Surface point calculated from ground coordinates in GetXY and used for partials.
Definition at line 144 of file CameraGroundMap.h.
Referenced by Isis::CameraGroundMap::GetdXYdTOrientation(), and Isis::CameraGroundMap::GetXY().
|
private |
Definition at line 160 of file RadarGroundMap.h.
|
private |
units are hertz
Definition at line 149 of file RadarGroundMap.h.
|
private |
Scaling factor to convert hertz to focal plane coord.
Definition at line 152 of file RadarGroundMap.h.
Referenced by SetDopplerSigma(), and YScale().
|
protectedinherited |
Camera's x focal plane coordinate.
Definition at line 139 of file CameraGroundMap.h.
Referenced by Isis::CameraGroundMap::FocalPlaneX(), Isis::CameraGroundMap::LookCtoFocalPlaneXY(), and Isis::VimsGroundMap::SetGround().
|
protectedinherited |
Camera's y focal plane coordinate.
Definition at line 140 of file CameraGroundMap.h.
Referenced by Isis::CameraGroundMap::FocalPlaneY(), Isis::CameraGroundMap::LookCtoFocalPlaneXY(), and Isis::VimsGroundMap::SetGround().
|
private |
units are hertz
Definition at line 158 of file RadarGroundMap.h.
|
private |
units are km
Definition at line 157 of file RadarGroundMap.h.
|
private |
Definition at line 154 of file RadarGroundMap.h.
|
private |
Definition at line 146 of file RadarGroundMap.h.
|
private |
Scaling factor to convert meters to focal plane coord.
Definition at line 151 of file RadarGroundMap.h.
Referenced by RangeSigma(), and SetRangeSigma().
|
private |
Definition at line 155 of file RadarGroundMap.h.
|
private |
units are km
Definition at line 148 of file RadarGroundMap.h.
|
private |
Definition at line 150 of file RadarGroundMap.h.
|
private |
Definition at line 147 of file RadarGroundMap.h.
|
private |
Definition at line 153 of file RadarGroundMap.h.