《 线性代数及其应用 (原书第4版)》—— 2.7 计算机图形学中的应用

2.7 计算机图形学中的应用

计算机图形是在计算机屏幕上显示或活动的图像. 计算机图形学的应用广泛,发展迅速. 例如,计算机辅助设计(CAD)是许多工程技术的组成部分之一,比如本章介绍中提到的飞机设计过程. 娱乐行业对计算图形学做了最引人入胜的应用——从黑客帝国的特技效果到PlayStation 2电脑娱乐系统和Xbox游乐器游戏.
绝大多数工业或商业的交互计算机软件在屏幕上应用计算机图形显示以及其他功能,如数据的图形显示、桌面编辑以及商业或教育用的幻灯片等,因此,任何学习计算机语言的学生至少要学会如何应用二维(2D)图形.
本节考虑用来操纵和显示图形图像的一些基本的数学方法,例如飞机的线形轮廓模型. 这样的一个图像(图片)是由一系列的点和曲线组成,以及如何填充由直线和曲线所围成的封闭区域. 通常,曲线用短的直线段逼近,而图形用一系列的点来定义.
在最简单的二维图形符号中,字母用于在屏幕上做标记. 某些字母作为线框对象存储,其他有弯曲部分的字母还要将曲线的数学公式也存储进去.
例1 图2-15中的大写字母N由8个点或顶点确定. 这些点的坐标可存储在一个数据矩阵D中.

除D以外,还要说明哪些顶点用线相连,但我们省略这些细节.
图形对象使用一组直线线段描述的主要原因是,计算机图形学中标准变换把线段映射成为线段.(例如,见1.8节习题26.)当描述这些对象的顶点被变换以后,它们的像可以用适当的直线连接起来得到原来对象的完整图像.
例2 给定 描述剪切变换 对例1中字母N的作用.
解 由矩阵乘法的定义,乘积AD的各列给出字母N各顶点的像.

变换过的顶点画在图2-16,同时还画上相应于原来图形中连线的线段.

图2-16中斜体的 看来有些太宽,为此,我们可以用倍乘变换使它变窄.

例3 先作如例2的剪切变换,然后再把 坐标乘以一个因子0.75,求此复合变换的矩阵.
解 把每个点的x坐标乘以0.75的矩阵为

所以复合变换的矩阵是

复合变换的结果如图2-17所示.

计算机图形学中的数学是与矩阵乘法紧密联系的. 但是,屏幕上的物体的平移并不直接对应于矩阵乘法,因为平移并非线性变换. 避免这一困难的标准办法是引入所谓齐次坐标.
齐次坐标
中每个点 (x,y)可以对应于 中的 (x,y,1). 它们位于xy 平面上方1单位的平面上. 我们称 (x,y)有齐次坐标(x,y,1) ,例如,点 的齐次坐标为 . 点的齐次坐标不能相加,也不能乘以数,但它们可以乘以矩阵来做变换.

例4 形如 的平移可以用齐次坐标写成 ,这个变换可用矩阵乘法来实现:

例5 中任意线性变换也可用通过齐次坐标乘以分块矩阵 实现,其中 A是矩阵,典型的例子是:

复合变换
图形在计算机屏幕上的移动通常需要两个或多个基本变换. 这些变换的复合相应于在使用齐次坐标时进行矩阵相乘.
例6 求出矩阵,对应于先乘以0.3的倍乘变换,然后旋转90°,最后对图形的每个点的坐标加上 (-0.5),2做平移. 见图2-18.

解 当 时, ,由例4和5,我们有

所以复合变换的矩阵为

三维计算机图形学
计算机图形学的最新和最激动人心的应用是分子模型. 对三维图形学,生物学家可观察到模拟的蛋白质分子,并用以研究药物分子. 生物学家可以旋转和平移一种实验药物的分子使它们附着于蛋白质分子. 研究潜在的化学反应的能力对现代药物和癌症研究是很重要的. 事实上,药物设计的进展依赖于计算机图形学构造有真实感的分子和它们的交互作用的仿真. 1c
现在的分子模型的研究集中于虚拟现实,即一种环境,研究者在其中可以看到并且感觉药物分子渗入蛋白质分子,在图2-19中,这样的有实体感的反馈是由能够将力量可视化的远程控制器提供的. 另一种虚拟现实的设计包括用一个头盔和手套来感觉头、手和手指的运动. 头盔包含两个细小的计算机屏幕,每个眼睛一个,将此可视环境变得更为真实,这是对工程师,科学家与数学家更大的挑战. 我们这里考虑的数学打开了这方面的研究的大门.

