Struct RigidBody1D
pub struct RigidBody1D {
pub mass_properties: MassProperties,
pub position: f64,
pub velocity: f64,
pub angle: f64,
pub angular_velocity: f64,
}Expand description
A one-dimensional rigid body with scalar translational and rotational state.
Fields§
§mass_properties: MassProperties§position: f64§velocity: f64§angle: f64§angular_velocity: f64Implementations§
§impl RigidBody1D
impl RigidBody1D
pub const fn new(
mass_properties: MassProperties,
position: f64,
velocity: f64,
angle: f64,
angular_velocity: f64,
) -> Option<RigidBody1D>
pub const fn new( mass_properties: MassProperties, position: f64, velocity: f64, angle: f64, angular_velocity: f64, ) -> Option<RigidBody1D>
Creates a rigid body when the state values are finite.
pub const fn moment_of_inertia(&self) -> f64
pub const fn moment_of_inertia(&self) -> f64
Returns the body’s moment of inertia.
pub fn linear_momentum(&self) -> Option<f64>
pub fn linear_momentum(&self) -> Option<f64>
Computes linear momentum using p = mv.
pub fn angular_momentum(&self) -> Option<f64>
pub fn angular_momentum(&self) -> Option<f64>
Computes angular momentum using L = Iω.
pub fn linear_kinetic_energy(&self) -> Option<f64>
pub fn linear_kinetic_energy(&self) -> Option<f64>
Computes translational kinetic energy using KE = 0.5mv².
pub fn rotational_kinetic_energy(&self) -> Option<f64>
pub fn rotational_kinetic_energy(&self) -> Option<f64>
Computes rotational kinetic energy using KE_rot = 0.5Iω².
pub fn total_kinetic_energy(&self) -> Option<f64>
pub fn total_kinetic_energy(&self) -> Option<f64>
Computes total kinetic energy as translational plus rotational energy.
pub fn with_impulse(self, impulse: f64) -> Option<RigidBody1D>
pub fn with_impulse(self, impulse: f64) -> Option<RigidBody1D>
Returns a copy with updated velocity after a linear impulse.
§Examples
use use_rigidbody::{MassProperties, RigidBody1D};
let props = MassProperties::new(2.0, 4.0).unwrap();
let body = RigidBody1D::new(props, 10.0, 3.0, 1.0, 5.0).unwrap();
assert_eq!(body.with_impulse(4.0).unwrap().velocity, 5.0);pub fn with_angular_impulse(self, angular_impulse: f64) -> Option<RigidBody1D>
pub fn with_angular_impulse(self, angular_impulse: f64) -> Option<RigidBody1D>
Returns a copy with updated angular velocity after an angular impulse.
pub fn advanced_kinematically(self, time: f64) -> Option<RigidBody1D>
pub fn advanced_kinematically(self, time: f64) -> Option<RigidBody1D>
Advances position and angle kinematically using the current velocities.
This helper updates:
position += velocity * timeangle += angular_velocity * time
§Examples
use use_rigidbody::{MassProperties, RigidBody1D};
let props = MassProperties::new(2.0, 4.0).unwrap();
let body = RigidBody1D::new(props, 10.0, 3.0, 1.0, 5.0).unwrap();
let advanced = body.advanced_kinematically(2.0).unwrap();
assert_eq!(advanced.position, 16.0);
assert_eq!(advanced.angle, 11.0);Trait Implementations§
§impl Clone for RigidBody1D
impl Clone for RigidBody1D
§fn clone(&self) -> RigidBody1D
fn clone(&self) -> RigidBody1D
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 more§impl Debug for RigidBody1D
impl Debug for RigidBody1D
§impl PartialEq for RigidBody1D
impl PartialEq for RigidBody1D
impl Copy for RigidBody1D
impl StructuralPartialEq for RigidBody1D
Auto Trait Implementations§
impl Freeze for RigidBody1D
impl RefUnwindSafe for RigidBody1D
impl Send for RigidBody1D
impl Sync for RigidBody1D
impl Unpin for RigidBody1D
impl UnsafeUnpin for RigidBody1D
impl UnwindSafe for RigidBody1D
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