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

NAME

       SbViewVolume — 3D viewing volume class

INHERITS FROM

       SbViewVolume

SYNOPSIS

       #include <Inventor/SbLinear.h>

     enum ProjectionType {
          SbViewVolume::ORTHOGRAPHIC  Orthographic projection
          SbViewVolume::PERSPECTIVE   Perspective projection
     }

          Methods from class SbViewVolume:

                         SbViewVolume()
                         ~SbViewVolume()
     void                getMatrices(SbMatrix &affine, SbMatrix &proj) const
     SbMatrix            getMatrix() const
     SbMatrix            getCameraSpaceMatrix() const
     void                projectPointToLine(const SbVec2f &pt, SbLine &line) const
     void                projectPointToLine(const  SbVec2f  &pt,  SbVec3f &line0, SbVec3f &line1)
                              const
     void                projectToScreen(const SbVec3f &src, SbVec3f &dst) const
     SbPlane             getPlane(float distFromEye) const
     SbVec3f             getSightPoint(float distFromEye) const
     SbVec3f             getPlanePoint(float distFromEye, const SbVec2f &normPoint) const
     SbRotation          getAlignRotation(SbBool rightAngleOnly = FALSE) const
     float               getWorldToScreenScale(const  SbVec3f  &worldCenter,  float   normRadius)
                              const
     SbVec2f             projectBox(const SbBox3f &box) const
     SbViewVolume        narrow(float left, float bottom, float right, float top) const
     SbViewVolume        narrow(const SbBox3f &box) const
     void                ortho(float  left,  float  right,  float  bottom, float top, float near,
                              float far)
     void                perspective(float fovy, float aspect, float near, float far)
     void                rotateCamera(const SbRotation &q)
     void                translateCamera(const SbVec3f &v)
     SbVec3f             zVector() const
     SbViewVolume        zNarrow(float near, float far) const
     void                scale(float factor)
     void                scaleWidth(float ratio)
     void                scaleHeight(float ratio)
     ProjectionType      getProjectionType() const
     const SbVec3f &     getProjectionPoint() const
     const SbVec3f &     getProjectionDirection() const
     float               getNearDist() const
     float               getWidth() const
     float               getHeight() const
     float               getDepth() const

DESCRIPTION

       Class used to represent a 3D viewing volume. This  class  is  used  to  represent  viewing
       frusta  and picking volumes. For perspective projection, the view volume is a frustum. For
       orthographic (parallel) projection, the view volume is a rectangular prism.

