From 5cd61b6086f7775974f672624a6e5c0d66851b24 Mon Sep 17 00:00:00 2001 From: Verox001 Date: Sun, 4 May 2025 22:55:55 +0200 Subject: [PATCH] Advanced orbit calculations --- simulator/src/main.rs | 7 ++++--- solar_engine/src/simulator.rs | 14 +------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/simulator/src/main.rs b/simulator/src/main.rs index d4a10d0..91be791 100644 --- a/simulator/src/main.rs +++ b/simulator/src/main.rs @@ -316,10 +316,11 @@ impl<'a> State<'a> { let instances = { let sim = simulator.read().unwrap(); + let sun_pos = sim.bodies[0].position; sim.bodies.iter().enumerate().map(|(i, b)| RenderInstance { position: cgmath::Vector3::new( - (b.position[0] / 1.496e11) as f32, - (b.position[1] / 1.496e11) as f32, + ((b.position[0] - sun_pos[0]) / 1.496e11) as f32, + ((b.position[1] - sun_pos[1]) / 1.496e11) as f32, 0.0, ), rotation: cgmath::Quaternion::from_angle_z(cgmath::Deg(0.0)), @@ -474,7 +475,7 @@ impl<'a> State<'a> { format: surface_format, width: size.width, height: size.height, - present_mode: PresentMode::AutoNoVsync, + present_mode: PresentMode::AutoVsync, alpha_mode: capabilities.alpha_modes[0], view_formats: vec![], desired_maximum_frame_latency: 2, diff --git a/solar_engine/src/simulator.rs b/solar_engine/src/simulator.rs index 9c85b6b..208af12 100644 --- a/solar_engine/src/simulator.rs +++ b/solar_engine/src/simulator.rs @@ -87,8 +87,7 @@ impl Simulator { .map(|mutex| mutex.into_inner().unwrap()) .collect() } - - // RK4 Stufen + let k1_pos = original_states.iter().map(|s| s.velocity).collect::>(); let k1_vel = compute_accelerations(&original_states, &masses); @@ -130,10 +129,8 @@ impl Simulator { let k4_pos = temp_states.iter().map(|s| s.velocity).collect::>(); let k4_vel = compute_accelerations(&temp_states, &masses); - // Finale Updates for i in 0..n { let body = &mut self.bodies[i]; - let old_position = body.position; body.position[0] += (dt / 6.0) * (k1_pos[i][0] + 2.0 * k2_pos[i][0] + 2.0 * k3_pos[i][0] + k4_pos[i][0]); @@ -144,15 +141,6 @@ impl Simulator { * (k1_vel[i][0] + 2.0 * k2_vel[i][0] + 2.0 * k3_vel[i][0] + k4_vel[i][0]); body.velocity[1] += (dt / 6.0) * (k1_vel[i][1] + 2.0 * k2_vel[i][1] + 2.0 * k3_vel[i][1] + k4_vel[i][1]); - - // Bewegung loggen - let dx = body.position[0] - old_position[0]; - let dy = body.position[1] - old_position[1]; - let movement = (dx * dx + dy * dy).sqrt(); - - if i == 1 { - println!("Earth moved {:.6} meters", movement); - } } self.time += dt;