NeHe_Lesson4 视图变换矩阵的设置(旋转)

    glRotatef(Angle,Xvector,Yvector,Zvector) 用于绕轴旋转物体, 这是一条十分有用的函数。 Angle 是一个用于指定旋转角度的数字 ( 通常存储于变量中 ) Xvector Yvector Zvector 这三个参数用于描述一条向量, 以规定物体的旋转轴。

glLoadIdentity();  这个函数可以重置Modeview矩阵,即当前场景矩阵,不管现在是平移,缩放,还是旋转,都被重值为0,镜头回到坐标原点。

要让三角行沿Y轴旋转,然后向X轴负方向平移1.5个单位。可以在glBegin调用前设置Modeview矩阵:

 

glLoadIdentity();                // Reset The Current Modelview Matrix

glTranslatef( -1.5f , 0.0f , -6.0f );  // Move Left 1.5 Units And Into The Screen 6.0

glRotatef(rtri, 0.0f , 1.0f , 0.0f );  // Rotate The Triangle On The Y axis

 

这样设置的矩阵其实是先旋转再平移,和DX中的有所区别:OpenGL变换在编程的时候顺序是反过来的。想对目标做R2,T,R1的变换,在写的时候就要:

glRotatef(year, 0.0, 1.0,0.0);//旋转矩阵R1

glTranslatef(2.0, 0.0, 0.0);//平移矩阵T

glRotatef(day, 0.0, 1.0, 0.0);//旋转矩阵R2

D3D不是这样的,下面代码是DirectX中先旋转,再平移的相关代码

D3DXMatrixMultiply(&matWorld,&matWorldY,&translation1);

你可能感兴趣的:(less)