Isis 3 Programmer Reference
Isis::SpacecraftPosition Class Reference

Provides swap observer/target and improved light time correction. More...

#include <SpacecraftPosition.h>

Inheritance diagram for Isis::SpacecraftPosition:
Inheritance graph
Collaboration diagram for Isis::SpacecraftPosition:
Collaboration graph

Public Types

enum  Source {
  Spice , Memcache , HermiteCache , PolyFunction ,
  PolyFunctionOverHermiteConstant
}
 This enum indicates the status of the object. More...
 
enum  PartialType { WRT_X , WRT_Y , WRT_Z }
 
enum  OverrideType { NoOverrides , ScaleOnly , BaseAndScale }
 

Public Member Functions

 SpacecraftPosition (int targetCode, int observerCode, const LightTimeCorrectionState &ltState=LightTimeCorrectionState(), const Distance &radius=Distance(0.0, Distance::Meters))
 constructor for swapping observer/target parameters
 
double getRadiusLightTime () const
 Returns the time it takes for light to travel the radius of the target.
 
virtual void SetAberrationCorrection (const QString &correction)
 Set aberration correction value for determining positions.
 
virtual QString GetAberrationCorrection () const
 Returns the stellr aberration correction applied.
 
virtual void SetEphemerisTimeSpice ()
 Determine accurate position of target w.r.t.
 
const LightTimeCorrectionStategetLightTimeState () const
 Return the state of light time correction parameters.
 
void SetTimeBias (double timeBias)
 Apply a time bias when invoking SetEphemerisTime method.
 
double GetTimeBias () const
 Returns the value of the time bias added to ET.
 
double GetLightTime () const
 Return the light time coorection value.
 
virtual const std::vector< double > & SetEphemerisTime (double et)
 Return J2000 coordinate at given time.
 
virtual double EphemerisTime () const
 Return the current ephemeris time.
 
double scaledTime () const
 Return the scaled time.
 
const std::vector< double > & GetCenterCoordinate ()
 Compute and return the coordinate at the center time.
 
virtual const std::vector< double > & Coordinate ()
 Return the current J2000 position.
 
const std::vector< double > & Velocity ()
 Return the current J2000 velocity.
 
bool HasVelocity ()
 Return the flag indicating whether the velocity exists.
 
void LoadCache (double startTime, double endTime, int size)
 Cache J2000 position over a time range.
 
void LoadCache (double time)
 Cache J2000 position for a time.
 
void LoadCache (Table &table)
 Cache J2000 positions using a table file.
 
void LoadCache (nlohmann::json &isd)
 Load the cached data from an ALE ISD.
 
Table LineCache (const QString &tableName)
 Return a table with J2000 to reference positions.
 
Table LoadHermiteCache (const QString &tableName)
 Cache J2000 position over existing cached time range using polynomials stored as Hermite cubic spline knots.
 
void ReloadCache ()
 Cache J2000 positions over existing cached time range using polynomials.
 
void ReloadCache (Table &table)
 Cache J2000 position over existing cached time range using table.
 
Table Cache (const QString &tableName)
 Return a table with J2000 positions.
 
bool IsCached () const
 Is this position cached.
 
int cacheSize () const
 Get the size of the current cached positions.
 
void SetPolynomial (const Source type=PolyFunction)
 Set the coefficients of a polynomial fit to each of the components (X, Y, Z) of the position vector for the time period covered by the cache, component = c0 + c1*t + c2*t**2 + ... + cn*t**n, where t = (time - p_baseTime) / p_timeScale.
 
void SetPolynomial (const std::vector< double > &XC, const std::vector< double > &YC, const std::vector< double > &ZC, const Source type=PolyFunction)
 Set the coefficients of a polynomial (parabola) fit to each of the three coordinates of the position vector for the time period covered by the cache, coord = c0 + c1*t + c2*t**2 + ... + cn*t**n, where t = (time - p_baseTime) / p_timeScale.
 
void GetPolynomial (std::vector< double > &XC, std::vector< double > &YC, std::vector< double > &ZC)
 Return the coefficients of a polynomial fit to each of the three coordinates of the position 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.
 
void SetPolynomialDegree (int degree)
 Set the polynomial degree.
 
Source GetSource ()
 Return the source of the position.
 
void ComputeBaseTime ()
 Compute the base time using cached times.
 
double GetBaseTime ()
 Return the base time for the position.
 
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 same base time and polynomials for the positions.
 
double GetTimeScale ()
 Return the time scale for the position.
 
double DPolynomial (const int coeffIndex)
 Evaluate the derivative of the fit polynomial (parabola) defined by the given coefficients with respect to the coefficient at the given index, at the current time.
 
std::vector< double > CoordinatePartial (SpicePosition::PartialType partialVar, int coeffIndex)
 Set the coefficients of a polynomial fit to each of the three coordinates of the position vector for the time period covered by the cache,.
 
std::vector< double > VelocityPartial (SpicePosition::PartialType partialVar, int coeffIndex)
 Compute the derivative of the velocity with respect to the specified variable.
 
void Memcache2HermiteCache (double tolerance)
 This method reduces the cache for position, time and velocity to the minimum number of values needed to interpolate the J2000 coordinates using a Hermite spline, given a tolerance of deviation from the NAIF values.
 
std::vector< double > Extrapolate (double timeEt)
 Extrapolate position for a given time assuming a constant velocity.
 
std::vector< double > HermiteCoordinate ()
 This method returns the Hermite coordinate for the current time for PolyFunctionOverHermiteConstant functions.
 

Static Public Member Functions

static double getDistanceLightTime (const Distance &distance)
 Returns the time it takes for light to travel a given distance.
 

Protected Member Functions

void SetEphemerisTimeMemcache ()
 This is a protected method that is called by SetEphemerisTime() when Source type is Memcache.
 
void SetEphemerisTimeHermiteCache ()
 This is a protected method that is called by SetEphemerisTime() when Source type is HermiteCache.
 
void SetEphemerisTimePolyFunction ()
 This is a protected method that is called by SetEphemerisTime() when Source type is PolyFunction.
 
void SetEphemerisTimePolyFunctionOverHermiteConstant ()
 This is a protected method that is called by SetEphemerisTime() when Source type is PolyFunctionOverHermiteConstant.
 
int getObserverCode () const
 Returns observer code.
 
int getTargetCode () const
 Returns target code.
 
double getAdjustedEphemerisTime () const
 Returns adjusted ephemeris time.
 
