void glutLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz);

谁能解释一下这个函数。我在网上查到的解释是
gluLookAt 是摆放相机在世界坐标系下的位置和姿态的
简单的理解:
   你可以把相机想象成为你自己的脑袋
   你自己要看到现实世界当中的内容,你需要固定你的脑袋的位置 eye的坐标
   以及你看向的目标的位置 
   而在固定了这两个内容的情况下,你的头还是可以歪着看是吧
   所以要确定可见的内容,还需要固定你的头顶的朝向了,这个就是up向量的定义了

如果是这样是不是向上向量要和视线方向垂直?但是书上的例子:

glutLookAt(4.0,2.0,1.0,2.0,4.0,-3.0,2.0,2.0,2.0,-1.0)
视线方向为    (    centerX      -   eyeX  )
      F =                                =(-2,2,-4)和向上向量(2.0,2.0,-
          |    centerY      -   eyeY  |       1.0)也不垂直啊,怎么回事?
          (    centerZ      -   eyeZ  )