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 
30 #include "Cube.h"
31 #include "Interpolator.h"
32 #include "Portal.h"
33 #include "ProjectionFactory.h"
34 
35 namespace Isis {
36  class Distance;
37  class EllipsoidShape;
38  class iTime;
39  class Latitude;
40  class Longitude;
41  class ShapeModel;
42  class SurfacePoint;
43  class Target;
44 
199  class Sensor : public Spice {
200  public:
201  Sensor(Cube &cube);
202 
203  virtual ~Sensor();
204 
205  void setTime(const iTime &time);
206  bool SetLookDirection(const double v[3]);
207  bool SetRightAscensionDeclination(const double ra, const double dec);
208  bool SetUniversalGround(const double latitude, const double longitude,
209  bool backCheck = true);
210  bool SetUniversalGround(const double latitude, const double longitude,
211  const double radius, bool backCheck = true);
212  bool SetGround(const SurfacePoint &surfacePt, bool backCheck = true);
213  bool HasSurfaceIntersection() const;
214  void Coordinate(double p[3]) const;
215 
216  double UniversalLatitude() const;
217  Latitude GetLatitude() const;
218  double UniversalLongitude() const;
219  Longitude GetLongitude() const;
221 
222  Distance LocalRadius() const;
224  Distance LocalRadius(double lat, double lon);
225 
226  double PhaseAngle() const;
227  double EmissionAngle() const;
228  double IncidenceAngle() const;
229 
230  void LookDirection(double v[3]) const;
231 
232  double RightAscension();
233  double Declination();
234 
235  // Return vector between spacecraft and surface point in body-fixed
236  void SpacecraftSurfaceVector(double scSurfaceVector[3]) const;
237  double SlantDistance() const;
238  double LocalSolarTime();
239  double SolarDistance() const;
240  double SpacecraftAltitude();
241 
242  // Return local radius from dem
243 // Distance DemRadius(const SurfacePoint &pt);
244 // Distance DemRadius(const Latitude &lat, const Longitude
245 // &lon); bool HasElevationModel() {
246 
253  virtual double resolution() {
254  return 1.0;
255  };
256  void IgnoreElevationModel(bool ignore);
257 
259 
260  private:
261  // This version of DemRadius is for SetLookDirection ONLY. Do not call.
262  // DAC TODO Why is next declaration here? Don't move until I know
263 // double DemRadius(double lat, double lon);
264  void CommonInitialize(const std::string &demCube);
265 
266  SpiceDouble m_lookB[3];
267 
268  bool m_newLookB;
269  SpiceDouble m_ra;
270  SpiceDouble m_dec;
271  void computeRaDec();
272  bool SetGroundLocal(bool backCheck);
273  };
274 };
275 
276 #endif