Provided by: inventor-doc_2.1.5-10-18_all bug

NAME

       SbXfBox3f — 3D box with an associated transformation matrix

INHERITS FROM

       SbBox3f > SbXfBox3f

SYNOPSIS

       #include <Inventor/SbBox.h>

          Methods from class SbXfBox3f:

                         SbXfBox3f()
                         SbXfBox3f(const SbVec3f &_min, const SbVec3f &_max)
                         SbXfBox3f(const SbBox3f &box)
                         ~SbXfBox3f()
     void                setTransform(const SbMatrix &m)
     const SbMatrix &    getTransform() const
     const SbMatrix &    getInverse() const
     SbVec3f             getCenter() const
     void                extendBy(const SbVec3f &pt)
     void                extendBy(const SbBox3f &bb)
     void                extendBy(const SbXfBox3f &bb)
     SbBool              intersect(const SbVec3f &pt) const
     SbBool              intersect(const SbBox3f &bb) const
     void                setBounds(float  xmin,  float  ymin, float zmin, float xmax, float ymax,
                              float zmax)
     void                setBounds(const SbVec3f &_min, const SbVec3f &_max)
     void                getBounds(float &xmin, float &ymin,  float  &zmin,  float  &xmax,  float
                              &ymax, float &zmax) const
     void                getBounds(SbVec3f &_min, SbVec3f &_max) const
     void                getOrigin(float &originX, float &originY, float &originZ)
     void                getSize(float &sizeX, float &sizeY, float &sizeZ)
     float               getVolume() const
     void                makeEmpty()
     SbBool              isEmpty() const
     SbBool              hasVolume() const
     void                getSpan(const SbVec3f &direction, float &dMin, float &dMax) const
     void                transform(const SbMatrix &m)
     SbBox3f             project() const
     int                 operator ==(const SbXfBox3f &b1, const SbXfBox3f &b2)
     int                 operator !=(const SbXfBox3f &b1, const SbXfBox3f &b2)

          Methods from class SbBox3f:

     const SbVec3f &     getMin()
     const SbVec3f &     getMax()

DESCRIPTION

       A 3D box with an arbitrary transformation applied. This class is useful when a box will be
       transformed frequently; if an SbBox3f is used for this purpose it will expand each time it
       is transformed in order to keep itself axis-aligned. Transformations can be accumulated on
       an SbXfBox3f without expanding the box, and after all transformations have been done,  the
       box can be expanded to an axis-aligned box if necessary.

METHODS

                         SbXfBox3f()
                         SbXfBox3f(const SbVec3f &_min, const SbVec3f &_max)
                         SbXfBox3f(const SbBox3f &box)
                         ~SbXfBox3f()
          Constructors and destructor.

     void                setTransform(const SbMatrix &m)
          Sets the transformation on the box.

     const SbMatrix &    getTransform() const
     const SbMatrix &    getInverse() const
          Gets the transformation on the box, and its inverse.

     SbVec3f             getCenter() const
          Returns the center of the box.

     void                extendBy(const SbVec3f &pt)
          Extends the box (if necessary) to contain the given 3D point. If the box has had a non-
          identity transformation applied using the setTransform() method, the point  is  assumed
          to be in the transformed space.  For example, the following code sequence:
               SbXfBox3f bbox; bbox.extendBy(SbVec3f(0,0,0));
               SbMatrix trans; trans.setTranslate(SbVec3f(1,1,1));
               bbox.setTransform(trans);
               bbox.extendBy(SbVec3f(0,0,0));
          will  result  in  a  bounding box extending from (-1,-1,-1) to (0,0,0) in bbox'es local
          (untransformed) space.

     void                extendBy(const SbBox3f &bb)
          Extends the box (if necessary) to contain the given SbBox3f. If the box has had a  non-
          identity  transformation  applied using the setTransform() method, the given SbBox3f is
          assumed to be in the transformed space.

     void                extendBy(const SbXfBox3f &bb)
          Extends the box (if necessary) to contain the given SbXfBox3f.

     SbBool              intersect(const SbVec3f &pt) const
          Returns TRUE if intersection of given point and this box is not empty.

     SbBool              intersect(const SbBox3f &bb) const
          Returns TRUE if intersection of given box and this box is not empty.

     void                setBounds(float xmin, float ymin, float zmin, float  xmax,  float  ymax,
                              float zmax)
     void                setBounds(const SbVec3f &_min, const SbVec3f &_max)
     void                getBounds(float  &xmin,  float  &ymin,  float  &zmin, float &xmax, float
                              &ymax, float &zmax) const
     void                getBounds(SbVec3f &_min, SbVec3f &_max) const
          Set and get the bounds of the box.

     void                getOrigin(float &originX, float &originY, float &originZ)
          Returns origin (minimum point) of the box.

     void                getSize(float &sizeX, float &sizeY, float &sizeZ)
          Returns size of the box.

     float               getVolume() const
          Gives the volume of the box (0 for an empty box).

     void                makeEmpty()
          Sets the box to contain nothing.

     SbBool              isEmpty() const
          Checks if the box is empty (degenerate).

     SbBool              hasVolume() const
          Checks if the box has volume; i.e., all three dimensions have positive size.

     void                getSpan(const SbVec3f &direction, float &dMin, float &dMax) const
          Finds the extent of the box along a particular direction.

     void                transform(const SbMatrix &m)
          Transforms the box by the given matrix.

     SbBox3f             project() const
          Projects an SbXfBox3f to an SbBox3f

     int                 operator ==(const SbXfBox3f &b1, const SbXfBox3f &b2)
     int                 operator !=(const SbXfBox3f &b1, const SbXfBox3f &b2)
          Equality comparisons.

SEE ALSO

       SbBox3f, SbBox2f, SbBox2s, SbVec3f, SbVec2f, SbVec2s, SbMatrix, SoGetBoundingBoxAction

                                                                                 SbXfBox3f(3IV)()