Skip to main content

RigidBody1D

Struct RigidBody1D 

Source
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: f64

Implementations§

Source§

impl RigidBody1D

Source

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.

Source

pub const fn mass(&self) -> f64

Returns the body’s mass.

Source

pub const fn moment_of_inertia(&self) -> f64

Returns the body’s moment of inertia.

Source

pub fn linear_momentum(&self) -> Option<f64>

Computes linear momentum using p = mv.

Source

pub fn angular_momentum(&self) -> Option<f64>

Computes angular momentum using L = Iω.

Source

pub fn linear_kinetic_energy(&self) -> Option<f64>

Computes translational kinetic energy using KE = 0.5mv².

Source

pub fn rotational_kinetic_energy(&self) -> Option<f64>

Computes rotational kinetic energy using KE_rot = 0.5Iω².

Source

pub fn total_kinetic_energy(&self) -> Option<f64>

Computes total kinetic energy as translational plus rotational energy.

Source

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);
Source

pub fn with_angular_impulse(self, angular_impulse: f64) -> Option<RigidBody1D>

Returns a copy with updated angular velocity after an angular impulse.

Source

pub fn advanced_kinematically(self, time: f64) -> Option<RigidBody1D>

Advances position and angle kinematically using the current velocities.

This helper updates:

  • position += velocity * time
  • angle += 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§

Source§

impl Clone for RigidBody1D

Source§

fn clone(&self) -> RigidBody1D

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RigidBody1D

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl PartialEq for RigidBody1D

Source§

fn eq(&self, other: &RigidBody1D) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for RigidBody1D

Source§

impl StructuralPartialEq for RigidBody1D

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.