Class BoundingBox3d


  • public class BoundingBox3d
    extends Object
    A BoundingBox3d stores a couple of maximal and minimal limit on each dimension (x, y, and z). It provides functions for enlarging the box by adding coordinates, Point3d, Polygon3d or an other BoundingBox3d (that is equivalent to computing the union of the current BoundingBox and another one).
    Author:
    Martin Pernollet
    • Field Detail

      • xmin

        protected float xmin
      • xmax

        protected float xmax
      • ymin

        protected float ymin
      • ymax

        protected float ymax
      • zmin

        protected float zmin
      • zmax

        protected float zmax
    • Constructor Detail

      • BoundingBox3d

        public BoundingBox3d()
        Initialize a BoundingBox by calling its reset method, leaving the box in an inconsitent state, with minimums = Float.MAX_VALUE and maximums = -Float.MAX_VALUE. In other words, calling box.valid() will return false.
      • BoundingBox3d

        public BoundingBox3d​(List<Coord3d> coords)
      • BoundingBox3d

        public BoundingBox3d​(Polygon polygon)
      • BoundingBox3d

        public BoundingBox3d​(Coord3d center,
                             float diameter)
      • BoundingBox3d

        public BoundingBox3d​(float xmin,
                             float xmax,
                             float ymin,
                             float ymax,
                             float zmin,
                             float zmax)
        Initialize a BoundingBox with raw values.
      • BoundingBox3d

        public BoundingBox3d​(Range xRange,
                             Range yRange,
                             Range zRange)
      • BoundingBox3d

        public BoundingBox3d​(float[] bounds)
      • BoundingBox3d

        public BoundingBox3d​(double[] bounds)
    • Method Detail

      • corners

        public Coord3d[] corners()
        Build an array of 8 coordinates indicating the 8 corners of the bounding box
        Returns:
      • reset

        public void reset()
        Initialize the bounding box with Float.MAX_VALUE as minimum value, and -Float.MAX_VALUE as maximum value for each dimension.
      • isReset

        public boolean isReset()
      • isPoint

        public boolean isPoint()
      • valid

        public boolean valid()
      • add

        public void add​(float x,
                        float y,
                        float z)
        Adds an x,y,z point to the bounding box, and enlarge the bounding box if this points lies outside of it.
        Parameters:
        x -
        y -
        z -
      • add

        public void add​(double x,
                        double y,
                        double z)
      • add

        public void add​(Coord3d c)
        Add a Coord3d to the BoundingBox3d. A shortcut for: add(c.x, c.y, c.z);
        Parameters:
        p -
      • add

        public void add​(Drawable drawable)
      • add

        public void add​(Point p)
        Add a Point3d to the BoundingBox3d. A shortcut for: add(p.x, p.y, p.z);
        Parameters:
        p -
      • add

        public void add​(Polygon p)
        Add the points of a Polygon to the BoundingBox3d.
        Parameters:
        p -
      • add

        public void add​(BoundingBox3d b)
        Add a BoundingBox3d volume to the current one. A convenient shortcut for: add(b.xmin, b.ymin, b.zmin); add(b.xmax, b.ymax, b.zmax);
        Parameters:
        p -
      • getCenter

        public Coord3d getCenter()
        Compute and return the center point of the BoundingBox3d
        Returns:
        the center.
      • getRadius

        public double getRadius()
        Return the radius of the Sphere containing the Bounding Box, i.e., the distance between the center and the point (xmin, ymin, zmin).
        Returns:
        the box radius.
      • getTransformedRadius

        public double getTransformedRadius​(SpaceTransformer transformers)
      • scale

        public BoundingBox3d scale​(Coord3d scale)
        Return a copy of the current bounding box after scaling. Scaling does not modify the current bounding box.
        Returns:
        the scaled bounding box
      • contains

        public boolean contains​(BoundingBox3d b2)
        Return true if b2 is contained by this.
      • contains

        public boolean contains​(Coord3d c)
      • intersect

        public boolean intersect​(BoundingBox3d b2)
        Return true if intersect b2.
      • margin

        public BoundingBox3d margin​(float margin)
        Add a margin to max values and substract a margin to min values
        Returns:
        a new bounding box
      • marginRatio

        public BoundingBox3d marginRatio​(float marginRatio)
        Add a margin to max values and substract a margin to min values, where the margin is ratio of the current range of each dimension. Adding a margin of 10% for each dimension is done with {@link #marginRatio(0.1)}
        Returns:
        a new bounding box
      • selfMarginRatio

        public BoundingBox3d selfMarginRatio​(float marginRatio)
      • getXRange

        public Range getXRange()
        Return range of X dimension.
      • getYRange

        public Range getYRange()
      • getZRange

        public Range getZRange()
      • getRange

        public Coord3d getRange()
        Return range of each dimension.
      • getXmin

        public float getXmin()
      • setXmin

        public void setXmin​(float value)
      • getXmax

        public float getXmax()
      • setXmax

        public void setXmax​(float value)
      • getYmin

        public float getYmin()
      • setYmin

        public void setYmin​(float value)
      • getYmax

        public float getYmax()
      • setYmax

        public void setYmax​(float value)
      • getZmin

        public float getZmin()
      • setZmin

        public void setZmin​(float value)
      • getZmax

        public float getZmax()
      • setZmax

        public void setZmax​(float value)
      • apply

        public void apply​(Transform transform)
      • newBoundsAtOrigin

        public static BoundingBox3d newBoundsAtOrigin()
      • toString

        public String toString​(int depth)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • transform

        public BoundingBox3d transform​(SpaceTransformer transformers)
        Clone bounding box and apply transform to it
        Parameters:
        transformers -
        Returns: