From 22a0951f599539fdbe3f05d1df6a8abbc472f409 Mon Sep 17 00:00:00 2001 From: c0repwn3r Date: Sun, 16 Apr 2023 19:12:23 -0400 Subject: [PATCH] attempt to fix force calc --- server/src/orbit/orbit.rs | 4 +++- server/src/timer.rs | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/src/orbit/orbit.rs b/server/src/orbit/orbit.rs index b16c81eb1c4deeceb638cd5303eed39c537a29ad..d38caaad1d309208aa974d477397d9052cbed9fe 100644 --- a/server/src/orbit/orbit.rs +++ b/server/src/orbit/orbit.rs @@ -1,6 +1,7 @@ // Mostly stolen from SebLague's plane game // thanks +use log::debug; use nalgebra::{vector, Vector2}; use crate::orbit::newtonian::solve_kepler_with_newtonian; use crate::orbit::vis_viva::vis_viva; @@ -19,8 +20,9 @@ pub fn calculate_vector_of_orbit(periapsis: f64, apoapsis: f64, t: f64, mass_of_ let velocity = vis_viva(distance, semi_major_length, GRAVITY, mass_of_bigger); let ellipse_center_x = -linear_eccentricity; + let ellipse_center_y = apoapsis - semi_major_length; - let theta = (ellipse_center_x / velocity).acos() - std::f64::consts::PI / 2.0; + let theta = (ellipse_center_x / ellipse_center_y).atan() - std::f64::consts::PI / 2.0; let x_vel = velocity * theta.sin(); let y_vel = velocity * theta.cos(); diff --git a/server/src/timer.rs b/server/src/timer.rs index 1d3c05bb691af3e546973341d7925d60dedb6115..013602fd00c0b6e08e919920be9f8b1ebc3616a8 100644 --- a/server/src/timer.rs +++ b/server/src/timer.rs @@ -37,8 +37,9 @@ pub async fn timer_main(mgr: ClientManager, physics_data: Arc