void computeStateVector (double et, int target, int observer, const QString &refFrame, const QString &abcorr, double state[6], bool &hasVelocity, double &lightTime) const
 Computes the state vector of the target w.r.t observer.
 
void setStateVector (const double state[6], const bool &hasVelocity)
 Sets the state of target relative to observer.
 
void setLightTime (const double &lightTime)
 Inheritors can set the light time if indicated.
 

Private Member Functions

void init (int targetCode, int observerCode, const bool &swapObserverTarget=false)
 Internal initialization of the object support observer/target swap.
 
void ClearCache ()
 Removes the entire cache from memory.
 
void LoadTimeCache ()
 Load the time cache.
 
void CacheLabel (Table &table)
 Add labels to a SpicePosition table.
 
double ComputeVelocityInTime (PartialType var)
 Compute the velocity with respect to time instead of scaled time.
 

Private Attributes

LightTimeCorrectionState m_abcorr
 Light time correction state.
 
Distance m_radius
 Radius of target.
 
int p_targetCode
 target body code
 
int p_observerCode
 observer body code
 
double p_timeBias
 iTime bias when reading kernels
 
QString p_aberrationCorrection
 Light time correction to apply.
 
double p_et
 Current ephemeris time.
 
std::vector< double > p_coordinate
 J2000 position at time et.
 
std::vector< double > p_velocity
 J2000 velocity at time et.
 
Source p_source
 Enumerated value for the location of the SPK information used.
 
std::vector< double > p_cacheTime
 iTime for corresponding position
 
std::vector< double > p_coefficients [3]
 Coefficients of polynomials fit to 3 coordinates.
 
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.
 
int p_degree
 Degree of polynomial function fit to the coordinates of the position.
 
double p_fullCacheStartTime
 Original start time of the complete cache after spiceinit.
 
double p_fullCacheEndTime
 Original end time of the complete cache after spiceinit.
 
double p_fullCacheSize
 Orignial size of the complete cache after spiceinit.
 
bool p_hasVelocity
 Flag to indicate velocity is available.
 
OverrideType p_override
 Time base and scale override options;.
 
double p_overrideBaseTime
 Value set by caller to override computed base time.
 
double p_overrideTimeScale
 Value set by caller to override computed time scale.
 
bool m_swapObserverTarget
 
double m_lt
 !< Swap traditional order
 
ale::States * m_state
 !< Light time correction
 

Detailed Description

Provides swap observer/target and improved light time correction.

The process by which ISIS has determined the position of the spacecraft w.r.t a target body is by utilizing the NAIF spkez_c/spkezp_c routines. Recently it has been determined that the parameters for observer (or spacecraft) and target (typically a planet) has been swapped. This results in a slightly different location of the s/c. This class provides programmers with a way to swap these parameters at runtime by providing a different instantiation option.

This implementation was chosen to mostly hide this option as it the full impact of this chage is still being evaluated for all supported instruments in ISIS.

This implementation provides the ability to swap observer/target parameters selectively as deemed appropriate by API developers. See the Spice class for how this class is being utilized.

In addition, this class provides the ability to correct for stellar aberration and light time to the target body surface (via a reimplementation of SetEphemerisSpiceTime()). This mostly fixes the problem of accurate light time correction. What remains is applying this fix on a per pixel basis. It is most accurate at the subspacecraft lat/lon point on the target body surface.

See also
Spice
LightTimeCorrectionState
SpicePosition
Author
2012-10-11 Kris Becker


History

2012-10-31 Kris Becker - New class implements swapping of observer/target and light time correction to surface. Fixes (mostly) #0909, #1136 and #1223.

2012-11-01 Kris Becker - Revised parameter order to computeStateVector to match comments. References #1136.

2012-12-04 Kris Becker - Corrected documentation

Definition at line 60 of file SpacecraftPosition.h.

Member Enumeration Documentation

◆ OverrideType

enum Isis::SpicePosition::OverrideType
inherited

Definition at line 292 of file SpicePosition.h.

◆ PartialType

enum Isis::SpicePosition::PartialType
inherited

Definition at line 204 of file SpicePosition.h.

◆ Source

This enum indicates the status of the object.

The class expects functions to be after MemCache in the list.

Enumerator
Spice 

Object is reading directly from the kernels.

Memcache 

Object is reading from cached table.

HermiteCache 

Object is reading from splined table.

PolyFunction 

Object is calculated from nth degree polynomial.

PolyFunctionOverHermiteConstant 

Object is reading from splined.

Definition at line 183 of file SpicePosition.h.

Constructor & Destructor Documentation

◆ SpacecraftPosition()

Isis::SpacecraftPosition::SpacecraftPosition ( int targetCode,
int observerCode,
const LightTimeCorrectionState & ltState = LightTimeCorrectionState(),
const Distance & radius = Distance(0.0, Distance::Meters) )

constructor for swapping observer/target parameters

This constructor utlizes a protected constructor in the SpicePosition class specially designed to handle this option. Passing false into this constructor results in preexisting behavior. True will swap observer/target when determining the s/c position.

It is critical that the targetCode and observerCode be of the same exact order as they are in preexisting code. This is consistent with the current SpicePosition constructor with an additional boolean parameter that indicates to treat the targetCode as the observer and the observerCode as the target.

Author
2012-10-11 Kris Becker
Parameters
targetCodeNAIF code for target
observerCodeNAIF code for observer
swapObserverTargetBoolean to specify swap

Definition at line 48 of file SpacecraftPosition.cpp.

References m_abcorr, and m_radius.

◆ ~SpacecraftPosition()

virtual Isis::SpacecraftPosition::~SpacecraftPosition ( )
inlinevirtual

Definition at line 69 of file SpacecraftPosition.h.

Member Function Documentation

◆ Cache()

Table Isis::SpicePosition::Cache ( const QString & tableName)
inherited

Return a table with J2000 positions.

Return a table containg the cached coordinates with the given name. The table will have four or seven columns, J2000 x,y,z (optionally vx,vy,vx) and the ephemeris time.

Parameters
tableNameName of the table to create and return
History

2009-08-03 Jeannie Walldren - Added CacheType keyword to output table. This is based on p_source and will be read by LoadCache(Table).

2011-01-05 Debbie A. Cook - Added PolyFunction

Definition at line 549 of file SpicePosition.cpp.

