USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::SpiceRotation Class Reference

Obtain SPICE rotation information for a body. More...

#include <SpiceRotation.h>

Collaboration diagram for Isis::SpiceRotation:
Collaboration graph

Public Types

enum  Source {
  Spice, Nadir, Memcache, PolyFunction,
  PolyFunctionOverSpice
}
 The rotation can come from one of 3 places for an Isis cube. More...
 
enum  PartialType { WRT_RightAscension, WRT_Declination, WRT_Twist }
 This enumeration indicates whether the partial derivative is taken with respect to Right Ascension, Declination, or Twist. More...
 
enum  DownsizeStatus { Yes, Done, No }
 
enum  NaifFrameType {
  INERTL = 1, PCK = INERTL + 1, CK = PCK + 1, TK = CK + 1,
  DYN = TK + 1
}
 

Public Member Functions

 SpiceRotation (int frameCode)
 Construct an empty SpiceRotation class using a valid Naif frame code to set up for getting rotation from Spice kernels.
 
 SpiceRotation (int frameCode, int targetCode)
 Construct an empty SpiceRotation object using valid Naif frame code and.
 
 SpiceRotation (const SpiceRotation &rotToCopy)
 Construct a SpiceRotation object by copying from an existing one.
 
virtual ~SpiceRotation ()
 Destructor for SpiceRotation object.
 
void SetFrame (int frameCode)
 Change the frame to the given frame code.
 
int Frame ()
 Accessor method that returns the frame code.
 
void SetTimeBias (double timeBias)
 Apply a time bias when invoking SetEphemerisTime method.
 
void SetEphemerisTime (double et)
 Return the J2000 to reference frame quaternion at given time.
 
double EphemerisTime () const
 Accessor method to get current ephemeris time.
 
std::vector< double > GetCenterAngles ()
 Return the camera angles at the center time of the observation.
 
std::vector< double > Matrix ()
 Return the full rotation TJ as a matrix.
 
std::vector< double > AngularVelocity ()
 Accessor method to get the angular velocity.
 
std::vector< double > ConstantRotation ()
 Return the constant 3x3 rotation TC matrix as a quaternion.
 
std::vector< double > & ConstantMatrix ()
 Return the constant 3x3 rotation TC matrix as a vector of length 9.
 
void SetConstantMatrix (std::vector< double > constantMatrix)
 Set the constant 3x3 rotation TC matrix from a vector of length 9.
 
std::vector< double > TimeBasedRotation ()
 Return time-based 3x3 rotation CJ matrix as a quaternion.
 
std::vector< double > & TimeBasedMatrix ()
 Return time-based 3x3 rotation CJ matrix as a vector of length 9.
 
void SetTimeBasedMatrix (std::vector< double > timeBasedMatrix)
 Set the time-based 3x3 rotation CJ matrix from a vector of length 9.
 
std::vector< double > J2000Vector (const std::vector< double > &rVec)
 Given a direction vector in the reference frame, return a J2000 direction.
 
std::vector< double > ReferenceVector (const std::vector< double > &jVec)
 Given a direction vector in J2000, return a reference frame direction.
 
std::vector< double > EvaluatePolyFunction ()
 
void MinimizeCache (DownsizeStatus status)
 Set the downsize status to minimize cache.
 
void LoadCache (double startTime, double endTime, int size)
 Cache J2000 rotation quaternion over a time range.
 
void LoadCache (double time)
 Cache J2000 to frame rotation for a time.
 
void LoadCache (Table &table)
 Cache J2000 rotations using a table file.
 
Table LineCache (const QString &tableName)
 Return a table with J2000 to reference rotations.
 
void ReloadCache ()
 Cache J2000 rotation over existing cached time range using polynomials.
 
Table Cache (const QString &tableName)
 Return a table with J2000 to reference rotations.
 
void CacheLabel (Table &table)
 Add labels to a SpiceRotation table.
 
void LoadTimeCache ()
 Load the time cache.
 
std::vector< double > Angles (int axis3, int axis2, int axis1)
 Return the camera angles (right ascension, declination, and twist) for the time-based matrix CJ.
 
bool IsCached () const
 Checks if the cache is empty.
 
void SetPolynomial (const Source type=PolyFunction)
 Set the coefficients of a polynomial fit to each of the three camera angles for the time period covered by the cache, angle = a + bt + ct**2, where t = (time - p_baseTime)/ p_timeScale.
 
void SetPolynomial (const std::vector< double > &abcAng1, const std::vector< double > &abcAng2, const std::vector< double > &abcAng3, const Source type=PolyFunction)
 Set the coefficients of a polynomial fit to each of the three camera angles for the time period covered by the cache, angle = c0 + c1*t + c2*t**2 + ...
 
void GetPolynomial (std::vector< double > &abcAng1, std::vector< double > &abcAng2, std::vector< double > &abcAng3)
 Return the coefficients of a polynomial fit to each of the three camera angles for the time period covered by the cache, angle = c0 + c1*t + c2*t**2 + ...
 
void SetPolynomialDegree (int degree)
 Set the degree of the polynomials to be fit to the three camera angles for the time period covered by the cache, angle = c0 + c1*t + c2*t**2 + ...
 
Source GetSource ()
 Accessor method to get the rotation source.
 
void SetSource (Source source)
 Resets the source of the rotation to the given value.
 
void ComputeBaseTime ()
 Compute the base time using cached times.
 
double GetBaseTime ()
 Accessor method to get the rotation base time.
 
double GetTimeScale ()
 Accessor method to get the rotation time scale.
 
void SetOverrideBaseTime (double baseTime, double timeScale)
 Set an override base time to be used with observations on scanners to allow all images in an observation to use the save base time and polynomials for the angles.
 
double DPolynomial (const int coeffIndex)
 Evaluate the derivative of the fit polynomial defined by the given coefficients with respect to the coefficient at the given index, at the current time.
 
std::vector< double > ToReferencePartial (std::vector< double > &lookJ, PartialType partialVar, int coeffIndex)
 Compute the derivative with respect to one of the coefficients in the angle polynomial fit equation of a vector rotated from J2000 to a reference frame.
 
double WrapAngle (double compareAngle, double angle)
 Wrap the input angle to keep it within 2pi radians of the angle to compare.
 
void SetAxes (int axis1, int axis2, int axis3)
 Set the axes of rotation for decomposition of a rotation matrix into 3 angles.
 
std::vector< double > GetFullCacheTime ()
 Return full listing (cache) of original time coverage requested.
 
void FrameTrace (double et)
 Compute frame trace chain from target frame to J2000.
 
std::vector< int > ConstantFrameChain ()
 Accessor method to get the frame chain for the constant part of the rotation (ends in target)
 
std::vector< int > TimeFrameChain ()
 Accessor method to get the frame chain for the rotation (begins in J2000).
 
void InitConstantRotation (double et)
 Initialize the constant rotation.
 
void DCJdt (std::vector< double > &dRJ)
 Compute the derivative of the rotation p_CJ with respect to time.
 
bool HasAngularVelocity ()
 Checks whether the rotation has angular velocities.
 
