isce3 0.25.0
Loading...
Searching...
No Matches
isce3::core::Orbit Class Reference

Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing, supporting efficient lookup and interpolation. More...

#include <Orbit.h>

Public Member Functions

 Orbit (const std::vector< StateVector > &statevecs, OrbitInterpMethod interp_method=OrbitInterpMethod::Hermite, const std::string &type="")
 Construct from list of state vectors.
 
 Orbit (const std::vector< StateVector > &statevecs, const std::string &type)
 Construct from list of state vectors and orbit type.
 
 Orbit (const std::vector< StateVector > &statevecs, const DateTime &reference_epoch, OrbitInterpMethod interp_method=OrbitInterpMethod::Hermite, const std::string &type="")
 Construct from list of state vectors and reference epoch.
 
Orbit crop (const DateTime &start, const DateTime &end, int npad=0) const
 Create a new Orbit containing data in the requested interval.
 
std::vector< StateVectorgetStateVectors () const
 Export list of state vectors.
 
void setStateVectors (const std::vector< StateVector > &)
 Set orbit state vectors.
 
const DateTimereferenceEpoch () const
 Reference epoch (UTC)
 
void referenceEpoch (const DateTime &)
 Set reference epoch (UTC)
 
OrbitInterpMethod interpMethod () const
 Interpolation method.
 
void interpMethod (OrbitInterpMethod interp_method)
 Set interpolation method.
 
const std::string & type () const
 Orbit ephemeris precision type.
 
void type (const std::string &orbit_type)
 Set the orbit ephemeris precision type.
 
double startTime () const
 Time of first state vector relative to reference epoch (s)
 
double midTime () const
 Time of center of orbit relative to reference epoch (s)
 
double endTime () const
 Time of last state vector relative to reference epoch (s)
 
DateTime startDateTime () const
 UTC time of first state vector.
 
DateTime midDateTime () const
 UTC time of center of orbit.
 
DateTime endDateTime () const
 UTC time of last state vector.
 
bool contains (double time) const
 Check if time falls in the valid interpolation domain.
 
double spacing () const
 Time interval between state vectors (s)
 
int size () const
 Number of state vectors in orbit.
 
const Linspace< double > & time () const
 Get state vector times relative to reference epoch (s)
 
const std::vector< Vec3 > & position () const
 Get state vector positions in ECEF coordinates (m)
 
const std::vector< Vec3 > & velocity () const
 Get state vector velocities in ECEF coordinates (m/s)
 
double time (int idx) const
 Get the specified state vector time relative to reference epoch (s)
 
const Vec3position (int idx) const
 Get the specified state vector position in ECEF coordinates (m)
 
const Vec3velocity (int idx) const
 Get the specified state vector velocity in ECEF coordinates (m/s)
 
isce3::error::ErrorCode interpolate (Vec3 *position, Vec3 *velocity, double t, OrbitInterpBorderMode border_mode=OrbitInterpBorderMode::Error) const
 Interpolate platform position and/or velocity.
 

Detailed Description

Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing, supporting efficient lookup and interpolation.

DateTimes are expected to be UTC. Positions & velocities are in meters and meters per second respectively and in ECEF coordinates w.r.t WGS84 ellipsoid.

Platform position and velocity are stored at timepoints relative to a reference epoch. For best accuracy, reference epoch should be within 24 hours of orbit time tags.

Constructor & Destructor Documentation

◆ Orbit() [1/3]

isce3::core::Orbit::Orbit ( const std::vector< StateVector > & statevecs,
OrbitInterpMethod interp_method = OrbitInterpMethod::Hermite,
const std::string & type = "" )

Construct from list of state vectors.

Reference epoch defaults to time of first state vector

Parameters
[in]statevecsState vectors
[in]interp_methodInterpolation method
[in]typeOrbit ephemeris precision type

◆ Orbit() [2/3]

isce3::core::Orbit::Orbit ( const std::vector< StateVector > & statevecs,
const std::string & type )

Construct from list of state vectors and orbit type.

Reference epoch defaults to time of first state vector

Parameters
[in]statevecsState vectors
[in]typeOrbit ephemeris precision type

◆ Orbit() [3/3]

isce3::core::Orbit::Orbit ( const std::vector< StateVector > & statevecs,
const DateTime & reference_epoch,
OrbitInterpMethod interp_method = OrbitInterpMethod::Hermite,
const std::string & type = "" )

Construct from list of state vectors and reference epoch.

Parameters
[in]statevecsState vectors
[in]reference_epochReference epoch
[in]interp_methodInterpolation method
[in]orbit_typeOrbit ephemeris precision type

Member Function Documentation

◆ crop()

Orbit isce3::core::Orbit::crop ( const DateTime & start,
const DateTime & end,
int npad = 0 ) const

Create a new Orbit containing data in the requested interval.

Parameters
[in]startBeginning of time interval
[in]endEnd of time interval
[in]npadMinimal number of state vectors to include past each of the given time bounds (useful to guarantee adequate support for interpolation).
Returns
Orbit object with data containing start & end times. The reference epoch and interpolation method are preserved.

◆ interpolate()

ErrorCode isce3::core::Orbit::interpolate ( Vec3 * position,
Vec3 * velocity,
double t,
OrbitInterpBorderMode border_mode = OrbitInterpBorderMode::Error ) const

Interpolate platform position and/or velocity.

If either position or velocity is a null pointer, that output will not be computed. This may improve runtime by avoiding unnecessary operations.

Parameters
[out]positionInterpolated position
[out]velocityInterpolated velocity
[in]tInterpolation time
[in]border_modeMode for handling interpolation outside orbit domain
Returns
Error code indicating exit status

◆ referenceEpoch()

void isce3::core::Orbit::referenceEpoch ( const DateTime & reference_epoch)

Set reference epoch (UTC)

Also updates relative time tags so that referenceEpoch() + TimeDelta(time()[i]) results in the same absolute time tags before and after this call.


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

Generated for ISCE3.0 by doxygen 1.13.2.