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

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

A joint that allows 1 rotational and 2 translational degrees of freedom.

## Methods

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

#### `pub fn new(    axis1: Unit<Vector3<N>>,     axis2: Unit<Vector3<N>>,     pos1: N,     pos2: N,     angle: N) -> Self`[src]

Create a new planar joint where both translational degrees of freedoms are along the provide axii.

The rotational degree of freedom is along an axis orthogonal to `axis1` and `axis2`. Idealy, the two provided axii should be orthogonal. All axis are in the local coordinate space of the attached multibody links.

Panics if `axis1` and `axis2` are near-colinear.

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

#### `pub fn min_offset_1(&self) -> Option<N>`[src]

The lower limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn max_offset_1(&self) -> Option<N>`[src]

The upper limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn disable_min_offset_1(&mut self)`[src]

Disable the lower limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn disable_max_offset_1(&mut self)`[src]

Disable the upper limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn enable_min_offset_1(&mut self, limit: N)`[src]

Set the lower limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn enable_max_offset_1(&mut self, limit: N)`[src]

Set the upper limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn is_linear_motor_enabled_1(&self) -> bool`[src]

Returns `true` if the joint translational motor is enabled.

#### `pub fn enable_linear_motor_1(&mut self)`[src]

Enable the joint translational motor.

#### `pub fn disable_linear_motor_1(&mut self)`[src]

Disable the joint translational motor.

#### `pub fn desired_linear_motor_velocity_1(&self) -> N`[src]

The desired relative translational velocity to be enforced by the joint motor.

#### `pub fn set_desired_linear_motor_velocity_1(&mut self, vel: N)`[src]

Set the desired relative translational velocity to be enforced by the joint motor.

#### `pub fn max_linear_motor_force_1(&self) -> N`[src]

The maximum force that can be output by the joint translational motor.

#### `pub fn set_max_linear_motor_force_1(&mut self, force: N)`[src]

Set the maximum force that can be output by the joint translational motor.

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

#### `pub fn min_offset_2(&self) -> Option<N>`[src]

The lower limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn max_offset_2(&self) -> Option<N>`[src]

The upper limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn disable_min_offset_2(&mut self)`[src]

Disable the lower limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn disable_max_offset_2(&mut self)`[src]

Disable the upper limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn enable_min_offset_2(&mut self, limit: N)`[src]