References Isis::SpicePosition::CacheLabel(), Isis::TableField::Double, Isis::IException::Io, Isis::SpicePosition::LineCache(), Isis::SpicePosition::m_state, Isis::SpicePosition::Memcache2HermiteCache(), Isis::SpicePosition::p_baseTime, Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_coefficients, Isis::SpicePosition::p_degree, Isis::SpicePosition::p_fullCacheSize, Isis::SpicePosition::p_hasVelocity, Isis::SpicePosition::p_source, Isis::SpicePosition::p_timeScale, Isis::SpicePosition::PolyFunction, and Isis::SpicePosition::PolyFunctionOverHermiteConstant.

Referenced by Isis::SpicePosition::LineCache(), and Isis::SpicePosition::LoadHermiteCache().

◆ CacheLabel()

void Isis::SpicePosition::CacheLabel ( Table & table)
privateinherited

◆ cacheSize()

int Isis::SpicePosition::cacheSize ( ) const
inlineinherited

Get the size of the current cached positions.

Definition at line 247 of file SpicePosition.h.

References Isis::SpicePosition::m_state.

Referenced by Isis::Spice::createCache(), and Isis::Spice::init().

◆ ClearCache()

void Isis::SpicePosition::ClearCache ( )
privateinherited

◆ ComputeBaseTime()

◆ computeStateVector()

void Isis::SpicePosition::computeStateVector ( double et,
int target,
int observer,
const QString & refFrame,
const QString & abcorr,
double state[6],
bool & hasVelocity,
double & lightTime ) const
protectedinherited

Computes the state vector of the target w.r.t observer.

This method computes the state vector of the target that is relative of the observer. It first attempts to retrieve with velocity vectors. If that fails, it makes an additional attempt to get the state w/o velocity vectors. The final result is indicated by the hasVelocity parameter.

The parameters to this routine are the same as the NAIF spkez_c/spkezp_c routines. See http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/spkez_c.html for complete description.

Note that this routine does not actually affect the internals of this object (hence the constness of the method). It is up to the caller to apply the results and potentially handle swapping of observer/target and light time correction. See SpacecraftPosition for additional details on this application of the results.

Author
2012-10-29 Kris Becker
Parameters
etTime to compute state vector for
targetNAIF target code
observerNAIF observer code
refFrameReference frame to express coordinates in (e.g., J2000)
abcorrStellar aberration correction option
stateReturns the 6-element state vector in target body fixed coordinates
hasVelocityReturns knowledge of whether the velocity vector is valid
lightTimeReturns the light time correct resulting from the request if applicable

Definition at line 1751 of file SpicePosition.cpp.

References Isis::NaifStatus::CheckErrors().

Referenced by SetEphemerisTimeSpice(), and Isis::SpicePosition::SetEphemerisTimeSpice().

◆ ComputeVelocityInTime()

double Isis::SpicePosition::ComputeVelocityInTime ( PartialType var)
privateinherited

Compute the velocity with respect to time instead of scaled time.

Parameters
coefA SpicePosition polynomial function partial type
History
2011-02-12 Debbie A. Cook - Original version.

Definition at line 1612 of file SpicePosition.cpp.

References Isis::SpicePosition::p_baseTime, Isis::SpicePosition::p_coefficients, Isis::SpicePosition::p_degree, Isis::SpicePosition::p_et, and Isis::SpicePosition::p_timeScale.

Referenced by Isis::SpicePosition::SetEphemerisTimePolyFunction().

◆ Coordinate()

◆ CoordinatePartial()

std::vector< double > Isis::SpicePosition::CoordinatePartial ( SpicePosition::PartialType partialVar,
int coeffIndex )
inherited

Set the coefficients of a polynomial fit to each of the three coordinates of the position vector for the time period covered by the cache,.

coordinate = c0 + c1*t + c2*t**2 + ... cn*t**n, where t = (time - p_basetime) / p_timeScale.

Parameters
partialVarDesignated variable of the partial derivative
Returns
Derivative of j2000 vector calculated with polynomial with respect to partialVar

Definition at line 1167 of file SpicePosition.cpp.

References Isis::SpicePosition::DPolynomial().

◆ DPolynomial()

double Isis::SpicePosition::DPolynomial ( const int coeffIndex)
inherited

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

Parameters
coeffIndexIndex of coefficient to differentiate with respect to
Returns
The derivative evaluated at the current time

Definition at line 1244 of file SpicePosition.cpp.

References Isis::SpicePosition::p_baseTime, Isis::SpicePosition::p_degree, Isis::SpicePosition::p_et, Isis::SpicePosition::p_timeScale, Isis::IException::Programmer, and Isis::toString().

Referenced by Isis::SpicePosition::CoordinatePartial().

◆ EphemerisTime()

virtual double Isis::SpicePosition::EphemerisTime ( ) const
inlinevirtualinherited

◆ Extrapolate()

std::vector< double > Isis::SpicePosition::Extrapolate ( double timeEt)
inherited

Extrapolate position for a given time assuming a constant velocity.

The position and velocity at the current time will be used to extrapolate position at the input time. If velocity does not exist, the value at the current time will be output. The caller must make sure to call SetEphemerisTime to set the time to the time to be used for the extrapolation.

Parameters
[in]timeEtThe time of the position to be extrapolated
[out]Anextrapolated position at the input time

Definition at line 1635 of file SpicePosition.cpp.

References Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_et, Isis::SpicePosition::p_hasVelocity, and Isis::SpicePosition::p_velocity.

◆ GetAberrationCorrection()

QString Isis::SpacecraftPosition::GetAberrationCorrection ( ) const
virtual

Returns the stellr aberration correction applied.

Author
2012-10-29 Kris Becker

Reimplemented from Isis::SpicePosition.

Definition at line 110 of file SpacecraftPosition.cpp.

References Isis::LightTimeCorrectionState::getAberrationCorrection(), and m_abcorr.

Referenced by SetEphemerisTimeSpice().

◆ getAdjustedEphemerisTime()

double Isis::SpicePosition::getAdjustedEphemerisTime ( ) const
protectedinherited

Returns adjusted ephemeris time.

This method returns the actual ephemeris time adjusted by a specifed time bias. The bias typically comes explicitly from the camera model but could be adjusted by the environment they are utlized in.

Author
2012-10-29 Kris Becker
Returns
double Adjusted ephemeris time with time bias applied

Definition at line 1714 of file SpicePosition.cpp.

References Isis::SpicePosition::EphemerisTime(), and Isis::SpicePosition::GetTimeBias().

Referenced by SetEphemerisTimeSpice(), and Isis::SpicePosition::SetEphemerisTimeSpice().

◆ GetBaseTime()

double Isis::SpicePosition::GetBaseTime ( )
inlineinherited

