Module org.dyn4j

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
    See Also:
    Documentation
    • Field Detail

      • localAnchor1

        protected Vector2 localAnchor1
        The local anchor point on the first Body
      • localAnchor2

        protected Vector2 localAnchor2
        The local anchor point on the second Body
      • maximumForce

        protected double maximumForce
        The maximum force the constraint can apply
      • maximumTorque

        protected double maximumTorque
        The maximum torque the constraint can apply
    • 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 Bodys 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 Bodys 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