Isis 3 Programmer Reference
RadarGroundMap.h
1 #ifndef RadarGroundMap_h
2 #define RadarGroundMap_h
3 
8 /* SPDX-License-Identifier: CC0-1.0 */
9 
10 #include "Camera.h"
11 #include "CameraGroundMap.h"
12 #include "SurfacePoint.h"
13 
14 namespace Isis {
15 
16 #ifndef RADAR_LOOK_DIR
17  namespace Radar {
18  enum LookDirection { Left, Right };
19  }
20 #define RADAR_LOOK_DIR
21 #endif
22 
95  public:
96  RadarGroundMap(Camera *parent, Radar::LookDirection ldir, double waveLength);
97 
99  virtual ~RadarGroundMap() {};
100 
101  virtual bool SetFocalPlane(const double ux, const double uy,
102  const double uz);
103  virtual bool SetGround(const Latitude &lat, const Longitude &lon);
104  virtual bool SetGround(const SurfacePoint &surfacePoint);
105  virtual bool GetXY(const SurfacePoint &spoint, double *cudx,
106  double *cudy, bool test=false);
107  virtual bool GetdXYdPosition(const SpicePosition::PartialType varType,
108  int coefIndex, double *cudx, double *cudy);
109  virtual bool GetdXYdPoint(std::vector<double> d_lookB, double *dx,
110  double *dy);
111 
113  void SetRangeSigma(double rangeSigma) {
114  p_rangeSigma = rangeSigma;
115  };
116 
118  double RangeSigma() {
119  return p_rangeSigma;
120  };
121 
123  void SetDopplerSigma(double dopplerSigma) {
124  p_dopplerSigma = dopplerSigma;
125  };
126 
128  double YScale() {
129  return p_dopplerSigma;
130  };
131 
133  double WaveLength() {
134  return p_waveLength;
135  };
136 
137  private:
138  double ComputeXv(SpiceDouble X[3]);
139  double GetRadius(const Latitude &lat, const Longitude &lon);
140 
141  bool Iterate(SpiceDouble &R, const double &slantRangeSqr, const SpiceDouble c[],
142  const SpiceDouble r[], SpiceDouble X[], SpiceDouble &lat,
143  SpiceDouble &lon, const std::vector<double> &Xsc, const bool &useSlopeEqn,
144  const double &slope);
145 
146  Radar::LookDirection p_lookDirection;
147  double p_tolerance;
148  double p_slantRange;
149  double p_dopplerFreq;
150  double p_timeTolerance;
151  double p_rangeSigma;
152  double p_dopplerSigma;
153  double p_waveLength; // km/sec/hertz ??
154  std::vector<double> p_lookB;
155  std::vector<double> p_sB;
156  //std::vector<double> p_Xsc(3); //!< body fixed position
159 
160  Camera *p_camera;
161  };
162 };
163 #endif
Isis::RadarGroundMap::SetFocalPlane
virtual bool SetFocalPlane(const double ux, const double uy, const double uz)
Compute ground position from slant range.
Definition: RadarGroundMap.cpp:45
Isis::RadarGroundMap::GetXY
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 cal...
Definition: RadarGroundMap.cpp:361
Isis::Latitude
This class is designed to encapsulate the concept of a Latitude.
Definition: Latitude.h:51
Isis::RadarGroundMap::p_slantRange
double p_slantRange
units are km
Definition: RadarGroundMap.h:148
Isis::RadarGroundMap::p_rangeSigma
double p_rangeSigma
Scaling factor to convert meters to focal plane coord.
Definition: RadarGroundMap.h:151
Isis::RadarGroundMap::SetDopplerSigma
void SetDopplerSigma(double dopplerSigma)
Set the doppler sigma.
Definition: RadarGroundMap.h:123
Isis::RadarGroundMap::p_groundDopplerFreq
double p_groundDopplerFreq
units are hertz
Definition: RadarGroundMap.h:158
Isis::RadarGroundMap::SetGround
virtual bool SetGround(const Latitude &lat, const Longitude &lon)
Compute undistorted focal plane coordinate from ground position.
Definition: RadarGroundMap.cpp:200
Isis::Camera
Definition: Camera.h:236
Isis::Longitude
This class is designed to encapsulate the concept of a Longitude.
Definition: Longitude.h:40
Isis::RadarGroundMap::~RadarGroundMap
virtual ~RadarGroundMap()
Destructor.
Definition: RadarGroundMap.h:99
Isis::CameraGroundMap
Convert between undistorted focal plane and ground coordinates.
Definition: CameraGroundMap.h:73
Isis::RadarGroundMap::SetRangeSigma
void SetRangeSigma(double rangeSigma)
Set the range sigma.
Definition: RadarGroundMap.h:113
Isis::RadarGroundMap::WaveLength
double WaveLength()
Return the wavelength.
Definition: RadarGroundMap.h:133
Isis::RadarGroundMap::p_dopplerFreq
double p_dopplerFreq
units are hertz
Definition: RadarGroundMap.h:149
Isis::RadarGroundMap::p_dopplerSigma
double p_dopplerSigma
Scaling factor to convert hertz to focal plane coord.
Definition: RadarGroundMap.h:152
Isis::RadarGroundMap::Iterate
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.
Definition: RadarGroundMap.cpp:143
Isis::RadarGroundMap::p_groundSlantRange
double p_groundSlantRange
units are km
Definition: RadarGroundMap.h:157
Isis::RadarGroundMap
Convert between undistorted focal plane coordinate (slant range) and ground coordinates.
Definition: RadarGroundMap.h:94
Isis::RadarGroundMap::GetdXYdPoint
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 S...
Definition: RadarGroundMap.cpp:496
Isis::RadarGroundMap::GetdXYdPosition
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...
Definition: RadarGroundMap.cpp:461
Isis::RadarGroundMap::YScale
double YScale()
Return the doppler sigma.
Definition: RadarGroundMap.h:128
Isis::SurfacePoint
This class defines a body-fixed surface point.
Definition: SurfacePoint.h:132
Isis
This is free and unencumbered software released into the public domain.
Definition: Apollo.h:16
Isis::RadarGroundMap::RangeSigma
double RangeSigma()
Return the range sigma.
Definition: RadarGroundMap.h:118