Return the base time for the position.

Definition at line 276 of file SpicePosition.h.

References Isis::SpicePosition::p_baseTime.

Referenced by Isis::IsisBundleObservation::initializeExteriorOrientation().

◆ GetCenterCoordinate()

const std::vector< double > & Isis::SpicePosition::GetCenterCoordinate ( )
inherited

◆ getDistanceLightTime()

double Isis::SpacecraftPosition::getDistanceLightTime ( const Distance & distance)
static

Returns the time it takes for light to travel a given distance.

Author
2012-10-23 Kris Becker
Parameters
radiusDistance to compute light time travel for
Returns
double Time in seconds it takes light to travel given distance

Definition at line 87 of file SpacecraftPosition.cpp.

References Isis::Distance::kilometers().

◆ GetLightTime()

double Isis::SpicePosition::GetLightTime ( ) const
inherited

Return the light time coorection value.

This method returns the light time correction of the last call to SetEphemerisTimeSpice. This is the actual time after adjustments that has resulting int the adjustment of the target body. The observer position should be unchanged.

Author
2012-10-29 Kris Becker
Returns
double Returns the light time determined from the last call to SetEphemerisTime[Spice].

Definition at line 230 of file SpicePosition.cpp.

References Isis::SpicePosition::m_lt.

◆ getLightTimeState()

const LightTimeCorrectionState & Isis::SpacecraftPosition::getLightTimeState ( ) const

Return the state of light time correction parameters.

Author
Kris Becker - 10/23/2012
Returns
LightTimeCorrectionState Light time state

Definition at line 197 of file SpacecraftPosition.cpp.

References m_abcorr.

◆ getObserverCode()

int Isis::SpicePosition::getObserverCode ( ) const
protectedinherited

Returns observer code.

This methods returns the proper observer code as specified in constructor. Code has been subjected to swapping if requested.

Author
2012-10-29 Kris Becker
Returns
int NAIF code of observer

Definition at line 1684 of file SpicePosition.cpp.

References Isis::SpicePosition::p_observerCode.

Referenced by SetEphemerisTimeSpice(), and Isis::SpicePosition::SetEphemerisTimeSpice().

◆ GetPolynomial()

void Isis::SpicePosition::GetPolynomial ( std::vector< double > & XC,
std::vector< double > & YC,
std::vector< double > & ZC )
inherited

Return the coefficients of a polynomial fit to each of the three coordinates of the position 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.

Parameters
[out]XCCoefficients of fit to first coordinate of position
[out]YCCoefficients of fit to second coordinate of position
[out]ZCCoefficients of fit to third coordinate of position

Definition at line 1103 of file SpicePosition.cpp.

References Isis::SpicePosition::p_coefficients.

Referenced by Isis::IsisBundleObservation::applyParameterCorrections(), Isis::IsisBundleObservation::bundleOutputFetchData(), and Isis::IsisBundleObservation::initializeExteriorOrientation().

◆ getRadiusLightTime()

double Isis::SpacecraftPosition::getRadiusLightTime ( ) const

Returns the time it takes for light to travel the radius of the target.

This method returns the time in seconds it takes to travel the distance of the radius of the target body. This is a function of the Distance parameter provided at the time this object was constructed.

Author
2012-10-23 Kris Becker
Returns
double Time in seconds it takes light to travel the distance of the radius provided/set in the object

Definition at line 73 of file SpacecraftPosition.cpp.

References Isis::Distance::kilometers(), and m_radius.

Referenced by SetEphemerisTimeSpice().

◆ GetSource()

Source Isis::SpicePosition::GetSource ( )
inlineinherited

Return the source of the position.

Definition at line 269 of file SpicePosition.h.

References Isis::SpicePosition::p_source.

Referenced by Isis::Spice::createCache().

◆ getTargetCode()

int Isis::SpicePosition::getTargetCode ( ) const
protectedinherited

Returns target code.

This methods returns the proper target code as specified in constructor. Code has been subjected to swapping if requested.

Author
2012-10-29 Kris Becker
Returns
int NAIF code for target body

Definition at line 1698 of file SpicePosition.cpp.

References Isis::SpicePosition::p_targetCode.

Referenced by SetEphemerisTimeSpice(), and Isis::SpicePosition::SetEphemerisTimeSpice().

◆ GetTimeBias()

double Isis::SpicePosition::GetTimeBias ( ) const
inherited

Returns the value of the time bias added to ET.

Author
2012-10-29 Kris Becker
Returns
double Returns time bias for current object

Definition at line 161 of file SpicePosition.cpp.

References Isis::SpicePosition::p_timeBias.

Referenced by Isis::SpicePosition::getAdjustedEphemerisTime().

◆ GetTimeScale()

double Isis::SpicePosition::GetTimeScale ( )
inlineinherited

Return the time scale for the position.

Definition at line 283 of file SpicePosition.h.

References Isis::SpicePosition::p_timeScale.

Referenced by Isis::IsisBundleObservation::initializeExteriorOrientation().

◆ HasVelocity()

bool Isis::SpicePosition::HasVelocity ( )
inlineinherited

Return the flag indicating whether the velocity exists.

Definition at line 224 of file SpicePosition.h.

References Isis::SpicePosition::p_hasVelocity.

Referenced by Isis::Spice::createCache().

◆ HermiteCoordinate()

std::vector< double > Isis::SpicePosition::HermiteCoordinate ( )
inherited

This method returns the Hermite coordinate for the current time for PolyFunctionOverHermiteConstant functions.

See also
SetEphemerisTime()
History
2012-02-05 Debbie A. Cook - Original version

Definition at line 1655 of file SpicePosition.cpp.

References Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_source, Isis::SpicePosition::PolyFunctionOverHermiteConstant, Isis::IException::Programmer, and Isis::SpicePosition::SetEphemerisTimeHermiteCache().

◆ init()

void Isis::SpicePosition::init ( int targetCode,
int observerCode,
const bool & swapObserverTarget = false )
privateinherited

◆ IsCached()

bool Isis::SpicePosition::IsCached ( ) const
inlineinherited

Is this position cached.

Definition at line 242 of file SpicePosition.h.

References Isis::SpicePosition::m_state.

Referenced by Isis::Spice::createCache().

◆ LineCache()

Table Isis::SpicePosition::LineCache ( const QString & tableName)
inherited

Return a table with J2000 to reference positions.

Return a table containing the cached positions with the given name. The table will have seven columns, positionX, positionY, positionZ, angular velocity X, angular velocity Y, angular velocity Z, and time of J2000 position.

