3 #include <isce3/error/ErrorCode.h>
8 #include "StateVector.h"
12 namespace isce3 {
namespace core {
56 Orbit(
const std::vector<StateVector> & statevecs,
66 Orbit(
const std::vector<StateVector> & statevecs,
116 const std::vector<Vec3> &
position()
const {
return _position; }
119 const std::vector<Vec3> &
velocity()
const {
return _velocity; }
122 double time(
int idx)
const {
return _time[idx]; }
144 isce3::error::ErrorCode
152 std::vector<Vec3> _position;
153 std::vector<Vec3> _velocity;
157 bool operator==(
const Orbit &,
const Orbit &);
158 bool operator!=(
const Orbit &,
const Orbit &);
Eighth-order Legendre polynomial interpolation.
Raise error if interpolation attempted outside orbit domain.
CUDA_HOSTDEV constexpr int size() const
Number of samples.
Definition: Linspace.h:86
DateTime startDateTime() const
UTC time of first state vector.
Definition: Orbit.h:98
double spacing() const
Time interval between state vectors (s)
Definition: Orbit.h:107
const DateTime & referenceEpoch() const
Reference epoch (UTC)
Definition: Orbit.h:77
Output NaN for interpolation points outside orbit domain.
Data structure to store date time to nano-sec precision.
Definition: DateTime.h:18
OrbitInterpMethod
Orbit interpolation method.
Definition: Orbit.h:20
const std::vector< Vec3 > & position() const
Get state vector positions in ECEF coordinates (m)
Definition: Orbit.h:116
constexpr int minStateVecs(OrbitInterpMethod method)
Get minimum number of orbit state vectors required for interpolation with specified method...
Definition: Orbit.h:165
double endTime() const
Time of last state vector relative to reference epoch (s)
Definition: Orbit.h:95
double startTime() const
Time of first state vector relative to reference epoch (s)
Definition: Orbit.h:89
OrbitInterpMethod interpMethod() const
Interpolation method.
Definition: Orbit.h:83
CUDA_HOSTDEV constexpr T spacing() const
Sample spacing.
Definition: Linspace.h:76
Data structure to store TimeDelta to double precision seconds.
Definition: TimeDelta.h:16
Allow extrapolation to points outside orbit domain.
double time(int idx) const
Get the specified state vector time relative to reference epoch (s)
Definition: Orbit.h:122
DateTime endDateTime() const
UTC time of last state vector.
Definition: Orbit.h:104
const Linspace< double > & time() const
Get state vector times relative to reference epoch (s)
Definition: Orbit.h:113
int size() const
Number of state vectors in orbit.
Definition: Orbit.h:110
double midTime() const
Time of center of orbit relative to reference epoch (s)
Definition: Orbit.h:92
isce3::error::ErrorCode interpolate(Vec3 *position, Vec3 *velocity, double t, OrbitInterpBorderMode border_mode=OrbitInterpBorderMode::Error) const
Interpolate platform position and/or velocity.
Definition: Orbit.cpp:61
const Vec3 & velocity(int idx) const
Get the specified state vector velocity in ECEF coordinates (m/s)
Definition: Orbit.h:128
Third-order Hermite polynomial interpolation.
void setStateVectors(const std::vector< StateVector > &)
Set orbit state vectors.
Definition: Orbit.cpp:42
const Vec3 & position(int idx) const
Get the specified state vector position in ECEF coordinates (m)
Definition: Orbit.h:125
OrbitInterpBorderMode
Mode determining how interpolation outside of orbit domain is handled.
Definition: Orbit.h:26
void interpMethod(OrbitInterpMethod interp_method)
Set interpolation method.
Definition: Orbit.h:86
const std::vector< Vec3 > & velocity() const
Get state vector velocities in ECEF coordinates (m/s)
Definition: Orbit.h:119
Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing, supporting efficient lookup and interpolation.
Definition: Orbit.h:43
DateTime midDateTime() const
UTC time of center of orbit.
Definition: Orbit.h:101
std::vector< StateVector > getStateVectors() const
Export list of state vectors.
Definition: Orbit.cpp:31