@@ 29,14 29,24 @@ fn update_orbits(
let Projection::Orthographic(ref projection) = camera.2.clone() else { return };
image.clear(&(Color::BLACK.to_srgba().to_u8_array()));
- let mut p_mass = 1.0;
+ let mut p_mass = 0.0;
let mut p_transform = Transform::default();
+ let (sun_mass, _, sun_transform) = planets.iter().filter(|planet| planet.1.name == "Sun").next().unwrap();
for (mass, planet, transform) in planets {
- if planet.name == "Earth" {
+ if planet.name == "Sun" { continue }
+
+ let a = sun_transform.translation - transform.translation;
+ let hill_sphere = a.length()*(mass.0/(3.0*(sun_mass.0+mass.0))).powf(1.0/3.0);
+ if hill_sphere > (me.0.translation - transform.translation).length() {
p_mass = mass.0;
p_transform = *transform;
+ break;
}
}
+ if p_mass == 0.0 {
+ p_mass = sun_mass.0;
+ p_transform = *sun_transform;
+ }
// orbit magic
let rel_pos = me.0.translation - p_transform.translation;