com.jme3.bounding
Class BoundingVolume

java.lang.Object
  extended by com.jme3.bounding.BoundingVolume
All Implemented Interfaces:
Collidable, Savable, java.lang.Cloneable
Direct Known Subclasses:
BoundingBox, BoundingSphere

public abstract class BoundingVolume
extends java.lang.Object
implements Savable, java.lang.Cloneable, Collidable

BoundingVolume defines an interface for dealing with containment of a collection of points.


Nested Class Summary
static class BoundingVolume.Type
          The type of bounding volume being used.
 
Field Summary
protected  Vector3f center
           
protected  int checkPlane
           
 
Constructor Summary
BoundingVolume()
           
BoundingVolume(Vector3f center)
           
 
Method Summary
 BoundingVolume clone()
           
abstract  BoundingVolume clone(BoundingVolume store)
          clone creates a new BoundingVolume object containing the same data as this one.
abstract  void computeFromPoints(java.nio.FloatBuffer points)
          computeFromPoints generates a bounding volume that encompasses a collection of points.
abstract  boolean contains(Vector3f point)
          determines if a given point is contained within this bounding volume.
 float distanceSquaredTo(Vector3f point)
          Find the squared distance from the center of this Bounding Volume to the given point.
 float distanceTo(Vector3f point)
          Find the distance from the center of this Bounding Volume to the given point.
abstract  float distanceToEdge(Vector3f point)
          Find the distance from the nearest edge of this Bounding Volume to the given point.
 Vector3f getCenter()
           
 Vector3f getCenter(Vector3f store)
           
 int getCheckPlane()
          Grabs the checkplane we should check first.
abstract  BoundingVolume.Type getType()
          getType returns the type of bounding volume this is.
abstract  float getVolume()
           
abstract  boolean intersects(BoundingVolume bv)
          determines if this bounding volume and a second given volume are intersecting.
abstract  boolean intersects(Ray ray)
          determines if a ray intersects this bounding volume.
abstract  boolean intersects(Vector3f point)
          Determines if a given point intersects (touches or is inside) this bounding volume.
abstract  boolean intersectsBoundingBox(BoundingBox bb)
          determines if this bounding volume and a given bounding box are intersecting.
abstract  boolean intersectsSphere(BoundingSphere bs)
          determines if this bounding volume and a given bounding sphere are intersecting.
abstract  BoundingVolume merge(BoundingVolume volume)
          merge combines two bounding volumes into a single bounding volume that contains both this bounding volume and the parameter volume.
abstract  BoundingVolume mergeLocal(BoundingVolume volume)
          mergeLocal combines two bounding volumes into a single bounding volume that contains both this bounding volume and the parameter volume.
 void read(JmeImporter e)
           
 void setCenter(Vector3f newCenter)
           
 void setCheckPlane(int value)
          Sets the index of the plane that should be first checked during rendering.
abstract  BoundingVolume transform(Matrix4f trans, BoundingVolume store)
           
 BoundingVolume transform(Transform trans)
          transform alters the location of the bounding volume by a rotation, translation and a scalar.
abstract  BoundingVolume transform(Transform trans, BoundingVolume store)
          transform alters the location of the bounding volume by a rotation, translation and a scalar.
abstract  Plane.Side whichSide(Plane plane)
          whichSide returns the side on which the bounding volume lies on a plane.
 void write(JmeExporter e)
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.jme3.collision.Collidable
collideWith
 

Field Detail

checkPlane

protected int checkPlane

center

protected Vector3f center
Constructor Detail

BoundingVolume

public BoundingVolume()

BoundingVolume

public BoundingVolume(Vector3f center)
Method Detail

getCheckPlane

public int getCheckPlane()
Grabs the checkplane we should check first.


setCheckPlane

public final void setCheckPlane(int value)
Sets the index of the plane that should be first checked during rendering.

Parameters:
value -

getType

public abstract BoundingVolume.Type getType()
getType returns the type of bounding volume this is.


transform

public final BoundingVolume transform(Transform trans)
transform alters the location of the bounding volume by a rotation, translation and a scalar.

Parameters:
trans - the transform to affect the bound.
Returns:
the new bounding volume.

transform