Set the lower limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn enable_max_offset_2(&mut self, limit: N)`[src]

Set the upper limit of the relative translational displacement of the attached multibody links along the joint axis.

#### `pub fn is_linear_motor_enabled_2(&self) -> bool`[src]

Returns `true` if the joint translational motor is enabled.

#### `pub fn enable_linear_motor_2(&mut self)`[src]

Enable the joint translational motor.

#### `pub fn disable_linear_motor_2(&mut self)`[src]

Disable the joint translational motor.

#### `pub fn desired_linear_motor_velocity_2(&self) -> N`[src]

The desired relative translational velocity to be enforced by the joint motor.

#### `pub fn set_desired_linear_motor_velocity_2(&mut self, vel: N)`[src]

Set the desired relative translational velocity to be enforced by the joint motor.

#### `pub fn max_linear_motor_force2(&self) -> N`[src]

The maximum force that can be output by the joint translational motor.

#### `pub fn set_max_linear_motor_force_2(&mut self, force: N)`[src]

Set the maximum force that can be output by the joint translational motor.

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

#### `pub fn min_angle(&self) -> Option<N>`[src]

The lower limit of the rotation angle.

#### `pub fn max_angle(&self) -> Option<N>`[src]

The upper limit of the rotation angle.

#### `pub fn disable_min_angle(&mut self)`[src]

Disable the lower limit of the rotation angle.

#### `pub fn disable_max_angle(&mut self)`[src]

Disable the upper limit of the rotation angle.

#### `pub fn enable_min_angle(&mut self, limit: N)`[src]

Enable and set the lower limit of the rotation angle.

#### `pub fn enable_max_angle(&mut self, limit: N)`[src]

Enable and set the upper limit of the rotation angle.

#### `pub fn is_angular_motor_enabled(&self) -> bool`[src]

Return `true` if the angular motor of this joint is enabled.

#### `pub fn enable_angular_motor(&mut self)`[src]

Enable the angular motor of this joint.

#### `pub fn disable_angular_motor(&mut self)`[src]

Disable the angular motor of this joint.

#### `pub fn desired_angular_motor_velocity(&self) -> N`[src]

The desired angular velocity of the joint motor.

#### `pub fn set_desired_angular_motor_velocity(&mut self, vel: N)`[src]

Set the desired angular velocity of the joint motor.

#### `pub fn max_angular_motor_torque(&self) -> N`[src]

The maximum torque that can be delivered by the joint motor.

#### `pub fn set_max_angular_motor_torque(&mut self, torque: N)`[src]

Set the maximum torque that can be delivered by the joint motor.

## Trait Implementations

### `impl<N: Clone + Real> Clone for PlanarJoint<N>`[src]

#### `fn clone(&self) -> PlanarJoint<N>`[src]

Returns a copy of the value. Read more

#### `fn clone_from(&mut self, source: &Self)`1.0.0[src]

Performs copy-assignment from `source`. Read more

### `impl<N: Debug + Real> Debug for PlanarJoint<N>`[src]

#### `fn fmt(&self, f: &mut Formatter) -> Result`[src]

Formats the value using the given formatter. Read more

### `impl<N: Real> Joint<N> for PlanarJoint<N>`[src]

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

The number of degrees of freedom allowed by the joint.

#### `fn body_to_parent(    &self,     parent_shift: &Vector3<N>,     body_shift: &Vector3<N>) -> Isometry3<N>`[src]

The position of the multibody link containing this joint relative to its parent.

#### `fn update_jacobians(&mut self, body_shift: &Vector3<N>, vels: &[N])`[src]

Update the jacobians of this joint.

#### `fn jacobian(&self, transform: &Isometry3<N>, out: &mut JacobianSliceMut<N>)`[src]

Sets in `out` the non-zero entries of the joint jacobian transformed by `transform`.

#### `fn jacobian_dot(&self, transform: &Isometry3<N>, out: &mut JacobianSliceMut<N>)`[src]

Sets in `out` the non-zero entries of the time-derivative of the joint jacobian transformed by `transform`.

#### `fn jacobian_dot_veldiff_mul_coordinates(    &self,     transform: &Isometry3<N>,     vels: &[N],     out: &mut JacobianSliceMut<N>)`[src]

Sets in `out` the non-zero entries of the velocity-derivative of the time-derivative of the joint jacobian transformed by `transform`.

#### `fn jacobian_mul_coordinates(&self, vels: &[N]) -> Velocity<N>`[src]

Multiply the joint jacobian by generalized velocities to obtain the relative velocity of the multibody link containing this joint. Read more

#### `fn jacobian_dot_mul_coordinates(&self, vels: &[N]) -> Velocity<N>`[src]

Multiply the joint jacobian by generalized accelerations to obtain the relative acceleration of the multibody link containing this joint. Read more

#### `fn default_damping(&self, out: &mut DVectorSliceMut<N>)`[src]

Fill `out` with the non-zero entries of a damping that can be applied by default to ensure a good stability of the joint.

#### `fn integrate(&mut self, params: &IntegrationParameters<N>, vels: &[N])`[src]

Integrate the position of this joint.

#### `fn apply_displacement(&mut self, disp: &[N])`[src]

Apply a displacement to the joint.

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

Maximum number of velocity constrains that can be generated by this joint.

#### `fn velocity_constraints(    &self,     params: &IntegrationParameters<N>,     link: &MultibodyLinkRef<N>,     assembly_id: usize,     dof_id: usize,     ext_vels: &[N],     ground_j_id: &mut usize,     jacobians: &mut [N],     constraints: &mut ConstraintSet<N>)`[src]

Initialize and generate velocity constraints to enforce, e.g., joint limits and motors.

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

The maximum number of non-linear position constraints that can be generated by this joint.

#### `fn position_constraint(    &self,     i: usize,     link: &MultibodyLinkRef<N>,     dof_id: usize,     jacobians: &mut [N]) -> Option<GenericNonlinearConstraint<N>>`[src]

Initialize and generate the i-th position constraints to enforce, e.g., joint limits.

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

The maximum number of impulses needed by this joints for its constraints. Read more