Trait nphysics2d::joint::JointConstraint [−][src]
pub trait JointConstraint<N: RealField + Copy, Handle: BodyHandle>: NonlinearConstraintGenerator<N, Handle> + Downcast + Send + Sync { fn num_velocity_constraints(&self) -> usize; fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>); fn velocity_constraints(
&mut self,
parameters: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
velocity_constraints: &mut LinearConstraints<N, usize>
); fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
); fn is_active(&self, bodies: &dyn BodySet<N, Handle = Handle>) -> bool { ... } fn is_broken(&self) -> bool { ... } }
Expand description
Trait implemented by joint that operate by generating constraints to restrict the relative motion of two body parts.
Required methods
fn num_velocity_constraints(&self) -> usize
fn num_velocity_constraints(&self) -> usize
The maximum number of velocity constraints generated by this joint.
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
The two body parts affected by this joint.
fn velocity_constraints(
&mut self,
parameters: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
velocity_constraints: &mut LinearConstraints<N, usize>
)
fn velocity_constraints(
&mut self,
parameters: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
velocity_constraints: &mut LinearConstraints<N, usize>
)
Initialize and retrieve all the constraints appied to the bodies attached to this joint.
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
Called after velocity constraint resolution, allows the joint to keep a cache of impulses generated for each constraint.
Provided methods
Return true
if the constraint is active.
Typically, a constraint is disable if it is between two sleeping bodies, or, between bodies without any degrees of freedom.
Implementations
impl<N, Handle> dyn JointConstraint<N, Handle> where
N: Any + 'static,
Handle: Any + 'static,
N: RealField + Copy,
Handle: BodyHandle,
impl<N, Handle> dyn JointConstraint<N, Handle> where
N: Any + 'static,
Handle: Any + 'static,
N: RealField + Copy,
Handle: BodyHandle,
Returns true if the trait object wraps an object of type __T
.
Returns a boxed object from a boxed trait object if the underlying object is of type
__T
. Returns the original boxed trait if it isn’t.
pub fn downcast_rc<__T: JointConstraint<N, Handle>>(
self: Rc<Self>
) -> Result<Rc<__T>, Rc<Self>>
pub fn downcast_rc<__T: JointConstraint<N, Handle>>(
self: Rc<Self>
) -> Result<Rc<__T>, Rc<Self>>
Returns an Rc
-ed object from an Rc
-ed trait object if the underlying object is of
type __T
. Returns the original Rc
-ed trait if it isn’t.
Returns a reference to the object within the trait object if it is of type __T
, or
None
if it isn’t.
Returns a mutable reference to the object within the trait object if it is of type
__T
, or None
if it isn’t.