Parameters
tableNameName of the table to create and return
History
2012-01-25 Debbie A. Cook - Modified error checking for p_source to allow all function sources (>=HermiteCache)

Definition at line 704 of file SpicePosition.cpp.

References Isis::SpicePosition::Cache(), Isis::SpicePosition::HermiteCache, Isis::SpicePosition::Memcache, Isis::SpicePosition::p_source, Isis::IException::Programmer, and Isis::SpicePosition::ReloadCache().

Referenced by Isis::SpicePosition::Cache().

◆ LoadCache() [1/4]

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

Cache J2000 position over a time range.

This method will load an internal cache with coordinates over a time range. 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.

Parameters
startTimeStarting ephemeris time in seconds for the cache
endTimeEnding ephemeris time in seconds for the cache
sizeNumber of coordinates/positions to keep in the cache

Definition at line 297 of file SpicePosition.cpp.

References Isis::SpicePosition::HermiteCache, Isis::SpicePosition::LoadTimeCache(), Isis::SpicePosition::m_state, Isis::SpicePosition::Memcache, Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_fullCacheEndTime, Isis::SpicePosition::p_fullCacheSize, Isis::SpicePosition::p_fullCacheStartTime, Isis::SpicePosition::p_hasVelocity, Isis::SpicePosition::p_source, Isis::SpicePosition::p_velocity, Isis::IException::Programmer, and Isis::SpicePosition::SetEphemerisTime().

Referenced by Isis::Spice::createCache(), Isis::Spice::init(), Isis::SpicePosition::LoadCache(), and Isis::SpicePosition::ReloadCache().

◆ LoadCache() [2/4]

void Isis::SpicePosition::LoadCache ( double time)
inherited

Cache J2000 position for a time.

This method will load an internal cache with coordinates 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 354 of file SpicePosition.cpp.

References Isis::SpicePosition::LoadCache().

◆ LoadCache() [3/4]

void Isis::SpicePosition::LoadCache ( nlohmann::json & isd)
inherited

◆ LoadCache() [4/4]

void Isis::SpicePosition::LoadCache ( Table & table)
inherited

Cache J2000 positions using a table file.

This method will load an internal cache with coordinates from an ISIS table file. The table must have 4 columns, or 7 (if velocity) is included, and at least one row. The 4 columns contain the following information, body position x,y,z in J2000 and the ephemeris time of that position. If there are multiple rows it is assumed you can interpolate position at times in between the rows.

Parameters
tableAn ISIS table blob containing valid J2000 coordinate/time values
History

2009-08-03 Jeannie Walldren - Reads CacheType keyword from table and sets p_source. If no CacheType keyword, we know this is an older image, so set p_source to Memcache.

2011-01-05 Debbie A. Cook - Added PolyFunction type

2011-04-08 Debbie A. Cook - Corrected loop counter in PolyFunction section to only go up to table.Records() - 1

Definition at line 429 of file SpicePosition.cpp.

References Isis::PvlObject::findKeyword(), Isis::PvlObject::hasKeyword(), Isis::SpicePosition::HermiteCache, Isis::IException::Io, Isis::Table::Label(), Isis::SpicePosition::m_state, Isis::SpicePosition::Memcache, Isis::Table::Name(), Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_fullCacheEndTime, Isis::SpicePosition::p_fullCacheSize, Isis::SpicePosition::p_fullCacheStartTime, Isis::SpicePosition::p_hasVelocity, Isis::SpicePosition::p_override, Isis::SpicePosition::p_overrideTimeScale, Isis::SpicePosition::p_source, Isis::SpicePosition::PolyFunction, Isis::IException::Programmer, Isis::Table::Records(), Isis::SpicePosition::SetOverrideBaseTime(), Isis::SpicePosition::SetPolynomial(), Isis::SpicePosition::SetPolynomialDegree(), and Isis::toDouble().

◆ LoadHermiteCache()

Table Isis::SpicePosition::LoadHermiteCache ( const QString & tableName)
inherited

Cache J2000 position over existing cached time range using polynomials stored as Hermite cubic spline knots.

This method will reload an internal cache with positions formed from a cubic Hermite spline over a time range. The method assumes a polynomial function has been fit to the coordinates of the positions and calculates the spline from the polynomial function.

Definition at line 793 of file SpicePosition.cpp.

References Isis::SpicePosition::Cache(), Isis::SpicePosition::ClearCache(), Isis::SpicePosition::HermiteCache, Isis::SpicePosition::m_state, Isis::SpicePosition::p_baseTime, Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_coefficients, Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_degree, Isis::SpicePosition::p_et, Isis::SpicePosition::p_fullCacheEndTime, Isis::SpicePosition::p_fullCacheSize, Isis::SpicePosition::p_fullCacheStartTime, Isis::SpicePosition::p_hasVelocity, Isis::SpicePosition::p_source, Isis::SpicePosition::p_velocity, Isis::SpicePosition::PolyFunction, Isis::IException::Programmer, and Isis::SpicePosition::SetEphemerisTime().

◆ LoadTimeCache()

void Isis::SpicePosition::LoadTimeCache ( )
privateinherited

Load the time cache.

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

Definition at line 1577 of file SpicePosition.cpp.

References Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_fullCacheEndTime, Isis::SpicePosition::p_fullCacheSize, and Isis::SpicePosition::p_fullCacheStartTime.

Referenced by Isis::SpicePosition::LoadCache(), and Isis::SpicePosition::ReloadCache().

◆ Memcache2HermiteCache()

void Isis::SpicePosition::Memcache2HermiteCache ( double tolerance)
inherited

This method reduces the cache for position, time and velocity to the minimum number of values needed to interpolate the J2000 coordinates using a Hermite spline, given a tolerance of deviation from the NAIF values.

Parameters
toleranceMaximum error allowed between NAIF kernel coordinate values and values interpolated by the Hermite spline.
History
2009-08-03 Jeannie Walldren - Original version.

Definition at line 1463 of file SpicePosition.cpp.

References Isis::SpicePosition::HermiteCache, Isis::SpicePosition::m_state, Isis::SpicePosition::Memcache, Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_source, and Isis::IException::Programmer.

Referenced by Isis::SpicePosition::Cache(), Isis::Spice::createCache(), and Isis::Spice::init().

◆ ReloadCache() [1/2]

void Isis::SpicePosition::ReloadCache ( )
inherited

Cache J2000 positions over existing cached time range using polynomials.

