SolverContact

Type Alias SolverContact 

Source
pub type SolverContact = SolverContactGeneric<f32, 1>;
Expand description

A single solver contact.

Aliased Type§

pub struct SolverContact {
    pub point: OPoint<f32, Const<3>>,
    pub dist: f32,
    pub friction: f32,
    pub restitution: f32,
    pub tangent_velocity: Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>>,
    pub warmstart_impulse: f32,
    pub warmstart_tangent_impulse: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>,
    pub warmstart_twist_impulse: f32,
    pub is_new: f32,
    pub contact_id: [u32; 1],
    /* private fields */
}

Fields§

§point: OPoint<f32, Const<3>>

The contact point in world-space.

§dist: f32

The distance between the two original contacts points along the contact normal. If negative, this is measures the penetration depth.

§friction: f32

The effective friction coefficient at this contact point.

§restitution: f32

The effective restitution coefficient at this contact point.

§tangent_velocity: Matrix<f32, Const<3>, Const<1>, ArrayStorage<f32, 3, 1>>

The desired tangent relative velocity at the contact point.

This is set to zero by default. Set to a non-zero value to simulate, e.g., conveyor belts.

§warmstart_impulse: f32

Impulse used to warmstart the solve for the normal constraint.

§warmstart_tangent_impulse: Matrix<f32, Const<2>, Const<1>, ArrayStorage<f32, 2, 1>>

Impulse used to warmstart the solve for the friction constraints.

§warmstart_twist_impulse: f32

Impulse used to warmstart the solve for the twist friction constraints.

§is_new: f32

Whether this contact existed during the last timestep.

A value of 0.0 means false and 1.0 means true. This isn’t a bool for optimizations purpose with SIMD.

§contact_id: [u32; 1]

The index of the manifold contact used to generate this solver contact.

Implementations§

Source§

impl SolverContact

Source

pub fn is_bouncy(&self) -> f32

Should we treat this contact as a bouncy contact? If true, use [Self::restitution].