chemaxon.marvin.space
Class BoundingBox

java.lang.Object
  extended by chemaxon.marvin.space.BoundingBox

public class BoundingBox
extends Object

Class for representing a bounding box of any component in the 3D space. Every GraphicComponent has a BoundingBox by default, but it has to be set. Edges of bounding boxes are always parallel to the coordinate axes.
For the sake of efficiency center and radius of the bounding box are not computed unless calling ready(), so that there is no unnecessary computation in case of setting many coordinates. Example of typical usage:

 BoundingBox bb = new BoundingBox( 1, 2, 3, 4, 5, 6);
 
 BoundingBox bb = new BoundingBox();
 for(int i=0; i<atomCount; i++) {
      bb.setWithCondition(atomx, atomy, atomz);
 }
 bb.ready();
 

Since:
Marvin 4.0.2
Version:
MarvinSpace 1.0
Author:
Judit Papp

Constructor Summary
BoundingBox()
          Creates a new instance of BoundingBox but does not set anything.
BoundingBox(float minx, float miny, float minz, float maxx, float maxy, float maxz)
          Creates a bounding box with the given coordinates, computes the center and radius of the box.
 
Method Summary
 float centerx()
          Returns the x coordinate of the center of the box.
 float centery()
          Returns the y coordinate of the center of the box.
 float centerz()
          Returns the z coordinate of the center of the box.
 void clear()
          Clears all previously set coordinate from the box.
 boolean contains(float x, float y, float z)
          Tells whether the given location is inside the box.
 void draw(javax.media.opengl.GL2 gl)
          Draws the box with the given GL2 in line mode.
 void extend(float v)
          Makes the bounding box being larger or smaller by the given value in each direction.
 void finalize()
           
 float[] getBoundingCenter()
          Returns the center of the box as a vector.
 double getBoundingRadius()
          Returns the radius of the bounding sphere of the box, which is the distance between the lower-left-front corner and the center.
 float getMaxX()
          Returns the maximum x coordinate of the box.
 float getMaxY()
          Returns the maximum y coordinate of the box.
 float getMaxZ()
          Returns the maximum z coordinate of the box.
 float getMinX()
          Returns the minimum x coordinate of the box.
 float getMinY()
          Returns the minimum y coordinate of the box.
 float getMinZ()
          Returns the minimum z coordinate of the box.
 float maxx()
          Returns the maximum x coordinate of the box.
 float maxy()
          Returns the maximum y coordinate of the box.
 float maxz()
          Returns the maximum z coordinate of the box.
 float minx()
          Returns the minimum x coordinate of the box.
 float miny()
          Returns the minimum y coordinate of the box.
 float minz()
          Returns the minimum z coordinate of the box.
 void ready()
          It has to be called after passing all coordinates to the box.
 void set(float minx, float miny, float minz, float maxx, float maxy, float maxz)
          Sets the minimum and maximum coordinates of the box.
 void setMax(float maxx, float maxy, float maxz)
          Sets the maximum coordinates of the box.
 void setMaxX(float v)
          Sets the maximum x coordinate of the box.
 void setMaxY(float v)
          Sets the maximum y coordinate of the box.
 void setMaxZ(float v)
          Sets the maximum z coordinate of the box.
 void setMin(float minx, float miny, float minz)
          Sets the minimum coordinates of the box.
 void setMinX(float v)
          Sets the minimum x coordinate of the box.
 void setMinY(float v)
          Sets the minimum y coordinate of the box.
 void setMinZ(float v)
          Sets the minimum z coordinate of the box.
 void setWithCondition(BoundingBox bb)
          Extends the box with the given box, say gives the bounding box of the two boxes.
 void setWithCondition(float x, float y, float z)
          This is the best way of passing coordinates to the box.
 String toString()
          Returns the minimum and maximum coordinates of the box.
 void translate(float[] v)
          A box can be translated in space.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BoundingBox

public BoundingBox()
Creates a new instance of BoundingBox but does not set anything.


BoundingBox

public BoundingBox(float minx,
                   float miny,
                   float minz,
                   float maxx,
                   float maxy,
                   float maxz)
Creates a bounding box with the given coordinates, computes the center and radius of the box.

Method Detail

finalize

public void finalize()
Overrides:
finalize in class Object

draw

public void draw(javax.media.opengl.GL2 gl)
Draws the box with the given GL2 in line mode.

Parameters:
gl - Interface to OpenGL

minx

public float minx()
Returns the minimum x coordinate of the box.

Returns:
minimum x coordinate

miny

public float miny()
Returns the minimum y coordinate of the box.

Returns:
minimum y coordinate

minz