void ComputeAv ()
 Compute the angular velocity from the time-based functions fit to the pointing angles This method computes omega = angular velocity matrix, and extracts the angular velocity.
 
std::vector< double > Extrapolate (double timeEt)
 Extrapolate pointing for a given time assuming a constant angular velocity.
 

Protected Member Functions

void SetFullCacheParameters (double startTime, double endTime, int cacheSize)
 Set the full cache time parameters.
 
void SetEphemerisTimeMemcache ()
 
void SetEphemerisTimeNadir ()
 
void SetEphemerisTimeSpice ()
 
void SetEphemerisTimePolyFunction ()
 
void SetEphemerisTimePolyFunctionOverSpice ()
 

Protected Attributes

std::vector< double > p_cacheTime
 iTime for corresponding rotation
 
std::vector< std::vector
< double > > 
p_cache
 Cached rotations, stored as rotation matrix from J2000 to 1st constant frame (CJ) or coefficients of polynomial fit to rotation angles.
 
int p_degree
 Degree of fit polynomial for angles.
 
int p_axis1
 Axis of rotation for angle 1 of rotation.
 
int p_axis2
 Axis of rotation for angle 2 of rotation.
 
int p_axis3
 Axis of rotation for angle 3 of rotation.
 

Private Member Functions

std::vector< double > StateTJ ()
 State matrix (6x6) for rotating state vectors from J2000 to target frame.
 

Private Attributes

std::vector< int > p_constantFrames
 Chain of Naif frame codes in constant rotation TC.
 
std::vector< int > p_timeFrames
 
 Chain of Naif frame codes in time-based 

rotation CJ.

 
double p_timeBias
 iTime bias when reading kernels
 
double p_et
 Current ephemeris time.
 
Quaternion p_quaternion
 
            Quaternion for J2000 to reference

rotation at et

 
bool p_matrixSet
 Flag indicating p_TJ has been set.
 
Source p_source
 The source of the rotation data.
 
int p_axisP
 
                        The axis defined by the spacecraft

vector for defining a nadir rotation

 
int p_axisV
 
                        The axis defined by the velocity

vector for defining a nadir rotation

 
int p_targetCode
 For computing Nadir rotation only.
 
double p_baseTime
 Base time used in fit equations.
 
double p_timeScale
 Time scale used in fit equations.
 
bool p_degreeApplied
 
               Flag indicating whether or not a polynomial

of degree p_degree has been created and used to fill the cache

 
std::vector< double > p_coefficients [3]
 Coefficients defining functions fit to 3 pointing angles.
 
bool p_noOverride
 Flag to compute base time;.
 
double p_overrideBaseTime
 Value set by caller to override computed base time.
 
double p_overrideTimeScale
 Value set by caller to override computed time scale.
 
DownsizeStatus p_minimizeCache
 Status of downsizing the cache (set to No to ignore)
 
double p_fullCacheStartTime
 Initial requested starting time of cache.
 
double p_fullCacheEndTime
 Initial requested ending time of cache.
 
int p_fullCacheSize
 Initial requested cache size.
 
std::vector< double > p_TC
 
        Rotation matrix from first constant rotation 

(after all time-based rotations in frame chain from J2000 to target) to the target frame

 
std::vector< double > p_CJ
 
   Rotation matrix from J2000 to first constant 

rotation after all the time-based rotations in frame chain from

 
std::vector< std::vector
< double > > 
p_cacheAv
 Cached angular velocities for corresponding rotactions in p_cache.
 
std::vector< double > p_av
 Angular velocity for rotation at time p_et.
 
bool p_hasAngularVelocity
 
          Flag indicating whether the rotation 

includes angular velocity

 

Detailed Description

Obtain SPICE rotation information for a body.

This class will obtain the rotation from J2000 to a particular reference frame, for example the rotation from J2000 to MOC NA.

It is essentially used to convert position vectors from one frame to another, making it is a C++ wrapper to the NAIF routines pxform_c and mxv or mtxv. Therefore, appropriate NAIF kernels are expected to be loaded prior to using this class. A position can be returned in either the J2000 frame or the selected reference frame. See NAIF required reading for more information regarding this subject at ftp://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/ascii/individual_docs/spk.req

An important functionality of this class is the ability to cache the rotations so they do not have to be constantly read from the NAIF kernels and they can be more conveniently updated. Once the data is cached, the NAIF kernels can be unloaded. If the rotation has a fixed part and a time- based part, the rotation is computed and stored in those two parts.

Author
2005-12-01 Debbie A. Cook
History:

2005-12-01 Debbie A. Cook Original Version modified from SpicePosition class by Jeff Anderson

2006-03-23 Jeff Anderson modified SetEphemerisTime to return if the time did not change to improve speed.

2006-10-18 Debbie A. Cook Added method, WrapAngle, to wrap angles around 2 pi

2007-12-05 Debbie A. Cook added method SetPolynomialDegree to allow the degree of the polynomials fit to the camera angles to be changed. Also changed the polynomial from a fixed 2nd order polynomial to an nth degree polynomial with one independent variable. PartialType was revised and the calls to SetReferencePartial (has an added argument, coefficient index) and DPolynomial (argument type changed to int) were revised. The function was changed from Parabola to Polynomial1Variable, now called PolynomialUnivariate. New methods GetBaseTime and SetOverrideBaseTime were added

2008-02-15 Debbie A. Cook added a new error message to handle the case where the Naif reference frame code is not recognized.

2008-06-18 Unknown - Fixed documentation, added NaifStatus calls

2008-11-26 Debbie A. Cook Added method to set axes of rotation. Default axes are still 3,1,3 so existing software will not be affected by the change. Also added timeScale to the the class and made some parameters protected instead of private so they are available to inheriting classes.

2008-12-12 Debbie A. Cook Added method to return frame code

2009-01-26 Debbie A. Cook Added wrap of 3rd camera angle when crossing +-180

2009-04-21 Debbie A. Cook Added methods MinimizeCache and LoadTimeCache, variable p_minimizeCache, and enum constants DownsizeStatus

2009-06-29 Debbie A. Cook Fixed memory overwrite problem in LoadTimeCache when reading a type 3 ck

2009-07-24 Debbie A. Cook Removed downsizing for Nadir instrument pointing tables (LoadTimeCache) so that radar instruments will work. Current downsizing code requires sclk and radar has no sclk.

2009-10-01 Debbie A. Cook Divided the rotation into a constant (in time) part and a time-based part and added keywords listing the frame chains for both the constant part and the time-based part.

2009-10-09 Debbie A. Cook Added angular velocity when it is available

2009-10-30 Unknown - Modified J2000Vector and ReferenceVector to work on either length 3 vectors (position only) or lenght 6 vectors (position and velocity) and added private method StateTJ()

2009-12-03 Debbie A. Cook Modified tests in LoadTimeCache to allow observation to cross segment boundary for LRO