齐次三维坐标
类似于二维情形,我们称 中点(x,y,z) 的齐次坐标. 一般地,若 ,则(X,Y,Z,H) 是 (x,y,z)的齐次坐标,且
(1)
(x,y,z,1) 的每一个非零的标量乘法得到一组(x,y,z) 的齐次坐标. 例如(10,-6,14,2) 和(-15,9,-21,-3) 都是(5,-3,7) 的齐次坐标.
下列说明分子模型中,把一个药物分子移入蛋白质分子的变换.
例7 给出下列变换的矩阵.

  1. 绕y 轴旋转30°(习惯上,正角是从旋转轴(本例中是 y轴)的正半轴向原点看过去的逆时针方向的角).
  2. 沿向量p=(-6,4,5) 的方向平移.
    解 a. 首先构造矩阵表示旋转. 向量 向负z 轴旋转到 ,向量 不变, 向正x 轴旋转到 . 见图2-20. 由1.9节,这个旋转变换的标准矩阵为


所以齐次坐标的旋转矩阵为

  1. 我们希望 (x,y,z,1)映射到(x-6,y+4,z+5,1) ,所求矩阵为


透视投影
三维物体在二维计算机屏幕上的表示方法是把它投影在一个可视平面上.(我们忽略其他重要步骤,例如选择可视平面上显示在屏幕上的部分.)为简单起见,设xy 平面表示计算机屏幕,假设某一观察者的眼睛向正z轴看去,眼睛的位置是 (0,0,d),透视投影把每个点(x,y,z) 映射为点 ,使这两点与观察者的眼睛位置(称为透视中心)在一条直线上,见图2-21(a).
平面上的三角形(在图2-21a中)画在b中,由相似三角形知


类似地,

使用齐次坐标,可用矩阵表示透视投影,记此矩阵为 P,(x,y,z,1) 映射为

把这个向量乘以 1-z/d,可用 (x,y,0,1-z/d)作为齐次坐标的像,现在容易求出P . 事实上

例8 设 S是顶点为(3, 1, 5),(5, 1, 5),(5, 0, 5),(3, 0, 5),(3, 1, 4),(5, 1, 4)及(3, 0, 4)的长方体,如图2-22所示,求S 在透视中心为(0, 0, 10)的透视投影下的像.

解 设P 为投影矩阵, D为用齐次坐标的 S的数据矩阵,则 S的像的数据矩阵为

为得到 坐标,使用例7前面的(1)式,把每一列的前3个元素除以第4行的对应元素,得到
顶点

本教材的网页上有计算机图形学的有趣应用,包括对透视投影的进一步讨论. 网上的一个计算机项目与简单的动画有关.
数值计算的注解 三维物体的连续移动需要计算大量的矩阵,特别地,当曲面光滑时,用来使它更有实体感,并有适当的光线,图形工作站有矩阵运算及图形算法嵌入于芯片和电路中,这样的工作站可以每秒做数十亿次矩阵乘法以实现三维游戏程序中有真实感的颜色的变化.

练习题
图形绕 中一点 P的旋转是这样实现的:首先把图形平移-P ,然后绕原点旋转,最后平移回去P . 见图2-23,使用齐次坐标构造绕点(-2, 6)旋转矩阵.

习题2.7



时间: 2024-09-20 05:38:46

《 线性代数及其应用 (原书第4版)》—— 2.7 计算机图形学中的应用的相关文章

《 线性代数及其应用 (原书第4版)》—— 导读

前 言学生和教师对本书前三版本的反响十分令人满意. 第4版在第3版的基础上为课程教学和软件技术应用提供了更多支持. 像以前一样,本书给出最新的线性代数基本介绍和一些有趣应用,使得已完成大学第二学期数学课程(如学完微积分)的学生容易接受.本书的主要目的是帮助学生掌握以后课程学习所需要的基本概念和基本技能,教材的选题是根据"线性代数课程研究小组"的建议,该建议基于认真分析学生的实际需要和许多不同专业使用线性代数知识的共同点而提出. 希望这门课能够成为对大学生最有用和最有趣的数学课程之一.新

《 线性代数及其应用 (原书第4版)》—— 第2章 矩 阵 代 数 2.1 矩阵运算

