150 likes | 329 Views
第五章 坐标变换. 5.1 坐标变换的基本概念 5.2 视图变换和模型变换 5.3 投影变换 5.4 视口变换. 5.1 坐标变换的基本概念. 1. 设置矩阵类型. 使用函数 : glMatrixMode(mode) 说明:参数 mode 指定后续矩阵操作的对象是哪个矩阵堆栈 。. Mode. 含义. GL_MODELVIEW. 模型视图矩阵堆栈. GL_PROJECTION. 投影视图矩阵堆栈. GL_TEXTURE. 纹理矩阵堆栈. GL_COLOR. 颜色矩阵堆栈. 参数 mode 的取值如下 :.
E N D
第五章 坐标变换 5.1 坐标变换的基本概念 5.2 视图变换和模型变换 5.3 投影变换 5.4 视口变换
5.1 坐标变换的基本概念 1.设置矩阵类型 使用函数: glMatrixMode(mode) 说明:参数mode指定后续矩阵操作的对象是哪个矩阵堆栈。
Mode 含义 GL_MODELVIEW 模型视图矩阵堆栈 GL_PROJECTION 投影视图矩阵堆栈 GL_TEXTURE 纹理矩阵堆栈 GL_COLOR 颜色矩阵堆栈 参数mode的取值如下:
2.装入单位矩阵 使用函数: glLoadIdentity( ) 说明:该函数指定一个44单位矩阵。
5.2 视图变换和模型变换 1.平移: 使用函数:glTranslatef (x, y, z) 说明:参数x,y,z分别指定平移向量的x,y和z方向的坐标值。
2.旋转: 使用函数:glRotatef (angle, x, y, z) 说明:参数angle指定旋转角度; 参数x,y,z分别指定旋转向量的x,y和z方向的坐标值。
3.缩放: 使用函数:glScalef ( x, y, z ) 说明:参数x,y,z分别指定沿x,y和z方向的缩放因子。
例: 绘制一个没有进行模型变换的三角形线框;加入虚线点画和平移后(沿x轴的负方向移动),绘制一个同样的三角形;由一条点画的长虚线绘制三角形,其高度(y轴)减半,宽度(x轴)增加一半;绘制一个旋转的,由点线组成的三角形。
视点为:(1,2,3) 视点为:(1,1,1) 4.三维环境的绘制:
改变视点的函数: gluLookAt (s1, s2, s3, 0, 0, 0, 0, 1, 0 ) 视点方向 瞄准的参考点,定为(0,0,0) 向上的方向, 定为(0,1,0)
5.3 投影变换 投影变换有两种: 透视投影: 这种效果与人眼观察的效果相同; 正交投影: 它的最大特点是无论物体距离视点多远, 投影后的尺寸不变。 投影之前要调用函数 : glMatrixMode(GL_PROJECTION); glLoadIdentity();
1.透视投影 透视投影定义有两个函数: 1) glFrustum(left,right,bottom,top,near,far); 说明:参数(left,bottom,-near)和(right,top,-near)指定 近剪切面的左下角和右上角坐标。 参数near和far表示视点与近剪切面和远剪切面的距离。 参数恒为正。 2) gluPerspective(fovy,aspect,near,far); 说明:参数fovy指定x-z平面内视区的角度,取值[0,180]。参数aspect为长宽比,即x与y的比率。 参数near和far表示视点与近剪切面和远剪切面的距离。 所有参数恒为正。
2.正交投影 创建正交的函数: glOrtho(left,right,bottom,top,near,far); 说明:参数(left,bottom,-near)和(right,top,-near)指定近剪切面的左下角和右上角坐标。 参数near和far表示视点与近剪切面和远剪切面的距离。 参数恒为正。
5.4 视口变换 视口是用来绘制图像的窗口中的一个矩形区域,视口的位置和尺寸是在窗口坐标系中进行度量的。 视口定义函数: glViewPort(x,y,width,height); 说明:参数(x,y)指定视口的左下角; 参数(width,height)为视口的尺寸。