public abstract BoundingVolume transform(Transform trans,
                                         BoundingVolume store)
transform alters the location of the bounding volume by a rotation, translation and a scalar.

Parameters:
trans - the transform to affect the bound.
store - sphere to store result in
Returns:
the new bounding volume.

transform

public abstract BoundingVolume transform(Matrix4f trans,
                                         BoundingVolume store)

whichSide

public abstract Plane.Side whichSide(Plane plane)
whichSide returns the side on which the bounding volume lies on a plane. Possible values are POSITIVE_SIDE, NEGATIVE_SIDE, and NO_SIDE.

Parameters:
plane - the plane to check against this bounding volume.
Returns:
the side on which this bounding volume lies.

computeFromPoints

public abstract void computeFromPoints(java.nio.FloatBuffer points)
computeFromPoints generates a bounding volume that encompasses a collection of points.

Parameters:
points - the points to contain.

merge

public abstract BoundingVolume merge(BoundingVolume volume)
merge combines two bounding volumes into a single bounding volume that contains both this bounding volume and the parameter volume.

Parameters:
volume - the volume to combine.
Returns:
the new merged bounding volume.

mergeLocal

public abstract BoundingVolume mergeLocal(BoundingVolume volume)
mergeLocal combines two bounding volumes into a single bounding volume that contains both this bounding volume and the parameter volume. The result is stored locally.

Parameters:
volume - the volume to combine.
Returns:
this

clone

public abstract BoundingVolume clone(BoundingVolume store)
clone creates a new BoundingVolume object containing the same data as this one.

Parameters:
store - where to store the cloned information. if null or wrong class, a new store is created.
Returns:
the new BoundingVolume

getCenter

public final Vector3f getCenter()

getCenter

public final Vector3f getCenter(Vector3f store)

setCenter

public final void setCenter(Vector3f newCenter)

distanceTo

public final float distanceTo(Vector3f point)
Find the distance from the center of this Bounding Volume to the given point.

Parameters:
point - The point to get the distance to
Returns:
distance

distanceSquaredTo

public final float distanceSquaredTo(Vector3f point)
Find the squared distance from the center of this Bounding Volume to the given point.

Parameters:
point - The point to get the distance to
Returns:
distance

distanceToEdge

public abstract float distanceToEdge(Vector3f point)
Find the distance from the nearest edge of this Bounding Volume to the given point.

Parameters:
point - The point to get the distance to
Returns:
distance

intersects

public abstract boolean intersects(BoundingVolume bv)
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.

Parameters:
bv - the second volume to test against.
Returns:
true if this volume intersects the given volume.

intersects

public abstract boolean intersects(Ray ray)
determines if a ray intersects this bounding volume.

Parameters:
ray - the ray to test.
Returns:
true if this volume is intersected by a given ray.

intersectsSphere

public abstract boolean intersectsSphere(BoundingSphere bs)
determines if this bounding volume and a given bounding sphere are intersecting.

Parameters:
bs - the bounding sphere to test against.
Returns:
true if this volume intersects the given bounding sphere.

intersectsBoundingBox

public abstract boolean intersectsBoundingBox(BoundingBox bb)
determines if this bounding volume and a given bounding box are intersecting.

Parameters:
bb - the bounding box to test against.
Returns:
true if this volume intersects the given bounding box.

contains

public abstract boolean contains(Vector3f point)
determines if a given point is contained within this bounding volume. If the point is on the edge of the bounding volume, this method will return false. Use intersects(Vector3f) to check for edge intersection.

Parameters:
point - the point to check
Returns:
true if the point lies within this bounding volume.

intersects

public abstract boolean intersects(Vector3f point)
Determines if a given point intersects (touches or is inside) this bounding volume.

Parameters:
point - the point to check
Returns:
true if the point lies within this bounding volume.

getVolume

public abstract float getVolume()

clone

public BoundingVolume clone()
Overrides:
clone in class java.lang.Object

write

public void write(JmeExporter e)
           throws java.io.IOException
Specified by:
write in interface Savable
Throws:
java.io.IOException

read

public void read(JmeImporter e)
          throws java.io.IOException
Specified by:
read in interface Savable
Throws:
java.io.IOException