1 / 14

OpenGL 变换

OpenGL 变换. 2008 级 严默函. 变换常用的函数. 旋转: glRotatef(angle, rx, ry, rz) 平移: glTranslate(tx,ty,tz) 缩放: glScalef(kx,ky,kz). 旋转变换 glRotatef( ,x,y,z). 作用:当前矩阵与变换矩阵相乘.  函数中第一个参数是表示目标沿从点 (x, y, z) 到原点的方向逆时针旋转的角度,后三个参数是旋转的方向点坐标。这个函数表示用这四个参数生成的矩阵乘以当前矩阵。 矩阵形式如下:向量 (x,y,z) 单位化 (nx,ny,nz).

melita
Download Presentation

OpenGL 变换

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OpenGL变换 2008级 严默函

  2. 变换常用的函数 • 旋转: glRotatef(angle, rx, ry, rz) • 平移: glTranslate(tx,ty,tz) • 缩放:glScalef(kx,ky,kz)

  3. 旋转变换glRotatef( ,x,y,z) 作用:当前矩阵与变换矩阵相乘  函数中第一个参数是表示目标沿从点(x, y, z)到原点的方向逆时针旋转的角度,后三个参数是旋转的方向点坐标。这个函数表示用这四个参数生成的矩阵乘以当前矩阵。 矩阵形式如下:向量(x,y,z)单位化(nx,ny,nz)

  4. 缩放:glScalef(kx,ky,kz) • 三个函数参数值就是目标分别沿三个轴向缩放的比例因子。这个函数表示用这三个比例因子生成的矩阵乘以当前矩阵。这个函数能完成沿相应的轴对目标进行拉伸、压缩和反射三项功能。 公式:

  5. 平移: glTranslate(△x, △y, △z) • 三个函数参数就是目标分别沿三个轴向平移的偏移量。这个函数表示用这三个偏移量生成的矩阵(齐次矩阵)乘以当前矩阵。

  6. 几个主要的变换

  7. 第一步:视点变换 • 设置照相机在视点坐标系中的位置。 • 变换过程: glMatrixMode(GL_MODELVIEW); glLoadIdentity() void gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz ); 通常相机位置缺省值同场景中的物体一样,都在原点处,而且相机初始方向都指向Z负轴。

  8. 第二步:模型变换 模型变换是在世界坐标系中进行的。调整物体位置 glMatrixMode(GL_MODELVIEW); glLoadIdentity() 平移:glTranslatef()、 旋转:glRotatef() 缩放:glScalef()。

  9. 第三步:投影变换 • 投影变换,选择相机镜头,调焦,使三维物体投影在二维胶片上. • 位置:视点设置之后 • glMatrixMode(GL_PROJECTION); • glLoadIdentity(); • 投影方式选择:正投影,透视投影

  10. 投影方式选择 • 正投影: 正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。 • void glOrtho(GLdouble left,GLdouble right,GLdouble bottom,GLdouble GLdouble near,GLdouble far)

  11. 正交投影示意图

  12. 投影方式选择 • 透视投影: •  透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小, gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); zNear ,zFar为距离镜头的距离,永远为正值

  13. gluPerspective(60.0f, 1.0f, 30, 50); 透视投影示意图

  14. 第四步:视口变换 视口变换,决定二维像片的大小,位置(相片底版如何洗到相纸上面) glViewport(GLint x,GLint y,GLsizei width, GLsizei height); 左下角为(0,0)点。

More Related