20#include "ale/States.h" 
   22#include <nlohmann/json.hpp> 
   24class  IsisIlluminator_Velocity_Test;
 
  221      const std::vector<double> &
Velocity();
 
  225        return p_hasVelocity;
 
 
  228      void LoadCache(
double startTime, 
double endTime, 
int size);
 
  243        return (m_state != NULL);
 
 
  249          return m_state->getStates().size();
 
 
  257                         const std::vector<double>& YC,
 
  258                         const std::vector<double>& ZC,
 
  262                         std::vector<double>& YC,
 
  263                         std::vector<double>& ZC);
 
  297      friend class ::IsisIlluminator_Velocity_Test;
 
  306      SpicePosition(
int targetCode, 
int observerCode, 
bool swapObserverTarget);
 
  311                              const QString &refFrame,
 
  312                              const QString &abcorr,
 
  313                              double state[6], 
bool &hasVelocity,
 
  314                              double &lightTime) 
const;
 
  315      void setStateVector(
const double state[6], 
const bool &hasVelocity);
 
  320      void init(
int targetCode, 
int observerCode,
 
  321                const bool &swapObserverTarget = 
false);
 
  323      void LoadTimeCache();
 
  324      void CacheLabel(
Table &table);
 
  331      QString p_aberrationCorrection; 
 
  334      std::vector<double> p_coordinate;   
 
  335      std::vector<double> p_velocity;     
 
  338      std::vector<double> p_cacheTime;    
 
  339      std::vector<double> p_coefficients[3];             
 
  343      bool p_degreeApplied;               
 
  347      double p_fullCacheStartTime;        
 
  348      double p_fullCacheEndTime;          
 
  349      double p_fullCacheSize;             
 
  352      double p_overrideBaseTime;          
 
  353      double p_overrideTimeScale;         
 
  356      bool   m_swapObserverTarget;  
 
  359      ale::States *m_state; 
 
 
