Isis 3.0 Developer's Reference (API) |
Home |
Class for computing sensor ground coordinates. More...
#include <Sensor.h>
Inherits Isis::Spice.
Inherited by Isis::Camera.
Public Member Functions | |
Sensor (Pvl &lab) | |
Constructs a Sensor object and loads SPICE kernels using information from the label object. | |
virtual | ~Sensor () |
Destroys the Sensor. | |
void | SetTime (const iTime &time) |
By setting the time you essential set the position of the spacecraft and body as indicated in the class Spice. | |
bool | SetLookDirection (const double v[3]) |
Sets the look direction of the spacecraft. | |
bool | SetRightAscensionDeclination (const double ra, const double dec) |
Given the ra/dec compute the look direction. | |
bool | SetUniversalGround (const double latitude, const double longitude, bool backCheck=true) |
This is the opposite routine for SetLookDirection. | |
bool | SetUniversalGround (const double latitude, const double longitude, const double radius, bool backCheck=true) |
This overloaded method has the opposite function as SetLookDirection. | |
bool | SetGround (const SurfacePoint &surfacePt, bool backCheck=true) |
This overloaded method has the opposite function as SetLookDirection. | |
bool | HasSurfaceIntersection () const |
Returns if the last call to either SetLookDirection or SetUniversalGround had a valid intersection with the target. | |
void | Coordinate (double p[3]) const |
Returns the x,y,z of the surface intersection in BodyFixed km. | |
double | UniversalLatitude () const |
Returns the planetocentric latitude at the surface intersection point in body fixed. | |
Latitude | GetLatitude () const |
Returns the latitude. | |
double | UniversalLongitude () const |
Returns a positive east, 0-360 domain longitude at the surface intersection point in body fixed. | |
Longitude | GetLongitude () const |
Returns the longitude. | |
SurfacePoint | GetSurfacePoint () const |
Returns the surface point (most efficient accessor). | |
Distance | LocalRadius () const |
Returns the local radius at the intersection point. | |
Distance | LocalRadius (Latitude lat, Longitude lon) |
Returns the local radius at the intersection point. | |
Distance | LocalRadius (double lat, double lon) |
Returns the local radius at the intersection point. | |
double | PhaseAngle () const |
Returns the phase angle in degrees. | |
double | EmissionAngle () const |
Returns the emission angle in degrees. | |
double | IncidenceAngle () const |
Returns the incidence angle in degrees. | |
void | LookDirection (double v[3]) const |
Returns the look direction in the camera coordinate system. | |
double | RightAscension () |
Returns the right ascension angle (sky longitude). | |
double | Declination () |
Returns the declination angle (sky latitude). | |
void | SpacecraftSurfaceVector (double scSurfaceVector[3]) const |
Return vector between spacecraft and surface point in body-fixed. | |
double | SlantDistance () const |
Return the distance between the spacecraft and surface point in kmv. | |
double | LocalSolarTime () |
Return the local solar time in hours. | |
double | SolarDistance () const |
Returns the distance between the sun and surface point in AU. | |
double | SpacecraftAltitude () |
Returns the distance from the spacecraft to the subspacecraft point in km. | |
Distance | DemRadius (const SurfacePoint &pt) |
Return local radius from dem. | |
Distance | DemRadius (const Latitude &lat, const Longitude &lon) |
Gets the radius from the DEM, if we have one. | |
bool | HasElevationModel () |
Indicates whether the Kernels PvlGroup has an ElevationModel or ShapeModel PvlKeyword value. | |
virtual double | Resolution () |
Virtual method that returns the pixel resolution of the sensor in meters/pix. | |
void | IgnoreElevationModel (bool ignore) |
This allows you to ignore the elevation model. | |
void | InstrumentPosition (double p[3]) const |
Returns the spacecraft position in body-fixed frame km units. | |
SpicePosition * | InstrumentPosition () const |
Accessor method for the instrument position. | |
void | SunPosition (double p[3]) const |
Fills the input vector with sun position information, in either body-fixed or J2000 reference frame and km units. | |
SpicePosition * | SunPosition () const |
Accessor method for the sun position. | |
double | TargetCenterDistance () const |
Calculates and returns the distance from the spacecraft to the target center. | |
Longitude | SolarLongitude () |
Returns the solar longitude. | |
void | InstrumentVelocity (double v[3]) const |
Returns the spacecraft velocity in body-fixed frame km/sec units. | |
iTime | Time () const |
Returns the ephemeris time in seconds which was used to obtain the spacecraft and sun positions. | |
void | Radii (Distance r[3]) const |
Returns the radii of the body in km. | |
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. | |
iTime | CacheStartTime () const |
Accessor method for the cache start time. | |
iTime | CacheEndTime () const |
Accessor method for the cache end time. | |
void | SubSpacecraftPoint (double &lat, double &lon) |
Returns the sub-spacecraft latitude/longitude in universal coordinates (0-360 positive east, ocentric). | |
void | SubSolarPoint (double &lat, double &lon) |
Returns the sub-solar latitude/longitude in universal coordinates (0-360 positive east, ocentric). | |
iString | Target () const |
Returns the string name of the target. | |
bool | IsSky () const |
Return if our target is the sky. | |
iTime | getClockTime (iString clockValue, int sclkCode=-1) |
This converts the spacecraft clock ticks value (clockValue) to an iTime. | |
SpiceDouble | GetDouble (const iString &key, int index=0) |
This returns a value from the NAIF text pool. | |
SpiceInt | GetInteger (const iString &key, int index=0) |
This returns a value from the NAIF text pool. | |
iString | GetString (const iString &key, int index=0) |
This returns a value from the NAIF text pool. | |
SpiceRotation * | BodyRotation () const |
Accessor method for the body rotation. | |
SpiceRotation * | InstrumentRotation () const |
Accessor method for the instrument rotation. | |
bool | HasKernels (Pvl &lab) |
Returns true if the kernel group has kernel files. | |
SpiceInt | NaifBodyCode () const |
This returns the NAIF body code of the target indicated in the labels. | |
SpiceInt | NaifSpkCode () const |
This returns the NAIF SPK code to use when reading from SPK kernels. | |
SpiceInt | NaifCkCode () const |
This returns the NAIF CK code to use when reading from CK kernels. | |
SpiceInt | NaifIkCode () const |
This returns the NAIF IK code to use when reading from instrument kernels. | |
SpiceInt | NaifSclkCode () const |
This returns the NAIF SCLK code to use when reading from instrument kernels. | |
PvlObject | getStoredNaifKeywords () const |
This returns the PvlObject that stores all of the requested Naif data and can be a replacement for furnishing text kernels. | |
Protected Types | |
enum | SpiceValueType { SpiceDoubleType, SpiceStringType, SpiceIntType, SpiceByteCodeType } |
Protected Member Functions | |
QVariant | readValue (iString key, SpiceValueType type, int index=0) |
This should be used for reading ALL text naif kernel values. | |
void | storeResult (iString name, SpiceValueType type, QVariant value) |
QVariant | getStoredResult (iString name, SpiceValueType type) |
void | storeValue (iString key, int index, SpiceValueType type, QVariant value) |
QVariant | readStoredValue (iString key, SpiceValueType type, int index) |
Protected Attributes | |
bool | p_hasIntersection |
This indicates if the surface point or look direction is valid. | |
Cube * | p_demCube |
The cube containing the model. | |
SurfacePoint * | p_surfacePoint |
Surface intersection point. | |
SpiceDouble | p_uB [3] |
This contains the sun position (u) in the bodyfixed reference frame (B). | |
SpiceDouble | p_BJ [3][3] |
This contains the transformation matrix from J2000 (J) to Body fixed (B). | |
Distance * | p_radii |
The radii of the target. |
Class for computing sensor ground coordinates.
The sensor class allows for the computation of parameters related to orbiting instruments. In particular, a time and look direction can be set and from those the ground coordinate (latitude/longitude) along with phase, incidence, and emission angles can be computed. Likewise, a ground point can be set and look direction can be computed. This class is derived from the Spice class.
An important capability of this class is the ability to use a surface model other than an ellipsoid when intersecting the look direction of the sensor with the planetary body. This allows for the generation of othrorectified products. The file containing the surface model is a cube and is obtained from the labels in the follow form:
Group = Kernels ElevationModel = file.cub EndGroup
enum Isis::Spice::SpiceValueType [protected, inherited] |
Isis::Sensor::Sensor | ( | Pvl & | lab | ) |
Constructs a Sensor object and loads SPICE kernels using information from the label object.
The constructor expects an Instrument and Kernels group to be in the labels (see Spice documentation).
lab | Label containing Instrument and Kernels groups. |
References _FILEINFO_, Isis::Cube::addCachingAlgorithm(), Isis::Interpolator::BiLinearType, Isis::PvlObject::FindGroup(), Isis::Cube::getLabel(), Isis::Cube::getPixelType(), Isis::Cube::getProjection(), Isis::PvlContainer::HasKeyword(), Isis::Cube::hasTable(), Isis::Interpolator::HotLine(), Isis::Interpolator::HotSample(), Isis::Projection::IsEquatorialCylindrical(), Isis::Spice::IsSky(), Isis::Distance::Kilometers, Isis::Interpolator::Lines(), Isis::iException::Message(), Isis::CubeManager::Open(), p_demCube, p_hasIntersection, p_surfacePoint, Isis::Interpolator::Samples(), table, Isis::PvlObject::Traverse, and Isis::iException::User.
Isis::Sensor::~Sensor | ( | ) | [virtual] |
Destroys the Sensor.
References p_demCube, and p_surfacePoint.
SpiceRotation* Isis::Spice::BodyRotation | ( | ) | const [inline, inherited] |
Accessor method for the body rotation.
Referenced by EmissionAngle(), Isis::CameraGroundMap::GetdXYdPoint(), Isis::RadarGroundMap::GetdXYdPosition(), Isis::CameraGroundMap::GetXY(), Isis::Camera::LocalPhotometricAngles(), LookDirection(), Isis::MiniRF::MiniRF(), PhaseAngle(), Isis::RadarGroundMap::RadarGroundMap(), SetLookDirection(), and SlantDistance().
iTime Isis::Spice::CacheEndTime | ( | ) | const [inherited] |
Accessor method for the cache end time.
iTime Isis::Spice::CacheStartTime | ( | ) | const [inherited] |
Accessor method for the cache start time.
void Isis::Sensor::Coordinate | ( | double | p[3] | ) | const |
Returns the x,y,z of the surface intersection in BodyFixed km.
p[] | The coordinate of the surface intersection |
References Isis::Displacement::GetKilometers(), Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), and p_surfacePoint.
Referenced by Isis::ControlPoint::ComputeApriori(), Isis::Camera::DetectorResolution(), EmissionAngle(), Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::Camera::LocalPhotometricAngles(), Isis::Camera::OffNadirAngle(), PhaseAngle(), SetLookDirection(), and SlantDistance().
void Isis::Spice::CreateCache | ( | iTime | startTime, | |
iTime | endTime, | |||
const int | size, | |||
double | tol | |||
) | [inherited] |
This method creates an internal cache of spacecraft and sun positions over a specified time range.
The SPICE kernels are then immediately unloaded. This allows multiple instances of the Spice object to be created as the NAIF toolkit can clash if multiple sets of SPICE kernels are loaded. Note that the cache size is specified as an argument. Therefore, times requested via SetTime() which are not directly loaded in the cache will be interpolated. If the instrument position is not cached and cacheSize is greater than 3, the tolerance is passed to the SpicePosition Memcache2HermiteCache() method.
Note: Before this method is called, the private variables p_cacheSize, p_startTime and p_endTime must be set. This is done in the Camera classes using the methods SetCacheSize() and SetStartEndEphemerisTime().
startTime | Starting ephemeris time to cache | |
endTime | Ending ephemeris time to cache | |
size | Size of the cache. | |
tol | Tolerance. |
Isis::iException::Programmer | - "Argument cacheSize must be greater than zero" | |
Isis::iException::Programmer | - "Argument startTime must be less than or equal to endTime" | |
Isis::iException::User | - "This instrument does not support time padding" |
References _FILEINFO_, Isis::NaifStatus::CheckErrors(), Isis::iTime::Et(), Isis::SpicePosition::GetSource(), Isis::Spice::InstrumentPosition(), Isis::SpicePosition::IsCached(), Isis::SpicePosition::LoadCache(), Isis::SpicePosition::Memcache, Isis::SpicePosition::Memcache2HermiteCache(), Isis::iException::Message(), Isis::iException::Programmer, Isis::SpicePosition::SetAberrationCorrection(), and Isis::iException::User.
Referenced by Isis::Camera::LoadCache(), Isis::MiniRF::MiniRF(), and Isis::VimsCamera::VimsCamera().
double Isis::Sensor::Declination | ( | ) |
Returns the declination angle (sky latitude).
Referenced by Isis::VimsSkyMap::Init(), Isis::Camera::RaDecRange(), and Isis::Camera::RaDecResolution().
Gets the radius from the DEM, if we have one.
References Isis::Buffer::DoubleBuffer(), Isis::Angle::GetDegrees(), Isis::Interpolator::Interpolate(), Isis::Projection::IsGood(), Isis::Distance::Meters, p_demCube, radius, Isis::Cube::read(), Isis::Portal::SetPosition(), Isis::Projection::SetUniversalGround(), Isis::Projection::WorldX(), and Isis::Projection::WorldY().
Distance Isis::Sensor::DemRadius | ( | const SurfacePoint & | pt | ) |
Return local radius from dem.
Gets the radius from the DEM, if we have one.
References Isis::SurfacePoint::GetLatitude(), and Isis::SurfacePoint::GetLongitude().
Referenced by Isis::Camera::GetLocalNormal(), LocalRadius(), and SetLookDirection().
double Isis::Sensor::EmissionAngle | ( | ) | const |
Returns the emission angle in degrees.
This does not use the surface model.
References Isis::Spice::BodyRotation(), Coordinate(), and Isis::Spice::InstrumentPosition().
Referenced by Isis::Camera::OffNadirAngle(), and Isis::ControlNetValidMeasure::ValidStandardOptions().
This converts the spacecraft clock ticks value (clockValue) to an iTime.
Use this when possible because naif calls (such as scs2e_c) cannot be called when not using naif.
References Isis::Spice::getStoredResult(), Isis::Spice::NaifSclkCode(), Isis::Spice::SpiceDoubleType, and Isis::Spice::storeResult().
Referenced by Isis::CTXCamera::CTXCamera(), Isis::DawnFcCamera::DawnFcCamera(), Isis::HiriseCamera::HiriseCamera(), Isis::VimsSkyMap::Init(), Isis::VimsGroundMap::Init(), Isis::LroNarrowAngleCamera::LroNarrowAngleCamera(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::MarciCamera::MarciCamera(), Isis::MdisCamera::MdisCamera(), Isis::MocNarrowAngleCamera::MocNarrowAngleCamera(), Isis::MocWideAngleCamera::MocWideAngleCamera(), Isis::ThemisIrCamera::ThemisIrCamera(), Isis::ThemisVisCamera::ThemisVisCamera(), Isis::VikingCamera::VikingCamera(), and Isis::VimsCamera::VimsCamera().
SpiceDouble Isis::Spice::GetDouble | ( | const iString & | key, | |
int | index = 0 | |||
) | [inherited] |
This returns a value from the NAIF text pool.
It is a static convience method
key | Name of NAIF keyword to obtain from the pool | |
index | If the keyword is an array, the element to obtain. Defaults to 0 |
Isis::iException::Io | - "Can not find key in instrument kernels." |
References Isis::Spice::readValue(), and Isis::Spice::SpiceDoubleType.
Referenced by Isis::ApolloMetricCamera::ApolloMetricCamera(), Isis::CTXCamera::CTXCamera(), Isis::DawnFcCamera::DawnFcCamera(), Isis::DawnVirCamera::DawnVirCamera(), Isis::HiresCamera::HiresCamera(), Isis::HrscCamera::HrscCamera(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), Isis::LroNarrowAngleCamera::LroNarrowAngleCamera(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::LroWideAngleCameraDistortionMap::LroWideAngleCameraDistortionMap(), Isis::LwirCamera::LwirCamera(), Isis::MarciCamera::MarciCamera(), Isis::MarciDistortionMap::MarciDistortionMap(), Isis::Mariner10Camera::Mariner10Camera(), Isis::MdisCamera::MdisCamera(), Isis::NirCamera::NirCamera(), Isis::TaylorCameraDistortionMap::SetDistortion(), Isis::LroNarrowAngleDistortionMap::SetDistortion(), Isis::Camera::SetFocalLength(), Isis::Camera::SetPixelPitch(), Isis::SsiCamera::SsiCamera(), and Isis::UvvisCamera::UvvisCamera().
This returns a value from the NAIF text pool.
It is a static convience
key | Name of NAIF keyword to obtain from the pool | |
index | If the keyword is an array, the element to obtain. Defaults to 0 |
Isis::iException::Io | - "Can not find key in instrument kernels |
References Isis::Spice::readValue(), and Isis::Spice::SpiceIntType.
Referenced by Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), and Isis::LroWideAngleCamera::LroWideAngleCamera().
Latitude Isis::Sensor::GetLatitude | ( | ) | const |
Returns the latitude.
References Isis::SurfacePoint::GetLatitude(), and p_surfacePoint.
Referenced by Isis::VimsGroundMap::Init().
Longitude Isis::Sensor::GetLongitude | ( | ) | const |
Returns the longitude.
References Isis::SurfacePoint::GetLongitude(), and p_surfacePoint.
Referenced by Isis::VimsGroundMap::Init().
PvlObject Isis::Spice::getStoredNaifKeywords | ( | ) | const [inherited] |
This returns the PvlObject that stores all of the requested Naif data and can be a replacement for furnishing text kernels.
QVariant Isis::Spice::getStoredResult | ( | iString | name, | |
SpiceValueType | type | |||
) | [protected, inherited] |
References Isis::EndianSwapper::Double(), Isis::Spice::readStoredValue(), Isis::Spice::SpiceByteCodeType, and Isis::Spice::SpiceDoubleType.
Referenced by Isis::Spice::getClockTime().
This returns a value from the NAIF text pool.
It is a static convience method
key | Name of NAIF keyword to obtain from the pool | |
index | If the keyword is an array, the element to obtain. Defaults to 0 |
Isis::iException::Io | - "Can not find key in instrument kernels." |
References Isis::Spice::readValue(), and Isis::Spice::SpiceStringType.
Referenced by Isis::MdisCamera::MdisCamera().
SurfacePoint Isis::Sensor::GetSurfacePoint | ( | ) | const |
Returns the surface point (most efficient accessor).
References p_surfacePoint.
bool Isis::Sensor::HasElevationModel | ( | ) | [inline] |
Indicates whether the Kernels PvlGroup has an ElevationModel or ShapeModel PvlKeyword value.
bool Isis::Spice::HasKernels | ( | Pvl & | lab | ) | [inherited] |
Returns true if the kernel group has kernel files.
lab | Label containing Instrument and Kernels groups. |
References Isis::PvlObject::FindGroup(), Isis::PvlContainer::HasKeyword(), Isis::PvlKeyword::Size(), and Isis::PvlObject::Traverse.
bool Isis::Sensor::HasSurfaceIntersection | ( | ) | const [inline] |
Returns if the last call to either SetLookDirection or SetUniversalGround had a valid intersection with the target.
If so then other methods such as Coordinate, UniversalLatitude, UniversalLongitude, etc can be used with confidence.
References p_hasIntersection.
Referenced by Isis::Camera::DetectorResolution(), Isis::Chip::Load(), Isis::VimsGroundMap::SetGround(), and Isis::Camera::SetImage().
void Isis::Sensor::IgnoreElevationModel | ( | bool | ignore | ) |
This allows you to ignore the elevation model.
ignore | True if the elevation model is ignored |
Referenced by Isis::ImagePolygon::Create(), and Isis::ImagePolygon::initCube().
double Isis::Sensor::IncidenceAngle | ( | ) | const |
Returns the incidence angle in degrees.
This does not use the surface model.
References Isis::Displacement::GetKilometers(), Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), p_surfacePoint, Isis::Spice::p_uB, and Isis::PI().
Referenced by Isis::ControlNetValidMeasure::ValidStandardOptions().
SpicePosition* Isis::Spice::InstrumentPosition | ( | ) | const [inline, inherited] |
Accessor method for the instrument position.
Referenced by Isis::Spice::CreateCache(), Isis::Camera::DetectorResolution(), EmissionAngle(), Isis::Camera::LocalPhotometricAngles(), Isis::LoHighCamera::LoHighCamera(), Isis::LoMediumCamera::LoMediumCamera(), Isis::Mariner10Camera::Mariner10Camera(), Isis::MiniRF::MiniRF(), Isis::Camera::OffNadirAngle(), PhaseAngle(), SetLookDirection(), Isis::Spice::SetTime(), SlantDistance(), and SpacecraftAltitude().
void Isis::Spice::InstrumentPosition | ( | double | p[3] | ) | const [inherited] |
Returns the spacecraft position in body-fixed frame km units.
p[] | Spacecraft position |
Isis::iException::Programmer | - "You must call SetTime first" |
References _FILEINFO_, Isis::SpicePosition::Coordinate(), Isis::iException::Message(), and Isis::iException::Programmer.
Referenced by Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::RadarGroundMap::GetdXYdPosition(), Isis::CameraGroundMap::GetdXYdPosition(), Isis::CameraGroundMap::GetXY(), Isis::RadarGroundMap::RadarGroundMap(), Isis::BundleAdjust::Solve(), Isis::BundleAdjust::SolveCholesky(), and Isis::BundleAdjust::SpVector().
SpiceRotation* Isis::Spice::InstrumentRotation | ( | ) | const [inline, inherited] |
Accessor method for the instrument rotation.
Referenced by Isis::BundleAdjust::Cmatrix(), Isis::DawnVirCamera::DawnVirCamera(), Isis::CameraGroundMap::GetdXYdOrientation(), Isis::CameraGroundMap::GetdXYdPoint(), Isis::CameraGroundMap::GetdXYdPosition(), Isis::CameraGroundMap::GetXY(), Isis::HiriseCamera::HiriseCamera(), Isis::HrscCamera::HrscCamera(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), LookDirection(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::Mariner10Camera::Mariner10Camera(), Isis::MocNarrowAngleCamera::MocNarrowAngleCamera(), Isis::MocWideAngleCamera::MocWideAngleCamera(), Isis::RadarGroundMap::RadarGroundMap(), SetLookDirection(), SetRightAscensionDeclination(), Isis::BundleAdjust::Solve(), and Isis::BundleAdjust::SolveCholesky().
void Isis::Spice::InstrumentVelocity | ( | double | v[3] | ) | const [inherited] |
Returns the spacecraft velocity in body-fixed frame km/sec units.
v[] | Spacecraft velocity |
References _FILEINFO_, Isis::iException::Message(), Isis::iException::Programmer, and Isis::SpicePosition::Velocity().
bool Isis::Spice::IsSky | ( | ) | const [inline, inherited] |
Return if our target is the sky.
Referenced by Isis::CameraGroundMap::GetXY(), Isis::Camera::LoadCache(), Sensor(), SetGround(), SetLookDirection(), and SetUniversalGround().
Distance Isis::Sensor::LocalRadius | ( | double | lat, | |
double | lon | |||
) |
Returns the local radius at the intersection point.
This is either the radius on the ellipsoid, the radius from the surface model passed into the constructor, or the radius set with SetUniversalGround.
References a, c, Isis::Angle::Degrees, DemRadius(), Isis::Distance::GetKilometers(), Isis::Distance::Kilometers, Isis::Spice::p_radii, and radius.
Returns the local radius at the intersection point.
This is either the radius on the ellipsoid, the radius from the surface model passed into the constructor, or the radius set with SetUniversalGround.
References Isis::Angle::GetDegrees(), and LocalRadius().
Distance Isis::Sensor::LocalRadius | ( | ) | const |
Returns the local radius at the intersection point.
This is either the radius on the ellipsoid, the radius from the surface model passed into the constructor, or the radius set with SetUniversalGround.
References Isis::SurfacePoint::GetLocalRadius(), and p_surfacePoint.
Referenced by LocalRadius(), Isis::Camera::NorthAzimuth(), Isis::ControlNetFilter::PointDistanceFilter(), Isis::ControlNetFilter::PointLatLonFilter(), Isis::RadarGroundMap::RadarGroundMap(), Isis::LineScanCameraGroundMap::SetGround(), Isis::CameraGroundMap::SetGround(), Isis::Camera::SetGround(), Isis::Camera::SetImage(), SetUniversalGround(), SpacecraftAltitude(), Isis::Camera::SpacecraftAzimuth(), and Isis::Camera::SunAzimuth().
double Isis::Sensor::LocalSolarTime | ( | ) |
Return the local solar time in hours.
References slat, slon, Isis::Spice::SubSolarPoint(), and UniversalLongitude().
void Isis::Sensor::LookDirection | ( | double | v[3] | ) | const |
Returns the look direction in the camera coordinate system.
v[] | The look vector |
References Isis::Spice::BodyRotation(), and Isis::Spice::InstrumentRotation().
SpiceInt Isis::Spice::NaifBodyCode | ( | ) | const [inherited] |
This returns the NAIF body code of the target indicated in the labels.
References _FILEINFO_, code, Isis::iException::Io, and Isis::iException::Message().
Referenced by Isis::Camera::SpkCenterId().
SpiceInt Isis::Spice::NaifCkCode | ( | ) | const [inherited] |
This returns the NAIF CK code to use when reading from CK kernels.
SpiceInt Isis::Spice::NaifIkCode | ( | ) | const [inherited] |
This returns the NAIF IK code to use when reading from instrument kernels.
Referenced by Isis::ApolloMetricCamera::ApolloMetricCamera(), Isis::CTXCamera::CTXCamera(), Isis::DawnFcCamera::DawnFcCamera(), Isis::DawnVirCamera::DawnVirCamera(), Isis::HiresCamera::HiresCamera(), Isis::HiriseCamera::HiriseCamera(), Isis::HrscCamera::HrscCamera(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), Isis::LoHighCamera::LoHighCamera(), Isis::LoMediumCamera::LoMediumCamera(), Isis::LroNarrowAngleCamera::LroNarrowAngleCamera(), Isis::LroWideAngleCamera::LroWideAngleCamera(), Isis::LwirCamera::LwirCamera(), Isis::MarciCamera::MarciCamera(), Isis::Mariner10Camera::Mariner10Camera(), Isis::MdisCamera::MdisCamera(), Isis::MiniRF::MiniRF(), Isis::MocNarrowAngleCamera::MocNarrowAngleCamera(), Isis::MocWideAngleCamera::MocWideAngleCamera(), Isis::NirCamera::NirCamera(), Isis::Camera::SetFocalLength(), Isis::Camera::SetPixelPitch(), Isis::SsiCamera::SsiCamera(), Isis::ThemisIrCamera::ThemisIrCamera(), Isis::ThemisVisCamera::ThemisVisCamera(), Isis::UvvisCamera::UvvisCamera(), Isis::VikingCamera::VikingCamera(), Isis::VimsCamera::VimsCamera(), and Isis::VoyagerCamera::VoyagerCamera().
SpiceInt Isis::Spice::NaifSclkCode | ( | ) | const [inherited] |
This returns the NAIF SCLK code to use when reading from instrument kernels.
Referenced by Isis::Spice::getClockTime().
SpiceInt Isis::Spice::NaifSpkCode | ( | ) | const [inherited] |
This returns the NAIF SPK code to use when reading from SPK kernels.
Referenced by Isis::Camera::SpkTargetId().
double Isis::Sensor::PhaseAngle | ( | ) | const |
Returns the phase angle in degrees.
This does not use the surface model.
References Isis::Spice::BodyRotation(), Coordinate(), dist, Isis::Displacement::GetKilometers(), Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), Isis::Spice::InstrumentPosition(), p_surfacePoint, Isis::Spice::p_uB, and Isis::PI().
void Isis::Spice::Radii | ( | Distance | r[3] | ) | const [inherited] |
Returns the radii of the body in km.
The radii are obtained from the appropriate SPICE kernel for the body specified by TargetName in the Instrument group of the labels.
r[] | Radii of the target in kilometers |
References Isis::Spice::p_radii.
Referenced by Isis::Camera::GroundRange(), Isis::MiniRF::MiniRF(), Isis::RadarGroundMap::RadarGroundMap(), and Isis::VimsGroundMap::SetGround().
QVariant Isis::Spice::readStoredValue | ( | iString | key, | |
SpiceValueType | type, | |||
int | index | |||
) | [protected, inherited] |
QVariant Isis::Spice::readValue | ( | iString | key, | |
SpiceValueType | type, | |||
int | index = 0 | |||
) | [protected, inherited] |
This should be used for reading ALL text naif kernel values.
This will read it from Naif if we're using naif/not attached kernels. If we have attached kernels and a NaifKeywords label object we will grab it from there instead. This allows us to not furnish kernels after spiceinit.
key | The naif keyword/value name | |
type | The naif value's primitive type | |
index | The index into the naif keyword array to read |
References _FILEINFO_, Isis::NaifStatus::CheckErrors(), Isis::iException::Io, Isis::iException::Message(), Isis::Spice::readStoredValue(), Isis::iException::Spice, Isis::Spice::SpiceDoubleType, Isis::Spice::SpiceIntType, Isis::Spice::SpiceStringType, and Isis::Spice::storeValue().
Referenced by Isis::Spice::GetDouble(), Isis::Spice::GetInteger(), and Isis::Spice::GetString().
virtual double Isis::Sensor::Resolution | ( | ) | [inline, virtual] |
Virtual method that returns the pixel resolution of the sensor in meters/pix.
Reimplemented in Isis::Camera.
Referenced by SetLookDirection().
double Isis::Sensor::RightAscension | ( | ) |
Returns the right ascension angle (sky longitude).
Referenced by Isis::VimsSkyMap::Init(), Isis::Camera::RaDecRange(), and Isis::Camera::RaDecResolution().
bool Isis::Sensor::SetGround | ( | const SurfacePoint & | surfacePt, | |
bool | backCheck = true | |||
) |
This overloaded method has the opposite function as SetLookDirection.
Instead of computing a point on the target, a point is set and the look direction is computed. Other methods such as lat/lon, phase, incidence, etc. can be used if this method returns a true.
backCheck | If true this method will check the lat/lon point to see if it falls on the backside of the target (or beyond the horizon). If false this test will not occur. Defaults to true |
References Isis::Spice::IsSky(), p_hasIntersection, and p_surfacePoint.
bool Isis::Sensor::SetLookDirection | ( | const double | v[3] | ) |
Sets the look direction of the spacecraft.
This routine will then attempt to intersect the look direction with the target. If successful you can utilize the methods which return the lat/lon, phase, incidence, etc. This routine returns false if the look direction does not intersect the target.
v[] | A look vector in camera coordinates. For example, (0,0,1) is usually the look direction out of the boresight of a camera. |
References a, Isis::Spice::BodyRotation(), c, Isis::NaifStatus::CheckErrors(), Coordinate(), d, DemRadius(), dist, Isis::E(), Isis::SurfacePoint::FromNaifArray(), Isis::Distance::GetKilometers(), Isis::Spice::InstrumentPosition(), Isis::Spice::InstrumentRotation(), Isis::Projection::IsEquatorialCylindrical(), Isis::Spice::IsSky(), Isis::IsSpecial(), MAX, p_hasIntersection, Isis::Spice::p_radii, p_surfacePoint, Isis::PI(), r1, r2, Resolution(), and tolerance.
Referenced by Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::RadarGroundMap::RadarGroundMap(), Isis::VimsSkyMap::SetFocalPlane(), Isis::VimsGroundMap::SetFocalPlane(), Isis::CameraGroundMap::SetFocalPlane(), and SetRightAscensionDeclination().
bool Isis::Sensor::SetRightAscensionDeclination | ( | const double | ra, | |
const double | dec | |||
) |
Given the ra/dec compute the look direction.
ra | Right ascension in degrees (sky longitude) | |
dec | Declination in degrees (sky latitude) |
Reimplemented in Isis::Camera.
References Isis::Spice::InstrumentRotation(), Isis::PI(), and SetLookDirection().
void Isis::Sensor::SetTime | ( | const iTime & | time | ) |
By setting the time you essential set the position of the spacecraft and body as indicated in the class Spice.
However, after this is invoked there will be no intersection point until SetLookDirection or SetUniversalGround is invoked.
time | Ephemeris time (read NAIF documentation for a detailed description) |
Reimplemented from Isis::Spice.
References p_hasIntersection.
Referenced by Isis::ApolloMetricCamera::ApolloMetricCamera(), Isis::DawnFcCamera::DawnFcCamera(), Isis::DawnVirCamera::DawnVirCamera(), Isis::HiresCamera::HiresCamera(), Isis::IdealCamera::IdealCamera(), Isis::VimsSkyMap::Init(), Isis::VimsGroundMap::Init(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), Isis::Camera::LoadCache(), Isis::LoHighCamera::LoHighCamera(), Isis::LoMediumCamera::LoMediumCamera(), Isis::LroNarrowAngleCamera::LroNarrowAngleCamera(), Isis::LwirCamera::LwirCamera(), Isis::Mariner10Camera::Mariner10Camera(), Isis::MdisCamera::MdisCamera(), Isis::MiniRF::MiniRF(), Isis::NirCamera::NirCamera(), Isis::ThemisVisCamera::SetBand(), Isis::VimsSkyMap::SetFocalPlane(), Isis::VimsGroundMap::SetFocalPlane(), Isis::SsiCamera::SsiCamera(), Isis::UvvisCamera::UvvisCamera(), Isis::VariableLineScanCameraDetectorMap::VariableLineScanCameraDetectorMap(), Isis::VikingCamera::VikingCamera(), and Isis::VoyagerCamera::VoyagerCamera().
bool Isis::Sensor::SetUniversalGround | ( | const double | latitude, | |
const double | longitude, | |||
const double | radius, | |||
bool | backCheck = true | |||
) |
This overloaded method has the opposite function as SetLookDirection.
Instead of computing a point on the target, a point is set and the look direction is computed. Other methods such as lat/lon, phase, incidence, etc. can be used if this method returns a true.
latitude | Planetocentric latitude in degrees | |
longitude | Positive east longitude in degrees | |
radius | Radius in meters | |
backCheck | If true this method will check the lat/lon point to see if it falls on the backside of the target (or beyond the horizon). If false this test will not occur. Defaults to true |
References Isis::Angle::Degrees, Isis::Spice::IsSky(), Isis::Distance::Meters, p_hasIntersection, p_surfacePoint, and Isis::SurfacePoint::SetSpherical().
bool Isis::Sensor::SetUniversalGround | ( | const double | latitude, | |
const double | longitude, | |||
bool | backCheck = true | |||
) |
This is the opposite routine for SetLookDirection.
Instead of computing a point on the target, a point is set and the look direction is computed. Other methods such as lat/lon, phase, incidence, etc. can be used if this method returns a true.
latitude | Planetocentric latitude | |
longitude | Positive east longitude | |
backCheck | If true this method will check the lat/lon point to see if it falls on the backside of the target (or beyond the horizon). If false this test will not occur. Defaults to true |
References Isis::Angle::Degrees, Isis::Spice::IsSky(), LocalRadius(), p_hasIntersection, p_surfacePoint, Isis::SurfacePoint::SetSpherical(), and Isis::SurfacePoint::Valid().
double Isis::Sensor::SlantDistance | ( | ) | const |
Return the distance between the spacecraft and surface point in kmv.
References Isis::Spice::BodyRotation(), Coordinate(), Isis::Displacement::GetKilometers(), Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), Isis::Spice::InstrumentPosition(), and p_surfacePoint.
Referenced by Isis::LineScanCameraGroundMap::FindSpacecraftDistance().
double Isis::Sensor::SolarDistance | ( | ) | const |
Returns the distance between the sun and surface point in AU.
References Isis::Displacement::GetKilometers(), Isis::SurfacePoint::GetX(), Isis::SurfacePoint::GetY(), Isis::SurfacePoint::GetZ(), p_surfacePoint, and Isis::Spice::SunPosition().
Longitude Isis::Spice::SolarLongitude | ( | ) | [inherited] |
Returns the solar longitude.
double Isis::Sensor::SpacecraftAltitude | ( | ) |
Returns the distance from the spacecraft to the subspacecraft point in km.
It uses the ellipsoid, not the shape model
References Isis::Distance::GetKilometers(), Isis::Spice::InstrumentPosition(), LocalRadius(), Isis::PI(), and Isis::Spice::SubSpacecraftPoint().
Referenced by Isis::Camera::LoadCache(), Isis::MiniRF::MiniRF(), and Isis::VimsCamera::VimsCamera().
void Isis::Sensor::SpacecraftSurfaceVector | ( | double | scSurfaceVector[3] | ) | const |
Return vector between spacecraft and surface point in body-fixed.
Return the vector between the spacecraft and surface point in body-fixed.
void Isis::Spice::storeResult | ( | iString | name, | |
SpiceValueType | type, | |||
QVariant | value | |||
) | [protected, inherited] |
References Isis::EndianSwapper::Double(), Isis::Spice::SpiceByteCodeType, Isis::Spice::SpiceDoubleType, and Isis::Spice::storeValue().
Referenced by Isis::Spice::getClockTime().
void Isis::Spice::storeValue | ( | iString | key, | |
int | index, | |||
SpiceValueType | type, | |||
QVariant | value | |||
) | [protected, inherited] |
References _FILEINFO_, Isis::PvlContainer::AddKeyword(), Isis::PvlKeyword::AddValue(), Isis::PvlObject::FindKeyword(), Isis::PvlObject::HasKeyword(), Isis::iException::Message(), Isis::PvlKeyword::Size(), Isis::iException::Spice, Isis::Spice::SpiceByteCodeType, Isis::Spice::SpiceDoubleType, Isis::Spice::SpiceIntType, and Isis::Spice::SpiceStringType.
Referenced by Isis::Spice::readValue(), and Isis::Spice::storeResult().
void Isis::Spice::SubSolarPoint | ( | double & | lat, | |
double & | lon | |||
) | [inherited] |
Returns the sub-solar latitude/longitude in universal coordinates (0-360 positive east, ocentric).
lat | Sub-solar latitude | |
lon | Sub-solar longitude |
Isis::iException::Programmer | - "You must call SetTime first." |
References _FILEINFO_, a, c, Isis::NaifStatus::CheckErrors(), dist, Isis::Distance::GetKilometers(), Isis::iException::Message(), Isis::Spice::p_radii, Isis::Spice::p_uB, Isis::PI(), and Isis::iException::Programmer.
Referenced by LocalSolarTime(), and Isis::Camera::SunAzimuth().
void Isis::Spice::SubSpacecraftPoint | ( | double & | lat, | |
double & | lon | |||
) | [inherited] |
Returns the sub-spacecraft latitude/longitude in universal coordinates (0-360 positive east, ocentric).
lat | Sub-spacecraft latitude | |
lon | Sub-spacecraft longitude |
Isis::iException::Programmer | - "You must call SetTime first." |
References _FILEINFO_, a, c, Isis::NaifStatus::CheckErrors(), Isis::SpicePosition::Coordinate(), dist, Isis::Distance::GetKilometers(), Isis::iException::Message(), Isis::Spice::p_radii, Isis::PI(), and Isis::iException::Programmer.
Referenced by SpacecraftAltitude(), and Isis::Camera::SpacecraftAzimuth().
SpicePosition* Isis::Spice::SunPosition | ( | ) | const [inline, inherited] |
Accessor method for the sun position.
Referenced by SolarDistance().
void Isis::Spice::SunPosition | ( | double | p[3] | ) | const [inherited] |
Fills the input vector with sun position information, in either body-fixed or J2000 reference frame and km units.
p[] | Sun position |
References _FILEINFO_, Isis::iException::Message(), Isis::Spice::p_uB, and Isis::iException::Programmer.
iString Isis::Spice::Target | ( | ) | const [inherited] |
double Isis::Spice::TargetCenterDistance | ( | ) | const [inherited] |
Calculates and returns the distance from the spacecraft to the target center.
References Isis::SpicePosition::Coordinate().
iTime Isis::Spice::Time | ( | ) | const [inherited] |
Returns the ephemeris time in seconds which was used to obtain the spacecraft and sun positions.
Referenced by Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::Camera::StartEndEphemerisTimes(), and Isis::VariableLineScanCameraDetectorMap::VariableLineScanCameraDetectorMap().
double Isis::Sensor::UniversalLatitude | ( | ) | const |
Returns the planetocentric latitude at the surface intersection point in body fixed.
References Isis::Angle::GetDegrees(), Isis::SurfacePoint::GetLatitude(), and p_surfacePoint.
Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::Chip::Load(), Isis::Camera::NorthAzimuth(), Isis::ControlNetFilter::PointDistanceFilter(), Isis::ControlNetFilter::PointLatLonFilter(), and Isis::Camera::SetRightAscensionDeclination().
double Isis::Sensor::UniversalLongitude | ( | ) | const |
Returns a positive east, 0-360 domain longitude at the surface intersection point in body fixed.
References Isis::Angle::GetDegrees(), Isis::SurfacePoint::GetLongitude(), and p_surfacePoint.
Referenced by Isis::ProjectionFactory::CreateForCube(), Isis::LineScanCameraGroundMap::FindFocalPlane(), Isis::Chip::Load(), LocalSolarTime(), Isis::ControlNetFilter::PointDistanceFilter(), Isis::ControlNetFilter::PointLatLonFilter(), and Isis::Camera::SetRightAscensionDeclination().
SpiceDouble Isis::Spice::p_BJ[3][3] [protected, inherited] |
This contains the transformation matrix from J2000 (J) to Body fixed (B).
Recall that the transpose of this matrix JB will convert from body-fixed to J2000. It is left in protected space so that conversions between double and SpiceDouble do not have to occur in inheriting classes.
Cube* Isis::Sensor::p_demCube [protected] |
The cube containing the model.
Referenced by DemRadius(), Sensor(), and ~Sensor().
bool Isis::Sensor::p_hasIntersection [protected] |
This indicates if the surface point or look direction is valid.
It is made protected so inheriting classes can change it if necessary.
Referenced by HasSurfaceIntersection(), Sensor(), SetGround(), Isis::Camera::SetGround(), Isis::Camera::SetImage(), SetLookDirection(), Isis::Camera::SetRightAscensionDeclination(), SetTime(), SetUniversalGround(), and Isis::Camera::SetUniversalGround().
Distance* Isis::Spice::p_radii [protected, inherited] |
The radii of the target.
Referenced by Isis::Camera::BasicMapping(), LocalRadius(), Isis::Spice::Radii(), SetLookDirection(), Isis::Spice::SubSolarPoint(), Isis::Spice::SubSpacecraftPoint(), and Isis::Spice::~Spice().
SurfacePoint* Isis::Sensor::p_surfacePoint [protected] |
Surface intersection point.
Referenced by Coordinate(), GetLatitude(), Isis::Camera::GetLocalNormal(), GetLongitude(), GetSurfacePoint(), IncidenceAngle(), Isis::Camera::LocalPhotometricAngles(), LocalRadius(), PhaseAngle(), Sensor(), SetGround(), SetLookDirection(), SetUniversalGround(), SlantDistance(), SolarDistance(), UniversalLatitude(), UniversalLongitude(), and ~Sensor().
SpiceDouble Isis::Spice::p_uB[3] [protected, inherited] |
This contains the sun position (u) in the bodyfixed reference frame (B).
It is left protected so that conversions between double and SpiceDouble do not have to occur in inheriting classes. Units are km
Referenced by IncidenceAngle(), Isis::Camera::LocalPhotometricAngles(), PhaseAngle(), Isis::Spice::SetTime(), Isis::Spice::SubSolarPoint(), and Isis::Spice::SunPosition().