Skip to main content

CollisionEstimate

Struct CollisionEstimate 

Source
#[non_exhaustive]
pub struct CollisionEstimate { pub linear_velocity1: Vec3, pub angular_velocity1: Vec3, pub linear_velocity2: Vec3, pub angular_velocity2: Vec3, pub contact_impulses: Vec<f32>, pub tangent1: Vec3, pub tangent2: Vec3, pub friction_impulse1: f32, pub friction_impulse2: f32, pub angular_friction_impulse: f32, }
Expand description

What Jolt estimates a new contact does to its two bodies, before the solver runs (Jolt EstimateCollisionResponse), from ContactEvent::Added when EventSettings::collision_estimates is on.

Jolt solves the contact of the two bodies alone, with the contact’s friction and restitution and the world’s restitution threshold and velocity iterations, so the result is exact only for an isolated pair: other contacts and constraints on either body in the same step are not part of it. It does not model the contact’s mass and inertia scales, surface velocities, locked axes or the speed limits. It bounces the velocity that the step’s gravity and forces have already changed, while the solver takes that change out of the bounce, so under gravity the estimated rebound is faster by restitution · g · dt along the normal. A speculative contact (negative penetration depth) is estimated as if the bodies touched. A contact found in the continuous collision stage is estimated from the velocities after the step’s solve, at the time-of-impact points, which makes its angular part approximate.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§linear_velocity1: Vec3

Linear velocity of body 1 after the impact, m/s.

§angular_velocity1: Vec3

Angular velocity of body 1 after the impact, rad/s.

§linear_velocity2: Vec3

Linear velocity of body 2 after the impact, m/s.

§angular_velocity2: Vec3

Angular velocity of body 2 after the impact, rad/s.

§contact_impulses: Vec<f32>

Impulse along the contact normal at each point of the manifold, in the order of ContactManifold::points, N·s. Their sum is the impact’s total normal impulse.

§tangent1: Vec3

First friction direction, a unit vector perpendicular to the normal.

§tangent2: Vec3

Second friction direction, normal × tangent1.

§friction_impulse1: f32

Friction impulse along tangent1, N·s.

§friction_impulse2: f32

Friction impulse along tangent2, N·s.

§angular_friction_impulse: f32

Friction impulse about the normal, N·m·s.

Trait Implementations§

Source§

impl Clone for CollisionEstimate

Source§

fn clone(&self) -> Self

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 CollisionEstimate

Source§

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

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

impl PartialEq for CollisionEstimate

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for CollisionEstimate

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.