Class BoundingBox

java.lang.Object
com.ardor3d.bounding.BoundingVolume
com.ardor3d.bounding.BoundingBox
All Implemented Interfaces:
Savable, Serializable

public class BoundingBox extends BoundingVolume
BoundingBox defines an axis-aligned cube that defines a container for a group of vertices of a particular piece of geometry. This box defines a center and extents from that center along the x, y and z axis.

A typical usage is to allow the class define the center and radius by calling either containAABB or averagePoints. A call to computeFramePoint in turn calls containAABB.
See Also:
  • Constructor Details

    • BoundingBox

      public BoundingBox()
      Default constructor instantiates a new BoundingBox object.
    • BoundingBox

      public BoundingBox(BoundingBox other)
      Constructor instantiates a new BoundingBox object with given values.
      Parameters:
      other - the other bounding box
    • BoundingBox

      public BoundingBox(ReadOnlyVector3 c, double x, double y, double z)
      Constructor instantiates a new BoundingBox object with given values.
      Parameters:
      c - the center
      x - the x value
      y - the y value
      z - the z value
  • Method Details

    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class BoundingVolume
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class BoundingVolume
    • getType

      public BoundingVolume.Type getType()
      Description copied from class: BoundingVolume
      getType returns the type of bounding volume this is.
      Specified by:
      getType in class BoundingVolume
      Returns:
      the type of bounding volume
    • setXExtent

      public void setXExtent(double xExtent)
    • getXExtent

      public double getXExtent()
    • setYExtent

      public void setYExtent(double yExtent)
    • getYExtent

      public double getYExtent()
    • setZExtent

      public void setZExtent(double zExtent)
    • getZExtent

      public double getZExtent()
    • getRadius

      public double getRadius()
      Specified by:
      getRadius in class BoundingVolume
      Returns:
      the distance from the center of this bounding volume to its further edge/corner. Similar to converting this BoundingVolume to a sphere and asking for radius.
    • transform

      public BoundingVolume transform(ReadOnlyTransform transform, BoundingVolume store)
      Description copied from class: BoundingVolume
      transform alters the location of the bounding volume by a transform.
      Specified by:
      transform in class BoundingVolume
      Parameters:
      transform - the transform
      store - the bounding volume used as a store
      Returns:
      the transformed bounding volume
    • transformRotational

      public BoundingVolume transformRotational(ReadOnlyTransform transform, BoundingVolume store)
    • computeFromPoints

      public void computeFromPoints(FloatBuffer points)
      computeFromPoints creates a new Bounding Box from a given set of points. It uses the containAABB method as default.
      Specified by:
      computeFromPoints in class BoundingVolume
      Parameters:
      points - the points to contain.
    • computeFromPrimitives

      public void computeFromPrimitives(MeshData data, int section, int[] indices, int start, int end)
      Specified by:
      computeFromPrimitives in class BoundingVolume
    • containAABB

      public void containAABB(FloatBuffer points)
      containAABB creates a minimum-volume axis-aligned bounding box of the points, then selects the smallest enclosing sphere of the box with the sphere centered at the boxes center.
      Parameters:
      points - the list of points.
    • whichSide

      public ReadOnlyPlane.Side whichSide(ReadOnlyPlane plane)
      whichSide takes a plane (typically provided by a view frustum) to determine which side this bound is on.
      Specified by:
      whichSide in class BoundingVolume
      Parameters:
      plane - the plane to check against.
      Returns:
      the side on which this bounding volume lies.
    • merge

      public BoundingVolume merge(BoundingVolume volume)
      merge combines this sphere with a second bounding sphere. This new sphere contains both bounding spheres and is returned.
      Specified by:
      merge in class BoundingVolume
      Parameters:
      volume - the sphere to combine with this sphere.
      Returns:
      the new sphere
    • mergeLocal

      public BoundingVolume mergeLocal(BoundingVolume volume)
      mergeLocal combines this sphere with a second bounding sphere locally. Altering this sphere to contain both the original and the additional sphere volumes;
      Specified by:
      mergeLocal in class BoundingVolume
      Parameters:
      volume - the sphere to combine with this sphere.
      Returns:
      this
    • asType

      public BoundingVolume asType(BoundingVolume.Type newType)
      Description copied from class: BoundingVolume
      Convert this bounding volume to another, given bounding type.
      Specified by:
      asType in class BoundingVolume
      Parameters:
      newType - the type of bounding volume to convert to.
      Returns:
      a new bounding volume of the given type, containing this bounding volume.
    • clone

      public BoundingVolume clone(BoundingVolume store)
      clone creates a new BoundingBox object containing the same data as this one.
      Specified by:
      clone in class BoundingVolume
      Parameters:
      store - where to store the cloned information. if null or wrong class, a new store is created.
      Returns:
      the new BoundingBox
    • toString

      public String toString()
      toString returns the string representation of this object. The form is: "Radius: RRR.SSSS Center: <Vector>".
      Overrides:
      toString in class Object
      Returns:
      the string representation of this.
    • intersects

      public boolean intersects(BoundingVolume bv)
      Description copied from class: BoundingVolume
      determines if this bounding volume and a second given volume are intersecting. Intersecting being: one volume contains another, one volume overlaps another or one volume touches another.
      Specified by:
      intersects in class BoundingVolume
      Parameters:
      bv - the second volume to test against.
      Returns:
      true if this volume intersects the given volume.
    • intersectsSphere

      public boolean intersectsSphere(BoundingSphere bs)
      Description copied from class: BoundingVolume
      determines if this bounding volume and a given bounding sphere are intersecting.
      Specified by:
      intersectsSphere in class BoundingVolume
      Parameters:
      bs - the bounding sphere to test against.
      Returns:
      true if this volume intersects the given bounding sphere.
    • intersectsBoundingBox

      public boolean intersectsBoundingBox(BoundingBox bb)
      Description copied from class: BoundingVolume
      determines if this bounding volume and a given bounding box are intersecting.
      Specified by:
      intersectsBoundingBox in class BoundingVolume
      Parameters:
      bb - the bounding box to test against.
      Returns:
      true if this volume intersects the given bounding box.
    • intersectsOrientedBoundingBox

      public boolean intersectsOrientedBoundingBox(OrientedBoundingBox obb)
      Description copied from class: BoundingVolume
      determines if this bounding volume and a given bounding box are intersecting.
      Specified by:
      intersectsOrientedBoundingBox in class BoundingVolume
      Parameters:
      obb - the bounding box to test against.
      Returns:
      true if this volume intersects the given bounding box.
    • intersects

      public boolean intersects(ReadOnlyRay3 ray)
      Description copied from class: BoundingVolume
      determines if a ray intersects this bounding volume.
      Specified by:
      intersects in class BoundingVolume
      Parameters:
      ray - the ray to test.
      Returns:
      true if this volume is intersected by a given ray.
    • intersectsWhere

      public IntersectionRecord intersectsWhere(ReadOnlyRay3 ray)
      Description copied from class: BoundingVolume
      determines if a ray intersects this bounding volume and if so, where.
      Specified by:
      intersectsWhere in class BoundingVolume
      Parameters:
      ray - the ray to test.
      Returns:
      an IntersectionRecord containing information about any intersections made by the given Ray with this bounding
    • contains

      public boolean contains(ReadOnlyVector3 point)
      Description copied from class: BoundingVolume
      determines if a given point is contained within this bounding volume.
      Specified by:
      contains in class BoundingVolume
      Parameters:
      point - the point to check
      Returns:
      true if the point lies within this bounding volume.
    • distanceToEdge

      public double distanceToEdge(ReadOnlyVector3 point)
      Description copied from class: BoundingVolume
      Find the distance from the nearest edge of this Bounding Volume to the given point.
      Specified by:
      distanceToEdge in class BoundingVolume
      Parameters:
      point - The point to get the distance to
      Returns:
      distance
    • getCorners

      public Vector3[] getCorners(Vector3[] store)
      Get our corners using the bounding center and extents.
      Parameters:
      store - An optional store. Must be at least length of 8. If null, one will be created for you.
      Returns:
      array filled with our corners.
      Throws:
      ArrayIndexOutOfBoundsException - if our store is length < 8.
    • getExtent

      public Vector3 getExtent(Vector3 store)
      Query extent.
      Parameters:
      store - where extent gets stored - null to return a new vector
      Returns:
      store / new vector
    • write

      public void write(OutputCapsule capsule) throws IOException
      Specified by:
      write in interface Savable
      Overrides:
      write in class BoundingVolume
      Throws:
      IOException
    • read

      public void read(InputCapsule capsule) throws IOException
      Specified by:
      read in interface Savable
      Overrides:
      read in class BoundingVolume
      Throws:
      IOException
    • getVolume

      public double getVolume()
      Specified by:
      getVolume in class BoundingVolume