计算机图形学(徐长青、许志闻)第四章 图形变换.docVIP

计算机图形学(徐长青、许志闻)第四章 图形变换.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 图形变换 图形变换是计算机图形学的基础内容之一。图形在计算机上的显示可以比喻为用假想的照相机对物体进行拍照,并将产生的照片贴在显示屏上的指定位置进行观察的过程。三维物体要在屏幕上显示首先要做的就是投影变换。此外,还要求能够对物体进行旋转、缩放、平移变换。绘图过程还要用窗口规定显示物体的哪个部分,用视区来规定将窗口中的内容显示在屏幕上的什么位置。图形显示的过程见下图。 图4.1 图形显示的坐标变换过程 在本章中,我们将实现二维图形的几何变换、三维图形的投影变换,以及对图形尽心裁剪的算法。 4.1变换的数学基础 在计算机图形学的图形变换过程中要大量的用到向量、矩阵以及它们之间的运算。本小节对这些知识做简要介绍。 向量及向量运算 一个物理量,如果我们只关心其数值的大小(例如物体的质量、体积、密度),则这样的量统称为标量,如果我们既关心其数值大小,还关心其方向(如速度),则这样的两统称为向量。标量一般用普通字体的英文字母显示,而向量一般用黑体英文字母显示。 设向量,,有关的向量运算有: 两个向量的和、差运算 两个向量的点乘运算 两个向量的叉乘运算 向量的长度 矩阵及矩阵运算 由个数排成矩形表: 或简记成或,称为一个行列的矩阵,简称矩阵,叫做第行第列元素。当时,叫做阶方针,此时元素称为主对角线元素。 只有一行的矩阵称为行向量,只有一列的矩阵称为列向量。 有关矩阵的运算有 数乘矩阵 用标量乘的每一个元素而得的矩阵称为与的乘积,记为: 矩阵的加法运算 设有两个矩阵,,将它们对应元素相加而得到的矩阵称为与的和,记为+ 矩阵的乘法运算 设有矩阵,,则此二矩阵相乘的积为矩阵: 可见,只有的列数等于的行数的时候,才有意义。 矩阵运算有如下基本性质 数乘矩阵适合分配律和结合律 矩阵加法适合结合律 矩阵乘法对加法适合分配律 矩阵乘法不适合交换律,因为当两个矩阵,能够相乘时,与却未必能够相乘,即使,都是方阵,与也未必相等。 在图形变换中还有用到如下的概念: 零矩阵及其运算 矩阵的所有元素均为零的矩阵称为零矩阵。一个行列的零矩阵记为,对于任意的矩阵都与下式成立: 单位矩阵 在一个方阵中,如果其主对角线元素全是1,而其余元素都是0,则称这样的矩阵为单位矩阵,记为。对任意矩阵,有下式成立: 逆矩阵 对于方阵,若存在矩阵,使得,则称是可逆的,称为的逆,记为 转置矩阵 将的行、列互换而得到的矩阵,称为的转置矩阵,记为。矩阵的转置有如下的性质: 齐次坐标 齐次坐标表示法就是用维的向量表示一个维向量。维空间中的点具有个坐标分量,并且是唯一的,用齐次坐标表示为,是不唯一的。使用齐次坐标还可以表示无穷远点,规定当时为无穷远点。 4.2 二维图形的几何变换 本节将讲解如何对二维图形进行几何变换,包括平移变换、比例变换、旋转变换、对称变换和错切变换。 平移变换 平移变换是将平面上的一点沿平行于轴的方向平移,沿平行于轴的方向平移后变成点,则有 , 图4.2 平移变换 程序的功能如下。首先,在屏幕上显示一个默认的矩形,然后根据用户选择的不同操作对此矩形进行平移,平移操作是随着鼠标的移动而移动的。 程序步骤: 首先,建立一个MFC单文档工程,起名为“Ch4_2DTrans_2DTrans”。 单击Workspace中的ClassView标签,双击CCh4_2DTrans_2DTransView,在CCh4_2DTrans_2DTransView类的定义之前定义一个枚举类型,代码如下: 在CCh4_2DTransView类的定义中添加如下成员变量: 右键单击CCh4_2DTransView,选择Add Member Function,在弹出的对话框中,Function Type设为void,Function Declaration设为ClearScreen(),单击确定。 单击CCh4_2DTransView左侧的+号,双击ClearScreen函数,在ClearScreen函数中添加如下代码: 右键单击CCh4_2DTransView,选择Add Member Function,在弹出的对话框中,Function Type设为void,Function Declaration设为DrawRect(),单击确定。 单击CCh4_2DTransView左侧的+号,双击DrawRect函数,在DrawRect函数中添加如下代码: 双击构造函数CCh4_2DTransView(),在其中添加如下代码: 单击Workspace中的ResourceViewView标签中的Menu左边的“+”号,双击其子项:IDR_MAINFRAME。 建立名称为【二维图形变换】的菜单,并建立【平移】子菜单。ID号设为:IDT_TRANSLATE。如图 右键单击【平移】子菜单,选择ClassWi

您可能关注的文档

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档