#ifndef ORBITAL_MECHANICS_H #define ORBITAL_MECHANICS_H #include "physics.h" struct OrbitalElements { union { double semi_major_axis; // for elliptical (e<1) and hyperbolic (e>1) double semi_latus_rectum; // for parabolic (e≈1) }; double eccentricity; double true_anomaly; double inclination; double longitude_of_ascending_node; double argument_of_periapsis; }; void orbital_elements_to_cartesian(OrbitalElements elements, double parent_mass, Vec3* out_position, Vec3* out_velocity); #endif