Interface AABB


public interface AABB
An axis aligned bounding box. That is, an un-rotated cuboid. It is represented by its minimum and maximum corners.

The box will never be degenerate: the corners are always not equal and respect the minimum and maximum properties.

This class is immutable, all objects returned are either new instances or itself.

  • Nested Class Summary Link icon

    Nested Classes
    Modifier and Type
    Interface
    Description
    static interface 
     
  • Method Summary Link icon

    Modifier and Type
    Method
    Description
    Returns the center of the box, halfway between each corner.
    boolean
    contains(double x, double y, double z)
    Checks if the bounding box contains a point.
    default boolean
    Checks if the bounding box contains a point.
    default boolean
    Checks if the bounding box contains a point.
    expand(double x, double y, double z)
    Expands this bounding box by a given amount in both directions and returns a new box.
    default AABB
    expand(Vector3d amount)
    Expands this bounding box by a given amount in both directions and returns a new box.
    default AABB
    expand(Vector3i amount)
    Expands this bounding box by a given amount in both directions and returns a new box.
    boolean
    Checks if the bounding box intersects another.
    intersects(Vector3d start, Vector3d direction)
    Tests for intersection between the box and a ray defined by a starting point and a direction.
    max()
    The maximum corner of the box.
    min()
    The minimum corner of the box.
    static AABB
    of(double x1, double y1, double z1, double x2, double y2, double z2)
    Creates a new bounding box from two opposite corners.
    static AABB
    of(Vector3d v1, Vector3d v2)
    Creates a new bounding box from two opposite corners.
    static AABB
    of(Vector3i v1, Vector3i v2)
    Creates a new bounding box from two opposite corners.
    offset(double x, double y, double z)
    Offsets this bounding box by a given amount and returns a new box.
    default AABB
    offset(Vector3d offset)
    Offsets this bounding box by a given amount and returns a new box.
    default AABB
    offset(Vector3i offset)
    Offsets this bounding box by a given amount and returns a new box.
    Gets the size of the box.
  • Method Details Link icon

    • of Link icon

      static AABB of(Vector3d v1, Vector3d v2)
      Creates a new bounding box from two opposite corners.

      Fails the resulting box would be degenerate (a dimension is 0).

      Parameters:
      v1 - The first corner
      v2 - The second corner
      Returns:
      An AABB
    • of Link icon

      static AABB of(Vector3i v1, Vector3i v2)
      Creates a new bounding box from two opposite corners.

      Fails the resulting box would be degenerate (a dimension is 0).

      Parameters:
      v1 - The first corner
      v2 - The second corner
      Returns:
      An AABB
    • of Link icon

      static AABB of(double x1, double y1, double z1, double x2, double y2, double z2)
      Creates a new bounding box from two opposite corners.

      Fails the resulting box would be degenerate (a dimension is 0).

      Parameters:
      x1 - The first corner x coordinate
      y1 - The first corner y coordinate
      z1 - The first corner z coordinate
      x2 - The second corner x coordinate
      y2 - The second corner y coordinate
      z2 - The second corner z coordinate
      Returns:
      An AABB
    • min Link icon

      Vector3d min()
      The minimum corner of the box.
      Returns:
      The minimum corner
    • max Link icon

      Vector3d max()
      The maximum corner of the box.
      Returns:
      The maximum corner
    • center Link icon

      Vector3d center()
      Returns the center of the box, halfway between each corner.
      Returns:
      The center
    • size Link icon

      Vector3d size()
      Gets the size of the box.
      Returns:
      The size
    • contains Link icon

      default boolean contains(Vector3i point)
      Checks if the bounding box contains a point.
      Parameters:
      point - The point to check
      Returns:
      Whether or not the box contains the point
    • contains Link icon

      default boolean contains(Vector3d point)
      Checks if the bounding box contains a point.
      Parameters:
      point - The point to check
      Returns:
      Whether or not the box contains the point
    • contains Link icon

      boolean contains(double x, double y, double z)
      Checks if the bounding box contains a point.
      Parameters:
      x - The x coordinate of the point
      y - The y coordinate of the point
      z - The z coordinate of the point
      Returns:
      Whether or not the box contains the point
    • intersects Link icon

      boolean intersects(AABB other)
      Checks if the bounding box intersects another.
      Parameters:
      other - The other bounding box to check
      Returns:
      Whether this bounding box intersects with the other
    • intersects Link icon

      Optional<Tuple<Vector3d,Vector3d>> intersects(Vector3d start, Vector3d direction)
      Tests for intersection between the box and a ray defined by a starting point and a direction.
      Parameters:
      start - The starting point of the ray
      direction - The direction of the ray
      Returns:
      An intersection point its normal, if any
    • offset Link icon

      default AABB offset(Vector3i offset)
      Offsets this bounding box by a given amount and returns a new box.
      Parameters:
      offset - The offset to apply
      Returns:
      The new offset box
    • offset Link icon

      default AABB offset(Vector3d offset)
      Offsets this bounding box by a given amount and returns a new box.
      Parameters:
      offset - The offset to apply
      Returns:
      The new offset box
    • offset Link icon

      AABB offset(double x, double y, double z)
      Offsets this bounding box by a given amount and returns a new box.
      Parameters:
      x - The amount of offset for the x coordinate
      y - The amount of offset for the y coordinate
      z - The amount of offset for the z coordinate
      Returns:
      The new offset box
    • expand Link icon

      default AABB expand(Vector3i amount)
      Expands this bounding box by a given amount in both directions and returns a new box. The expansion is applied half and half to the minimum and maximum corners.
      Parameters:
      amount - The amount of expansion to apply
      Returns:
      The new expanded box
    • expand Link icon

      default AABB expand(Vector3d amount)
      Expands this bounding box by a given amount in both directions and returns a new box. The expansion is applied half and half to the minimum and maximum corners.
      Parameters:
      amount - The amount of expansion to apply
      Returns:
      The new expanded box
    • expand Link icon

      AABB expand(double x, double y, double z)
      Expands this bounding box by a given amount in both directions and returns a new box. The expansion is applied half and half to the minimum and maximum corners.
      Parameters:
      x - The amount of expansion for the x coordinate
      y - The amount of expansion for the y coordinate
      z - The amount of expansion for the z coordinate
      Returns:
      The new expanded box