3#include <isce3/error/ErrorCode.h>
9#include "StateVector.h"
13namespace isce3 {
namespace core {
21enum class OrbitInterpMethod {
27enum class OrbitInterpBorderMode {
58 Orbit(
const std::vector<StateVector> & statevecs,
59 OrbitInterpMethod interp_method = OrbitInterpMethod::Hermite,
60 const std::string&
type =
"");
70 Orbit(
const std::vector<StateVector> & statevecs,
71 const std::string&
type);
81 Orbit(
const std::vector<StateVector> & statevecs,
83 OrbitInterpMethod interp_method = OrbitInterpMethod::Hermite,
84 const std::string&
type =
"");
119 void interpMethod(OrbitInterpMethod interp_method) { _interp_method = interp_method; }
122 const std::string&
type()
const {
return _type; }
125 void type(
const std::string& orbit_type) { _type = orbit_type; }
151 double spacing()
const {
return _time.spacing(); }
154 int size()
const {
return _time.size(); }
160 const std::vector<Vec3> &
position()
const {
return _position; }
163 const std::vector<Vec3> &
velocity()
const {
return _velocity; }
166 double time(
int idx)
const {
return _time[idx]; }
169 const Vec3 &
position(
int idx)
const {
return _position[idx]; }
172 const Vec3 &
velocity(
int idx)
const {
return _velocity[idx]; }
188 isce3::error::ErrorCode
190 OrbitInterpBorderMode border_mode =
191 OrbitInterpBorderMode::Error)
const;
196 std::vector<Vec3> _position;
197 std::vector<Vec3> _velocity;
198 OrbitInterpMethod _interp_method = OrbitInterpMethod::Hermite;
199 std::string _type =
"";
210int minStateVecs(OrbitInterpMethod method)
213 case OrbitInterpMethod::Hermite :
return 4;
214 case OrbitInterpMethod::Legendre :
return 9;
Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing,...
Definition Orbit.h:44
Data structure to store date time to nano-sec precision.
Definition DateTime.h:18
A uniformly-spaced sequence of values over some interval.
Definition Linspace.h:9
const Vec3 & velocity(int idx) const
Get the specified state vector velocity in ECEF coordinates (m/s)
Definition Orbit.h:172
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:71
double time(int idx) const
Get the specified state vector time relative to reference epoch (s)
Definition Orbit.h:166
const Linspace< double > & time() const
Get state vector times relative to reference epoch (s)
Definition Orbit.h:157
const std::vector< Vec3 > & velocity() const
Get state vector velocities in ECEF coordinates (m/s)
Definition Orbit.h:163
const std::vector< Vec3 > & position() const
Get state vector positions in ECEF coordinates (m)
Definition Orbit.h:160
void interpMethod(OrbitInterpMethod interp_method)
Set interpolation method.
Definition Orbit.h:119
const DateTime & referenceEpoch() const
Reference epoch (UTC)
Definition Orbit.h:105
bool contains(double time) const
Check if time falls in the valid interpolation domain.
Definition Orbit.h:146
double startTime() const
Time of first state vector relative to reference epoch (s)
Definition Orbit.h:128
double endTime() const
Time of last state vector relative to reference epoch (s)
Definition Orbit.h:134
DateTime startDateTime() const
UTC time of first state vector.
Definition Orbit.h:137
double midTime() const
Time of center of orbit relative to reference epoch (s)
Definition Orbit.h:131
void setStateVectors(const std::vector< StateVector > &)
Set orbit state vectors.
Definition Orbit.cpp:52
double spacing() const
Time interval between state vectors (s)
Definition Orbit.h:151
void type(const std::string &orbit_type)
Set the orbit ephemeris precision type.
Definition Orbit.h:125
const Vec3 & position(int idx) const
Get the specified state vector position in ECEF coordinates (m)
Definition Orbit.h:169
Orbit crop(const DateTime &start, const DateTime &end, int npad=0) const
Create a new Orbit containing data in the requested interval.
Definition Orbit.cpp:103
DateTime endDateTime() const
UTC time of last state vector.
Definition Orbit.h:143
OrbitInterpMethod interpMethod() const
Interpolation method.
Definition Orbit.h:116
const std::string & type() const
Orbit ephemeris precision type.
Definition Orbit.h:122
std::vector< StateVector > getStateVectors() const
Export list of state vectors.
Definition Orbit.cpp:41
int size() const
Number of state vectors in orbit.
Definition Orbit.h:154
DateTime midDateTime() const
UTC time of center of orbit.
Definition Orbit.h:140
Data structure to store TimeDelta to double precision seconds.
Definition TimeDelta.h:16
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5