计算机坐标系和给定函数是什么,计算机图形学第3章变换2007.ppt

计算机图形学第3章变换2007

第三章 变换 图形是如何通过变换显示在屏幕上的? 如何在场景中设定相机位置 如何在场景中定位对象 如何建立投影变换 如何建立透视变换 如何进行视区变换 执行自己的矩阵变换 照相机与计算机类比 照相机与计算机类比 一个3D图形的显示包括下面步骤: 1.视图变换(相当于将相机放在合适的地方对准3D景物) 2.模型变换(相当于将3D物体放在合适的地方) 3.投影变换(相当于将相机镜头调整,使3D景物投影在2D胶片上,裁剪、改变大小) 4.视区变换(决定胶片大小) 基本概念 眼坐标:想象成“绝对”屏幕坐标。默认为屏幕原点,+z轴指向用户。可以理解为一个虚拟坐标系。眼坐标不是真正的坐标,而是虚拟的固定坐标系。 用3D OpenGL绘图,笛卡儿坐标系,未变换时,二者相同。 所有变换是将当前坐标系相对于眼坐标系进行修改。 基本概念 变换本质:移动或旋转对象就是相对于眼坐标系移动和旋转。下图 变换的问题,就是修改当前坐标系,在坐标系下的图形自然就变换了。 Opengl变换 视图变换 视图变换:场景中的第一个变换,解决把视点放在什么地方的问题。作为一个参考坐标系。 一般先指定视图变换,再指定其他变换。 视图变换的视点应当有利于看物体和场景。如下图 模型变换 目的:把对象移动到合适的位置 在方向、尺寸和形状等方面的变化可以通过改变对象坐标描述的几何变换来实现。即模型变换,针对模型本身,如平移、旋转、比例等。 模型视图的对偶性:模型变换或视图变换二者是相同的,例如,定义了视点,就改变了对象的位置。 向前移动坐标系和向后移动对象是等效的。这里称为模型视图变换。而这取一即可。 模型变换的顺序及作用 先绕z旋转,再沿x’轴平移 先沿x轴平移,再绕z’轴旋转 投影变换 目的:定义视见空间(裁剪体) 投影类型:正交投影/透视投影 正交投影:用于工程视图,表达真实尺寸 透视投影:具有纵深感效果 Orthographic Projection Orthographic Projections 透视投影 视区变换 目的:把投影后的物体映射到屏幕上某个位置 视区变换可以在屏幕上指定任意位置放显示的图像 上述所有的变换都可以用矩阵变换实现 CTM CTM 模型视图变换矩阵 首先必须设定矩阵模式为: 模型视图变换 glMatrixMode(GL_MODELVIEW); 4×4矩阵: 物体的顶点是一个顶点阵矢量V. 每个绘制过程之前,都要进行变换 V ? M = V’ 模型视图变换矩阵 模型变换矩阵和视图变换的矩阵区别: 如果按照模型变换理解,则是按照变换函数的顺序执行,而且坐标系随之变换;相当于相对坐标系,后面的坐标系是针对这个相对坐标系的 执行顺序:先执行平移变换(M1),再执行旋转变换(M2)。效果:作用于对象。M1M2 模型视图变换矩阵 如果按照视图坐标系理解,则是按照变换函数的逆序执行,坐标系不变;相当于绝对坐标系变换. 执行顺序:相对于先执行相对绝对坐标系旋转,再相对绝对坐标系平移 M1M2 模型视图变换矩阵应用举例 例如:画一个边长为10的正方形:glutWireCube(10.0f);(默认坐标在原点) 如果在y=10的地方画这个块呢? 考虑把模型放在哪里?(或者照相机在哪里?):指定矩阵模式 确定矩阵参数: glTranslatef(0.0,10.0,0.0); 画glutWireCube(10.0f);此时会在新地方画出图形 模型视图变换矩阵应用举例 模型视图变换矩阵应用举例 注意的问题: 模型放在什么地方 裁剪窗口的设定,如果不当,易造成看不到图形 例子:几何变换/trans,说明如下问题: 变换矩阵的影响(比例、平移、旋转) 裁剪窗口的影响 平移、旋转变换函数 平移: void glTranslated(GLdouble x, GLdouble y, GLdouble z); void glTranslatef(GLfloat x, GLfloat y, GLfloat z ); 旋转:绕矢量逆时针旋转角度 void glRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ); void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z ); 比例变换 比例:在XYZ 方向缩放,缩放因子为 x y z void glScaled(GLdouble x, GLdouble y, GLdouble z ); void glScalef(GLfloat x, GLfloat y, GLfloat z); 把单位矩阵加载到模型视图矩阵 glMatrixMode(G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值