From 70afc5a7d871919776a64782e8b93404e6b0defd Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sun, 15 Dec 2024 13:17:43 +0100 Subject: feat!: add raylib rendering --- physics/src/solver/midpoint.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 physics/src/solver/midpoint.rs (limited to 'physics/src/solver/midpoint.rs') diff --git a/physics/src/solver/midpoint.rs b/physics/src/solver/midpoint.rs new file mode 100644 index 0000000..2d71758 --- /dev/null +++ b/physics/src/solver/midpoint.rs @@ -0,0 +1,18 @@ +use crate::{algebra::Scalar, particle_system::ParticleSystem}; +use super::{PhaseSpace, Solver}; + +impl Solver for ParticleSystem { + fn step(&mut self, dt: Scalar) { + let mut state = self.collect_phase_space(); + + // Shift to the midpoint + self.scatter_phase_space(&PhaseSpace { + 0: state.0.clone() + self.compute_derivative().0 * dt / 2.0, + }); + + state.0 += self.compute_derivative().0 * dt; + self.scatter_phase_space(&state); + + self.t += dt; + } +} -- cgit v1.2.3