Package com.ardor3d.bounding
Class BoundingSphere
java.lang.Object
com.ardor3d.bounding.BoundingVolume
com.ardor3d.bounding.BoundingSphere
- All Implemented Interfaces:
Savable
,Serializable
BoundingSphere
defines a sphere that defines a container for a group of vertices of a particular piece
of geometry. This sphere defines a radius and a center. 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:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.ardor3d.bounding.BoundingVolume
BoundingVolume.Type
-
Field Summary
Fields inherited from class com.ardor3d.bounding.BoundingVolume
_center, _checkPlane, _compVect1, _compVect2
-
Constructor Summary
ConstructorDescriptionDefault constructor instantiates a newBoundingSphere
object.BoundingSphere
(double r, ReadOnlyVector3 c) Constructor instantiates a newBoundingSphere
object. -
Method Summary
Modifier and TypeMethodDescriptionasType
(BoundingVolume.Type newType) Convert this bounding volume to another, given bounding type.void
averagePoints
(Vector3[] points) averagePoints
selects the sphere center to be the average of the points and the sphere radius to be the smallest value to enclose all points.void
calcWelzl
(FloatBuffer points) Calculates a minimum bounding sphere for the set of points.clone
(BoundingVolume store) clone
creates a new BoundingSphere object containing the same data as this one.void
computeFromPoints
(FloatBuffer points) computeFromPoints
creates a new Bounding Sphere from a given set of points.void
computeFromPrimitives
(MeshData data, int section, int[] indices, int start, int end) boolean
contains
(ReadOnlyVector3 point) determines if a given point is contained within this bounding volume.double
distanceToEdge
(ReadOnlyVector3 point) Find the distance from the nearest edge of this Bounding Volume to the given point.boolean
double
getRadius
returns the radius of the bounding sphere.getType()
getType returns the type of bounding volume this is.double
int
hashCode()
boolean
determines if this bounding volume and a second given volume are intersecting.boolean
intersects
(ReadOnlyRay3 ray) determines if a ray intersects this bounding volume.boolean
determines if this bounding volume and a given bounding box are intersecting.boolean
determines if this bounding volume and a given bounding box are intersecting.boolean
determines if this bounding volume and a given bounding sphere are intersecting.determines if a ray intersects this bounding volume and if so, where.merge
(BoundingVolume volume) merge
combines this sphere with a second bounding sphere.mergeLocal
(BoundingVolume volume) mergeLocal
combines this sphere with a second bounding sphere locally.static void
populateFromBuffer
(Vector3 vector, float[] buf, int index) void
read
(InputCapsule capsule) static void
setInBuffer
(ReadOnlyVector3 vector, float[] buf, int index) void
setRadius
(double radius) setRadius
sets the radius of this bounding sphere.toString()
transform
(ReadOnlyTransform transform, BoundingVolume store) transform
alters the location of the bounding volume by a transform.whichSide
(ReadOnlyPlane plane) whichSide
takes a plane (typically provided by a view frustum) to determine which side this bound is on.void
write
(OutputCapsule capsule) Methods inherited from class com.ardor3d.bounding.BoundingVolume
distanceSquaredTo, distanceTo, getCenter, getCheckPlane, getClassTag, setCenter, setCenter, setCheckPlane
-
Field Details
-
_compVect3
-
_compVect4
-
-
Constructor Details
-
BoundingSphere
public BoundingSphere()Default constructor instantiates a newBoundingSphere
object. -
BoundingSphere
Constructor instantiates a newBoundingSphere
object.- Parameters:
r
- the radius of the sphere.c
- the center of the sphere.
-
-
Method Details
-
hashCode
public int hashCode()- Overrides:
hashCode
in classBoundingVolume
-
equals
- Overrides:
equals
in classBoundingVolume
-
getType
Description copied from class:BoundingVolume
getType returns the type of bounding volume this is.- Specified by:
getType
in classBoundingVolume
- Returns:
- the type of bounding volume
-
transform
Description copied from class:BoundingVolume
transform
alters the location of the bounding volume by a transform.- Specified by:
transform
in classBoundingVolume
- Parameters:
transform
- the transformstore
- the bounding volume used as a store- Returns:
- the transformed bounding volume
-
getRadius
public double getRadius()getRadius
returns the radius of the bounding sphere.- Specified by:
getRadius
in classBoundingVolume
- Returns:
- the radius of the bounding sphere.
-
setRadius
public void setRadius(double radius) setRadius
sets the radius of this bounding sphere.- Parameters:
radius
- the new radius of the bounding sphere.
-
computeFromPoints
computeFromPoints
creates a new Bounding Sphere from a given set of points. It uses thecalcWelzl
method as default.- Specified by:
computeFromPoints
in classBoundingVolume
- Parameters:
points
- the points to contain.
-
computeFromPrimitives
- Specified by:
computeFromPrimitives
in classBoundingVolume
-
calcWelzl
Calculates a minimum bounding sphere for the set of points. The algorithm was originally found at http://www.flipcode.com/cgi-bin/msg.cgi?showThread=COTD-SmallestEnclosingSpheres&forum=cotd&id=-1 in C++ and translated to java by Cep21- Parameters:
points
- The points to calculate the minimum bounds from.
-
populateFromBuffer
-
setInBuffer
-
averagePoints
averagePoints
selects the sphere center to be the average of the points and the sphere radius to be the smallest value to enclose all points.- Parameters:
points
- the list of points to contain.
-
whichSide
whichSide
takes a plane (typically provided by a view frustum) to determine which side this bound is on.- Specified by:
whichSide
in classBoundingVolume
- Parameters:
plane
- the plane to check against.- Returns:
- side
-
merge
merge
combines this sphere with a second bounding sphere. This new sphere contains both bounding spheres and is returned.- Specified by:
merge
in classBoundingVolume
- Parameters:
volume
- the sphere to combine with this sphere.- Returns:
- a new sphere
-
mergeLocal
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 classBoundingVolume
- Parameters:
volume
- the sphere to combine with this sphere.- Returns:
- this
-
asType
Description copied from class:BoundingVolume
Convert this bounding volume to another, given bounding type.- Specified by:
asType
in classBoundingVolume
- Parameters:
newType
- the type of bounding volume to convert to.- Returns:
- a new bounding volume of the given type, containing this bounding volume.
-
clone
clone
creates a new BoundingSphere object containing the same data as this one.- Specified by:
clone
in classBoundingVolume
- Parameters:
store
- where to store the cloned information. if null or wrong class, a new store is created.- Returns:
- the new BoundingSphere
-
toString
-
intersects
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 classBoundingVolume
- Parameters:
bv
- the second volume to test against.- Returns:
- true if this volume intersects the given volume.
-
intersectsSphere
Description copied from class:BoundingVolume
determines if this bounding volume and a given bounding sphere are intersecting.- Specified by:
intersectsSphere
in classBoundingVolume
- Parameters:
bs
- the bounding sphere to test against.- Returns:
- true if this volume intersects the given bounding sphere.
-
intersectsBoundingBox
Description copied from class:BoundingVolume
determines if this bounding volume and a given bounding box are intersecting.- Specified by:
intersectsBoundingBox
in classBoundingVolume
- Parameters:
bb
- the bounding box to test against.- Returns:
- true if this volume intersects the given bounding box.
-
intersectsOrientedBoundingBox
Description copied from class:BoundingVolume
determines if this bounding volume and a given bounding box are intersecting.- Specified by:
intersectsOrientedBoundingBox
in classBoundingVolume
- Parameters:
obb
- the bounding box to test against.- Returns:
- true if this volume intersects the given bounding box.
-
intersects
Description copied from class:BoundingVolume
determines if a ray intersects this bounding volume.- Specified by:
intersects
in classBoundingVolume
- Parameters:
ray
- the ray to test.- Returns:
- true if this volume is intersected by a given ray.
-
intersectsWhere
Description copied from class:BoundingVolume
determines if a ray intersects this bounding volume and if so, where.- Specified by:
intersectsWhere
in classBoundingVolume
- Parameters:
ray
- the ray to test.- Returns:
- an IntersectionRecord containing information about any intersections made by the given Ray with this bounding
-
contains
Description copied from class:BoundingVolume
determines if a given point is contained within this bounding volume.- Specified by:
contains
in classBoundingVolume
- Parameters:
point
- the point to check- Returns:
- true if the point lies within this bounding volume.
-
distanceToEdge
Description copied from class:BoundingVolume
Find the distance from the nearest edge of this Bounding Volume to the given point.- Specified by:
distanceToEdge
in classBoundingVolume
- Parameters:
point
- The point to get the distance to- Returns:
- distance
-
write
- Specified by:
write
in interfaceSavable
- Overrides:
write
in classBoundingVolume
- Throws:
IOException
-
read
- Specified by:
read
in interfaceSavable
- Overrides:
read
in classBoundingVolume
- Throws:
IOException
-
getVolume
public double getVolume()- Specified by:
getVolume
in classBoundingVolume
-