[−][src]Trait nphysics3d::joint::JointConstraint
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
The maximum number of velocity constraints generated by this joint.
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>
)
&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
)
&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
fn is_active(&self, bodies: &dyn BodySet<N, Handle = Handle>) -> bool
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.
fn is_broken(&self) -> bool
Returns true
if this joint is broken.
Methods
impl<N, Handle> dyn JointConstraint<N, Handle> where
N: Any + 'static,
Handle: Any + 'static,
N: RealField,
Handle: BodyHandle,
N: Any + 'static,
Handle: Any + 'static,
N: RealField,
Handle: BodyHandle,
pub fn is<__T: JointConstraint<N, Handle>>(&self) -> bool
Returns true if the trait object wraps an object of type __T
.
pub fn downcast<__T: JointConstraint<N, Handle>>(
self: Box<Self>
) -> Result<Box<__T>, Box<Self>>
self: Box<Self>
) -> Result<Box<__T>, Box<Self>>
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>>
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.
pub fn downcast_ref<__T: JointConstraint<N, Handle>>(&self) -> Option<&__T>
Returns a reference to the object within the trait object if it is of type __T
, or
None
if it isn't.
pub fn downcast_mut<__T: JointConstraint<N, Handle>>(
&mut self
) -> Option<&mut __T>
&mut self
) -> Option<&mut __T>
Returns a mutable reference to the object within the trait object if it is of type
__T
, or None
if it isn't.
Implementors
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for BallConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for CartesianConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for CylindricalConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for FixedConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for MouseConstraint<N, Handle>
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
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],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&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],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(&mut self, _: &LinearConstraints<N, usize>, _: N)
[src]
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for PinSlotConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for PlanarConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for PrismaticConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for RectangularConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for RevoluteConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
impl<N: RealField, Handle: BodyHandle> JointConstraint<N, Handle> for UniversalConstraint<N, Handle>
[src]
fn is_broken(&self) -> bool
[src]
fn num_velocity_constraints(&self) -> usize
[src]
fn anchors(&self) -> (BodyPartHandle<Handle>, BodyPartHandle<Handle>)
[src]
fn velocity_constraints(
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
[src]
&mut self,
_: &IntegrationParameters<N>,
bodies: &dyn BodySet<N, Handle = Handle>,
ext_vels: &DVector<N>,
ground_j_id: &mut usize,
j_id: &mut usize,
jacobians: &mut [N],
constraints: &mut LinearConstraints<N, usize>
)
fn cache_impulses(
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)
[src]
&mut self,
constraints: &LinearConstraints<N, usize>,
inv_dt: N
)