2010-03-19 Debbie A. Cook Revised ReloadCache including removing obsolete arguments. Added initialization of members p_fullCacheStartTime, p_fullCacheEndTime, and p_fullCacheSize. Added these same values to the table label in method Cache and the reading of these values to the method LoadCache(table). Improved error message in FrameTrace. Also corrected a comment in StateTJ

2010-09-23 Debbie A. Cook Revised to write out line cache for updated pointing when cache size is 1. If the original pointing had an angular velocity in this case, the original angular velocity is written out along with the updated quaternion. Also added method Extrapolate, to extrapolate pointing assuming a constant angular velocity. This method was designed to compute the pointing at the start and end of the exposure for framing cameras to create a ck that would cover a single framing observation.

2010-12-22 Debbie A. Cook Added new method SetFullCacheParameters to upgrade appjit to current instrument Rotation group labels.

2011-02-17 Debbie A. Cook Fixed bug in method LineCache and fixed computation of angular velocity in method DCJdt (derivative was with respect to scaled et instead of et)

2011-02-22 Debbie A. Cook - Corrected Extrapolation method

2011-03-25 Debbie A. Cook - Added method GetCenterAngles()

2011-07-20 Kris J Becker - Modified SpiceRotation::LoadCache(Table &table) to be reentrant. This mod was necessitated by the Dawn VIR instrument.

2012-05-28 Debbie A. Cook - Programmer notes - A new interpolation algorithm, PolyFunctionOverSpice, was added and new supporting methods: SetEphemerisTimePolyOverSpice, SetEphemerisTimeSpice, SetEphemerisTimeNadir, SetEphemerisTimeMemcache, and SetEphemerisTimePolyFunction. PolyFunctionOverSpice is never output, but is converted to a line cache and reduced. Methods LineCache and ReloadCache were modified to do the reduction and a copy constructor was added to support the reduction. Also an argument was added to SetPolynomial methods for function type, since PolyFunction is no longer the only function supported. These changes help the BundleAdjust applications to better fit line scan images where the pointing was not modeled well with a regular polynomial.

2012-10-25 Jeannie Backer - Brought class closer to Isis3 standards: Ordered includes in cpp file, replaced quotation marks with angle braces in 3rd party includes, fixed history indentation and line length. References #1181.

2013-03-27 Jeannie Backer - Added methods for MsiCamera. Brought class closer to Isis3 standards: moved method implementation to cpp file, fixed documentation. References #1248.

2013-11-12 Ken Edmundson Programmers notes - Commented out cout debug statements on lines 637 and 642 that appeared onscreen during jigsaw runs when images are updated. References #1521.

2014-03-11 Tracie Sucharski - In the LoadTimeCache method, do not throw error if if first segment in kernel is not type 3 or 5. As long as the segment needed is type 3 or 5, we're ok. This was changed for New Horizons which had ck's with both type 2 and type 3 segments.

2014-03-11 Stuart Sides - Programmers notes - Fixed a bug in the copy constructor that was going out of array bounds.

Todo:
Downsize using Hermite cubic spline and allow Nadir tables to be downsized again.

Definition at line 189 of file SpiceRotation.h.

Member Enumeration Documentation

This enumeration indicates whether the partial derivative is taken with respect to Right Ascension, Declination, or Twist.

Enumerator
WRT_RightAscension 

With respect to Right Ascension.

WRT_Declination 

With respect to Declination.

WRT_Twist 

With respect to Twist.

Definition at line 223 of file SpiceRotation.h.

The rotation can come from one of 3 places for an Isis cube.

The class expects function to be after Memcache.

Enumerator
Spice 

Directly from the kernels.

Nadir 

Nadir pointing.

Memcache 

From cached table.

PolyFunction 

From nth degree polynomial.

PolyFunctionOverSpice 

Kernels plus nth degree.

Definition at line 212 of file SpiceRotation.h.

Constructor & Destructor Documentation

Isis::SpiceRotation::SpiceRotation ( int  frameCode)

Construct an empty SpiceRotation class using a valid Naif frame code to set up for getting rotation from Spice kernels.

See required reading ftp://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/ascii/individual_docs/naif_ids.req

Parameters
frameCodeValid naif frame code.

Definition at line 45 of file SpiceRotation.cpp.

References p_av, p_axis1, p_axis2, p_axis3, p_CJ, p_constantFrames, p_degree, p_degreeApplied, p_et, p_fullCacheEndTime, p_fullCacheSize, p_fullCacheStartTime, p_hasAngularVelocity, p_matrixSet, p_minimizeCache, p_noOverride, p_source, p_timeBias, and Spice.

Isis::SpiceRotation::SpiceRotation ( int  frameCode,
int  targetCode 
)

Construct an empty SpiceRotation object using valid Naif frame code and.

body code to set up for computing nadir rotation. See required reading ftp://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/ascii/individual_docs/naif_ids.req

Parameters
frameCodeValid naif frame code.
targetCodeValid naif body code.

Definition at line 74 of file SpiceRotation.cpp.

References _FILEINFO_, Isis::NaifStatus::CheckErrors(), Isis::IException::Io, Nadir, p_av, p_axis1, p_axis2, p_axis3, p_axisP, p_axisV, p_CJ, p_constantFrames, p_degree, p_degreeApplied, p_et, p_fullCacheEndTime, p_fullCacheSize, p_fullCacheStartTime, p_hasAngularVelocity, p_matrixSet, p_minimizeCache, p_noOverride, p_source, p_targetCode, p_timeBias, and Isis::toString().

Isis::SpiceRotation::~SpiceRotation ( )
virtual

Destructor for SpiceRotation object.

Definition at line 169 of file SpiceRotation.cpp.

Member Function Documentation

std::vector< double > Isis::SpiceRotation::Angles ( int  axis3,
int  axis2,
int  axis1 
)

Return the camera angles (right ascension, declination, and twist) for the time-based matrix CJ.

Definition at line 806 of file SpiceRotation.cpp.

References Isis::NaifStatus::CheckErrors(), and p_CJ.

Referenced by DCJdt(), GetCenterAngles(), SetPolynomial(), and ToReferencePartial().

std::vector< double > Isis::SpiceRotation::AngularVelocity ( )

Accessor method to get the angular velocity.

Definition at line 824 of file SpiceRotation.cpp.

References p_av.

Referenced by Isis::MiniRF::MiniRF(), and ReloadCache().

Table Isis::SpiceRotation::Cache ( const QString &  tableName)

Return a table with J2000 to reference rotations.

Return a table containing the cached pointing with the given name. The table will have either five columns (for a list cache) of J2000 to reference quaternions and times, eight columns (if angular velocity is available), or three columns (for a coefficient cache), of J2000 to reference frame rotation angles defined by coefficients of a polynomial function (see SetPolynommial). In the coefficient cache the last row of the table is the base time, time scale, and polynomial degree. Note: In the case of the coefficient cache, the angular velocity is not written to the table since it can be calculated from the polynomials.

Parameters
tableNameName of the table to create and return

Definition at line 634 of file SpiceRotation.cpp.

