GLULOOKATSection: Misc. Reference Manual Pages (3G) |
GLULOOKATSection: Misc. Reference Manual Pages (3G) |
GLdouble eyeY,
GLdouble eyeZ,
GLdouble centerX,
GLdouble centerY,
GLdouble centerZ,
GLdouble upX,
GLdouble upY,
GLdouble upZ )
F ~=~ left ( down 20 { ~ matrix {
ccol {"centerX" above "centerY" above "centerZ"}
ccol { ~-~ above ~-~ above ~-~}
ccol {"eyeX" above "eyeY" above "eyeZ"}
} } ~~ right )
Let UP be the vector $("upX", "upY", "upZ")$. Then normalize as follows: f ~=~ F over {|| F ||} UP sup prime ~=~ UP over {|| UP ||}
Finally, let $s ~=~ f ~times~ UP sup prime$, and $u ~=~ s ~times~ f$.
M is then constructed as follows:
M ~=~ left ( matrix {
ccol { ~s[0] above ~u[0] above -f[0] above 0 }
ccol { ~s[1] above ~u[1] above -f[1] above 0 }
ccol { ~s[2] above ~u[2] above -f[2] above 0 }
ccol { 0 above 0 above 0 above 1 }
} ~~right )
and gluLookAt is equivalent to
glMultMatrixf(M);
glTranslated (-eyex, -eyey, -eyez);