pub struct DistanceConstraint {
pub body_a: usize,
pub body_b: usize,
pub local_anchor_a: Vec3Fix,
pub local_anchor_b: Vec3Fix,
pub target_distance: Fix128,
pub compliance: Fix128,
pub cached_lambda: Fix128,
}Expand description
Distance constraint between two bodies
Fields§
§body_a: usizeIndex of the first body
body_b: usizeIndex of the second body
local_anchor_a: Vec3FixAnchor point in body A’s local space
local_anchor_b: Vec3FixAnchor point in body B’s local space
target_distance: Fix128Target distance between anchors
compliance: Fix128Inverse stiffness (0 = infinitely stiff)
cached_lambda: Fix128XPBD Lagrange multiplier accumulated over the current substep.
Zeroed at the start of every substep and incremented by dlambda in each
solve iteration (Macklin 2016), so the compliance term alpha~ * lambda
sees the total force applied so far and the effective stiffness is
independent of iterations. Before 1.2.0 it held only the last
iteration’s increment and was carried across substeps.
Implementations§
Trait Implementations§
Source§impl Clone for DistanceConstraint
impl Clone for DistanceConstraint
impl Copy for DistanceConstraint
Source§impl Debug for DistanceConstraint
impl Debug for DistanceConstraint
impl Eq for DistanceConstraint
Source§impl PartialEq for DistanceConstraint
impl PartialEq for DistanceConstraint
impl StructuralPartialEq for DistanceConstraint
Auto Trait Implementations§
impl Freeze for DistanceConstraint
impl RefUnwindSafe for DistanceConstraint
impl Send for DistanceConstraint
impl Sync for DistanceConstraint
impl Unpin for DistanceConstraint
impl UnsafeUnpin for DistanceConstraint
impl UnwindSafe for DistanceConstraint
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> 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