References _FILEINFO_, CacheLabel(), Isis::TableField::Double, Isis::Quaternion::GetQuaternion(), LineCache(), LoadTimeCache(), Memcache, p_baseTime, p_cache, p_cacheAv, p_cacheTime, p_coefficients, p_degree, p_fullCacheSize, p_hasAngularVelocity, p_minimizeCache, p_source, p_timeScale, PolyFunction, PolyFunctionOverSpice, and Isis::IException::Programmer.

Referenced by LineCache().

void Isis::SpiceRotation::CacheLabel ( Table table)

Add labels to a SpiceRotation table.

Return a table containing the labels defining the rotation.

Parameters
TableTable to receive labels

Definition at line 746 of file SpiceRotation.cpp.

References Isis::NaifStatus::CheckErrors(), Isis::Blob::Label(), p_constantFrames, p_fullCacheEndTime, p_fullCacheSize, p_fullCacheStartTime, p_TC, p_timeFrames, and Isis::toString().

Referenced by Cache().

void Isis::SpiceRotation::ComputeAv ( )

Compute the angular velocity from the time-based functions fit to the pointing angles This method computes omega = angular velocity matrix, and extracts the angular velocity.

See comments in the Naif Spicelib routine xf2rav_c.c.

      _                     _
     |                       |
     |   0    -av[2]  av[1]  |
     |                       |

omega = | av[2] 0 -av[0] | | | | -av[1] av[0] 0 | |_ _|

Definition at line 1865 of file SpiceRotation.cpp.

References _FILEINFO_, Isis::NaifStatus::CheckErrors(), DCJdt(), p_av, p_CJ, p_source, PolyFunction, and Isis::IException::Programmer.

void Isis::SpiceRotation::ComputeBaseTime ( )

Compute the base time using cached times.

Definition at line 1153 of file SpiceRotation.cpp.

References p_baseTime, p_cacheTime, p_noOverride, p_overrideBaseTime, p_overrideTimeScale, and p_timeScale.

Referenced by SetPolynomial().

std::vector< int > Isis::SpiceRotation::ConstantFrameChain ( )

Accessor method to get the frame chain for the constant part of the rotation (ends in target)

Returns
The frame chain for the constant part of the rotation.

Definition at line 833 of file SpiceRotation.cpp.

References p_constantFrames.

std::vector< double > & Isis::SpiceRotation::ConstantMatrix ( )

Return the constant 3x3 rotation TC matrix as a vector of length 9.

Returns
Constant rotation matrix, TC

Definition at line 1787 of file SpiceRotation.cpp.

References p_TC.

std::vector< double > Isis::SpiceRotation::ConstantRotation ( )

Return the constant 3x3 rotation TC matrix as a quaternion.

Returns
Constant rotation quaternion, TC

Definition at line 1773 of file SpiceRotation.cpp.

References Isis::NaifStatus::CheckErrors(), and p_TC.

void Isis::SpiceRotation::DCJdt ( std::vector< double > &  dCJ)

Compute the derivative of the rotation p_CJ with respect to time.

The derivative is computed based on p_CJ = [angle3] [angle2] [angle1] p_CJ = [angle3] [angle2] [angle1] axis3 axis2 axis1

Parameters
[out]dCJDerivative of p_CJ

Definition at line 1893 of file SpiceRotation.cpp.

References Angles(), Isis::NaifStatus::CheckErrors(), p_axis1, p_axis2, p_axis3, p_baseTime, p_coefficients, p_degree, p_et, p_timeScale, and Isis::BasisFunction::SetCoefficients().

Referenced by ComputeAv().

double Isis::SpiceRotation::DPolynomial ( const int  coeffIndex)

Evaluate the derivative of the fit polynomial defined by the given coefficients with respect to the coefficient at the given index, at the current time.

Parameters
coeffIndexThe index of the coefficient to differentiate
Returns
The derivative evaluated at the current time

Definition at line 1193 of file SpiceRotation.cpp.

References _FILEINFO_, p_baseTime, p_degree, p_et, p_timeScale, and Isis::IException::Programmer.

Referenced by ToReferencePartial().

double Isis::SpiceRotation::EphemerisTime ( ) const

Accessor method to get current ephemeris time.

Returns
The current ephemeris time.

Definition at line 256 of file SpiceRotation.cpp.

References p_et.

std::vector< double > Isis::SpiceRotation::Extrapolate ( double  timeEt)

Extrapolate pointing for a given time assuming a constant angular velocity.

The pointing and angular velocity at the current time will be used to extrapolate pointing at the input time. If angular velocity does not exist, the value at the current time will be output.

Parameters
[in]timeEtThe time of the pointing to be extrapolated
[out]Aquaternion defining the rotation at the input time

Definition at line 1996 of file SpiceRotation.cpp.

References Isis::NaifStatus::CheckErrors(), p_av, p_CJ, p_et, and p_hasAngularVelocity.

int Isis::SpiceRotation::Frame ( )

Accessor method that returns the frame code.

This is the first value of the constant frames member variable.

Returns
An integer value indicating the frame code.

Definition at line 186 of file SpiceRotation.cpp.

References p_constantFrames.

void Isis::SpiceRotation::FrameTrace ( double  et)

Compute frame trace chain from target frame to J2000.

Definition at line 1648 of file SpiceRotation.cpp.

References _FILEINFO_, Isis::NaifStatus::CheckErrors(), Nadir, p_constantFrames, p_source, p_timeFrames, Isis::IException::Programmer, and Isis::toString().

Referenced by InitConstantRotation().

double Isis::SpiceRotation::GetBaseTime ( )

Accessor method to get the rotation base time.

Returns
The base time for the rotation

Definition at line 1383 of file SpiceRotation.cpp.

References p_baseTime.

Referenced by Isis::BundleAdjust::Solve(), and Isis::BundleAdjust::SolveCholesky().

std::vector< double > Isis::SpiceRotation::GetCenterAngles ( )
std::vector< double > Isis::SpiceRotation::GetFullCacheTime ( )

Return full listing (cache) of original time coverage requested.

Definition at line 1628 of file SpiceRotation.cpp.

References _FILEINFO_, p_fullCacheEndTime, p_fullCacheSize, p_fullCacheStartTime, and Isis::IException::User.

void Isis::SpiceRotation::GetPolynomial ( std::vector< double > &  coeffAng1,
std::vector< double > &  coeffAng2,
std::vector< double > &  coeffAng3 
)

Return the coefficients of a polynomial fit to each of the three camera angles for the time period covered by the cache, angle = c0 + c1*t + c2*t**2 + ...

  • cn*t**n, where t = (time - p_basetime) / p_timeScale and n = p_degree.
Parameters
[out]coeffAng1Coefficients of fit to Angle 1
[out]coeffAng2Coefficients of fit to Angle 2
[out]coeffAng3Coefficients of fit to Angle 3

Definition at line 1140 of file SpiceRotation.cpp.

References p_coefficients.

