USGS

Isis 3.0 Object Programmers' Reference

Home

Sensor.h
Go to the documentation of this file.
1 #ifndef Sensor_h
2 #define Sensor_h
3 
25 #include "Spice.h"
26 
27 #include <QList>
28 #include <QPointF>
29 #include <QString>
30 
31 #include "Cube.h"
32 #include "Interpolator.h"
33 #include "Portal.h"
34 #include "ProjectionFactory.h"
35 
36 namespace Isis {
37  class Distance;
38  class EllipsoidShape;
39  class iTime;
40  class Latitude;
41  class Longitude;
42  class ShapeModel;
43  class SurfacePoint;
44  class Target;
45 
179  class Sensor : public Spice {
180  public:
181  Sensor(Cube &cube);
182 
183  virtual ~Sensor();
184 
185  void setTime(const iTime &time);
186  bool SetLookDirection(const double v[3]);
187  bool SetRightAscensionDeclination(const double ra, const double dec);
188  bool SetUniversalGround(const double latitude, const double longitude,
189  bool backCheck = true);
190  bool SetUniversalGround(const double latitude, const double longitude,
191  const double radius, bool backCheck = true);
192  bool SetGround(const SurfacePoint &surfacePt, bool backCheck = true);
193  bool HasSurfaceIntersection() const;
194  void Coordinate(double p[3]) const;
195 
196  double UniversalLatitude() const;
197  Latitude GetLatitude() const;
198  double UniversalLongitude() const;
199  Longitude GetLongitude() const;
201 
202  Distance LocalRadius() const;
204  Distance LocalRadius(double lat, double lon);
205 
206  double PhaseAngle() const;
207  double EmissionAngle() const;
208  double IncidenceAngle() const;
209 
210  void LookDirection(double v[3]) const;
211 
212  double RightAscension();
213  double Declination();
214 
215  // Return vector between spacecraft and surface point in body-fixed
216  void SpacecraftSurfaceVector(double scSurfaceVector[3]) const;
217  double SlantDistance() const;
218  double LocalSolarTime();
219  double SolarDistance() const;
220  double SpacecraftAltitude();
221 
222  // Return local radius from dem
223 // Distance DemRadius(const SurfacePoint &pt);
224 // Distance DemRadius(const Latitude &lat, const Longitude
225 // &lon); bool HasElevationModel() {
226 
233  virtual double resolution() {
234  return 1.0;
235  };
236  void IgnoreElevationModel(bool ignore);
237 
239 
240  virtual QString instrumentNameLong() const = 0;
241  virtual QString instrumentNameShort() const = 0;
242  virtual QString spacecraftNameLong() const = 0;
243  virtual QString spacecraftNameShort() const = 0;
244 
245  private:
246  // This version of DemRadius is for SetLookDirection ONLY. Do not call.
247  // DAC TODO Why is next declaration here? Don't move until I know
248 // double DemRadius(double lat, double lon);
249  void CommonInitialize(const std::string &demCube);
250 
251  SpiceDouble m_lookB[3];
252 
253  bool m_newLookB;
254  SpiceDouble m_ra;
255  SpiceDouble m_dec;
256  void computeRaDec();
257  bool SetGroundLocal(bool backCheck);
258  };
259 };
260 
261 #endif