This method will reload an internal cache with positions calculated from functions fit to the coordinates of the position over a time range.

History
2012-01-25 Debbie A. Cook - Modified error checking for type to allow all function types (>=HermiteCache)

Definition at line 729 of file SpicePosition.cpp.

References Isis::NaifStatus::CheckErrors(), Isis::SpicePosition::HermiteCache, Isis::SpicePosition::LoadTimeCache(), Isis::SpicePosition::m_state, Isis::SpicePosition::Memcache, Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_et, Isis::SpicePosition::p_hasVelocity, Isis::SpicePosition::p_source, Isis::SpicePosition::p_velocity, Isis::IException::Programmer, and Isis::SpicePosition::SetEphemerisTime().

Referenced by Isis::SpicePosition::LineCache().

◆ ReloadCache() [2/2]

void Isis::SpicePosition::ReloadCache ( Table & table)
inherited

Cache J2000 position over existing cached time range using table.

This method will reload an internal cache with positions formed from coordinates in a table

Parameters
tableAn ISIS table blob containing valid J2000 coordinate/time values.
History
2009-08-03 Jeannie Walldren - Original version.

Definition at line 1567 of file SpicePosition.cpp.

References Isis::SpicePosition::ClearCache(), Isis::SpicePosition::LoadCache(), Isis::SpicePosition::p_source, and Isis::SpicePosition::Spice.

◆ scaledTime()

double Isis::SpicePosition::scaledTime ( ) const
inherited

Return the scaled time.

Returns
Scaled time.

Definition at line 1551 of file SpicePosition.cpp.

References Isis::SpicePosition::p_baseTime, Isis::SpicePosition::p_et, and Isis::SpicePosition::p_timeScale.

◆ SetAberrationCorrection()

void Isis::SpacecraftPosition::SetAberrationCorrection ( const QString & correction)
virtual

Set aberration correction value for determining positions.

Author
2012-10-29 Kris Becker
Parameters
correctionType of stellar aberration correction to apply

Reimplemented from Isis::SpicePosition.

Definition at line 99 of file SpacecraftPosition.cpp.

References m_abcorr, Isis::LightTimeCorrectionState::setAberrationCorrection(), and Isis::SpicePosition::SetAberrationCorrection().

◆ SetEphemerisTime()

const std::vector< double > & Isis::SpicePosition::SetEphemerisTime ( double et)
virtualinherited

Return J2000 coordinate at given time.

This method returns the J2000 coordinates (x,y,z) of the body at a given et in seconds. The coordinates are obtained from either a valid NAIF spk kernel, or alternatively from an internal cache loaded from an ISIS Table object. In the first case, the SPK kernel must contain positions for the body code specified in the constructor at the given time and it must be loaded using the SpiceKernel class.

Parameters
etephemeris time in seconds
History
2009-08-03 Jeannie Walldren - Moved code to individual methods for each Source type to make software more readable.

Definition at line 249 of file SpicePosition.cpp.

References Isis::NaifStatus::CheckErrors(), Isis::SpicePosition::HermiteCache, Isis::SpicePosition::Memcache, Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_et, Isis::SpicePosition::p_source, Isis::SpicePosition::PolyFunction, Isis::SpicePosition::PolyFunctionOverHermiteConstant, Isis::SpicePosition::SetEphemerisTimeHermiteCache(), Isis::SpicePosition::SetEphemerisTimeMemcache(), Isis::SpicePosition::SetEphemerisTimePolyFunction(), Isis::SpicePosition::SetEphemerisTimePolyFunctionOverHermiteConstant(), and Isis::SpicePosition::SetEphemerisTimeSpice().

Referenced by Isis::Spice::computeSolarLongitude(), Isis::SpicePosition::GetCenterCoordinate(), Isis::SpicePosition::LoadCache(), Isis::SpicePosition::LoadCache(), Isis::SpicePosition::LoadHermiteCache(), Isis::IsisIlluminator::position(), Isis::SpicePosition::ReloadCache(), Isis::SpicePosition::SetPolynomial(), Isis::SpicePosition::SetPolynomial(), Isis::Spice::setTime(), and Isis::IsisIlluminator::velocity().

◆ SetEphemerisTimeHermiteCache()

void Isis::SpicePosition::SetEphemerisTimeHermiteCache ( )
protectedinherited

This is a protected method that is called by SetEphemerisTime() when Source type is HermiteCache.

It calculates J2000 coordinates (x,y,z) of the body that correspond to a given et in seconds. These coordinates are obtained by using a Hermite spline to interpolate values from an internal reduced cache loaded from an ISIS Table object.

See also
SetEphemerisTime()
History
2009-08-03 Jeannie Walldren - Original version

Definition at line 1324 of file SpicePosition.cpp.

References Isis::IException::Io, Isis::SpicePosition::m_state, Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_et, Isis::SpicePosition::p_hasVelocity, and Isis::SpicePosition::p_velocity.

Referenced by Isis::SpicePosition::HermiteCoordinate(), Isis::SpicePosition::SetEphemerisTime(), and Isis::SpicePosition::SetEphemerisTimePolyFunctionOverHermiteConstant().

◆ SetEphemerisTimeMemcache()

void Isis::SpicePosition::SetEphemerisTimeMemcache ( )
protectedinherited

This is a protected method that is called by SetEphemerisTime() when Source type is Memcache.

It calculates J2000 coordinates (x,y,z) of the body that correspond to a given et in seconds. These coordinates are obtained from an internal cache loaded from an ISIS Table object.

See also
SetEphemerisTime()
History
2009-08-03 Jeannie Walldren - Original version (moved code from SetEphemerisTime() to its own method)

Definition at line 1294 of file SpicePosition.cpp.

References Isis::SpicePosition::m_state, Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_et, Isis::SpicePosition::p_hasVelocity, and Isis::SpicePosition::p_velocity.

Referenced by Isis::SpicePosition::SetEphemerisTime().

◆ SetEphemerisTimePolyFunction()

void Isis::SpicePosition::SetEphemerisTimePolyFunction ( )
protectedinherited

This is a protected method that is called by SetEphemerisTime() when Source type is PolyFunction.

It calculates J2000 coordinates (x,y,z) of the body that correspond to a given et in seconds. These coordinates are obtained by using an nth degree polynomial function fit to each coordinate of the position vector.

See also
SetEphemerisTime()
History
2011-01-05 Debbie A. Cook - Original version

Definition at line 1355 of file SpicePosition.cpp.

