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

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

A constraint that remove all relative rotations and one relative translation between two body parts.

## Methods

`impl<N: Real> RectangularConstraint<N>`

[src]

`impl<N: Real> RectangularConstraint<N>`

`pub fn new(`

b1: BodyHandle,

b2: BodyHandle,

anchor1: Point<N>,

axis1: Unit<AngularVector<N>>,

anchor2: Point<N>

) -> Self

[src]

`pub fn new(`

b1: BodyHandle,

b2: BodyHandle,

anchor1: Point<N>,

axis1: Unit<AngularVector<N>>,

anchor2: Point<N>

) -> Self

Create a new rectangular constraint that restrict `b1`

and `b2`

to move on a plane orthogonal to `axis1`

.

The `axis1`

is expressed in the local coordinate system of `b1`

.
Both anchors are expressed in the local coordinate system of their respective bodies.

## Trait Implementations

`impl<N: Real> JointConstraint<N> for RectangularConstraint<N>`

[src]

`impl<N: Real> JointConstraint<N> for RectangularConstraint<N>`

`fn num_velocity_constraints(&self) -> usize`

[src]

`fn num_velocity_constraints(&self) -> usize`

The maximum number of velocity constraints generated by this joint.

`fn anchors(&self) -> (BodyHandle, BodyHandle)`

[src]

`fn anchors(&self) -> (BodyHandle, BodyHandle)`

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]

`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>

)

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

`fn cache_impulses(&mut self, constraints: &ConstraintSet<N>)`

[src]

`fn cache_impulses(&mut self, constraints: &ConstraintSet<N>)`

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]

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

Return `true`

if the constraint is active. Read more

`impl<N: Real> NonlinearConstraintGenerator<N> for RectangularConstraint<N>`

[src]

`impl<N: Real> NonlinearConstraintGenerator<N> for RectangularConstraint<N>`

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

[src]

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

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]

`fn position_constraint(`

&self,

params: &IntegrationParameters<N>,

i: usize,

bodies: &mut BodySet<N>,

jacobians: &mut [N]

) -> Option<GenericNonlinearConstraint<N>>

Generate the `i`

-th position constraint of this generator.

## Auto Trait Implementations

`impl<N> Send for RectangularConstraint<N> where`

N: Scalar,

`impl<N> Send for RectangularConstraint<N> where`

N: Scalar,

`impl<N> Sync for RectangularConstraint<N> where`

N: Scalar,

`impl<N> Sync for RectangularConstraint<N> where`

N: Scalar,