Class ConeJoint

All Implemented Interfaces:
Comparable<NativePhysicsObject>

public class ConeJoint extends Constraint
A 3 degree-of-freedom joint based on Bullet's btConeTwistConstraint.

From the Bullet manual:
To create ragdolls, the cone twist constraint is very useful for limbs like the upper arm. It is a special point to point constraint that adds cone and twist axis limits. The x-axis serves as twist axis.

  • Field Details

    • logger2

      public static final Logger logger2
      message logger for this class
  • Constructor Details

    • ConeJoint

      public ConeJoint(PhysicsRigidBody rigidBodyA, Vector3f pivotInA, Matrix3f rotInA)
      Instantiate a single-ended ConeJoint with its pivot at the physics-space origin.

      To be effective, the joint must be added to the PhysicsSpace of the body and the body must be dynamic.

      Parameters:
      rigidBodyA - the body to constrain (not null, alias created)
      pivotInA - the pivot location in A's scaled local coordinates (not null, unaffected)
      rotInA - the joint orientation in A's local coordinates (rotation matrix, unaffected)
    • ConeJoint

      public ConeJoint(PhysicsRigidBody rigidBodyA, PhysicsRigidBody rigidBodyB, Vector3f pivotInA, Vector3f pivotInB)
      Instantiate a double-ended ConeJoint.

      To be effective, the joint must be added to the PhysicsSpace of both bodies. Also, the bodies must be distinct and at least one of them must be dynamic.

      Parameters:
      rigidBodyA - the body for the A end (not null, alias created)
      rigidBodyB - the body for the B end (not null, alias created)
      pivotInA - the pivot location in A's scaled local coordinates (not null, unaffected)
      pivotInB - the pivot location in B's scaled local coordinates (not null, unaffected)
    • ConeJoint

      public ConeJoint(PhysicsRigidBody rigidBodyA, PhysicsRigidBody rigidBodyB, Vector3f pivotInA, Vector3f pivotInB, Matrix3f rotInA, Matrix3f rotInB)
      Instantiate a double-ended ConeJoint.

      To be effective, the joint must be added to the PhysicsSpace of both bodies. Also, the bodies must be distinct and at least one of them must be dynamic.

      Parameters:
      rigidBodyA - the body for the A end (not null, alias created)
      rigidBodyB - the body for the B end (not null, alias created)
      pivotInA - the pivot location in A's scaled local coordinates (not null, unaffected)
      pivotInB - the pivot location in B's scaled local coordinates (not null, unaffected)
      rotInA - the joint orientation in A's local coordinates (rotation matrix, unaffected)
      rotInB - the joint orientation in B's local coordinates (rotation matrix, unaffected)
  • Method Details

    • getFrameTransform

      public Transform getFrameTransform(JointEnd end, Transform storeResult)
      Copy the joint's frame transform relative to the specified end.
      Parameters:
      end - which end (not null)
      storeResult - storage for the result (modified if not null)
      Returns:
      the transform of the constraint space relative to the end
    • getSwingSpan1

      public float getSwingSpan1()
      Read the span of the first swing axis.
      Returns:
      the span (in radians)
    • getSwingSpan2

      public float getSwingSpan2()
      Read the span of the 2nd swing axis.
      Returns:
      the span (in radians)
    • getTwistSpan

      public float getTwistSpan()
      Read the span of the twist (local X) axis.
      Returns:
      the span (in radians)
    • isAngularOnly

      public boolean isAngularOnly()
      Test whether this joint is angular-only.
      Returns:
      true if angular only, otherwise false
    • setAngularOnly

      public void setAngularOnly(boolean value)
      Alter whether this joint is angular-only.
      Parameters:
      value - the desired setting (default=false)
    • setLimit

      public void setLimit(float swingSpan1, float swingSpan2, float twistSpan)
      Alter the angular limits for this joint.
      Parameters:
      swingSpan1 - the desired span of the first swing axis (in radians)
      swingSpan2 - the desired span of the 2nd swing axis (in radians)
      twistSpan - the desired span of the twist (local X) axis (in radians)