69 QString msg =
"Cube does not appear to be a mini RF image";
77 double groundRangeResolution = inst[
"ScaledPixelHeight"];
89 SpiceDouble etStart =
iTime((QString)inst[
"StartTime"]).
Et();
95 double lineRate = (double) inst[
"LineExposureDuration"];
98 double incidenceAngle = (double) inst[
"IncidenceAngle"];
99 incidenceAngle = incidenceAngle *
Isis::PI / 180.0;
102 double azimuthResolution = (double) inst[
"AzimuthResolution"];
103 azimuthResolution = azimuthResolution / 1000.0;
106 double rangeResolution = (double) inst[
"RangeResolution"];
112 double frequency = (double) inst[
"Frequency"];
113 double waveLength = clight_c() / frequency;
119 Radar::LookDirection ldir = Radar::Right;
120 if((QString)inst[
"LookDirection"] ==
"LEFT") {
123 RadarGroundRangeMap::setTransform(
naifIkCode(), groundRangeResolution,
135 double range_sigma = rangeResolution * sin(incidenceAngle) * 100;
136 double etMid = etStart + 0.5 * (this->
ParentLines() + 1) * lineRate;
140 groundRangeResolution);
150 double etEnd = etStart + this->
ParentLines() * lineRate + lineRate;
151 etStart = etStart - lineRate;
166 vequ_c((SpiceDouble *) & (spaceCraft->
Coordinate()[0]), Ssc);
167 vequ_c((SpiceDouble *) & (spaceCraft->
Velocity()[0]), Ssc + 3);
169 SpiceDouble BJ[6][6];
172 mxvg_c(BJ, Ssc, 6, 6, Ssc);
177 vequ_c(Ssc + 3, Vsc);
182 double height = sqrt(Xsc[0] * Xsc[0] + Xsc[1] * Xsc[1] + Xsc[2] * Xsc[2]) - R;
183 double speed = vnorm_c(Vsc);
184 double dopplerSigma = 2.0 * speed * azimuthResolution / (waveLength *
185 height / cos(incidenceAngle)) * 100.;
197 std::string msg =
"Cannot generate CK for MiniRF";
208 std::string msg =
"Cannot generate CK for MiniRF";
void SetWeightFactors(double range_sigma, double doppler_sigma)
Set the weight factors for slant range and Doppler shift.
void SetFocalLength()
Reads the focal length from the instrument kernel.
PvlGroupIterator findGroup(const QString &name, PvlGroupIterator beg, PvlGroupIterator end)
Find a group with the specified name, within these indexes.
LRO Mini-RF SAR and Chandrayaan 1 Mini-RF SAR.
std::vector< double > Matrix()
Return the full rotation TJ as a matrix.
Parse and return pieces of a time string.
Convert between alpha image coordinates and radar sample, time coordinates.
QString m_instrumentNameLong
Full instrument name.
Pvl * label() const
Returns a pointer to the IsisLabel object associated with the cube.
void radii(Distance r[3]) const
Returns the radii of the body in km.
const double PI(3.14159265358979323846)
The mathematical constant PI.
void SetPixelPitch()
Reads the Pixel Pitch from the instrument kernel.
std::vector< double > AngularVelocity()
Accessor method to get the angular velocity.
SpicePosition * instrumentPosition() const
Accessor method for the instrument position.
void SetDopplerSigma(double dopplerSigma)
Set the doppler sigma.
void createCache(iTime startTime, iTime endTime, const int size, double tol)
This method creates an internal cache of spacecraft and sun positions over a specified time range...
void SetRangeSigma(double rangeSigma)
Set the range sigma.
This error is for when a programmer made an API call that was illegal.
double FocalLength() const
Returns the focal length.
Distance measurement, usually in meters.
double Et() const
Returns the ephemeris time (TDB) representation of the time as a double.
Convert between undistorted focal plane coordinate (slant range) and ground coordinates.
Construct a mapping between image sample and Radar ground range.
SpiceRotation * bodyRotation() const
Accessor method for the body rotation.
QString m_instrumentNameShort
Shortened instrument name.
virtual int CkReferenceId() const
CK Reference ID.
int Samples() const
Returns the number of samples in the image.
Contains multiple PvlContainers.
#define _FILEINFO_
Macro for the filename and line number.
A type of error that could only have occurred due to a mistake on the user's part (e...
const std::vector< double > & Coordinate()
Return the current J2000 position.
void setTime(const iTime &time)
By setting the time you essential set the position of the spacecraft and body as indicated in the cla...
Obtain SPICE rotation information for a body.
Container for cube-like labels.
Isis::Camera * MiniRFPlugin(Isis::Cube &cube)
This is the function that is called in order to instantiate a MiniRF object.
double SpacecraftAltitude()
Returns the distance from the spacecraft to the subspacecraft point in km.
void SetCoefficients(PvlKeyword &keyword)
Load the ground range/slant range coefficients from the RangeCoefficientSet keyword.
QString m_spacecraftNameLong
Full spacecraft name.
Convert between slantrange/groundrange and ra/dec coordinates.
double PixelPitch() const
Returns the pixel pitch.
Convert between radar ground range and slant range.
double PixelResolution()
Returns the pixel resolution at the current position in meters/pixel.
SpiceInt naifIkCode() const
This returns the NAIF IK code to use when reading from instrument kernels.
Obtain SPICE position information for a body.
const std::vector< double > & Velocity()
Return the current J2000 velocity.
QString m_spacecraftNameShort
Shortened spacecraft name.
Generic class for Radar Cameras.
double kilometers() const
Get the distance in kilometers.
int ParentLines() const
Returns the number of lines in the parent alphacube.
virtual int CkFrameId() const
CK frame ID.
IO Handler for Isis Cubes.