第2章 矩 阵 代 数 介绍性实例 飞机设计中的计算机模型 为了设计下一代的商业和军用飞机,波音的幻影工作室的工程师们使用三维建模和计算流体动力学. 他们在建造实际的模型之前,研究一个虚拟的模型周围的空气流动,这样做可以很大程度地缩短设计周期,降低成本,而线性代数在这个过程中起了关键的作用. 虚拟的飞机模型的设计从数学的线形轮廓模型开始,它存储在计算机内存中,并可显示在图形显示终端. (图示给出波音777的模型.)这个数学模型组织和影响设计和制造飞机外部和内部的每一个过程. 计算流体动力学分析主

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

ROS机器人程序设计(原书第2版).

机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique Fernández) 路易斯·桑切斯·克雷斯波(Luis Sánchez Crespo) 阿尼尔·马哈塔尼(Anil Mahtani) 亚伦·马丁内斯(Aaron Martinez) 著 刘锦涛 张瑞雷 等译 图书在版编目(CIP)数据 ROS机器人程序设计(原书第2版) / (西)恩里克·费尔南

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一导读

前 言 致读者 本书是按照Java SE 8完全更新后的<Java核心技术 卷Ⅱ 高级特性(原书第10版)>.卷Ⅰ主要介绍了Java语言的一些关键特性:而本卷主要介绍编程人员进行专业软件开发时需要了解的高级主题.因此,与本书卷Ⅰ和之前的版本一样,我们仍将本书定位于用Java技术进行实际项目开发的编程人员. 编写任何一本书籍都难免会有一些错误或不准确的地方.我们非常乐意听到读者的意见.当然,我们更希望对本书问题的报告只听到一次.为此,我们创建了一个FAQ.bug修正以及应急方案的网站http:/

《JavaScript和jQuery实战手册(原书第3版)》---第1章 编写第一个JavaScript程序 1.1 编程简介

本节书摘来自华章出版社<JavaScript和jQuery实战手册(原书第3版)>一书中的第1章,第1.1节,作者David Sawyer McFarland,姚待艳 李占宣 译,更多章节内容可以访问"华章计算机"公众号查看. 第1章 编写第一个JavaScript程序 HTML自身并没有太多智能:它不能做数学运算,不能判断某人是否正确填写了一个表单,而且不能根据Web访问者的交互来做出判断.基本上,HTML让人们阅读文本.观看图片或视频,并且单击链接转向拥有更多文本.图片

《机器学习与R语言(原书第2版)》一2.3 探索和理解数据

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 2.3 探索和理解数据 在收集数据并把它们载入R数据结构以后,机器学习的下一个步骤是仔细检查数据.在这个步骤中,你将开始探索数据的特征和案例,并且找到数据的独特之处.你对数据的理解越深刻,你将会更好地让机器学习模型匹配你的学习问题. 理解数据探索的最好方法就是通过例子.在

《Unity着色器和屏幕特效开发秘笈(原书第2版)》一2.7 创建透明材质

本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈(原书第2版)>一书中的第2章,第2.7节,作者 [英]艾伦朱科尼(Alan Zucconi) [美]肯尼斯拉默斯(Kenneth Lammers),更多章节内容可以访问"华章计算机"公众号查看 2.7 创建透明材质 到现在为止,我们见到的着色器都有一个共同点-都用在实心材质上.如果你想提升游戏视觉效果,某些时候透明材质是个不错的选择,比如火焰效果或者窗户玻璃等.透明材质的制作相对复杂一点.在渲染实心物体之前,Uni

《面向对象的思考过程(原书第4版)》一1.1 基本概念

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第1章,第1.1节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著 1.1 基本概念 本书主要目标是让你学会思考如何将面向对象概念应用于面向对象的系统设计中.历史上定义面向对象的语言拥有以下特点:封装(encapsulation).继承(inheritance)和多态(polymorphism).因此,如果设计一门语言时没有完全实现以上特性,那么通常我们认为该语言不是完全面向对象的.即使实现了这三点,我也往往会加入组

《用户至上:用户研究方法与实践(原书第2版)》一1.1 什么是用户体验

本节书摘来自华章出版社<用户至上:用户研究方法与实践(原书第2版)>一书中的第1章,第1.1节,作者 Understanding Your Users: A Practical Guide to User Research Methods, Second Edition凯茜·巴克斯特(Kathy Baxter)[美]凯瑟琳·卡里奇(Catherine Courage) 凯莉·凯恩(Kelly Caine)更多章节内容可以访问"华章计算机"公众号查看. 第1章 用户体验入门