SweetDream
高歌一壶新酿酒,醉抱青山不必归。
    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);

posted on 2006-02-10 02:15  SweetDream  阅读(560)  评论(0编辑  收藏  举报