42 return {v.
vx, v.vy, v.vz, v.frame};
66 siderust_runtime_ephemeris_t *h =
nullptr;
67 check_status(siderust_runtime_ephemeris_load_bsp(path.c_str(), &h),
"RuntimeEphemeris(path)");
78 siderust_runtime_ephemeris_t *h =
nullptr;
79 check_status(siderust_runtime_ephemeris_load_bytes(data, len, &h),
"RuntimeEphemeris(bytes)");
86 other.handle_ =
nullptr;
92 handle_ = other.handle_;
93 other.handle_ =
nullptr;
113 siderust_cartesian_pos_t out;
114 check_status(siderust_runtime_ephemeris_sun_barycentric(handle_, jd.value(), &out),
115 "RuntimeEphemeris::sun_barycentric");
124 siderust_cartesian_pos_t out;
125 check_status(siderust_runtime_ephemeris_earth_barycentric(handle_, jd.value(), &out),
126 "RuntimeEphemeris::earth_barycentric");
135 siderust_cartesian_pos_t out;
136 check_status(siderust_runtime_ephemeris_earth_heliocentric(handle_, jd.value(), &out),
137 "RuntimeEphemeris::earth_heliocentric");
146 siderust_cartesian_pos_t out;
147 check_status(siderust_runtime_ephemeris_moon_geocentric(handle_, jd.value(), &out),
148 "RuntimeEphemeris::moon_geocentric");
159 siderust_cartesian_vel_t out{};
160 check_status(siderust_runtime_ephemeris_earth_barycentric_velocity(handle_, jd.value(), &out),
161 "RuntimeEphemeris::earth_barycentric_velocity");
170 explicit operator bool() const noexcept {
return handle_ !=
nullptr; }
173 siderust_runtime_ephemeris_t *handle_;
175 void reset() noexcept {
177 siderust_runtime_ephemeris_free(handle_);
Runtime-loaded JPL DE4xx ephemeris.
RuntimeEphemeris(const std::string &path)
Load a runtime ephemeris from a BSP file on disk.
cartesian::position::HelioBarycentric< qtty::AstronomicalUnit > sun_barycentric(const Time< TT, JD > &jd) const
Sun's barycentric position (EclipticMeanJ2000, AU).
cartesian::position::GeoBarycentric< qtty::AstronomicalUnit > earth_barycentric(const Time< TT, JD > &jd) const
Earth's barycentric position (EclipticMeanJ2000, AU).
cartesian::position::EclipticMeanJ2000< qtty::AstronomicalUnit > earth_heliocentric(const Time< TT, JD > &jd) const
Earth's heliocentric position (EclipticMeanJ2000, AU).
cartesian::position::MoonGeocentric< qtty::Kilometer > moon_geocentric(const Time< TT, JD > &jd) const
Moon's geocentric position (EclipticMeanJ2000, km).
RuntimeEphemeris & operator=(RuntimeEphemeris &&other) noexcept
RuntimeEphemeris(RuntimeEphemeris &&other) noexcept
RuntimeEphemeris & operator=(const RuntimeEphemeris &)=delete
RuntimeEphemeris(const uint8_t *data, size_t len)
Load a runtime ephemeris from raw BSP bytes in memory.
CartesianVelocity earth_barycentric_velocity(const Time< TT, JD > &jd) const
Earth's barycentric velocity (EclipticMeanJ2000, AU/day).
RuntimeEphemeris(const RuntimeEphemeris &)=delete
Coordinate module umbrella.
Error handling and utility base for the siderust C++ wrapper.
tempoch::EncodedTime< Scale, Format > Time
void check_status(siderust_status_t status, const char *operation)
Cartesian velocity in AU/day, tagged by reference frame.
double vx
X component (AU/day).
double vy
Y component (AU/day).
static CartesianVelocity from_c(const siderust_cartesian_vel_t &v)
Construct from the raw C struct.
double vz
Z component (AU/day).
A 3D Cartesian position, compile-time tagged by center, frame, unit.
static Position from_c(const siderust_cartesian_pos_t &c)
Create from C FFI struct (ignoring runtime frame/center - trust the type).
Public siderust time tags and typed time/period aliases.