From be2cf936ca48f3d638c3ef01f4e338dfc904c5e3 Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Tue, 5 May 2026 09:12:50 -0400 Subject: seperate orbit logic from body --- src/solar_system/orbit.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/solar_system/orbit.rs (limited to 'src/solar_system/orbit.rs') diff --git a/src/solar_system/orbit.rs b/src/solar_system/orbit.rs new file mode 100644 index 0000000..fe55e4f --- /dev/null +++ b/src/solar_system/orbit.rs @@ -0,0 +1,29 @@ +use crate::solar_system::{Angle, BodyId, Kilometers, OrbitalBody, Percentage}; +use crate::timeman::{Second}; + +pub struct StaticOrbit +{ + pub parent: Option, + pub eccentricity: Percentage, + pub inclination: Angle, + pub long_asc_node: Angle, + pub long_periapsis: Angle, + pub mean_long: Angle, + + pub semi_major_axis: Kilometers, +} + +impl StaticOrbit +{ + pub fn period( + &self, + this_body: &OrbitalBody) + -> Second + { + ((self.semi_major_axis.powf(3.0) / this_body.sgp).sqrt() * std::f64::consts::TAU) as u64 + } + + pub fn parent(&self) -> Option { + self.parent + } +} -- cgit v1.2.3