METHODS

                         SbViewVolume()
                         ~SbViewVolume()
          Constructor and destructor.

     void                getMatrices(SbMatrix &affine, SbMatrix &proj) const
          Returns two matrices corresponding to the view volume. The first is a  viewing  matrix,
          which is guaranteed to be an affine transformation. The second is suitable for use as a
          projection matrix in OpenGL.

     SbMatrix            getMatrix() const
          Like the method above, but returns the affine and  projection  parts  together  in  one
          matrix (i.e., affine.multRight( proj ) ).

     SbMatrix            getCameraSpaceMatrix() const
          Returns  a  matrix that transforms the view volume into camera space: it translates the
          view volume so the viewpoint is at the origin, and rotates it so the view direction  is
          along the negative z axis.

     void                projectPointToLine(const SbVec2f &pt, SbLine &line) const
     void                projectPointToLine(const  SbVec2f  &pt,  SbVec3f &line0, SbVec3f &line1)
                              const
          Maps a 2D point (in 0 <= x,y <= 1) to a 3D line.

     void                projectToScreen(const SbVec3f &src, SbVec3f &dst) const
          Maps the 3D point in world coordinates to a 2D point in normalized  screen  coordinates
          (0  <=  x,y,z  <=  1).  The z-screen coordinate represents the homogenized z coordinate
          which goes (nonlinearly) from 0 at the near clipping plane to 1  at  the  far  clipping
          plane.

     SbPlane             getPlane(float distFromEye) const
          Returns  a  plane  parallel  to  the  near (or far) plane of the view volume at a given
          distance from the projection point (eye).

     SbVec3f             getSightPoint(float distFromEye) const
          Returns the point along the line of sight at the given  distance  from  the  projection
          point (eye).

     SbVec3f             getPlanePoint(float distFromEye, const SbVec2f &normPoint) const
          Returns  the  projection  of  a  given  point  in  normalized  screen  coordinates (see
          projectToScreen()) onto the plane parallel to the near plane  that  is  at  distFromEye
          units from the eye.

     SbRotation          getAlignRotation(SbBool rightAngleOnly = FALSE) const
          Returns a rotation that would align a viewed object so that its positive x-axis (of its
          object space) is to  the  right  in  the  view  and  its  positive  y-axis  is  up.  If
          rightAngleOnly  is  TRUE, it will come as close as it can to this goal by using only 90
          degree rotations.

     float               getWorldToScreenScale(const  SbVec3f  &worldCenter,  float   normRadius)
                              const
          Returns  a  scale factor that would scale a unit sphere centered at worldCenter so that
          it would appear to  have  the  given  radius  in  normalized  screen  coordinates  when
          projected onto the near plane.

     SbVec2f             projectBox(const SbBox3f &box) const
          Projects  the  given  3D  bounding  box  onto  the  near plane and returns the size (in
          normalized screen coordinates) of the rectangular region that encloses it.

     SbViewVolume        narrow(float left, float bottom, float right, float top) const
          Given a view volume, narrows the view to the given sub-rectangle of the near plane. The
          coordinates  of the rectangle are between 0 and 1, where (0,0) is the lower-left corner
          of the near plane and (1,1) is the upper-right corner.

     SbViewVolume        narrow(const SbBox3f &box) const
          Narrows a view volume by the given box. The box must lie inside the unit cube, and  the
          view will be shrunk according to the size of the box.

     void                ortho(float  left,  float  right,  float  bottom, float top, float near,
                              float far)
          Sets up an orthographic view volume with the given sides. The parameters are  the  same
          as for the OpenGL glOrtho() routine.

     void                perspective(float fovy, float aspect, float near, float far)
          Sets  up  a  perspective view volume with the given field of view and aspect ratio. The
          parameters are the same as for the OpenGL gluPerspective()  routine,  except  that  the
          field of view angle is specified in radians.

     void                rotateCamera(const SbRotation &q)
          Rotate  the  camera view direction. Note that this accomplishes the reverse of doing an
          OpenGL glRotate() command after defining a camera, which rotates the  scene  viewed  by
          the camera.

     void                translateCamera(const SbVec3f &v)
          Translate  the  camera  viewpoint.  Note that this accomplishes the reverse of doing an
          OpenGL glTranslate() command after defining a camera, which translates the scene viewed
          by the camera.

     SbVec3f             zVector() const
          Returns the positive z axis in eye space. In this coordinate system, the z value of the
          near plane should be GREATER than the z value of the far plane.

     SbViewVolume        zNarrow(float near, float far) const
          Returns a narrowed view volume which contains as tightly as possible the given interval
          on  the  z  axis (in eye space). The returned view volume will never be larger than the
          current volume, however. near and far are given in terms of zVector(): this means  that
          near > far must hold.

     void                scale(float factor)
          Scales width and height of view volume by given factor.

     void                scaleWidth(float ratio)
     void                scaleHeight(float ratio)
          Scales  view  volume  to be the given ratio of its current width or height, leaving the
          resulting view volume centered about the same point (in the near plane) as the  current
          one.

     ProjectionType      getProjectionType() const
     const SbVec3f &     getProjectionPoint() const
     const SbVec3f &     getProjectionDirection() const
          Returns projection information.

     float               getNearDist() const
          Returns distance from projection point to near plane.

     float               getWidth() const
     float               getHeight() const
     float               getDepth() const
          Returns bounds of viewing frustum.

SEE ALSO

       SbVec3f, SbVec2f, SbBox3f, SbMatrix, SbRotation

                                                                              SbViewVolume(3IV)()