void
gluLookAt(
GLdouble eyex,
GLdouble eyey,
GLdouble eyez,
GLdouble centerx,
GLdouble centery,
GLdouble centerz,
GLdouble upx,
GLdouble upy,
GLdouble upz
);
GLdouble eyex,
GLdouble eyey,
GLdouble eyez,
GLdouble centerx,
GLdouble centery,
GLdouble centerz,
GLdouble upx,
GLdouble upy,
GLdouble upz
);
一个三维物体从模型空间到图象空间,一般要经过如下的变换:
A B C D
模型上的点-->世界坐标系中点-->视点坐标系中的点--->图象坐标系中的点-->屏幕上的点
其中用到的变换矩阵为:
A:模型变换矩阵
B:视点变换矩阵
C:投影变换矩阵
D:视口变换矩阵
其中的UP矢量是在B矩阵中用到,设视线方向矢量为N(nx,ny,nz),Up矢量为V'(vx,vy,vz),用公式V=V'-(V'*N)N,计算 出视点坐标系的y轴方向,再定义一个矢量U(ux,uy,uz),U=N×V,这三个矢量分别对应视点坐标系的x,y和z轴,这样就建立了视点坐标系。用 这三个矢量构造齐次矩阵
|ux vx nx 0|
|uy vy ny 0|
B = |
|uz vz nz 0|
|0 0 0 1|
利用B矩阵可以将世界坐标系中的点变换到视点坐标系中。从B可以看到Up矢量是你所指定矩阵的(a1 a5 a9)。