- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]计算机图形学-变换
第3章 变换 基本的二维几何变换 二维复合变换 其他二维变换 三维几何变换 OpenGL几何变换函数 三维图形的显示流程 投影 裁剪 几何变换 应用于对象几何描述并改变它的位置、方向或大小的操作称为几何变换(geometric transformation) 基本的二维几何变换包括平移、旋转和缩放 二维平移 二维平移 二维旋转 二维缩放 改变一个对象的大小,可以使用缩放变换。 二维缩放 矩阵表示和齐次坐标 许多图形应用涉及到几何变换的顺序 需要用一个通式来表示平移、旋转和缩放 将2×2矩阵扩充为3×3矩阵,可以把二维几何变换的乘法和平移项组合为单一矩阵表示 二维平移矩阵 二维旋转矩阵 二维缩放矩阵 逆变换 对于平移变换,通过对平移距离取负值得到逆变换 逆旋转通过用旋转角度的负值取代该旋转角来实现 将缩放系数用其倒数来取代就得到了缩放变换的逆矩阵 变换矩阵与其逆矩阵的乘积为单位阵 二维复合变换 利用矩阵表达式,可以通过计算单个变换的矩阵乘积,将任意的变换序列组成复合变换矩阵 例如,对点位置P进行两次变换: 复合二维平移 复合二维旋转 复合二维缩放 通用二维基准点旋转 平移对象使其基准点位置移动到坐标原点 绕坐标原点旋转 平移对象使其回到原始位置 通用二维基准点旋转 通用二维固定点缩放 平移对象使固定点与坐标原点重合 对于坐标原点进行缩放 使用步骤1的反向平移将对象返回到原始位置 通用二维固定点缩放 其他二维变换-反射 产生对象镜像的变换成为反射 对于一个二维反射而言,其反射镜像通过将对象绕反射轴旋转180度而生成。 反射变换 反射变换 其他变换-错切 错切是一种使对象形状发生变化的变换,经过错切的对象好像是由已经相互滑动的内部夹层组成 两种常用的错切变换是移动x坐标值的错切和移动y坐标值的错切 错切变换-移动x坐标值 二维坐标系间的变换 计算机图形应用经常需要在场景处理的各个阶段将对象的描述从一个坐标系变换到另一个坐标系 在另一些情况下,需要使用非笛卡儿参考系进行描述 需要使用坐标系间的变换 二维坐标系间的变换 二维坐标系间的变换 考虑从一个二维笛卡儿坐标系到另一个笛卡儿坐标系的转换 建立把x’y’轴叠加到xy轴的变换 1、将x’y’系统的坐标原点(x0,y0)平移到xy系统的原点(0,0) 2、将x’轴旋转到x轴上 三维空间的几何变换 三维几何变换的方法是在二维方法的基础上考虑了z坐标而得到的。 一个三维位置在齐次坐标中表示为4元列向量 每一个几何变换操作是一个从左边去乘坐标向量的4×4矩阵 三维平移 三维平移 三维旋转 三维空间中,可以绕任意轴旋转一个对象 其中绕平行坐标轴的旋转是最容易处理的 三维坐标轴旋转 一般三维旋转 三维坐标轴旋转 在二维平面中的旋转相当于三维空间中绕z轴旋转 三维坐标轴旋转 X轴坐标不变,循环替代x、y、z三个轴可以得到绕x轴旋转的公式 三维坐标轴旋转 y轴坐标不变,循环替代x、y、z三个轴可以得到绕y轴旋转的公式 一般三维旋转 对于绕与坐标轴不重合的轴进行旋转的变换矩阵,可以利用平移与坐标轴旋转的复合而得到 首先将指定旋转轴经移动和旋转变换到坐标轴之一,然后对该坐标轴应用适当的旋转矩阵 最后将旋转轴变回到原来位置 一般三维旋转 平移对象使得旋转轴通过坐标原点 旋转对象使得旋转轴与某一坐标轴重合 绕坐标轴完成指定的旋转 利用逆旋转使旋转轴回到原始方向 利用逆平移使旋转轴回到原始位置 一般三维旋转推导步骤 一般三维旋转--1 一般三维旋转--2 一般三维旋转--3 一般三维旋转--4 一般三维旋转--5 三维缩放--相对于原点 三维缩放--相对于任意点 平移给定点到原点 使用前面的公式相对于坐标原点缩放对象 平移给定点回到原始位置 三维缩放--相对于任意点 基本OpenGL几何变换函数 4×4平移矩阵 glTranslate*(tx,ty,tz) 4×4旋转矩阵 glRotate*(theta,vx,vy,vz) 4×4缩放矩阵 glScale*(sx,sy,sz) OpenGL矩阵操作 建模观察模式 glMatrixMode(GL_MODELVIEW); 设定当前矩阵为单位矩阵 glLoadIdentiy(); 为当前矩阵的元素赋值 glLoadMatrix*(elements16); OpenGL几何变换编程示例 glMatrixMode (GL_MODELVIEW); glColor3f (0.0, 0.0, 1.0); glRecti (50, 100, 200, 150); //显示蓝色矩形 glColor3f (1.0, 0.0, 0.0); glTranslatef (-200.0, -50.0, 0.0); glRecti (50, 10
文档评论(0)