Class SphericalSegment

All Implemented Interfaces:
Comparable<NativePhysicsObject>

public class SphericalSegment extends ConvexShape
A collision shape for a spherical segment with uniform density, based on btConvexInternalShape. By convention, both bases are orthogonal to the local Y axis.

This is an imprecise shape; margin always expands the shape.

  • Field Details

    • logger2

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

    • SphericalSegment

      public SphericalSegment(float radius)
      Instantiate a hemisphere with the specified radius.
      Parameters:
      radius - the desired radius, before scaling and excluding margin (>0)
    • SphericalSegment

      public SphericalSegment(float radius, float yMax, float yMin)
      Instantiate a spherical segment with the specified dimensions.
      Parameters:
      radius - the desired radius of the parent sphere, before scaling and excluding margin (>0)
      yMax - the Y offset of the upper base from the center of the parent sphere, before scaling and excluding margin (≥yMin, ≤radius)
      yMin - the Y offset of the lower base from the center of the parent sphere, before scaling and excluding margin (≥-radius, ≤yMax)
  • Method Details

    • getHeight

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

      public float sphereRadius()
      Return the radius of the parent sphere.
      Returns:
      the unscaled radius (>0)
    • yMax

      public float yMax()
      Return the Y offset of the upper base from the center of the parent sphere.
      Returns:
      the unscaled offset (≥-radius, ≤radius)
    • yMin

      public float yMin()
      Return the Y offset of the lower base from the center of the parent sphere.
      Returns:
      the unscaled offset (≥-radius, ≤radius)
    • canScale

      public boolean canScale(Vector3f scale)
      Test whether the specified scale factors can be applied to the shape. For a spherical segment, 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 of mass, including collision margin.
      Overrides:
      maxRadius in class CollisionShape
      Returns:
      the distance (in physics-space units, ≥0)
    • scaledVolume

      public float scaledVolume()
      Estimate the volume of the collision shape, including scale and margin.
      Overrides:
      scaledVolume in class ConvexShape
      Returns:
      the estimated volume (in physics-space units cubed, ≥0)