Referenced by Isis::BundleAdjust::applyParameterCorrections_CHOLMOD(), Isis::BundleAdjust::applyParameterCorrections_SPECIALK(), Isis::BundleAdjust::OutputImagesCSV(), Isis::BundleAdjust::OutputNoErrorPropagation(), Isis::BundleAdjust::OutputWithErrorPropagation(), Isis::BundleAdjust::Solve(), Isis::BundleAdjust::SolveCholesky(), and Isis::BundleAdjust::Update().

SpiceRotation::Source Isis::SpiceRotation::GetSource ( )

Accessor method to get the rotation source.

Returns
The source of the rotation.

Definition at line 1366 of file SpiceRotation.cpp.

References p_source.

double Isis::SpiceRotation::GetTimeScale ( )

Accessor method to get the rotation time scale.

Returns
The time scale for the rotation

Definition at line 1391 of file SpiceRotation.cpp.

References p_timeScale.

Referenced by Isis::BundleAdjust::Solve(), and Isis::BundleAdjust::SolveCholesky().

bool Isis::SpiceRotation::HasAngularVelocity ( )

Checks whether the rotation has angular velocities.

Returns
Indicates whether the rotation has angular velocities.

Definition at line 849 of file SpiceRotation.cpp.

References p_hasAngularVelocity.

void Isis::SpiceRotation::InitConstantRotation ( double  et)

Initialize the constant rotation.

Definition at line 1835 of file SpiceRotation.cpp.

References FrameTrace(), p_constantFrames, p_TC, and p_timeFrames.

Referenced by LoadCache().

bool Isis::SpiceRotation::IsCached ( ) const

Checks if the cache is empty.

Returns
Indicates whether this rotation cached.

Definition at line 264 of file SpiceRotation.cpp.

References p_cache.

std::vector< double > Isis::SpiceRotation::J2000Vector ( const std::vector< double > &  rVec)

Given a direction vector in the reference frame, return a J2000 direction.

Parameters
[in]rVecA direction vector in the reference frame
Returns
(vector<double>) A direction vector in J2000 frame

Definition at line 859 of file SpiceRotation.cpp.

References Isis::NaifStatus::CheckErrors(), p_CJ, p_hasAngularVelocity, p_TC, and StateTJ().

Referenced by Isis::BundleAdjust::ApproximatePoint_ClosestApproach(), Isis::Sensor::computeRaDec(), Isis::CameraGroundMap::GetdXYdPoint(), Isis::Sensor::LookDirection(), Isis::RadarGroundMap::SetFocalPlane(), Isis::RadarGroundMap::SetGround(), and Isis::Sensor::SetLookDirection().

Table Isis::SpiceRotation::LineCache ( const QString &  tableName)

Return a table with J2000 to reference rotations.

Return a table containing the cached pointing with the given name. The table will have eight columns, quaternio, angular velocity, and time of J2000 to reference frame rotation.

Parameters
tableNameName of the table to create and return

Definition at line 603 of file SpiceRotation.cpp.

References _FILEINFO_, Cache(), Memcache, p_source, PolyFunction, Isis::IException::Programmer, and ReloadCache().

Referenced by Cache().

void Isis::SpiceRotation::LoadCache ( double  startTime,
double  endTime,
int  size 
)

Cache J2000 rotation quaternion over a time range.

This method will load an internal cache with frames over a time range. This prevents the NAIF kernels from being read over-and-over again and slowing an application down due to I/O performance. Once the cache has been loaded then the kernels can be unloaded from the NAIF system.

Parameters
startTimeStarting ephemeris time in seconds for the cache
endTimeEnding ephemeris time in seconds for the cache
sizeNumber of frames to keep in the cache

Definition at line 289 of file SpiceRotation.cpp.

References _FILEINFO_, InitConstantRotation(), LoadTimeCache(), Memcache, p_av, p_cache, p_cacheAv, p_cacheTime, p_CJ, p_fullCacheEndTime, p_fullCacheSize, p_fullCacheStartTime, p_hasAngularVelocity, p_minimizeCache, p_source, p_timeFrames, Isis::IException::Programmer, and SetEphemerisTime().

Referenced by LoadCache().

void Isis::SpiceRotation::LoadCache ( double  time)

Cache J2000 to frame rotation for a time.

This method will load an internal cache with a rotation for a single time (e.g. useful for framing cameras). This prevents the NAIF kernels from being read over-and-over again and slowing a application down due to I/O performance. Once the cache has been loaded then the kernels can be unloaded from the NAIF system. This calls the LoadCache(stime,etime,size) method using the time as both the starting and ending time with a size of 1.

Parameters
timesingle ephemeris time in seconds to cache

Definition at line 353 of file SpiceRotation.cpp.

References LoadCache().

void Isis::SpiceRotation::LoadCache ( Table table)

Cache J2000 rotations using a table file.

This method will load either an internal cache with rotations (quaternions) or coefficients (for 3 polynomials defining the camera angles) from an ISIS table file. In the first case, the table must have 5 columns and at least one row. The 5 columns contain the following information, J2000 to reference quaternion (q0, q1, q2, q3) and the ephemeris time of that position. If there are multiple rows, it is assumed the quaternions between the rows can be interpolated. In the second case, the table must have three columns and at least two rows. The three columns contain the coefficients for each of the three camera angles. Row one of the table contains coefficient 0 (constant term) for angles 1, 2, and 3. If the degree of the fit equation is greater than 1, row 2 contains coefficient 1 (linear) for each of the three angles. Row n contains coefficient n-1 and the last row contains the time parameters, base time, and time scale, and the degree of the polynomial.

Parameters
tableAn ISIS table blob containing valid J2000 to reference quaternion/time values

Definition at line 377 of file SpiceRotation.cpp.

References _FILEINFO_, Isis::TableRecord::Fields(), Isis::PvlObject::findKeyword(), Isis::PvlObject::hasKeyword(), Isis::Blob::Label(), Memcache, p_cache, p_cacheAv, p_cacheTime, p_constantFrames, p_fullCacheEndTime, p_fullCacheSize, p_fullCacheStartTime, p_hasAngularVelocity, p_source, p_TC, p_timeFrames, PolyFunction, Isis::IException::Programmer, Isis::Table::Records(), SetOverrideBaseTime(), SetPolynomial(), SetPolynomialDegree(), Isis::PvlKeyword::size(), Isis::toDouble(), Isis::toInt(), and Isis::Quaternion::ToMatrix().

void Isis::SpiceRotation::LoadTimeCache ( )

Load the time cache.

This method should works with the LoadCache(startTime, endTime, size) method to load the time cache.

Definition at line 1418 of file SpiceRotation.cpp.

References _FILEINFO_, Isis::NaifStatus::CheckErrors(), Memcache, Nadir, p_cache, p_cacheAv, p_cacheTime, p_constantFrames, p_fullCacheEndTime, p_fullCacheSize, p_fullCacheStartTime, p_hasAngularVelocity, p_minimizeCache, p_source, p_timeBias, Isis::IException::Programmer, and Isis::IException::User.

Referenced by Cache(), LoadCache(), and ReloadCache().

std::vector< double > Isis::SpiceRotation::Matrix ( )

Return the full rotation TJ as a matrix.

Definition at line 1759 of file SpiceRotation.cpp.