NumericalApproximation provides various numerical analysis methods of interpolation,...
Definition NumericalApproximation.h:726
int cacheSize() const
Get the size of the current cached positions.
Definition SpicePosition.h:247
double GetTimeScale()
Return the time scale for the position.
Definition SpicePosition.h:283
double DPolynomial(const int coeffIndex)
Evaluate the derivative of the fit polynomial (parabola) defined by the given coefficients with respe...
Definition SpicePosition.cpp:1244
void Memcache2HermiteCache(double tolerance)
This method reduces the cache for position, time and velocity to the minimum number of values needed ...
Definition SpicePosition.cpp:1463
void ComputeBaseTime()
Compute the base time using cached times.
Definition SpicePosition.cpp:1116
Table LineCache(const QString &tableName)
Return a table with J2000 to reference positions.
Definition SpicePosition.cpp:704
bool HasVelocity()
Return the flag indicating whether the velocity exists.
Definition SpicePosition.h:224
double GetTimeBias() const
Returns the value of the time bias added to ET.
Definition SpicePosition.cpp:161
void SetOverrideBaseTime(double baseTime, double timeScale)
Set an override base time to be used with observations on scanners to allow all images in an observat...
Definition SpicePosition.cpp:1147
virtual void SetEphemerisTimeSpice()
This is a protected method that is called by SetEphemerisTime() when Source type is Spice.
Definition SpicePosition.cpp:1432
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 ...
Definition SpicePosition.cpp:1103
void setLightTime(const double &lightTime)
Inheritors can set the light time if indicated.
Definition SpicePosition.cpp:1833
const std::vector< double > & Velocity()
Return the current J2000 velocity.
Definition SpicePosition.cpp:1269
double GetBaseTime()
Return the base time for the position.
Definition SpicePosition.h:276
void ReloadCache()
Cache J2000 positions over existing cached time range using polynomials.
Definition SpicePosition.cpp:729
Source
This enum indicates the status of the object.
Definition SpicePosition.h:183
@ HermiteCache
Object is reading from splined table.
Definition SpicePosition.h:185
@ PolyFunction
Object is calculated from nth degree polynomial.
Definition SpicePosition.h:186
@ Memcache
Object is reading from cached table.
Definition SpicePosition.h:184
@ Spice
Object is reading directly from the kernels.
Definition SpicePosition.h:183
@ PolyFunctionOverHermiteConstant
Object is reading from splined.
Definition SpicePosition.h:187
void LoadCache(double startTime, double endTime, int size)
Cache J2000 position over a time range.
Definition SpicePosition.cpp:297
void SetEphemerisTimeMemcache()
This is a protected method that is called by SetEphemerisTime() when Source type is Memcache.
Definition SpicePosition.cpp:1294
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 f...
Definition SpicePosition.cpp:930
Table LoadHermiteCache(const QString &tableName)
Cache J2000 position over existing cached time range using polynomials stored as Hermite cubic spline...
Definition SpicePosition.cpp:793
bool IsCached() const
Is this position cached.
Definition SpicePosition.h:242
std::vector< double > Extrapolate(double timeEt)
Extrapolate position for a given time assuming a constant velocity.
Definition SpicePosition.cpp:1635
void setStateVector(const double state[6], const bool &hasVelocity)
Sets the state of target relative to observer.
Definition SpicePosition.cpp:1803
PartialType
Definition SpicePosition.h:204
@ WRT_Z
Definition SpicePosition.h:204
@ WRT_X
Definition SpicePosition.h:204
@ WRT_Y
Definition SpicePosition.h:204
OverrideType
Definition SpicePosition.h:292
@ BaseAndScale
Definition SpicePosition.h:292
@ NoOverrides
Definition SpicePosition.h:292
@ ScaleOnly
Definition SpicePosition.h:292
int getTargetCode() const
Returns target code.
Definition SpicePosition.cpp:1698
const std::vector< double > & GetCenterCoordinate()
Compute and return the coordinate at the center time.
Definition SpicePosition.cpp:1595
double scaledTime() const
Return the scaled time.
Definition SpicePosition.cpp:1551
double getAdjustedEphemerisTime() const
Returns adjusted ephemeris time.
Definition SpicePosition.cpp:1714
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 ...
Definition SpicePosition.cpp:1167
void SetEphemerisTimeHermiteCache()
This is a protected method that is called by SetEphemerisTime() when Source type is HermiteCache.
Definition SpicePosition.cpp:1324
virtual double EphemerisTime() const
Return the current ephemeris time.
Definition SpicePosition.h:207
void SetTimeBias(double timeBias)
Apply a time bias when invoking SetEphemerisTime method.
Definition SpicePosition.cpp:150
virtual ~SpicePosition()
Destructor.
Definition SpicePosition.cpp:133
void SetEphemerisTimePolyFunction()
This is a protected method that is called by SetEphemerisTime() when Source type is PolyFunction.
Definition SpicePosition.cpp:1355
int getObserverCode() const
Returns observer code.
Definition SpicePosition.cpp:1684
virtual const std::vector< double > & SetEphemerisTime(double et)
Return J2000 coordinate at given time.
Definition SpicePosition.cpp:249
SpicePosition(int targetCode, int observerCode)
Construct an empty SpicePosition class using valid body codes.
Definition SpicePosition.cpp:37
void SetEphemerisTimePolyFunctionOverHermiteConstant()
This is a protected method that is called by SetEphemerisTime() when Source type is PolyFunctionOverH...
Definition SpicePosition.cpp:1403
Source GetSource()
Return the source of the position.
Definition SpicePosition.h:269
double GetLightTime() const
Return the light time coorection value.
Definition SpicePosition.cpp:230
std::vector< double > HermiteCoordinate()
This method returns the Hermite coordinate for the current time for PolyFunctionOverHermiteConstant f...
Definition SpicePosition.cpp:1655
virtual const std::vector< double > & Coordinate()
Return the current J2000 position.
Definition SpicePosition.h:216
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.
Definition SpicePosition.cpp:1751
virtual void SetAberrationCorrection(const QString &correction)
Set the aberration correction (light time)
Definition SpicePosition.cpp:186
void SetPolynomialDegree(int degree)
Set the polynomial degree.
Definition SpicePosition.cpp:1502
std::vector< double > VelocityPartial(SpicePosition::PartialType partialVar, int coeffIndex)
Compute the derivative of the velocity with respect to the specified variable.
Definition SpicePosition.cpp:1208
Table Cache(const QString &tableName)
Return a table with J2000 positions.
Definition SpicePosition.cpp:549
virtual QString GetAberrationCorrection() const
Returns current state of stellar aberration correction.
Definition SpicePosition.cpp:213
Class for storing Table blobs information.
Definition Table.h:61
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16