pub struct SpringMassSystem {
pub masses: Vec<f32>,
pub springs: Vec<Spring>,
}Expand description
Simple 1D spring-mass system supporting Verlet integration.
Positions and velocities are 1D arrays of length n_masses.
Fields§
§masses: Vec<f32>§springs: Vec<Spring>Implementations§
Source§impl SpringMassSystem
impl SpringMassSystem
Sourcepub fn new(
masses: Vec<f32>,
springs: Vec<(usize, usize, f32, f32)>,
) -> Result<Self, SimError>
pub fn new( masses: Vec<f32>, springs: Vec<(usize, usize, f32, f32)>, ) -> Result<Self, SimError>
Create a spring-mass system.
Sourcepub fn simulate_step(
&self,
positions: &[f32],
velocities: &[f32],
dt: f32,
) -> Result<(Vec<f32>, Vec<f32>), SimError>
pub fn simulate_step( &self, positions: &[f32], velocities: &[f32], dt: f32, ) -> Result<(Vec<f32>, Vec<f32>), SimError>
Velocity Verlet integration step. Returns (new_positions, new_velocities).
Sourcepub fn kinetic_energy(&self, velocities: &[f32]) -> f32
pub fn kinetic_energy(&self, velocities: &[f32]) -> f32
KE = Σ 0.5 mᵢ vᵢ²
Sourcepub fn potential_energy(&self, positions: &[f32]) -> f32
pub fn potential_energy(&self, positions: &[f32]) -> f32
PE = Σ springs 0.5 k (|x_j - x_i| - rest_length)²
Trait Implementations§
Source§impl Clone for SpringMassSystem
impl Clone for SpringMassSystem
Source§fn clone(&self) -> SpringMassSystem
fn clone(&self) -> SpringMassSystem
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for SpringMassSystem
impl RefUnwindSafe for SpringMassSystem
impl Send for SpringMassSystem
impl Sync for SpringMassSystem
impl Unpin for SpringMassSystem
impl UnsafeUnpin for SpringMassSystem
impl UnwindSafe for SpringMassSystem
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more