public float minz()
Returns the minimum z coordinate of the box.

Returns:
minimum z coordinate

getMinX

public float getMinX()
Returns the minimum x coordinate of the box.

Returns:
minimum x coordinate

getMinY

public float getMinY()
Returns the minimum y coordinate of the box.

Returns:
minimum y coordinate

getMinZ

public float getMinZ()
Returns the minimum z coordinate of the box.

Returns:
minimum z coordinate

setMin

public void setMin(float minx,
                   float miny,
                   float minz)
Sets the minimum coordinates of the box.

Parameters:
minx - minimum x coordinate
miny - minimum y coordinate
minz - minimum z coordinate

setMinX

public void setMinX(float v)
Sets the minimum x coordinate of the box.

Parameters:
v - minimum x coordinate

setMinY

public void setMinY(float v)
Sets the minimum y coordinate of the box.

Parameters:
v - minimum y coordinate

setMinZ

public void setMinZ(float v)
Sets the minimum z coordinate of the box.

Parameters:
v - minimum z coordinate

maxx

public float maxx()
Returns the maximum x coordinate of the box.

Returns:
maximum x coordinate

maxy

public float maxy()
Returns the maximum y coordinate of the box.

Returns:
maximum y coordinate

maxz

public float maxz()
Returns the maximum z coordinate of the box.

Returns:
maximum z coordinate

getMaxX

public float getMaxX()
Returns the maximum x coordinate of the box.

Returns:
maximum x coordinate

getMaxY

public float getMaxY()
Returns the maximum y coordinate of the box.

Returns:
maximum y coordinate

getMaxZ

public float getMaxZ()
Returns the maximum z coordinate of the box.

Returns:
maximum z coordinate

setMax

public void setMax(float maxx,
                   float maxy,
                   float maxz)
Sets the maximum coordinates of the box.

Parameters:
maxx - maximum x coordinate
maxy - maximum y coordinate
maxz - maximum z coordinate

setMaxX

public void setMaxX(float v)
Sets the maximum x coordinate of the box.

Parameters:
v - maximum x coordinate

setMaxY

public void setMaxY(float v)
Sets the maximum y coordinate of the box.

Parameters:
v - maximum y coordinate

setMaxZ

public void setMaxZ(float v)
Sets the maximum z coordinate of the box.

Parameters:
v - maximum z coordinate

centerx

public float centerx()
Returns the x coordinate of the center of the box.

Returns:
x coordinate of the center

centery

public float centery()
Returns the y coordinate of the center of the box.

Returns:
y coordinate of the center

centerz

public float centerz()
Returns the z coordinate of the center of the box.

Returns:
z coordinate of the center

clear

public void clear()
Clears all previously set coordinate from the box.


ready

public void ready()
It has to be called after passing all coordinates to the box. It will compute the center and size of the box.


set

public void set(float minx,
                float miny,
                float minz,
                float maxx,
                float maxy,
                float maxz)
Sets the minimum and maximum coordinates of the box.

Parameters:
minx - minimum x coordinate
miny - minimum y coordinate
minz - minimum z coordinate
maxx - maximum x coordinate
maxy - maximum y coordinate
maxz - maximum z coordinate

setWithCondition

public void setWithCondition(float x,
                             float y,
                             float z)
This is the best way of passing coordinates to the box. Condition means checking whether these are the first coordinates passed or not. If so, values are simply set as minimum and maximum, otherwise it checks if these are minimum or maximum values.

Parameters:
x - possible minimum and maximum x coordinate
y - possible minimum and maximum y coordinate
z - possible minimum and maximum z coordinate

setWithCondition

public void setWithCondition(BoundingBox bb)
Extends the box with the given box, say gives the bounding box of the two boxes.

Parameters:
bb - volume to add to the current volume defined by the boxes

extend

public void extend(float v)
Makes the bounding box being larger or smaller by the given value in each direction. Warning decreasing the size of the bounding box too much can cause error.

Parameters:
v - extension in Angstroms

getBoundingCenter

public float[] getBoundingCenter()
Returns the center of the box as a vector.

Returns:
center float coordinates of the box

getBoundingRadius

public double getBoundingRadius()
Returns the radius of the bounding sphere of the box, which is the distance between the lower-left-front corner and the center.

Returns:
half length the diagonal of the box

contains

public boolean contains(float x,
                        float y,
                        float z)
Tells whether the given location is inside the box.


translate

public void translate(float[] v)
A box can be translated in space. It is usually called by a LocationControl.

Parameters:
v - translation vector

toString

public String toString()
Returns the minimum and maximum coordinates of the box.

Overrides:
toString in class Object
Returns:
box as String