Skip to main content

collision_final_velocities_1d

Function collision_final_velocities_1d 

pub fn collision_final_velocities_1d(
    mass_a: f64,
    velocity_a: f64,
    mass_b: f64,
    velocity_b: f64,
    coefficient_of_restitution: f64,
) -> Option<(f64, f64)>
Expand description

Computes the final velocities of a one-dimensional collision from masses, initial velocities, and a coefficient of restitution.

Formulas:

  • v_a' = (m_a*v_a + m_b*v_b - m_b*e*(v_a - v_b)) / (m_a + m_b)
  • v_b' = (m_a*v_a + m_b*v_b + m_a*e*(v_a - v_b)) / (m_a + m_b)

ยงExamples

use use_collision::collision_final_velocities_1d;

let (final_a, final_b) = collision_final_velocities_1d(1.0, 1.0, 1.0, -1.0, 1.0).unwrap();

assert!((final_a + 1.0).abs() < 1.0e-12);
assert!((final_b - 1.0).abs() < 1.0e-12);