Provided by: inventor-doc_2.1.5-10-24_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)()