References Isis::NaifStatus::CheckErrors(), p_CJ, and p_TC.

Referenced by Isis::MiniRF::MiniRF().

void Isis::SpiceRotation::MinimizeCache ( DownsizeStatus  status)

Set the downsize status to minimize cache.

Parameters
statusThe DownsizeStatus enumeration value.

Definition at line 272 of file SpiceRotation.cpp.

References p_minimizeCache.

void Isis::SpiceRotation::ReloadCache ( )

Cache J2000 rotation over existing cached time range using polynomials.

This method will reload an internal cache with matrices formed from rotation angles fit to functions over a time range.

Definition at line 529 of file SpiceRotation.cpp.

References _FILEINFO_, AngularVelocity(), LoadTimeCache(), Memcache, p_av, p_cache, p_cacheAv, p_cacheTime, p_CJ, p_degree, p_et, p_fullCacheSize, p_hasAngularVelocity, p_minimizeCache, p_source, PolyFunction, PolyFunctionOverSpice, Isis::IException::Programmer, SetEphemerisTime(), and TimeBasedMatrix().

Referenced by LineCache().

void Isis::SpiceRotation::SetAxes ( int  axis1,
int  axis2,
int  axis3 
)

Set the axes of rotation for decomposition of a rotation matrix into 3 angles.

Parameters
[in]axis1Axes of rotation of first angle applied (right rotation)
[in]axis2Axes of rotation of second angle applied (center rotation)
[in]axis3Axes of rotation of third angle applied (left rotation)
Returns
double Wrapped angle

Definition at line 1404 of file SpiceRotation.cpp.

References _FILEINFO_, p_axis1, p_axis2, p_axis3, and Isis::IException::Programmer.

void Isis::SpiceRotation::SetConstantMatrix ( std::vector< double >  constantMatrix)

Set the constant 3x3 rotation TC matrix from a vector of length 9.

Parameters
constantMatrixConstant rotation matrix, TC.

Definition at line 1796 of file SpiceRotation.cpp.

References p_TC.

void Isis::SpiceRotation::SetEphemerisTime ( double  et)

Return the J2000 to reference frame quaternion at given time.

This method returns the J2000 to reference frame rotational matrix at a given et in seconds. The quaternion is obtained from either valid NAIF ck and/or fk, or alternatively from an internal cache loaded from an ISIS Table object. In the first case, the kernels must contain the rotation for the frame specified in the constructor at the given time (as well as all the intermediate frames going from the reference frame to J2000) and they must be loaded using the SpiceKernel class.

Parameters
etephemeris time in seconds

Definition at line 218 of file SpiceRotation.cpp.

References Memcache, p_et, p_source, PolyFunction, and PolyFunctionOverSpice.

Referenced by GetCenterAngles(), LoadCache(), ReloadCache(), and SetPolynomial().

void Isis::SpiceRotation::SetFrame ( int  frameCode)

Change the frame to the given frame code.

This method has no effect if spice is cached.

Parameters
frameCodeThe integer-valued frame code

Definition at line 176 of file SpiceRotation.cpp.

References p_constantFrames.

Referenced by Isis::HiriseCamera::HiriseCamera(), Isis::HrscCamera::HrscCamera(), Isis::IssNACamera::IssNACamera(), Isis::IssWACamera::IssWACamera(), Isis::LroWideAngleCamera::LroWideAngleCamera(), and Isis::Mariner10Camera::Mariner10Camera().

void Isis::SpiceRotation::SetFullCacheParameters ( double  startTime,
double  endTime,
int  cacheSize 
)
protected

Set the full cache time parameters.

Parameters
[in]startTimeThe earliest time of the full cache coverage
[in]endTimeThe latest time of the full cache coverage
[in]cacheSizeThe number of epochs in the full (line) cache

Definition at line 2021 of file SpiceRotation.cpp.

References p_fullCacheEndTime, p_fullCacheSize, and p_fullCacheStartTime.

void Isis::SpiceRotation::SetOverrideBaseTime ( double  baseTime,
double  timeScale 
)

Set an override base time to be used with observations on scanners to allow all images in an observation to use the save base time and polynomials for the angles.

Parameters
[in]baseTimeThe baseTime to use and override the computed base time

Definition at line 1175 of file SpiceRotation.cpp.

References p_noOverride, p_overrideBaseTime, and p_overrideTimeScale.

Referenced by LoadCache(), Isis::BundleAdjust::Solve(), and Isis::BundleAdjust::SolveCholesky().

void Isis::SpiceRotation::SetPolynomial ( const Source  type = PolyFunction)

Set the coefficients of a polynomial fit to each of the three camera angles for the time period covered by the cache, angle = a + bt + ct**2, where t = (time - p_baseTime)/ p_timeScale.

History:
2012-05-01 Debbie A. Cook - Added type argument to allow other function types beyond PolyFunction

< Basis function fit to 1st rotation angle

< Basis function fit to 2nd rotation angle

< Basis function fit to 3rd rotation angle

Definition at line 938 of file SpiceRotation.cpp.

References Isis::LeastSquares::AddKnown(), Angles(), Isis::NaifStatus::CheckErrors(), Isis::BasisFunction::Coefficient(), Isis::BasisFunction::Coefficients(), ComputeBaseTime(), Isis::LineEquation::Intercept(), p_axis1, p_axis2, p_axis3, p_baseTime, p_cache, p_cacheTime, p_degree, p_source, p_timeScale, PolyFunction, PolyFunctionOverSpice, SetEphemerisTime(), Isis::LineEquation::Slope(), Isis::LeastSquares::Solve(), and WrapAngle().

Referenced by Isis::BundleAdjust::applyParameterCorrections_CHOLMOD(), Isis::BundleAdjust::applyParameterCorrections_SPECIALK(), LoadCache(), SetPolynomialDegree(), Isis::BundleAdjust::Solve(), Isis::BundleAdjust::SolveCholesky(), and Isis::BundleAdjust::Update().

void Isis::SpiceRotation::SetPolynomial ( const std::vector< double > &  coeffAng1,
const std::vector< double > &  coeffAng2,
const std::vector< double > &  coeffAng3,
const Source  type = PolyFunction 
)

Set the coefficients of a polynomial fit to each of the three camera angles for the time period covered by the cache, angle = c0 + c1*t + c2*t**2 + ...

  • cn*t**n, where t = (time - p_baseTime) / p_timeScale, and n = p_degree.
Parameters
[in]coeffAng1Coefficients of fit to Angle 1
[in]coeffAng2Coefficients of fit to Angle 2
[in]coeffAng3Coefficients of fit to Angle 3
History:
2012-05-01 Debbie A. Cook - Added type argument to allow other function types

Definition at line 1088 of file SpiceRotation.cpp.

References Isis::NaifStatus::CheckErrors(), ComputeBaseTime(), p_coefficients, p_degree, p_degreeApplied, p_et, p_source, Isis::BasisFunction::SetCoefficients(), and SetEphemerisTime().

void Isis::SpiceRotation::SetPolynomialDegree ( int  degree)