References Isis::SpicePosition::ComputeVelocityInTime(), Isis::SpicePosition::m_state, Isis::SpicePosition::p_baseTime, Isis::SpicePosition::p_coefficients, Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_degree, Isis::SpicePosition::p_et, Isis::SpicePosition::p_hasVelocity, Isis::SpicePosition::p_timeScale, and Isis::SpicePosition::p_velocity.

Referenced by Isis::SpicePosition::SetEphemerisTime(), and Isis::SpicePosition::SetEphemerisTimePolyFunctionOverHermiteConstant().

◆ SetEphemerisTimePolyFunctionOverHermiteConstant()

void Isis::SpicePosition::SetEphemerisTimePolyFunctionOverHermiteConstant ( )
protectedinherited

This is a protected method that is called by SetEphemerisTime() when Source type is PolyFunctionOverHermiteConstant.

It calculates J2000 coordinates (x,y,z) of the body that correspond to a given et in seconds. These coordinates are obtained by adding a constant cubic Hermite spline added to an nth degree polynomial function fit to each coordinate of the position vector.

See also
SetEphemerisTime()
History
2012-01-25 Debbie A. Cook - Original version

Definition at line 1403 of file SpicePosition.cpp.

References Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_velocity, Isis::SpicePosition::SetEphemerisTimeHermiteCache(), and Isis::SpicePosition::SetEphemerisTimePolyFunction().

Referenced by Isis::SpicePosition::SetEphemerisTime().

◆ SetEphemerisTimeSpice()

void Isis::SpacecraftPosition::SetEphemerisTimeSpice ( )
virtual

Determine accurate position of target w.r.t.

observer

This method computes the position of the target w.r.t. the observer with additional specialized light time position of target and to a more accurate correction to the surface.

NAIF routines are used to compute state vectors that have optional light time correction applied. However, this uses the center of the body as the reference

Author
2012-10-29 Kris Becker
History
2012-11-01 Kris Becker - Revised parameters to computeStateVector to match comments. References #1136.

Reimplemented from Isis::SpicePosition.

Definition at line 131 of file SpacecraftPosition.cpp.

References Isis::SpicePosition::computeStateVector(), GetAberrationCorrection(), Isis::SpicePosition::getAdjustedEphemerisTime(), Isis::SpicePosition::getObserverCode(), getRadiusLightTime(), Isis::SpicePosition::getTargetCode(), Isis::LightTimeCorrectionState::isLightTimeCorrected(), Isis::LightTimeCorrectionState::isLightTimeToSurfaceCorrected(), m_abcorr, Isis::SpicePosition::SetEphemerisTimeSpice(), Isis::SpicePosition::setLightTime(), and Isis::SpicePosition::setStateVector().

◆ setLightTime()

void Isis::SpicePosition::setLightTime ( const double & lightTime)
protectedinherited

Inheritors can set the light time if indicated.

Definition at line 1833 of file SpicePosition.cpp.

References Isis::SpicePosition::m_lt.

Referenced by SetEphemerisTimeSpice(), and Isis::SpicePosition::SetEphemerisTimeSpice().

◆ SetOverrideBaseTime()

void Isis::SpicePosition::SetOverrideBaseTime ( double baseTime,
double timeScale )
inherited

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

Parameters
[in]baseTimeThe baseTime to use and override the computed base time
History
2011-04-08 Debbie A. Cook - Corrected p_override set to BaseAndScale

Definition at line 1147 of file SpicePosition.cpp.

References Isis::SpicePosition::p_override, Isis::SpicePosition::p_overrideBaseTime, and Isis::SpicePosition::p_overrideTimeScale.

Referenced by Isis::IsisBundleObservation::initializeExteriorOrientation(), and Isis::SpicePosition::LoadCache().

◆ SetPolynomial() [1/2]

void Isis::SpicePosition::SetPolynomial ( const Source type = PolyFunction)
inherited

Set the coefficients of a polynomial fit to each of the components (X, Y, Z) of the position vector for the time period covered by the cache, component = c0 + c1*t + c2*t**2 + ... + cn*t**n, where t = (time - p_baseTime) / p_timeScale.

< Basis function fit to X

< Basis function fit to Y

< Basis function fit to Z

Definition at line 930 of file SpicePosition.cpp.

References Isis::SpicePosition::ComputeBaseTime(), Isis::SpicePosition::m_state, Isis::SpicePosition::p_baseTime, Isis::SpicePosition::p_cacheTime, Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_degree, Isis::SpicePosition::p_source, Isis::SpicePosition::p_timeScale, Isis::SpicePosition::PolyFunction, Isis::SpicePosition::PolyFunctionOverHermiteConstant, Isis::SpicePosition::SetEphemerisTime(), and Isis::SpicePosition::SetPolynomial().

Referenced by Isis::IsisBundleObservation::initializeExteriorOrientation(), Isis::SpicePosition::LoadCache(), Isis::SpicePosition::SetPolynomial(), and Isis::SpicePosition::SetPolynomialDegree().

◆ SetPolynomial() [2/2]

void Isis::SpicePosition::SetPolynomial ( const std::vector< double > & XC,
const std::vector< double > & YC,
const std::vector< double > & ZC,
const Source type = PolyFunction )
inherited

Set the coefficients of a polynomial (parabola) fit to each of the three coordinates of the position vector for the time period covered by the cache, coord = c0 + c1*t + c2*t**2 + ... + cn*t**n, where t = (time - p_baseTime) / p_timeScale.

Parameters
[in]XCCoefficients of fit to X coordinate
[in]YCCoefficients of fit to Y coordinate
[in]ZCCoefficients of fit to Z coordinate
History
2012-02-05 Debbie A. Cook - Added type argument

Definition at line 1054 of file SpicePosition.cpp.

References Isis::SpicePosition::ComputeBaseTime(), Isis::SpicePosition::p_coefficients, Isis::SpicePosition::p_degree, Isis::SpicePosition::p_degreeApplied, Isis::SpicePosition::p_et, Isis::SpicePosition::p_source, and Isis::SpicePosition::SetEphemerisTime().

◆ SetPolynomialDegree()

void Isis::SpicePosition::SetPolynomialDegree ( int degree)
inherited

Set the polynomial degree.

Set the degree of the polynomials to be fit to the three position coordinates for the time period covered by the cache, coordinate = 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

Definition at line 1502 of file SpicePosition.cpp.

References Isis::SpicePosition::p_coefficients, Isis::SpicePosition::p_degree, Isis::SpicePosition::p_degreeApplied, Isis::SpicePosition::p_fullCacheSize, and Isis::SpicePosition::SetPolynomial().

