gluLookAt - define a viewing transformation



C SPECIFICATION

       void gluLookAt( GLdouble eyeX,
                       GLdouble eyeY,
                       GLdouble eyeZ,
                       GLdouble centerX,
                       GLdouble centerY,
                       GLdouble centerZ,
                       GLdouble upX,
                       GLdouble upY,
                       GLdouble upZ )



PARAMETERS

       eyeX, eyeY, eyeZ
                       Specifies the position of the eye point.

       centerX, centerY, centerZ
                       Specifies  the  position  of the reference
                       point.

       upX, upY, upZ   Specifies the direction of the up  vector.


DESCRIPTION

       gluLookAt  creates  a  viewing  matrix derived from an eye
       point, a reference point  indicating  the  center  of  the
       scene, and an UP vector.

       The matrix maps the reference point to the negative z axis
       and the eye point to the origin.  When a  typical  projec-
       tion  matrix  is  used,  the center of the scene therefore
       maps to the center of the viewport.  Similarly, the direc-
       tion described by the UP vector projected onto the viewing
       plane is mapped to the positive y axis so that  it  points
       upward  in the viewport.  The UP vector must not be paral-
       lel to the line of sight from the eye point to the  refer-
       ence point.

       Let























       F=(centerY - eyeY)



















          centerZ - eyeZ


       Let UP be the vector (upX,upY,upZ).

       Then normalize as follows: f=__F<I>F___

       UP'=__U<I>U_P<I>P___


       Finally, let s=fxUP', and u=sxf.





















                                            u[0]  u[1]  u[2]  0









       M is then constructed as follows: M=(                   )









                                            -f[0] -f[1] -f[2] 0