Set the degree of the polynomials to be fit to the three camera angles for the time period covered by the cache, angle = c0 + c1*t + c2*t**2 + ...

  • cn*t**n, where t = (time - p_baseTime) / p_timeScale, and n = p_degree.
Parameters
[in]degreeDegree of the polynomial to be fit
History:
2011-03-22 Debbie A. Cook - Fixed bug in second branch where existing degree is greater than new degree

Definition at line 1319 of file SpiceRotation.cpp.

References p_coefficients, p_degree, p_degreeApplied, p_fullCacheSize, p_source, and SetPolynomial().

Referenced by LoadCache(), Isis::BundleAdjust::Solve(), and Isis::BundleAdjust::SolveCholesky().

void Isis::SpiceRotation::SetSource ( Source  source)

Resets the source of the rotation to the given value.

Parameters
sourceThe rotation source to be set.

Definition at line 1374 of file SpiceRotation.cpp.

References p_source.

void Isis::SpiceRotation::SetTimeBasedMatrix ( std::vector< double >  timeBasedMatrix)

Set the time-based 3x3 rotation CJ matrix from a vector of length 9.

Parameters
timeBasedMatrixTime-based rotation matrix, TC.

Definition at line 1827 of file SpiceRotation.cpp.

References p_CJ.

void Isis::SpiceRotation::SetTimeBias ( double  timeBias)

Apply a time bias when invoking SetEphemerisTime method.

The bias is used only when reading from NAIF kernels. It is added to the ephermeris time passed into SetEphemerisTime and then the body position is read from the NAIF kernels and returned. When the cache is loaded from a table the bias is ignored as it is assumed to have already been applied. If this method is never called the default bias is 0.0 seconds.

Parameters
timeBiastime bias in seconds

Definition at line 202 of file SpiceRotation.cpp.

References p_timeBias.

Referenced by Isis::MocNarrowAngleCamera::MocNarrowAngleCamera(), and Isis::MocWideAngleCamera::MocWideAngleCamera().

std::vector< double > Isis::SpiceRotation::StateTJ ( )
private

State matrix (6x6) for rotating state vectors from J2000 to target frame.

Compute and return the rotation matrix that rotates state vectors from J2000 to the target frame.

Definition at line 1956 of file SpiceRotation.cpp.

References p_av, p_CJ, and p_TC.

Referenced by J2000Vector(), and ReferenceVector().

std::vector< double > & Isis::SpiceRotation::TimeBasedMatrix ( )

Return time-based 3x3 rotation CJ matrix as a vector of length 9.

Returns
Time-based rotation matrix, CJ

Definition at line 1818 of file SpiceRotation.cpp.

References p_CJ.

Referenced by ReloadCache().

std::vector< double > Isis::SpiceRotation::TimeBasedRotation ( )

Return time-based 3x3 rotation CJ matrix as a quaternion.

Returns
Time-based rotation quaternion, CJ

Definition at line 1806 of file SpiceRotation.cpp.

References p_CJ.

std::vector< int > Isis::SpiceRotation::TimeFrameChain ( )

Accessor method to get the frame chain for the rotation (begins in J2000).

Returns
The frame chain for the rotation.

Definition at line 841 of file SpiceRotation.cpp.

References p_timeFrames.

std::vector< double > Isis::SpiceRotation::ToReferencePartial ( std::vector< double > &  lookJ,
SpiceRotation::PartialType  partialVar,
int  coeffIndex 
)

Compute the derivative with respect to one of the coefficients in the angle polynomial fit equation of a vector rotated from J2000 to a reference frame.

The polynomial equation is of the form angle = c0 + c1*t + c2*t**2 + ... cn*t**n, where t = (time - p_basetime) / p_timeScale and n = p_degree (the degree of the equation)

Parameters
[in]lookJLook vector in J2000 frame
[in]partialVarVariable derivative is to be with respect to
[in]coeffIndexCoefficient index in the polynomial fit to the variable (angle)
Returns
Vector rotated by derivative of J2000 to reference rotation

Definition at line 1226 of file SpiceRotation.cpp.

References Angles(), Isis::NaifStatus::CheckErrors(), DPolynomial(), p_axis1, p_axis2, p_axis3, and p_TC.

Referenced by Isis::CameraGroundMap::GetdXYdOrientation().

double Isis::SpiceRotation::WrapAngle ( double  compareAngle,
double  angle 
)

Wrap the input angle to keep it within 2pi radians of the angle to compare.

Parameters
[in]compareAngleLook vector in J2000 frame
[in]angleAngle to be wrapped if needed
Returns
double Wrapped angle

Definition at line 1293 of file SpiceRotation.cpp.

References Isis::NaifStatus::CheckErrors().

Referenced by SetPolynomial().

Member Data Documentation

std::vector<double> Isis::SpiceRotation::p_av
private

Angular velocity for rotation at time p_et.

Definition at line 394 of file SpiceRotation.h.

Referenced by AngularVelocity(), ComputeAv(), Extrapolate(), LoadCache(), ReloadCache(), SpiceRotation(), and StateTJ().

int Isis::SpiceRotation::p_axis1
protected

Axis of rotation for angle 1 of rotation.

Definition at line 346 of file SpiceRotation.h.

Referenced by DCJdt(), GetCenterAngles(), SetAxes(), SetPolynomial(), SpiceRotation(), and ToReferencePartial().

int Isis::SpiceRotation::p_axis2
protected

Axis of rotation for angle 2 of rotation.

Definition at line 347 of file SpiceRotation.h.

Referenced by DCJdt(), GetCenterAngles(), SetAxes(), SetPolynomial(), SpiceRotation(), and ToReferencePartial().

int Isis::SpiceRotation::p_axis3
protected

Axis of rotation for angle 3 of rotation.

Definition at line 348 of file SpiceRotation.h.

Referenced by DCJdt(), GetCenterAngles(), SetAxes(), SetPolynomial(), SpiceRotation(), and ToReferencePartial().

int Isis::SpiceRotation::p_axisP
private

                        The axis defined by the spacecraft

vector for defining a nadir rotation

Definition at line 366 of file SpiceRotation.h.

Referenced by SpiceRotation().

int Isis::SpiceRotation::p_axisV
private

                        The axis defined by the velocity

vector for defining a nadir rotation

Definition at line 368 of file SpiceRotation.h.

Referenced by SpiceRotation().

double Isis::SpiceRotation::p_baseTime
private

Base time used in fit equations.

Definition at line 372 of file SpiceRotation.h.

Referenced by Cache(), ComputeBaseTime(), DCJdt(), DPolynomial(), GetBaseTime(), SetPolynomial(), and SpiceRotation().

std::vector<std::vector<double> > Isis::SpiceRotation::p_cache
protected

Cached rotations, stored as rotation matrix from J2000 to 1st constant frame (CJ) or coefficients of polynomial fit to rotation angles.

Definition at line 340 of file SpiceRotation.h.

Referenced by Cache(), IsCached(), LoadCache(), LoadTimeCache(), ReloadCache(), SetPolynomial(), and SpiceRotation().