Referenced by Isis::IsisBundleObservation::initializeExteriorOrientation(), and Isis::SpicePosition::LoadCache().

◆ setStateVector()

void Isis::SpicePosition::setStateVector ( const double state[6],
const bool & hasVelocity )
protectedinherited

Sets the state of target relative to observer.

This method sets the state of the target (vector) relative to the observer. Note that is the only place where the swap of observer/target adjustment to the state vector is handled. All contributors to this computation must compute the state vector representing the position and velocity of the target relative to the observer where the first three components of state[] are the x-, y- and z-component cartesian coordinates of the target's position; the last three are the corresponding velocity vector.

This routine maintains the directional integrity of the state vector should the observer/target be swapped. See the documentation for the spkez_c at http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/spkez_c.html.

Author
2012-10-29 Kris Becker
Parameters
stateState vector. First three components of this 6 element array is the body fixed coordinates of the vector from the target to the observer. The last three components are the velocity state.
hasVelocityIf true, then the velocity components of the state vector are valid, otherwise they should be ignored.

Definition at line 1803 of file SpicePosition.cpp.

References Isis::SpicePosition::p_coordinate, Isis::SpicePosition::p_hasVelocity, and Isis::SpicePosition::p_velocity.

Referenced by SetEphemerisTimeSpice(), and Isis::SpicePosition::SetEphemerisTimeSpice().

◆ SetTimeBias()

void Isis::SpicePosition::SetTimeBias ( double timeBias)
inherited

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 150 of file SpicePosition.cpp.

References Isis::SpicePosition::p_timeBias.

◆ Velocity()

const std::vector< double > & Isis::SpicePosition::Velocity ( )
inherited

Return the current J2000 velocity.

Return the velocity vector if available.

Returns
The velocity vector evaluated at the current time

Definition at line 1269 of file SpicePosition.cpp.

References Isis::SpicePosition::p_hasVelocity, Isis::SpicePosition::p_velocity, and Isis::IException::Programmer.

Referenced by Isis::Spice::computeSolarLongitude(), Isis::Spice::instrumentBodyFixedVelocity(), and Isis::IsisIlluminator::velocity().

◆ VelocityPartial()

std::vector< double > Isis::SpicePosition::VelocityPartial ( SpicePosition::PartialType partialVar,
int coeffIndex )
inherited

Compute the derivative of the velocity with respect to the specified variable.

The velocity is the derivative of the coordinate with respect to time.

coordinate = C0 + C1*t + C2*t**2 + ... +Cn*t**n , where t = (time - p_basetime) / p_timeScale. velocity = (1/p_timeScale) * (C1 + 2*C2*t + ... + n*Cn*t**(n-1)) partial(velocity) with respect to C0 = 0. partial(velocity) with respect to C1 = 1/p_timeScale. partial(velocity) with respect to C2 = 2*t/p_timeScale partial(velocity) with respect to CN = n*t**(n-1)/p_timeScale

Parameters
partialVarDesignated variable of the partial derivative
Returns
Derivative of j2000 velocity vector calculated with respect to partialVar

Definition at line 1208 of file SpicePosition.cpp.

References Isis::SpicePosition::p_baseTime, Isis::SpicePosition::p_et, and Isis::SpicePosition::p_timeScale.

Member Data Documentation

◆ m_abcorr

LightTimeCorrectionState Isis::SpacecraftPosition::m_abcorr
private

◆ m_lt

double Isis::SpicePosition::m_lt
privateinherited

!< Swap traditional order

Definition at line 357 of file SpicePosition.h.

Referenced by Isis::SpicePosition::GetLightTime(), Isis::SpicePosition::init(), and Isis::SpicePosition::setLightTime().

◆ m_radius

Distance Isis::SpacecraftPosition::m_radius
private

Radius of target.

Definition at line 83 of file SpacecraftPosition.h.

Referenced by getRadiusLightTime(), and SpacecraftPosition().

◆ m_state

◆ m_swapObserverTarget

bool Isis::SpicePosition::m_swapObserverTarget
privateinherited

Definition at line 356 of file SpicePosition.h.

◆ p_aberrationCorrection

QString Isis::SpicePosition::p_aberrationCorrection
privateinherited

◆ p_baseTime

◆ p_cacheTime

◆ p_coefficients

◆ p_coordinate

◆ p_degree

◆ p_degreeApplied

bool Isis::SpicePosition::p_degreeApplied
privateinherited

Flag indicating whether or not a polynomial.

Definition at line 343 of file SpicePosition.h.

Referenced by Isis::SpicePosition::init(), Isis::SpicePosition::SetPolynomial(), and Isis::SpicePosition::SetPolynomialDegree().

◆ p_et

◆ p_fullCacheEndTime

◆ p_fullCacheSize

◆ p_fullCacheStartTime

◆ p_hasVelocity

◆ p_observerCode

int Isis::SpicePosition::p_observerCode
privateinherited

observer body code

Definition at line 328 of file SpicePosition.h.

Referenced by Isis::SpicePosition::getObserverCode(), and Isis::SpicePosition::init().

◆ p_override

OverrideType Isis::SpicePosition::p_override
privateinherited

◆ p_overrideBaseTime

double Isis::SpicePosition::p_overrideBaseTime
privateinherited

Value set by caller to override computed base time.

Definition at line 352 of file SpicePosition.h.

Referenced by Isis::SpicePosition::ComputeBaseTime(), and Isis::SpicePosition::SetOverrideBaseTime().

◆ p_overrideTimeScale

double Isis::SpicePosition::p_overrideTimeScale
privateinherited

Value set by caller to override computed time scale.

Definition at line 353 of file SpicePosition.h.

Referenced by Isis::SpicePosition::ComputeBaseTime(), Isis::SpicePosition::LoadCache(), and Isis::SpicePosition::SetOverrideBaseTime().

◆ p_source

◆ p_targetCode

int Isis::SpicePosition::p_targetCode
privateinherited

target body code

Definition at line 327 of file SpicePosition.h.

Referenced by Isis::SpicePosition::getTargetCode(), and Isis::SpicePosition::init().

◆ p_timeBias

double Isis::SpicePosition::p_timeBias
privateinherited

iTime bias when reading kernels

Definition at line 330 of file SpicePosition.h.

Referenced by Isis::SpicePosition::GetTimeBias(), Isis::SpicePosition::init(), and Isis::SpicePosition::SetTimeBias().

◆ p_timeScale

◆ p_velocity


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