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) | |
Construct from list of state vectors. More... | |
Orbit (const std::vector< StateVector > &statevecs, const DateTime &reference_epoch, OrbitInterpMethod interp_method=OrbitInterpMethod::Hermite) | |
Construct from list of state vectors and reference epoch. More... | |
std::vector< StateVector > | getStateVectors () const |
Export list of state vectors. | |
void | setStateVectors (const std::vector< StateVector > &) |
Set orbit state vectors. | |
const DateTime & | referenceEpoch () 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. | |
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. | |
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 Vec3 & | position (int idx) const |
Get the specified state vector position in ECEF coordinates (m) | |
const Vec3 & | velocity (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. More... | |
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.
isce3::core::Orbit::Orbit | ( | const std::vector< StateVector > & | statevecs, |
OrbitInterpMethod | interp_method = OrbitInterpMethod::Hermite |
||
) |
Construct from list of state vectors.
Reference epoch defaults to time of first state vector
[in] | statevecs | State vectors |
[in] | interp_method | Interpolation method |
isce3::core::Orbit::Orbit | ( | const std::vector< StateVector > & | statevecs, |
const DateTime & | reference_epoch, | ||
OrbitInterpMethod | interp_method = OrbitInterpMethod::Hermite |
||
) |
Construct from list of state vectors and reference epoch.
[in] | statevecs | State vectors |
[in] | reference_epoch | Reference epoch |
[in] | interp_method | Interpolation method |
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.
[out] | position | Interpolated position |
[out] | velocity | Interpolated velocity |
[in] | t | Interpolation time |
[in] | border_mode | Mode for handling interpolation outside orbit domain |