Module org.dyn4j
Package org.dyn4j.dynamics.joint

Class FrictionJoint

• All Implemented Interfaces:
`DataContainer`, `Shiftable`

```public class FrictionJoint
extends Joint
implements Shiftable, DataContainer```
Implementation of a friction joint.

A friction joint is a constraint that drives both linear and angular velocities to zero.

This joint is typically used with one dynamic and one static body. In this context, the joint will apply linear and angular friction to stop the body's motion.

Setting the maximum force and torque values will determine the rate at which the motion is stopped.

Since:
1.0.0
Version:
3.2.0
Author:
William Bittle
Documentation
• Constructor Summary

Constructors
Constructor Description
```FrictionJoint​(Body body1, Body body2, Vector2 anchor)```
Minimal constructor.
• Method Summary

All Methods
Modifier and Type Method Description
`Vector2` `getAnchor1​()`
Returns the anchor point on the first `Body` in world coordinates.
`Vector2` `getAnchor2​()`
Returns the anchor point on the second `Body` in world coordinates.
`double` `getMaximumForce​()`
Returns the maximum force this constraint will apply in newtons.
`double` `getMaximumTorque​()`
Returns the maximum torque this constraint will apply in newton-meters.
`Vector2` `getReactionForce​(double invdt)`
Returns the force applied to the `Body`s in order to satisfy the constraint in newtons.
`double` `getReactionTorque​(double invdt)`
Returns the torque applied to the `Body`s in order to satisfy the constraint in newton-meters.
`void` ```initializeConstraints​(Step step, Settings settings)```
Performs any initialization of the velocity and position constraints.
`void` `setMaximumForce​(double maximumForce)`
Sets the maximum force this constraint will apply in newtons.
`void` `setMaximumTorque​(double maximumTorque)`
Sets the maximum torque this constraint will apply in newton-meters.
`void` `shift​(Vector2 shift)`
Translates the object to match the given coordinate shift.
`boolean` ```solvePositionConstraints​(Step step, Settings settings)```
Solves the position constraints.
`void` ```solveVelocityConstraints​(Step step, Settings settings)```
Solves the velocity constraints.
`java.lang.String` `toString​()`
• Methods inherited from class org.dyn4j.dynamics.Constraint

`getBody1, getBody2`
• Methods inherited from interface org.dyn4j.DataContainer

`getUserData, setUserData`
• Methods inherited from class org.dyn4j.dynamics.joint.Joint

`getId, getUserData, isActive, isCollisionAllowed, setCollisionAllowed, setUserData`
• Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`
• Constructor Detail

• FrictionJoint

```public FrictionJoint​(Body body1,
Body body2,
Vector2 anchor)```
Minimal constructor.
Parameters:
`body1` - the first `Body`
`body2` - the second `Body`
`anchor` - the anchor point in world coordinates
Throws:
`java.lang.NullPointerException` - if body1, body2, or anchor is null
`java.lang.IllegalArgumentException` - if body1 == body2
• Method Detail

• toString

`public java.lang.String toString​()`
Overrides:
`toString` in class `Joint`
• initializeConstraints

```public void initializeConstraints​(Step step,
Settings settings)```
Description copied from class: `Joint`
Performs any initialization of the velocity and position constraints.
Specified by:
`initializeConstraints` in class `Joint`
Parameters:
`step` - the time step information
`settings` - the current world settings
• solveVelocityConstraints

```public void solveVelocityConstraints​(Step step,
Settings settings)```
Description copied from class: `Joint`
Solves the velocity constraints.
Specified by:
`solveVelocityConstraints` in class `Joint`
Parameters:
`step` - the time step information
`settings` - the current world settings
• solvePositionConstraints

```public boolean solvePositionConstraints​(Step step,
Settings settings)```
Description copied from class: `Joint`
Solves the position constraints.
Specified by:
`solvePositionConstraints` in class `Joint`
Parameters:
`step` - the time step information
`settings` - the current world settings
Returns:
boolean true if the position constraints were solved
• getAnchor1

`public Vector2 getAnchor1​()`
Description copied from class: `Joint`
Returns the anchor point on the first `Body` in world coordinates.
Specified by:
`getAnchor1` in class `Joint`
Returns:
`Vector2`
• getAnchor2

`public Vector2 getAnchor2​()`
Description copied from class: `Joint`
Returns the anchor point on the second `Body` in world coordinates.
Specified by:
`getAnchor2` in class `Joint`
Returns:
`Vector2`
• getReactionForce

`public Vector2 getReactionForce​(double invdt)`
Description copied from class: `Joint`
Returns the force applied to the `Body`s in order to satisfy the constraint in newtons.
Specified by:
`getReactionForce` in class `Joint`
Parameters:
`invdt` - the inverse delta time
Returns:
`Vector2`
• getReactionTorque

`public double getReactionTorque​(double invdt)`
Description copied from class: `Joint`
Returns the torque applied to the `Body`s in order to satisfy the constraint in newton-meters.
Specified by:
`getReactionTorque` in class `Joint`
Parameters:
`invdt` - the inverse delta time
Returns:
double
• shift

`public void shift​(Vector2 shift)`
Description copied from interface: `Shiftable`
Translates the object to match the given coordinate shift.
Specified by:
`shift` in interface `Shiftable`
Parameters:
`shift` - the amount to shift along the x and y axes
• getMaximumTorque

`public double getMaximumTorque​()`
Returns the maximum torque this constraint will apply in newton-meters.
Returns:
double
• setMaximumTorque

`public void setMaximumTorque​(double maximumTorque)`
Sets the maximum torque this constraint will apply in newton-meters.
Parameters:
`maximumTorque` - the maximum torque in newton-meters; in the range [0, ∞]
Throws:
`java.lang.IllegalArgumentException` - if maxTorque is less than zero
• getMaximumForce

`public double getMaximumForce​()`
Returns the maximum force this constraint will apply in newtons.
Returns:
double
• setMaximumForce

`public void setMaximumForce​(double maximumForce)`
Sets the maximum force this constraint will apply in newtons.
Parameters:
`maximumForce` - the maximum force in newtons; in the range [0, ∞]
Throws:
`java.lang.IllegalArgumentException` - if maxForce is less than zero