|
isce3 0.25.0
|
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< 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. | |
| 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) | |
| double | time (int idx) const |
| Get the specified state vector time relative to reference epoch (s) | |
| const std::vector< Vec3 > & | position () const |
| Get state vector positions in ECEF coordinates (m) | |
| const Vec3 & | position (int idx) const |
| Get the specified state vector position in ECEF coordinates (m) | |
| const std::vector< Vec3 > & | velocity () const |
| Get state vector velocities in ECEF coordinates (m/s) | |
| 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. | |
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, | ||
| const std::string & | type = "" ) |
Construct from list of state vectors.
Reference epoch defaults to time of first state vector
| [in] | statevecs | State vectors |
| [in] | interp_method | Interpolation method |
| [in] | type | Orbit ephemeris precision type |
| 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
| [in] | statevecs | State vectors |
| [in] | type | Orbit ephemeris precision type |
| 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.
| [in] | statevecs | State vectors |
| [in] | reference_epoch | Reference epoch |
| [in] | interp_method | Interpolation method |
| [in] | orbit_type | Orbit ephemeris precision type |
Create a new Orbit containing data in the requested interval.
| [in] | start | Beginning of time interval |
| [in] | end | End of time interval |
| [in] | npad | Minimal number of state vectors to include past each of the given time bounds (useful to guarantee adequate support for interpolation). |
| 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 |
| 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.
1.13.2.