Orbit model overview for the C++ bindings.
#include <cmath>
#include <iostream>
using namespace qtty::literals;
int main() {
std::cout << "=== Orbit Models ===\n\n";
std::cout << "Epoch: " << jd << "\n\n";
std::cout << "1. KeplerianOrbit\n";
std::cout << " heliocentric position = " << kepler_pos << '\n';
std::cout << " radius = " << kepler_pos.distance() << "\n\n";
0.0_deg,
0.0_deg,
102.9_deg,
const auto mean_motion_pos = mean_motion.
position_at(jd);
std::cout << "2. MeanMotionOrbit\n";
std::cout << " heliocentric position = " << mean_motion_pos << '\n';
std::cout << " radius = " << mean_motion_pos.distance() << "\n\n";
const auto hyperbolic_pos = hyperbolic.
position_at(jd);
std::cout << "3. ConicOrbit\n";
std::cout <<
" halley-like kind = " << halley_like.
kind() <<
'\n';
std::cout <<
" hyperbolic kind = " << hyperbolic.
kind() <<
'\n';
std::cout << " elliptic radius = " << halley_pos.distance()
<< " | hyperbolic radius = " << hyperbolic_pos.distance() << "\n\n";
const double delta = std::sqrt(std::pow(kepler_pos.x().value() - prepared_pos.x().value(), 2) +
std::pow(kepler_pos.y().value() - prepared_pos.y().value(), 2) +
std::pow(kepler_pos.z().value() - prepared_pos.z().value(), 2));
std::cout << std::scientific << std::setprecision(3);
std::cout << "4. PreparedOrbit\n";
std::cout << " prepared radius = " << prepared_pos.distance() << '\n';
std::cout << " chord delta vs direct Keplerian = " << delta << '\n';
return 0;
}
cartesian::Position< centers::Heliocentric, frames::EclipticMeanJ2000, qtty::AstronomicalUnit > position_at(const Time< TT, JD > &jd) const
tempoch::EncodedTime< Scale, Format > Time
cartesian::Position< C, frames::EclipticMeanJ2000, qtty::AstronomicalUnit > kepler_position(const KeplerianOrbit &orbit, const Time< TT, JD > &jd)
Umbrella header for the siderust C++ wrapper library.
cartesian::Position< centers::Heliocentric, frames::EclipticMeanJ2000, qtty::AstronomicalUnit > position_at(const Time< TT, JD > &jd) const
constexpr ConicKind kind() const
cartesian::Position< centers::Heliocentric, frames::EclipticMeanJ2000, qtty::AstronomicalUnit > position_at(const Time< TT, JD > &jd) const