|
Isis 3.0 Developer's Reference (API) |
Home |
00001 #ifndef Sensor_h 00002 #define Sensor_h 00003 00025 #include "Spice.h" 00026 #include "Cube.h" 00027 #include "ProjectionFactory.h" 00028 #include "Portal.h" 00029 #include "Interpolator.h" 00030 00031 namespace Isis { 00032 class Distance; 00033 class EllipsoidShape; 00034 class iTime; 00035 class Latitude; 00036 class Longitude; 00037 class ShapeModel; 00038 class SurfacePoint; 00039 class Target; 00040 00185 class Sensor : public Spice { 00186 public: 00187 Sensor(Pvl &lab); 00188 00189 virtual ~Sensor(); 00190 00191 void setTime(const iTime &time); 00192 bool SetLookDirection(const double v[3]); 00193 bool SetRightAscensionDeclination(const double ra, const double dec); 00194 bool SetUniversalGround(const double latitude, const double longitude, 00195 bool backCheck = true); 00196 bool SetUniversalGround(const double latitude, const double longitude, 00197 const double radius, bool backCheck = true); 00198 bool SetGround(const SurfacePoint &surfacePt, bool backCheck = true); 00199 bool HasSurfaceIntersection() const; 00200 void Coordinate(double p[3]) const; 00201 00202 double UniversalLatitude() const; 00203 Latitude GetLatitude() const; 00204 double UniversalLongitude() const; 00205 Longitude GetLongitude() const; 00206 SurfacePoint GetSurfacePoint() const; 00207 00208 Distance LocalRadius() const; 00209 Distance LocalRadius(Latitude lat, Longitude lon); 00210 Distance LocalRadius(double lat, double lon); 00211 00212 double PhaseAngle() const; 00213 double EmissionAngle() const; 00214 double IncidenceAngle() const; 00215 00216 void LookDirection(double v[3]) const; 00217 00218 double RightAscension(); 00219 double Declination(); 00220 00221 // Return vector between spacecraft and surface point in body-fixed 00222 void SpacecraftSurfaceVector(double scSurfaceVector[3]) const; 00223 double SlantDistance() const; 00224 double LocalSolarTime(); 00225 double SolarDistance() const; 00226 double SpacecraftAltitude(); 00227 00228 // Return local radius from dem 00229 // Distance DemRadius(const SurfacePoint &pt); 00230 // Distance DemRadius(const Latitude &lat, const Longitude 00231 // &lon); bool HasElevationModel() { 00232 00239 virtual double resolution() { 00240 return 1.0; 00241 }; 00242 void IgnoreElevationModel(bool ignore); 00243 00244 private: 00245 // This version of DemRadius is for SetLookDirection ONLY. Do not call. 00246 // DAC TODO Why is next declaration here? Don't move until I know 00247 // double DemRadius(double lat, double lon); 00248 void CommonInitialize(const std::string &demCube); 00249 00250 SpiceDouble m_lookB[3]; 00251 00252 bool m_newLookB; 00253 SpiceDouble m_ra; 00254 SpiceDouble m_dec; 00255 void computeRaDec(); 00256 bool SetGroundLocal(bool backCheck); 00257 }; 00258 }; 00259 00260 #endif