Class CylinderCollisionShape

All Implemented Interfaces:
Comparable<NativePhysicsObject>

public class CylinderCollisionShape extends ConvexShape
A cylindrical collision shape based on Bullet's btCylinderShapeX, btCylinderShape, or btCylinderShapeZ.
  • Field Details

    • logger2

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

    • CylinderCollisionShape

      public CylinderCollisionShape(float radius, float height, int axisIndex)
      Instantiate a cylinder shape around the specified main (height) axis.
      Parameters:
      radius - the desired unscaled radius (≥0)
      height - the desired unscaled height (≥0)
      axisIndex - which local axis to use for the height: 0→X, 1→Y, 2→Z (default=2)
    • CylinderCollisionShape

      public CylinderCollisionShape(FloatBuffer buffer, int startPosition, int endPosition, int axisIndex)
      Instantiate a cylinder shape that encloses the sample locations in the specified FloatBuffer range.
      Parameters:
      buffer - the buffer that contains the sample locations (not null, unaffected)
      startPosition - the position at which the sample locations start (≥0, ≤endPosition)
      endPosition - the position at which the sample locations end (≥startPosition, ≤capacity)
      axisIndex - which local axis to use for the height: 0→X, 1→Y, 2→Z
    • CylinderCollisionShape

      public CylinderCollisionShape(Vector3f halfExtents)
      Instantiate a Z-axis cylinder shape with the specified half extents.
      Parameters:
      halfExtents - the desired unscaled half extents (not null, no negative component, unaffected)
    • CylinderCollisionShape

      public CylinderCollisionShape(Vector3f halfExtents, int axisIndex)
      Instantiate a cylinder shape around the specified axis.
      Parameters:
      halfExtents - the desired unscaled half extents (not null, no negative component, unaffected)
      axisIndex - which local axis to use for the height: 0→X, 1→Y, 2→Z
  • Method Details

    • getAxis

      public int getAxis()
      Return the main (height) axis of the cylinder.
      Returns:
      the axis index: 0→X, 1→Y, 2→Z
    • getHalfExtents

      public Vector3f getHalfExtents(Vector3f storeResult)
      Copy the half extents of the cylinder.
      Parameters:
      storeResult - storage for the result (modified if not null)
      Returns:
      the unscaled half extent for each local axis (either storeResult or a new vector, not null, no negative component)
    • getHeight

      public float getHeight()
      Return the height of the cylinder.
      Returns:
      the unscaled height (≥0)
    • unscaledVolume

      public float unscaledVolume()
      Return the unscaled volume of the cylinder.
      Returns:
      the volume (in shape units cubed, ≥0)
    • canScale

      public boolean canScale(Vector3f scale)
      Test whether the specified scale factors can be applied to this shape. For cylinder shapes, radial scaling must be uniform.
      Overrides:
      canScale in class CollisionShape
      Parameters:
      scale - the desired scale factor for each local axis (may be null, unaffected)
      Returns:
      true if applicable, otherwise false
    • maxRadius

      public float maxRadius()
      Calculate how far the scaled shape extends from its center.
      Overrides:
      maxRadius in class CollisionShape
      Returns:
      the distance (in physics-space units, ≥0)
    • toHullShape

      public HullCollisionShape toHullShape()
      Approximate this shape with a HullCollisionShape.
      Overrides:
      toHullShape in class ConvexShape
      Returns:
      a new shape