# Struct nphysics3d::joint::PinSlotConstraint[−][src]

`pub struct PinSlotConstraint<N: Real> { /* fields omitted */ }`

A constraint that removes two translational and two rotational degrees of freedoms.

This is different frmo the cylindrical constraint since the remaining rotation and translation are not restricted to be done wrt. the same axis.

## Methods

### `impl<N: Real> PinSlotConstraint<N>`[src]

#### `pub fn new(    b1: BodyHandle,     b2: BodyHandle,     anchor1: Point<N>,     axis_v1: Unit<Vector<N>>,     axis_w1: Unit<Vector<N>>,     anchor2: Point<N>,     axis_w2: Unit<Vector<N>>) -> Self`[src]

Creates a new pin-slot constraint.

This will ensure the relative linear motions are always along `axis_v1` (here expressed in the local coordinate frame of `b1`), and that `axis_w1` and `axis_w2` always coincide. All axises and anchors are expressed in the local coordinate frame of their respective body part.

## Trait Implementations

### `impl<N: Real> JointConstraint<N> for PinSlotConstraint<N>`[src]

#### `fn num_velocity_constraints(&self) -> usize`[src]

The maximum number of velocity constraints generated by this joint.

#### `fn anchors(&self) -> (BodyHandle, BodyHandle)`[src]

The two body parts affected by this joint.

#### `fn velocity_constraints(    &mut self,     _: &IntegrationParameters<N>,     bodies: &BodySet<N>,     ext_vels: &DVector<N>,     ground_j_id: &mut usize,     j_id: &mut usize,     jacobians: &mut [N],     constraints: &mut ConstraintSet<N>)`[src]

Initialize and retrieve all the constraints appied to the bodies attached to this joint.

#### `fn cache_impulses(&mut self, constraints: &ConstraintSet<N>)`[src]

Called after velocity constraint resolution, allows the joint to keep a cache of impulses generated for each constraint.

#### `fn is_active(&self, bodies: &BodySet<N>) -> bool`[src]

Return `true` if the constraint is active. Read more

### `impl<N: Real> NonlinearConstraintGenerator<N> for PinSlotConstraint<N>`[src]

#### `fn num_position_constraints(&self, bodies: &BodySet<N>) -> usize`[src]

Maximum of non-linear position constraint this generater needs to output.

#### `fn position_constraint(    &self,     params: &IntegrationParameters<N>,     i: usize,     bodies: &mut BodySet<N>,     jacobians: &mut [N]) -> Option<GenericNonlinearConstraint<N>>`[src]

Generate the `i`-th position constraint of this generator.