资源预览内容
第1页 / 共86页
第2页 / 共86页
第3页 / 共86页
第4页 / 共86页
第5页 / 共86页
第6页 / 共86页
第7页 / 共86页
第8页 / 共86页
第9页 / 共86页
第10页 / 共86页
亲,该文档总共86页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章 图形几何变换内容提要4.1 概述4.2 二维几何变换 4.3 二维组合变换 4.4 三维几何变换 4.5 三维组合变换 4.6 OpenGL编程(补充内容) 平移 旋转 缩放 错切4.1 概述:一 图形变换的几种形式:( 动画演示) 点的表示:二维图形中的点可以用坐标(x,y)来表示,也可以用矢量x,y来表示。二维行矢量 x,y 三维行矢量 x,y,z二维列矢量 三维列矢量 图形的表示 用nx2 或 nx3 矩阵来表示二维或三维图形上所有n个点。 二维空间上 三维空间上的所有点 的所有点二 图形与矢量1 图形变换的方法:借助变换矩阵来实现三 图形的变换图形(可用点集表示)矩阵P新矩阵P 新图形P变换矩阵T表示成表示成2 变换矩阵:点 :变换矩阵:变换:变换后的点:新矩阵:P=x,y3 为什么要用变换矩阵?(1) 图形可用点集表示,点集可用矩阵表示:所以对图形进行各种变换,就是对图形中的点进行变化,就是使点集对应的矩阵发生变化。反过来,当矩阵发生变化时,它所代表的图形也发生变化(2) 结论:图形变换可通过对矩阵进行某种运算来实现,通常将矩阵P乘以一个相应的变换矩阵T,从而得到新矩阵P,新矩阵P代表变换后新图形上的各个点的坐标。(3) 例:动画演示(进行图形变换需要借助不同的变换矩阵)1 图形模式(固定坐标系模式) 变换前后点的坐标发生变化,但都是在同一坐标 系中。2 空间模式(活动坐标系模式) 改变参照系,变换前后是相对不同坐标系的四 变换方式 设有两个矢量 矢量和 五 数学基础 矢量的数乘 矢量的点积矢量的长度 单位矢量: 长度为1的矢量 矢量的夹角矢量的叉积 1 比例变换的变换矩阵:则:a为x方向的比例因子, d为y方向的比例因子。4.2 二维变换:一 比例变换:2 例: 以坐标原点为放缩参照点 不仅改变了物体的大小和形状,也改变了它 离原点的距离 3 动画演示图形比例变换的过程对X轴对称变换变换矩阵:则:图形对x轴进行对称变换 二 对称变换对Y轴对称变换变换矩阵:则:图形对y轴进行对称变换对原点对称变换变换矩阵:则:图形对坐标原点进行对称变换动画演示图形对称变换的过程三 旋转变换1 旋转变换的变换矩阵:X=R cos(+)=R cos cos -Rsin sin =Xcos -YsinY= R sin (+)= R cos sin +R sin cos = X sin +Y cos 绕坐标原点旋转角的变换矩阵为: 写成矩阵形式:2 旋转变换 绕坐标原点旋转 角度 (逆时针为正,顺 时针为负) 3 动画演示图形旋转变换的过程四 错切变换1 错切变换的变换矩阵:2 沿x方向错切 (b=0, c0)3 沿y方向错切 (b 0, c = 0)4 沿X,y方向错切 (b 0, c 0)5 动画演示图形错切变换的过程五 平移变换1 平移变换的例子: 例如:从A平移到A 得到结果: 即: 平移变换: ,AAlm2 平移变换的问题 问题的提出: 平移变换: 的运算为加法,不统一 比例变换: 的运算为乘法. 旋转变换: 的运算为乘法. 复合变换:T=T1T2 T3 T4 T5的运算为乘法. 理想是用乘法来统一。 问题的解决: 采用齐次坐标技术可以使所有变换全都使用乘法,即 如下的形式:3 齐次坐标技术 齐次坐标表示法 由n+1维向量表示一个n维向量 采用了齐次坐标技术,图形变换才可以转换为表示图 形的点集矩阵与某一变换矩阵相乘这一单一问题。因 而可以借助计算机高速计算功能,快速得到变换后的 图形。为高度动态的计算机图形显示提供了可能性。 齐次坐标表示法的优点 便于变换合成 便于硬件实现4 齐次坐标表示的实现 给二维点增加一维,给变换矩阵增加一列。 变换后的点也增加一列。 结果:平移变换也可以使用矩阵乘法来进行计算。 推广:二维三维 5 齐次坐标的正常化 讨论:点没有唯一的齐次坐标表示 齐次坐标的一般形式: H=1时,为: H=2时,为: 它们都表示二维空间点zyx1206 齐次坐标表示的物理含义 只要 和 对应的元素 成比例, 则它们对应于二维空间的同一个点。该点对 应的齐次坐标为三维空间的一条直线。 该直线上的每一个点都对应于一个二维坐标 点(x,y)。 齐次坐标表示法用n+1维表示n 维图形的物 理含义是:xzy1Z=1平面图形落在 Z1的平面上,它对图形的形状没有影响。7 齐次坐标的正常化 小结: 只有H=1时,点的齐次坐标x,y才与二维坐标的 x,y值相等。 所以应当进行齐次坐标的正常化:一 组合变换: 一个复杂的变换可以转化为多个基本变换,这种方法叫做组合变换。 齐次坐标统一了图形变换的表示形式,为组合变换提供了基础。4.3 二维组合变换 二 复合变换及变换的模式 1 关于绕任意参照点 旋转的变换 变换矩阵:T=T1T2 T3 (位移,旋转,-位移)2 关于任意参照点 的放缩变换位移,缩放,-位移 3 关于任意轴的对称变换关于任意轴的对称变换(平移,旋转,对称,-旋转,-平移 ) 关于任意轴的对称变换步骤:1)平移直线,使其通过原点,变换矩阵为:2)绕原点旋转,使直线与X轴重合,变换矩阵为:3)对X坐标轴对称变换,其变换矩阵为:4)绕原点放置使直线回到原来与X轴成角的位置, 变换矩阵为:5) 平移直线,使其回到原来的位置,变换矩阵为:通过上述5个步骤,即可实现图形对任意直线的对称变换, 其组合变换矩阵为:T=T1T2T3T4T5 结论:复杂变换可以通过基本变换的组合而生成。 注意: 变换顺序影响结果,组合的顺序不能颠倒。4.4 三维几何变换一 三维几何变换 1 三维几何变换是二维几何变换的推广。 2 三维几何变换在齐次坐标空间中可以用44 的变换矩阵表示,(x,y,z)点对应的齐次坐标 为:(x,y,z,h),其中h是不等于0的任意常数 。 3 变换矩阵:二 三维齐次坐标(x,y,z)点对应的齐次坐标为标准齐次坐标(x,y,z,1)三 比例变换比例变换变换矩阵:若a =e =j 则:xyz 方向的 缩放比例相同,如图1 若aej 则:立体产生类似变形,如图2。 zyxzyx 图1图2四 全比例变换全比例变换矩阵:变换结果:需要进行齐次坐标正常化五 对称变换变换矩阵:立体对xoy平面对称时,x,y坐标不变,z坐标变化。zyx1 对xoy平面的对称变换2 对xoz和yoz 平面的对称变换 对xoz平面的对称变换: 对xoz平面的对称变换:1 绕x轴旋转变换zyxzyx绕x轴旋转六 旋转变换变换矩阵:2 绕y轴旋转变换 :变换矩阵:zyx绕y轴旋转zyx3 绕z轴旋转变换变换矩阵:zyxzyx绕z轴旋转七 平移变换 平移变换矩阵 l,m,n分别为x,y,z方向的平移量。zyx八 错切变换1错切变换:2 错切变换是指立体沿x,y,z三个方向产生错切变 形, 3 它是斜轴测投影变换的基础。2错切变换的6种形式:1)沿x方向含y分量错切,2)沿x方向含z分量错切3)沿y方向含x分量错切,4)沿y方向含z分量错切5)沿z方向含x分量错切, 6)沿z方向含y分量错切3 错切变换矩阵:则:主对角线元素全为1,第4行,第4列的其余元素全为0。b,c,d,f,h,I中至少有一个不为0。(1) 沿x含y 错切 变换矩阵: x的值随着y的增大而增大。zyx(2) 沿x含z 错切 变换矩阵: x的值随着z的增大而增大。zyx(3)沿y含x 错切 变换矩阵: y的值随着x的增大而增大。zyx(4)沿y含z 错切 变换矩阵: y的值随着z的增大而增大。zyx(5)沿z含x 错切 变换矩阵: z的值随着x的增大而增大。zyx(6)沿z含y 错切 变换矩阵: z的值随着y的增大而增大。zyx九 三维组合变换分成5个 步骤:1) J轴绕Z轴转,成为J1,使J1与YOZ共面。2 ) J1轴绕X轴转,成为J2,使J2与Z轴重合。3 ) 立方体绕J2轴转,达到目的。4 ) 从J2返回J1。5 ) 从J1返回J。J2J2 zy1Jzy1zy11 问题1:如何实现三维物体绕任意轴旋转?2 思路:将任意轴J轴重合Z轴之后,使立方体旋转角, 然后返回。3 实现方法:三维组合变换通过对三维基本变换矩阵的组合,可以实现对三维物体的复杂变换,变换结果是每次变换矩阵相乘。 4 实现步骤:(1) 将三维物体与任意轴J一起作平移变换,使任意轴过原点,其变换矩阵为:zyzy平移变换(2) 令J轴绕X轴转 角 ,成为J1,使J1与XOZ共面。再绕Y轴旋转角,使其与Z轴重合。其变换矩阵为:zy旋转变换yxzJzzy旋转变换(3) 将立方体绕Z轴(J轴)旋转角其变换矩阵为:zy旋转变换zy(4) 对步骤(2)作逆变换,将J轴回到原来的位置,其变换矩阵为:zyyxzJzzy旋转变换旋转变换(5) 对步骤(1)作逆变换,将任意轴J轴回到原来的位置其变换矩阵为:zy平移变换zy上述五个步骤连起来,便组成绕任意轴的旋转变换矩阵:zy zy组合变换5 问题2: 相对任一参考点的三维变换相对于参考点F(xf,yf,zf)作比例、旋转、错切等变换的过程分为以下三步:(1)将参考点F移至坐标原点(2)针对原点进行二维几何变换(3)进行反平移例:相对于F(xf,yf,zf)点进行比例变换4.6 OpenGL编程(补充内容)4.6.1 OpenGL编程基础知识 4.6.2 Windows环境下OpenGL编程概论 4.6.3 基本几何图元的定义 4.6.4 坐标变换4.6.1 OpenGL编程基础知识4.6.1.1 OpenGL概述 4.6.1.2 OpenGL命令语法及各种状态的含义 4.6.1.3 运用辅助库创建规则几何对象 4.6.1.4 OpenGL辅助库函数详解 4.6.1.5 Windows环境下OpenGL编程步骤4.6.1.1 OpenGL概述一 问题:从事三维图形开发的技术人员编写了大量的矩阵变换、外部设备访问等函数,但很多工作与自己的目标关系不大,浪费精力。例如:1 演示本人编写的程序旋转的矩形rotate12 演示本人用OpenGL提供的函数编写的旋转的矩形OpenGLrotate说明OpenGL带来极大便利,可帮助我们将精力放在更大目标上。二 OpenGL是一个三维图形开发的有力工具:OpenGL提供了一种直观的编程环境,它提供的一系列函数大大简化了三维图形程序。三 OpenGL基本概念:1 OpenGL是一个性能卓越的开放式三维图形标准:(1) Microsoft 、SGI、IBM、DEC、SUN、HP等大公司都采用OpenGL作为三维图形标准(2) 许多软件厂商也以OpenGL为基础开发自己的产品:著名的产品包括
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号