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);
181 double R =
radii[0].kilometers();
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";
SpicePosition * instrumentPosition() const
Accessor method for the instrument position.
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.
const double PI
The mathematical constant PI.
friend class RadarGroundMap
A friend class to calculate focal length.
Convert between alpha image coordinates and radar sample, time coordinates.
QString m_instrumentNameLong
Full instrument name.
SpiceRotation * bodyRotation() const
Accessor method for the body rotation.
void SetPixelPitch()
Reads the Pixel Pitch from the instrument kernel.
Namespace for the standard library.
std::vector< double > AngularVelocity()
Accessor method to get the angular velocity.
void SetDopplerSigma(double dopplerSigma)
Set the doppler sigma.
virtual int CkReferenceId() const
CK Reference ID.
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.
Distance measurement, usually in meters.
friend class RadarSlantRangeMap
A friend class to calculate focal length.
int ParentLines() const
Returns the number of lines in the parent alphacube.
virtual int CkFrameId() const
CK frame ID.
Convert between undistorted focal plane coordinate (slant range) and ground coordinates.
Construct a mapping between image sample and Radar ground range.
QString m_instrumentNameShort
Shortened instrument name.
Contains multiple PvlContainers.
SpiceInt naifIkCode() const
This returns the NAIF IK code to use when reading from instrument kernels.
#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.
double FocalLength() const
Returns the focal length.
double PixelPitch() const
Returns the pixel pitch.
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.
Pvl * label() const
Returns a pointer to the IsisLabel object associated with the cube.
Convert between slantrange/groundrange and ra/dec coordinates.
int Samples() const
Returns the number of samples in the image.
Convert between radar ground range and slant range.
double PixelResolution()
Returns the pixel resolution at the current position in meters/pixel.
Obtain SPICE position information for a body.
const std::vector< double > & Velocity()
Return the current J2000 velocity.
Namespace for ISIS/Bullet specific routines.
QString m_spacecraftNameShort
Shortened spacecraft name.
Generic class for Radar Cameras.
void radii(Distance r[3]) const
Returns the radii of the body in km.
double Et() const
Returns the ephemeris time (TDB) representation of the time as a double.
IO Handler for Isis Cubes.