Class BoundingSphere

java.lang.Object
com.jme3.bounding.BoundingVolume
com.jme3.bounding.BoundingSphere
All Implemented Interfaces:
Collidable, Savable, Cloneable

public class BoundingSphere extends BoundingVolume
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.
  • Constructor Details

    • BoundingSphere

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

      public BoundingSphere(float r, Vector3f c)
      Constructor instantiates a new BoundingSphere object.
      Parameters:
      r - the radius of the sphere.
      c - the center of the sphere.
  • Method Details

    • 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:
      an enum value
    • getRadius

      public float getRadius()
      getRadius returns the radius of the bounding sphere.
      Returns:
      the radius of the bounding sphere.
    • setRadius

      public void setRadius(float radius)
      setRadius sets the radius of this bounding sphere.
      Parameters:
      radius - the new radius of the bounding sphere.
    • computeFromPoints

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

      public void computeFromTris(Triangle[] tris, int start, int end)
      computeFromTris creates a new Bounding Box from a given set of triangles. It is used in OBBTree calculations.
      Parameters:
      tris - triangle data (unaffected)
      start - the index of the first triangle to be used
      end - the index of the triangle after the last one to be used
    • calcWelzl

      public void calcWelzl(FloatBuffer points)
      Calculates a minimum bounding sphere for the set of points. The algorithm was originally found in C++ at
      http://flipcode.com/archives/Smallest_Enclosing_Spheres.shtml
      and translated to java by Cep21
      Parameters:
      points - The points to calculate the minimum bounds from.
    • averagePoints

      public void averagePoints(Vector3f[] 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.
      Parameters:
      points - the list of points to contain.
    • transform

      public BoundingVolume transform(Transform trans, BoundingVolume store)
      transform modifies the center of the sphere to reflect the change made via a rotation, translation and scale.
      Specified by:
      transform in class BoundingVolume
      Parameters:
      trans - the transform to apply
      store - sphere to store result in
      Returns:
      either store or a new BoundingSphere
    • transform

      public BoundingVolume transform(Matrix4f trans, BoundingVolume store)
      Specified by:
      transform in class BoundingVolume
    • whichSide

      public Plane.Side whichSide(Plane 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:
      side
    • 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:
      a 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
    • clone

      public BoundingVolume clone(BoundingVolume store)
      clone creates a new BoundingSphere 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 BoundingSphere
    • 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.
    • intersects

      public boolean intersects(Ray 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.
    • collideWith

      public int collideWith(Collidable other, CollisionResults results)
      Description copied from interface: Collidable
      Check collision with another Collidable.
      Parameters:
      other - The object to check collision against
      results - Will contain the list of CollisionResults.
      Returns:
      how many collisions were found between this and other
    • collideWith

      public int collideWith(Collidable other)
      Overrides:
      collideWith in class BoundingVolume
    • contains

      public boolean contains(Vector3f point)
      Description copied from class: BoundingVolume
      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.
      Specified by:
      contains in class BoundingVolume
      Parameters:
      point - the point to check
      Returns:
      true if the point lies within this bounding volume.
    • intersects

      public boolean intersects(Vector3f point)
      Description copied from class: BoundingVolume
      Determines if a given point intersects (touches or is inside) this bounding volume.
      Specified by:
      intersects in class BoundingVolume
      Parameters:
      point - the point to check
      Returns:
      true if the point lies within this bounding volume.
    • distanceToEdge

      public float distanceToEdge(Vector3f 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
    • write

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

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

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