Isis 3 Programmer Reference
RadarGroundMap.h
1#ifndef RadarGroundMap_h
2#define RadarGroundMap_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include "Camera.h"
11#include "CameraGroundMap.h"
12#include "SurfacePoint.h"
13
14namespace 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;
150 double p_timeTolerance;
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
Convert between undistorted focal plane and ground coordinates.
This class is designed to encapsulate the concept of a Latitude.
Definition Latitude.h:51
This class is designed to encapsulate the concept of a Longitude.
Definition Longitude.h:40
Convert between undistorted focal plane coordinate (slant range) and ground coordinates.
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...
double RangeSigma()
Return the range sigma.
double YScale()
Return the doppler sigma.
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...
double p_slantRange
units are km
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.
double p_dopplerFreq
units are hertz
virtual bool SetFocalPlane(const double ux, const double uy, const double uz)
Compute ground position from slant range.
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...
virtual ~RadarGroundMap()
Destructor.
virtual bool SetGround(const Latitude &lat, const Longitude &lon)
Compute undistorted focal plane coordinate from ground position.
void SetDopplerSigma(double dopplerSigma)
Set the doppler sigma.
double p_groundSlantRange
units are km
double p_groundDopplerFreq
units are hertz
double p_rangeSigma
Scaling factor to convert meters to focal plane coord.
void SetRangeSigma(double rangeSigma)
Set the range sigma.
double WaveLength()
Return the wavelength.
double p_dopplerSigma
Scaling factor to convert hertz to focal plane coord.
This class defines a body-fixed surface point.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16