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";
const auto kepler_pos = kepler_position(kepler, jd);
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 halley_pos = halley_like.position_at(jd);
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
Umbrella header for the siderust C++ wrapper library.