std::vector<std::vector<double> > Isis::SpiceRotation::p_cacheAv
private

Cached angular velocities for corresponding rotactions in p_cache.

Definition at line 393 of file SpiceRotation.h.

Referenced by Cache(), LoadCache(), LoadTimeCache(), ReloadCache(), and SpiceRotation().

std::vector<double> Isis::SpiceRotation::p_cacheTime
protected

iTime for corresponding rotation

Definition at line 339 of file SpiceRotation.h.

Referenced by Cache(), ComputeBaseTime(), LoadCache(), LoadTimeCache(), ReloadCache(), SetPolynomial(), and SpiceRotation().

std::vector<double> Isis::SpiceRotation::p_CJ
private

   Rotation matrix from J2000 to first constant 

rotation after all the time-based rotations in frame chain from

Definition at line 389 of file SpiceRotation.h.

Referenced by Angles(), ComputeAv(), Extrapolate(), J2000Vector(), LoadCache(), Matrix(), ReferenceVector(), ReloadCache(), SetTimeBasedMatrix(), SpiceRotation(), StateTJ(), TimeBasedMatrix(), and TimeBasedRotation().

std::vector<double> Isis::SpiceRotation::p_coefficients[3]
private

Coefficients defining functions fit to 3 pointing angles.

Definition at line 377 of file SpiceRotation.h.

Referenced by Cache(), DCJdt(), GetPolynomial(), SetPolynomial(), SetPolynomialDegree(), and SpiceRotation().

std::vector<int> Isis::SpiceRotation::p_constantFrames
private

Chain of Naif frame codes in constant rotation TC.

The first entry will always be the target frame code

Definition at line 351 of file SpiceRotation.h.

Referenced by CacheLabel(), ConstantFrameChain(), Frame(), FrameTrace(), InitConstantRotation(), LoadCache(), LoadTimeCache(), SetFrame(), and SpiceRotation().

int Isis::SpiceRotation::p_degree
protected

Degree of fit polynomial for angles.

Definition at line 345 of file SpiceRotation.h.

Referenced by Cache(), DCJdt(), DPolynomial(), ReloadCache(), SetPolynomial(), SetPolynomialDegree(), and SpiceRotation().

bool Isis::SpiceRotation::p_degreeApplied
private

               Flag indicating whether or not a polynomial

of degree p_degree has been created and used to fill the cache

Definition at line 374 of file SpiceRotation.h.

Referenced by SetPolynomial(), SetPolynomialDegree(), and SpiceRotation().

double Isis::SpiceRotation::p_et
private

Current ephemeris time.

Definition at line 359 of file SpiceRotation.h.

Referenced by DCJdt(), DPolynomial(), EphemerisTime(), Extrapolate(), ReloadCache(), SetEphemerisTime(), SetPolynomial(), and SpiceRotation().

double Isis::SpiceRotation::p_fullCacheEndTime
private

Initial requested ending time of cache.

Definition at line 384 of file SpiceRotation.h.

Referenced by CacheLabel(), GetCenterAngles(), GetFullCacheTime(), LoadCache(), LoadTimeCache(), SetFullCacheParameters(), and SpiceRotation().

int Isis::SpiceRotation::p_fullCacheSize
private
double Isis::SpiceRotation::p_fullCacheStartTime
private

Initial requested starting time of cache.

Definition at line 383 of file SpiceRotation.h.

Referenced by CacheLabel(), GetCenterAngles(), GetFullCacheTime(), LoadCache(), LoadTimeCache(), SetFullCacheParameters(), and SpiceRotation().

bool Isis::SpiceRotation::p_hasAngularVelocity
private

          Flag indicating whether the rotation 

includes angular velocity

Definition at line 395 of file SpiceRotation.h.

Referenced by Cache(), Extrapolate(), HasAngularVelocity(), J2000Vector(), LoadCache(), LoadTimeCache(), ReferenceVector(), ReloadCache(), and SpiceRotation().

bool Isis::SpiceRotation::p_matrixSet
private

Flag indicating p_TJ has been set.

Definition at line 363 of file SpiceRotation.h.

Referenced by SpiceRotation().

DownsizeStatus Isis::SpiceRotation::p_minimizeCache
private

Status of downsizing the cache (set to No to ignore)

Definition at line 382 of file SpiceRotation.h.

Referenced by Cache(), LoadCache(), LoadTimeCache(), MinimizeCache(), ReloadCache(), and SpiceRotation().

bool Isis::SpiceRotation::p_noOverride
private

Flag to compute base time;.

Definition at line 379 of file SpiceRotation.h.

Referenced by ComputeBaseTime(), SetOverrideBaseTime(), and SpiceRotation().

double Isis::SpiceRotation::p_overrideBaseTime
private

Value set by caller to override computed base time.

Definition at line 380 of file SpiceRotation.h.

Referenced by ComputeBaseTime(), SetOverrideBaseTime(), and SpiceRotation().

double Isis::SpiceRotation::p_overrideTimeScale
private

Value set by caller to override computed time scale.

Definition at line 381 of file SpiceRotation.h.

Referenced by ComputeBaseTime(), SetOverrideBaseTime(), and SpiceRotation().

Quaternion Isis::SpiceRotation::p_quaternion
private

            Quaternion for J2000 to reference

rotation at et

Definition at line 360 of file SpiceRotation.h.

Referenced by SpiceRotation().

Source Isis::SpiceRotation::p_source
private
int Isis::SpiceRotation::p_targetCode
private

For computing Nadir rotation only.

Definition at line 370 of file SpiceRotation.h.

Referenced by SpiceRotation().

std::vector<double> Isis::SpiceRotation::p_TC
private

        Rotation matrix from first constant rotation 

(after all time-based rotations in frame chain from J2000 to target) to the target frame

Definition at line 386 of file SpiceRotation.h.

Referenced by CacheLabel(), ConstantMatrix(), ConstantRotation(), InitConstantRotation(), J2000Vector(), LoadCache(), Matrix(), ReferenceVector(), SetConstantMatrix(), SpiceRotation(), StateTJ(), and ToReferencePartial().

double Isis::SpiceRotation::p_timeBias
private

iTime bias when reading kernels

Definition at line 357 of file SpiceRotation.h.

Referenced by LoadTimeCache(), SetTimeBias(), and SpiceRotation().

std::vector<int> Isis::SpiceRotation::p_timeFrames
private

 Chain of Naif frame codes in time-based 

rotation CJ.

The last entry will always be 1 (J2000 code)

Definition at line 354 of file SpiceRotation.h.

Referenced by CacheLabel(), FrameTrace(), InitConstantRotation(), LoadCache(), SpiceRotation(), and TimeFrameChain().

double Isis::SpiceRotation::p_timeScale
private

Time scale used in fit equations.

Definition at line 373 of file SpiceRotation.h.

Referenced by Cache(), ComputeBaseTime(), DCJdt(), DPolynomial(), GetTimeScale(), SetPolynomial(), and SpiceRotation().


The documentation for this class was generated from the following files: