计算机图形学原理及实践——C语言描述(原书第2版)
作者 : James D.Foley,Andries van Dam,Steven K.Feiner,John F.Hughes,Richard L. Phillips
译者 : 唐泽圣 董士海 李华 吴恩华 汪国平
丛书名 : 计算机科学丛书
出版日期 : 2004-03-26
ISBN : 7-111-13026-X
定价 : 95.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 948
开本 : 16开
原书名 : Computer Graphics:Principles and Practice,Second Edition in C
原出版社: Addison-Wesley
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是计算机图形学领域的经典著作。本书由基础知识、用户界面、模型定义和图像合成四个部分组成,包括SRGP的编程、画二维图元的基本光栅图形学算法、图形硬件、几何变换、三维空间的观察、对象的层次结构和SPHIGS系统、输入设备、交互技术与交互任务、对话设计、用户界面软件、实体造型、消色光与彩色光、可视图像的真实性、可见面判定、光照模型与光照计算、图像处理与存储、高级光栅图形体系结构、高级几何与光栅算法、高级建模技术和动画等内容。
  本书内容全面,涉及图形学的各个领域,可以作为计算机专业本科生和研究生的教材,同时也可供相关技术人员阅读。

图书特色

图书前言

交互式图形学的时代已经到来。就在不久以前这还是一项需要昂贵显示器硬件、大量计算机资源和独特软件的深奥的专业领域。然而在过去的几年中,随着硬件性能价格比的大幅提升(如配有标准图形终端的个人计算机)以及高端的与设备无关的图形程序包的开发,图形编程已经变得简捷、合理。交互式图形学如今已经可以为我们提供图形通信手段,并成为人机交互的主要工具。(节选自《交互式计算机图形学基础》的前言。Fundamentals of Interactive Computer Graphics, James Foley, Andries van Dam, l982)
  这一断言在Apple公司的Macintosh机、IBM的PC机及其他类似产品引发计算机文化革命之前就做出了。现在,就算是没上学的孩子都对交互图形技术非常熟悉,比如窗口控制、用鼠标选取菜单和图标。图形用户界面可以使新手迅速变得老练,没有图形界面的计算机已经越来越罕见了。
  随着交互式图形学在用户界面和数据可视化方面的广泛应用,三维物体的绘制技术也变得越来越真实,运用这些技术生成的广告片和电影特技无所不在。20世纪80年代初期尚处于实验阶段的技术目前已变得很普通,而更加令人叹为观止的“照片真实感”技术也马上就要到来。曾经需要花上几个小时才能生成一帧的伪真实感动画,如今在个人计算机上可以以10帧/秒以上的速度生成。1981年的“实时”矢量显示器可以显示没有经过隐藏线消除的几万个矢量组成的移动线框物体;而1990年的实时光栅显示器不仅可以显示同样的线框物体,而且可以显示由十万多个三角形面片组成的、采用Gourand或者Phong明暗处理以及完全的隐藏面消除的移动物体。这些高性能系统能提供实时的纹理映射、反走样、云雾和烟尘的大气衰减以及其他特殊效果。
  图形软件的标准同样较第1版时明显进步了很多。第1版的SGP软件包基于的SIGGRAPH Core 9软件包、直视存储管和刷新矢量显示器现在基本上都已经消失了。支持结构层次存储和编辑的更加强大的PHIGS软件包已经成为ANSI和ISO的标准,广泛应用于科学和工程的实时几何图形制作中,与其相伴的PHIGS+支持光照、明暗处理、曲线和曲面。官方的图形标准中补充了许多事实标准,如Apple公司的QuickDraw,X Window的Xlib二维整型光栅图形包和Silicon Graphics公司的GL三维图形库。Pixar公司的照片真实感的RanderMan软件和硬拷贝页和屏幕图像描述的PostScript图形解释器同样也得到了广泛的应用。更好的图形软件的使用使得对用户界面的“感观”得到巨大改善,我们可以期待增加对三维效果的利用,使我们对信息的管理、表现、检索和漫游提供新的想像空间和形象,必是出于审美的考虑。
  也许图形学中最重要的发展方向是对物体建模技术的愈加重视,不仅仅是生成这些物体的画面,同时人们对如何描述随时间变化的三维几何物体的几何特性和行为产生了更大的兴趣。这样,图形学在建模和绘制中就更加关注模拟、动画及“回归物理过程”,试图使创作出的物体尽可能真实。
  当图形工具变得越来越复杂时,我们就需要能够有效地运用它们。绘制不再是瓶颈,所以研究人员开始尝试用人工智能技术帮助进行物体建模设计、运动规划、二维及三维物体的有效图形表示的布局。
当今图形学技术发展迅猛,任何一本参考书都必须不断进行更新和扩充才能跟上这样的发展。本书基本上对《交互式计算机图形学基础》做了总体重写,尽管页数几乎翻番,我们仍然不得不省略大量内容。
本书和第1版的主要区别如下:
  矢量图形学的定位由光栅图形学所代替。
  原来简单的二维浮点图形包(SGP)被SRGP和SPHIGS代替,体现了交互图形程序设计的两大主要流派。SRGP结合了QuickDraw和Xlib二维整型光栅图形包的特征;基于PHIGS的SPHIGS提供了具有层次显示列表的三维浮点包的基本特性。本书描述了如何应用这些标准图形包进行编程,并且同时讲述了这些图形包对于基本裁剪算法、扫描转换算法、观察算法和显示列表遍历算法等基本功能的实现细节。
  在更深的层次上讨论了用户界面问题,包括二维桌面比喻和三维交互设备。
  对建模的讨论包括了NURB(非均匀有理B样条)曲线和曲面,实体造型以及高级建模技术,如基于物理的建模、过程化模型、分形、L文法系统和粒子系统等。
  对绘制技术的讨论增加了对反走样的详细讨论,以及可见面判定、光照和明暗处理,包括基于物理的光照模型、光线跟踪、辐射度等。
  增加了高级光栅图形体系结构和算法的内容,包括裁剪、复杂图元的扫描转换、简单的图像处理操作等。
  增加了对动画的简单讨论。
阅读本书无须具备图形学的基础知识,只需要了解一定的C语言编程技术、基本的数据结构和算法、计算机体系结构和简单的线性代数。附录中列出了阅读本书必需的数学基础。本书的全部内容可在两个学期内讲授,但是书中内容划分为几个部分,也可以有选择地进行讲授。因此,读者可以根据自己的需要选择学习,由浅入深。本书可以大致分为下面几个部分:

基本知识
  第1章对历史进行了简要回顾,并对硬件、软件、应用程序的最基本问题作了讨论。第2、3章讲述了简单的二维整型图形包SRGP的应用和实现方法。第4章介绍了图形硬件,包括如何应用硬件完成前面几章中提到的操作。第5、6章通过矩阵的方法介绍了在平面和三维空间中进行变换的思想,如何应用齐次坐标来统一线性变换和仿射变换,三维视图的描述,包括从任意视见体到标准视见体的变换。最后,第7章介绍了三维浮点层次图形包SPHIGS,通过一些基本的建模操作讲述了它的用法,SPHIGS是PHIGS标准的简化版本。这一章还讨论了PHIGS中可用的层次结构的优缺点以及使用这个图形软件包的应用程序的结构。

用户界面
  第8~10章讲述了当前交互设备并讨论了用户界面设计的一些高层次问题,对当前流行的各种用户界面设计范型进行了介绍和比较。最后的用户界面软件一章讨论了窗口管理器、交互技术库和用户界面管理系统。

模型定义
  第11、12章讲述了当前的几何建模技术:曲线和曲面的参数函数表示(尤其是三次样条函数)以及各种技术的实体表示,包括边界表示和CSG模型。第13章介绍了人类的颜色视觉系统以及各种颜色描述系统及它们之间的转换,同时也讨论了如何有效运用颜色的规则。

图像合成
  在连续四章中的第一章,即第14章,讲述了从最早的矢量绘图到最新的光照图形技术,人们对真实感的探索过程。走样所引起的人为痕迹是光栅图形学中首要考虑的问题,这一章讨论了产生这些人为痕迹的原因和利用傅里叶变换的解决办法。第15章详细讨论了可见面判定的不同方法。第16章介绍了光照和明暗处理算法,本章的前半部分讨论了当前在流行的图形硬件中使用的算法而其余部分讨论了纹理、阴影、透明效果、反射、基于物理的光照模型、光线跟踪、辐射度,等等。第17章讲述了图像操纵(如像素图的缩放、错切、旋转)和图像存储技术(包括各种图像压缩技术)。

高级技术
  最后四章对最新的图形学技术做了简介。第18章描述了当前的高端商用和研究用的图形硬件,本章由高性能图形体系结构的权威Steven Molnar和Henry Fuchs提供。第19章讲述了应用于如任意圆锥曲线的扫描转换、反走样文字生成、页描述语言实现(如PostScript)等任务的复杂光栅算法。最后两章对在高级建模和计算机动画领域中最重要的技术做了概述。
  前两部分内容相对基础,可用于本科生的基础课程,随后的课程可使用其余各章的高级内容。当然也可以从各部分中抽取章节定制课程内容。
  比如,以二维图形学为主的课程可以包括第1、2章,第3章中的简单扫描转换和裁剪,第4章中的概述、光栅体系结构和交互设备,第5章的齐次数学,6.1~6.3节从“如何使用三维观察”的角度讲解了三维观察,由第8、9、10章组成的用户界面部分,以及由第14、15、16章组成的图像合成部分的引言和简单算法。
  一门图形学概论课程可以包括第1、2章,第3章的简单算法,第4章中的光栅体系结构和交互设备,第5章,第6、7章的大部分内容以及SPHIGS。课程的后半部分包括第11、13章中的建模技术,第14、15、16章的图像合成,以及第20章中的部分高级内容。
  以三维建模和绘制为重点的课程可以从第3章讲述扫描转换、线和多边形的裁剪、反走样的章节开始,然后进行到讲述变换和观察的数学基础的第5、6章,以及关于颜色的第13章,第14~16章的主要内容。也可以加入曲面和实体建模、第20章的高级建模技术、第21章的动画等高级内容。

图形包
  由David Sklar设计的SRGP和SPHIGS图形包可以从出版商获取,可用于IBM PC (ISBN 0-20l-54700-7)、Macintosh (ISBN 0-20l-5470l-5)和运行X11的UNIX 工作站,同时包括扫描转换、裁剪、观察等多种算法。

C语言版本序言
  原先书中的例子是用Pascal语言编写的,此版本为C语言版本。C语言版本包含了Pascal版本第2版第9次印刷以来的所有改动,同时还包含对一些算法的小改动;另外,书中所有的Pascal语言的代码都已用ANSI C重写。SRGP和SPHIGS图形包的接口现在都采用C语言定义,相应的这些图形包也都采用了新的C语言实现,不再使用Pascal。
  我们衷心地感谢Norman Chin,他把原书第2版中的Pascal语言代码转换成了C语言代码,校正这些代码并且按照原书中的排版习惯对代码进行编排。感谢Matt Ayers,他对书的第2、3和7章进行了认真的校对,并且对于转换代码过程中的问题提出了许多有用的建议。


华盛顿州  J.D.F.
罗德岛州  A.v.D
纽约州  S.K.F.
罗德岛州  J.F.H.

作者简介

James D.Foley,Andries van Dam,Steven K.Feiner,John F.Hughes,Richard L. Phillips:James D.Foley: James D. Foley(密歇根大学博士)是美国佐治亚理工学院计算机科学系和电子工程系教授,图形学、可视化及可用性研究中心主任、创始人。他和Andries van Dam一起是《Fundamentals of Interactive Computer Graphics》一书的作者。他是ACM、ACM SIGGRAPH、ACM SIGCHI、the Human Factors Society、IEEE、IEEE 计算机学会会员、《ACM Transactions on Graphics》主编。《Computers and Graphics》和许多著名杂志的编委。研究领域是用户界面设计环境(UIDE,一种基于模型的用户界面开发工具)、用户界面软件、信息可视化、多媒体和用户界面中的人的因素。他还是IEEE会员,Phi Beta Kappa、Tau Beta Pi和Sigma Xi的成员。
Andries van Dam: Andries van Dam(宾夕法尼亚大学博士)是美国布朗大学计算机科学系创始人和首任系主任,目前是L. Herbert Ballou大学和布朗大学计算机科学系教授,BLOC Development 和 Electronic Book Technologies公司的高级顾问科学家,ShoGraphics和Microsoft公司的技术顾问委员会成员,IEEE 计算机学会会员和ACM会员,也是 ACM SIGGRAPH创始人之一。van Dam帮助创建了《Computer Graphics and Image Processing》和《ACM Transactions on Graphics》杂志,并曾任其编辑。他和James Foley一起是《Funda mentals of Interactive Computer Graphics》一书的作者,和David Niguidula一起是《Pascal on the Macintosh: A Graphical Approach》一书的作者。已发表了80余篇论文。1984年获IEEE Centennial Medal奖,1988年获罗得岛州政府的科学技术奖,1990年获NCGA学术奖;1991年获SIGGRAPH Steven A. Coons奖。他的研究领域包括超媒体、电子书和用于教学研究的高性能工作站。
Steven K.Feiner: 于布朗大学获得博士学位,是哥伦比亚大学计算机科学系副教授,负责计算机图形学组。他也是ACM SIGGRAPH和IEEE计算机学会成员。
John F.Hughes: 于加州大学伯克利分校获得博士学位,是布朗大学计算机科学和数学系教授,他与[URL=/Authors/ShowAuthors.aspx?AuthorID=43]Andries van Dam[/URL]共同负责计算机图形学组。他也是ACM SIGGRAPH和IEEE计算机学会成员。
Richard L. Phillips: 于密歇根大学获得博士学位,是密歇根大学电子与计算机工程系退休教授。他现在是Los Alamos国家实验室科学家,也是ACM和IEEE成员。

译者简介

唐泽圣 董士海 李华 吴恩华 汪国平:唐泽圣: 清华大学计算机科学与技术系教授,博士生导师。现任澳门科技大学副校长,信息科技学院院长,教授。美国IEEE学会高级会员。澳门电脑学会名誉会长。曾任中国计算机学会理事长。长期从事计算机图形学及科学计算可视化方面的研究工作。主持、参加并完成了中国国家自然科学基金重点项目“科学计算可视化的理论和方法研究”及“多维动态地理信息系统关键技术研究”等课题。完成了国家自然科学基金一般项目“三维数据场整体显示技术的研究”及国家863高技术研究项目“计算机辅助立体定向神经外科手术系统”等课题。曾获国家科技进步三等奖一项,省、部级科技进步奖多项。有著作4部,发表论文100余篇。目前的研究方向有:计算机图形学、科学计算可视化、虚拟现实及地理信息系统等。
董士海: 北京大学信息科学技术学院教授,博士生导师。中国计算机学会虚拟现实和可视化专业委员会副主任,中国图像图形学会理事,中国人工智能学会理事,若干学报编委。1982年美国马里兰大学访问学者。曾参加我国首台百万次计算机、汉字激光照排系统、C软件环境、青鸟软件环境等研制。主持完成三维图形包、超媒体、多通道用户界面等国家攻关及自然基金重点项目。获政府特殊津贴,北京大学、国家教委、国家科技进步奖等奖励。已出版《计算机软件工程环境和软件工具》、《计算机用户界面及工具》、《人机交互和多通道用户界面》等专著,发表论文100余篇。研究兴趣为图形学、人机交互及虚拟现实等。
李华: 1982年毕业于北京航空学院,1986年在该校获硕士学位,1989年在中科院计算所获博士学位。曾在航空部601所从事飞机设计,先后在德国、日本留学。现为中国科学院计算技术研究所研究员,博士生导师,中国计算机学会理事,中国计算机学会计算机辅助设计与图形学专业委员会主任,中国工程图学会常务理事,中国图像图形学会常务理事,美国IEEE北京分会执行委员会委员、技术委员会主席,《计算机辅助设计与图形学学报》副主编,《软件学报》、《中国图像图形学报》和《工程图学学报》编委。主要研究领域为计算机图形学和计算机辅助几何设计。专业研究兴趣包括虚拟现实、科学计算可视化、医学图像处理、数字化虚拟人、人体运动仿真等。获政府特殊津贴、国家科技进步奖等奖励。
吴恩华: 1970年于北京清华大学计算数学专业本科毕业,其后从1970年至1980年在清华大学计算机科学与工程系进行教学和科研工作,1984年于英国曼彻斯特大学计算机科学系获博士学位。从1985年起在中国科学院软件研究所从事科研工作,历任研究室主任、基础和高技术研究部主任兼科研所所长助理、研究所学位委员会主席等。于1997年9月起兼任澳门大学科技学院教授,并自2002年3月起担任澳门大学电脑与资讯科学系主任。自1980年起从事计算机图形学研究工作,1993年被聘为博士生导师。在国内外发表论文100余篇。主要研究领域是真实感图形、虚拟现实、科学计算可视化等。2002年获CHINAGRAPH中国计算机图形学杰出奖。现受邀分别担任《计算机辅助设计与图形学学报》与Journal of Computer Science and Technology主编与副主编,并从2001年起受邀担任The Journal of Visualization and Computer Animation和International Journal of Image and Graphics编委。IEEE和ACM会员。
汪国平: 博士,教授,博士生导师,现任北京大学信息科学技术学院软件研究所副所长,人机交互与多媒体实验室主任,兼任中国图像图形学会常务理事,中国图像图形学会多媒体专业委员会和虚拟现实专业委员会委员,中国计算机学会虚拟现实和可视化专业委员会常务委员以及CADCG专业委员会委员,《计算机辅助设计与图形学学报》编委等。主要从事计算机图形学、人机交互与虚拟现实、网络多媒体等领域的教学与研究。近几年来负责国家级和省部级等各种项目20余项,负责分布式复杂虚拟场景构造和勘查平台,多媒体内容交互制作工具和同步合成系统,视频会议系统和视频点播系统等多个支撑系统的研制。申请国家发明专利4项,在国内外发表学术论文50余篇。

译者序

计算机图形学已经成为信息技术(IT)产业非常重要的一个理论基础和专业领域。一本内容更新、材料丰富、阐述深入的计算机图形学著作(中文版),对IT迅速发展的我国是十分需要的。
  本书的作者Foley、van Dam等是国际图形学界的著名学者、学术带头人。本书是计算机图形学领域的经典著作。从1982年第1版出版以来,它一直是各国大学“计算机图形学”课程的主要教科书。第1版的中译本对我国计算机图形学的教学科研已起了积极的作用,而本书的第2版C语言版本对第1版做了全面的更新,增加了大量新内容,覆盖了日趋成熟的计算机图形学领域的各个方面,包括二维、三维图形学的数学基础,大量重要算法,光栅图形硬件和软件,交互技术及用户界面软件,真实感图形学,高级建模技术(分形、体绘制等),图像处理和存储,动画等。它是图形应用的广大用户、软件开发人员和硬件设计人员的优秀自学参考书。
  本书包括了大量习题和经典参考文献目录,提供了大量C语言的算法实现程序,是本科生、研究生学习相关课程和开展研究工作的优秀参考书和教材。
  以上所述也正是本书20多位译者在非常繁忙的工作中花很大的精力翻译这本著作贡献给大学的原因。
  由于量大、译者多及水平有限,译文中欠妥和纰漏之处恐难避免,恳请读者不吝赐教和指正。

图书目录

第1章  导言 1
1.1  作为图像分析的图像处理 1
1.2  交互式图形学的优点 2
1.3  计算机图形学的典型用途 3
1.4  应用分类 4
1.5  计算机图形学硬件与软件的发展 5
1.5.1  输出技术 6
1.5.2  输入技术 10
1.5.3  软件的可移植性与图形标准 11
1.6  交互式图形学的概念框架 12
1.6.1  概述 12
1.6.2  应用建模 12
1.6.3  对图形系统描绘观察的内容 13
1.6.4  交互处理 14
1.7  小结 15
习题 15
第2章  简单光栅图形软件包(SRGP)的编程 17
2.1  用SRGP画图 17
2.1.1  图形图元的规格 17
2.1.2  属性 21
2.1.3  填充图元及其属性 22
2.1.4  存储和恢复属性 25
2.1.5  文本 26
2.2  基本交互处理 27
2.2.1  人的因素 27
2.2.2  逻辑输入设备 28
2.2.3  采样与事件驱动处理 28
2.2.4  采样模式 30
2.2.5  事件模式 31
2.2.6  交互处理中的关联拾取 34
2.2.7  设置设备度量和属性 35
2.3  光栅图形特性 37
2.3.1  画布 37
2.3.2  矩形框的裁剪 39
2.3.3  SRGP_copyPixel操作 39
2.3.4  写模式或RasterOp 41
2.4  SRGP的局限性 42
2.4.1  应用程序坐标系统 42
2.4.2  为了重新定义存储图元 43
2.5  小结 45
习题 45
程序设计项目 47
第3章  二维图元的基本光栅图形学算法 49
3.1  概述 49
3.1.1  显示系统体系结构的含义 49
3.1.2  软件中的输出流水线 52
3.2  直线的扫描转换 52
3.2.1  基本增量算法 53
3.2.2  中点线算法 54
3.2.3  补充要点 57
3.3  圆的扫描转换 59
3.3.1  八方向对称性 59
3.3.2  中点圆算法 60
3.4  椭圆的扫描转换 62
3.5  填充矩形 65
3.6  填充多边形 66
3.6.1  水平边 68
3.6.2  狭长条 68
3.6.3  边相关性和扫描线算法 68
3.7  填充椭圆弧区域 71
3.8  图案填充 72
3.9  宽图元 75
3.9.1  复制像素 75
3.9.2  移动画笔 76
3.9.3  填充边界之间的区域 77
3.9.4  用宽折线进行逼近 78
3.10  线型和笔型 78
3.11  光栅空间的裁剪操作 79
3.12  线段裁剪 80
3.12.1  裁剪端点 80
3.12.2  利用求解联立方程组的线段裁剪 81
3.12.3  Cohen-Sutherland 线裁剪算法 81
3.12.4  参数化的线裁剪算法 84
3.13  圆和椭圆的裁剪 90
3.14  多边形裁剪 90
3.15  生成字符 93
3.15.1  定义和裁剪字符 93
3.15.2  一种文本输出图元的实现 95
3.16  SRGP_copyPixel 96
3.17  反走样 96
3.17.1  增加分辨率 96
3.17.2  未加权的区域采样 97
3.17.3  加权区域采样 98
3.17.4  Gupta-Sproull反走样线扫描算法 101
3.18  小结 103
习题 104
第4章  图形硬件 107
4.1  硬拷贝技术 108
4.2  显示技术 113
4.3  光栅扫描显示系统 120
4.3.1  简单的光栅显示系统 120
4.3.2  具有外围显示处理器的光栅显示系统 124
4.3.3  显示处理器的附加功能 127
4.3.4  具有集成显示处理器的光栅显示系统 129
4.4  视频控制器 130
4.4.1  查找表动画 131
4.4.2  位图变换和窗口技术 132
4.4.3  视频混合 133
4.5  随机扫描显示处理器 134
4.6  用于操作者交互的输入设备 136
4.6.1  定位设备 136
4.6.2  键盘设备 140
4.6.3  定值设备 140
4.6.4  选择设备 140
4.7  图像扫描仪 141
习题 142
第5章  几何变换 145
5.1  二维变换 145
5.2  齐次坐标和二维变换的矩阵表示 147
5.3  二维变换的合成 150
5.4  窗口到视口的变换 152
5.5  效率 153
5.6  三维变换的矩阵表示 154
5.7  三维变换的合成 157
5.8  坐标系的变换 160
习题 163
第6章  三维空间的观察 165
6.1  投影 165
6.1.1  透视投影 166
6.1.2  平行投影 167
6.2  指定一个任意的三维视图 170
6.3  三维观察的例子 173
6.3.1  透视投影 175
6.3.2  平行投影 177
6.3.3  有限的视见体 179
6.4  平面几何投影的数学 180
6.5  实现平面几何投影 183
6.5.1  平行投影 185
6.5.2  透视投影 188
6.5.3  用三维规范视见体进行裁剪 192
6.5.4  在齐次坐标中裁剪 194
6.5.5  映射到一个视口 197
6.5.6  实现小结 197
6.6  坐标系统 198
习题 199
第7章  对象的层次结构和简单的PHIGS系统 203
7.1  几何造型 204
7.1.1  什么是模型 204
7.1.2  几何模型 205
7.1.3  几何模型中的层次 205
7.1.4  模型、应用程序和图形系统间的关系 207
7.2  保留模式图形包的特点 208
7.2.1  中央结构存储库及其优点 208
7.2.2  保留模式软件包的局限性 209
7.3  定义和显示结构 209
7.3.1  打开和关闭结构 209
7.3.2  定义输出图元及其属性 210
7.3.3  提交结构进行显示遍历 212
7.3.4  观察 213
7.3.5  通过窗口管理共享屏幕的图像应用 215
7.4  模型变换 216
7.5  层次式结构网络 219
7.5.1  两层层次结构 219
7.5.2  简单的三层层次结构 220
7.5.3  自底向上构造的机器人 221
7.5.4  交互式造型程序 223
7.6  显示遍历中的矩阵合成 223
7.7  层次结构中外观属性的处理 226
7.7.1  继承法则 226
7.7.2  SPHIGS的属性及文字不受变换影响 227
7.8  屏幕的更新和绘制模式 228
7.9  用于动态效果的结构网络编辑 229
7.9.1  利用索引和标记访问元素 229
7.9.2  内部结构的编辑操作 230
7.9.3  改进编辑方法的一些实例块 230
7.9.4  如何控制屏幕图像的自动再生 232
7.10  交互 232
7.10.1  定位器 233
7.10.2  关联拾取 233
7.11  其他输出特性 235
7.11.1  属性包 235
7.11.2  高亮度与不可见性的名字集 236
7.11.3  图像交换与元文件 236
7.12  实现问题 237
7.12.1  绘制 237
7.12.2  关联拾取 240
7.13  层次模型的优化显示 241
7.13.1  省略 241
7.13.2  参考结构 242
7.14  PHIGS中层次模型的局限性 242
7.14.1  简单层次结构的局限性 242
7.14.2  SPHIGS“参数传递”的局限性 242
7.15  层次建模的其他形式 243
7.15.1  过程层次 243
7.15.2  数据层次 244
7.15.3  利用数据库系统 244
7.16  小结 245
习题 245
第8章  输入设备、交互技术与交互任务 247
8.1  交互硬件 248
8.1.1  定位设备 249
8.1.2  键盘设备 250
8.1.3  定值设备 250
8.1.4  选择设备 250
8.1.5  其他设备 251
8.1.6  三维交互设备 252
8.1.7  设备级人的因素 254
8.2  基本交互任务 254
8.2.1  定位交互任务 254
8.2.2  选择交互任务—大小可变的选项集合 256
8.2.3  选择交互任务—相对固定大小的选项集合 259
8.2.4  文本交互任务 264
8.2.5  定量交互任务 265
8.2.6  三维交互任务 266
8.3  复合交互任务 270
8.3.1  对话框 270
8.3.2  构造技术 270
8.3.3  动态操纵 273
习题 275
第9章  对话设计 277
9.1  人机对话的形式和内容 278
9.2  用户界面风格 280
9.2.1  所见即所得 280
9.2.2  直接操纵 281
9.2.3  图标化用户界面 282
9.2.4  其他对话形式 284
9.3  一些重要的设计问题 285
9.3.1  一致性 285
9.3.2  提供反馈 287
9.3.3  减少错误概率 288
9.3.4  提供错误恢复 289
9.3.5  容许多种熟练级别 290
9.3.6  减少记忆 292
9.4  模式和语法 292
9.5  视觉设计 295
9.5.1  视觉清晰性 295
9.5.2  视觉编码 298
9.5.3  视觉的一致性 300
9.5.4  布局原则 301
9.6  设计方法学 303
习题 304
第10章  用户界面软件 307
10.1  基本的交互处理模型 307
10.2  窗口管理系统 310
10.3  窗口系统中的输出处理 312
10.4  窗口系统中的输入处理 315
10.5  交互技术工具箱 318
10.6  用户界面管理系统 322
10.6.1  对话序列 322
10.6.2  高级UIMS概念 328
习题 331
第11章  曲线与曲面的表示 333
11.1  多边形网格 334
11.1.1  多边形网格的表示 334
11.1.2  多边形网格表示法的一致性 336
11.1.3  平面方程 336
11.2  三次参数曲线 337
11.2.1  Hermite曲线 341
11.2.2  B巣ier曲线 344
11.2.3  均匀非有理B样条曲线 346
11.2.4  非均匀非有理B样条曲线 349
11.2.5  非均匀有理三次多项式曲线段 355
11.2.6  其他样条曲线 356
11.2.7  曲线分割 358
11.2.8  各种表示法之间的转换 360
11.2.9  曲线绘制 360
11.2.10  三次曲线的比较 363
11.3  双三次参数曲面 364
11.3.1  Hermite曲面 365
11.3.2  B巣ier曲面 367
11.3.3  B样条曲面 368
11.3.4  曲面的法线 368
11.3.5  双三次曲面的显示 369
11.4  二次曲面 372
11.5  小结 373
习题 373
第12章  实体造型 377
12.1  实体表示 377
12.2  正则布尔集合运算 378
12.3  基本实体举例法 381
12.4  扫掠表示法 381
12.5  边界表示法 383
12.5.1  多面体和欧拉公式 383
12.5.2  翼边表示法 385
12.5.3  布尔集合运算 385
12.5.4  非多边形的边界表示法 386
12.6  空间划分表示法 387
12.6.1  单元分解法 387
12.6.2  空间位置枚举法 387
12.6.3  八叉树表示法 388
12.6.4  二元空间划分树 392
12.7  构造实体几何 393
12.8  各种表示法的比较 394
12.9  实体造型的用户界面 396
12.10  小结 396
习题 397
第13章  消色差光与彩色光 399
13.1  消色差光 399
13.1.1  选择亮度值—gamma校正 399
13.1.2  半色调逼近 402
13.2  彩色 406
13.2.1  心理物理学 407
13.2.2  CIE色度图 409
13.3  用于光栅图形的颜色模型 412
13.3.1  RGB颜色模型 413
13.3.2  CMY颜色模型 414
13.3.3  YIQ颜色模型 415
13.3.4  HSV颜色模型 416
13.3.5  HLS颜色模型 418
13.3.6  颜色的交互指定 421
13.3.7  在颜色空间中进行插值 422
13.4  颜色再现 422
13.5  在计算机图形学中应用颜色 424
13.6  小结 425
习题 426
第14章  可视图像真实感的探讨 429
14.1  为什么讨论真实感 429
14.2  基本的困难 430
14.3  线条图的绘制技术 431
14.3.1  多正交视图 431
14.3.2  轴测投影和斜投影 432
14.3.3  透视投影 432
14.3.4  深度提示 432
14.3.5  深度裁剪 432
14.3.6  纹理 433
14.3.7  颜色 433
14.3.8  可见线的判定 433
14.4  明暗图像的绘制技术 433
14.4.1  可见面的判定 433
14.4.2  光照和明暗处理 433
14.4.3  插值明暗处理 434
14.4.4  材质属性 434
14.4.5  曲面造型 434
14.4.6  改进光照和明暗效果 434
14.4.7  纹理 434
14.4.8  阴影 434
14.4.9  透明性和反射 435
14.4.10  改进的相机模型 435
14.5  改进的物体模型 435
14.6  动力学 435
14.7  立体观测 436
14.8  改进的显示技术 436
14.9  与其他感官的交互 437
14.10  走样与反走样 437
14.10.1  点采样 439
14.10.2  区域采样 439
14.10.3  采样理论 441
14.10.4  滤波 445
14.10.5  重构 450
14.10.6  实际的反走样 454
14.11  小结 456
习题 456
第15章  可见面的判定 459
15.1  双变量函数 460
15.2  可见面判定算法中的常用技术 463
15.2.1  相关性 464
15.2.2  透视变换 464
15.2.3  范围与包围体 466
15.2.4  背面消除 467
15.2.5  空间划分 468
15.2.6  层次结构 469
15.3  可见线判定算法 469
15.3.1  Roberts算法 469
15.3.2  Appel算法 470
15.3.3  光环线算法 470
15.4  z缓存算法 471
15.5  列表优先级算法 474
15.5.1  深度排序算法 474
15.5.2  二元空间划分树 476
15.6  扫描线算法 480
15.7  区域细分算法 484
15.7.1  Warnock算法 484
15.7.2  Weiler-Atherton算法 486
15.7.3  子像素区域细分算法 489
15.8  八叉树算法 490
15.9  曲面算法 492
15.10  可见面光线跟踪 494
15.10.1  相交计算 495
15.10.2  可见面光线跟踪算法的效率 496
15.10.3  计算布尔集合运算 501
15.10.4  反走样光线跟踪 503
15.11  小结 504
习题 505
第16章  光照和明暗处理 509
16.1  光照模型 509
16.1.1  环境光 509
16.1.2  漫反射 510
16.1.3  大气衰减 513
16.1.4  镜面反射 514
16.1.5  点光源模型的改进 516
16.1.6  多光源 517
16.2  多边形的明暗处理模型 518
16.2.1  恒定明暗处理 518
16.2.2  插值明暗处理 518
16.2.3  多边形网格的明暗处理 518
16.2.4  Gouraud 明暗处理技术 519
16.2.5  Phong明暗处理技术 520
16.2.6  插值明暗处理中的问题 521
16.3  曲面细节 522
16.3.1  曲面细节多边形 523
16.3.2  纹理映射 523
16.3.3  凹凸映射 524
16.3.4  其他方法 525
16.4  阴影 525
16.4.1  扫描线生成阴影算法 526
16.4.2  对象精确的两步法阴影算法 526
16.4.3  阴影体 528
16.4.4  两遍z缓存阴影算法 529
16.4.5  全局光照阴影算法 531
16.5  透明性 531
16.5.1  无折射的透明性 531
16.5.2  折射透明性 533
16.6  物体间的反射 534
16.7  基于物理的光照模型 536
16.7.1  表面模型的改进 538
16.7.2  微面元分布函数 538
16.7.3  几何衰减因子 539
16.7.4  菲涅耳项 539
16.8  扩展光源模型 543
16.9  光谱采样 543
16.10  相机模型的改进 545
16.11  全局光照算法 545
16.12  递归光线跟踪 546
16.12.1  递归光线跟踪算法的效率考虑 550
16.12.2  一个更佳的照明模型 553
16.12.3  区域采样的不同方法 553
16.12.4  分布式光线跟踪 554
16.12.5  从光源出发的光线跟踪 557
16.13  辐射度方法 558
16.13.1  辐射度方程 558
16.13.2  计算形状因子 560
16.13.3  子结构技术 562
16.13.4  逐步求精算法 562
16.13.5  更加精确的形状因子的计算 565
16.13.6  镜面反射 565
16.13.7  辐射度和光线跟踪的结合 565
16.14  绘制流水线 567
16.14.1  局部光照绘制流水线 567
16.14.2  全局光照绘制流水线 569
16.14.3  设计灵活的绘制法 569
16.14.4  逐步求精方法 571
16.15  小结 571
习题 572
第17章  图像处理和存储 575
17.1  什么是图像 576
17.2  滤波 576
17.3  图像处理 578
17.4  图像的几何变换 578
17.4.1  基本几何变换 579
17.4.2  带滤波的几何变换 581
17.4.3  其他图案映射技术 583
17.5  多重变换 584
17.5.1  多重变换的代数学 585
17.5.2  利用滤波生成变换后的图像 587
17.5.3  评价变换方法 589
17.6  图像合成 589
17.6.1  a通道合成 589
17.6.2  其他合成方法 593
17.6.3  通过填充机制生成a值 595
17.6.4  用于图像组装的一个界面 595
17.7  图像存储机制 596
17.7.1  存储图像数据 597
17.7.2  用于图像压缩的迭代函数系统 598
17.7.3  图像属性 600
17.8  图像的特殊效果 601
17.9  小结 601
习题 601
第18章  高级光栅图形体系结构 605
18.1  简单光栅显示系统 605
18.1.1  帧缓冲内存访问问题 605
18.1.2  动态存储器 606
18.1.3  提高帧缓冲内存带宽 607
18.1.4  视频RAM 607
18.1.5  高分辨率显示器的帧缓存 608
18.2  显示处理器系统 609
18.2.1  外部显示处理器 609
18.2.2  德克萨斯仪器公司的TMS34020—单芯片外部显示处理器 610
18.2.3  集成的图形处理器 611
18.2.4  Intel的i860—一个具有集成3D图形支持的单芯片微处理器611
18.2.5  三个性能障碍 612
18.3  标准图形流水线 613
18.3.1  显示遍历 613
18.3.2  模型变换 614
18.3.3  简单接受/简单拒绝的区分 614
18.3.4  光照处理 614
18.3.5  观察变换 615
18.3.6  裁剪 615
18.3.7  除以w并映射到3D视口 615
18.3.8  光栅化 615
18.3.9  一个样板应用的性能要求 616
18.4  多处理简介 618
18.4.1  流水线 618
18.4.2  并行性 619
18.4.3  多处理器图形系统 620
18.5  流水线前端体系结构 620
18.5.1  应用程序和显示遍历 620
18.5.2  几何变换 621
18.5.3  简单接受/简单拒绝的区分 621
18.5.4  光照处理 621
18.5.5  裁剪 621
18.5.6  除w并映射到3D视口 622
18.5.7  前端流水线的限制 622
18.6  并行前端体系结构 622
18.6.1  显示遍历 622
18.6.2  重组并行数据流 623
18.6.3  流水线同并行性的比较 624
18.7  多处理器光栅化体系机构 624
18.7.1  以物体为序的流水线体系结构 624
18.7.2  以图像为序的流水线体系结构 627
18.7.3  流水线光栅化的限制和对并行性的需求 627
18.8  图像并行光栅化 627
18.8.1  内存划分体系结构 628
18.8.2  Silicon Graphics公司的 POWERIRIS 4D/240GTX—一个交叉划分帧缓冲内存体系结构 630
18.8.3  逻辑增强的内存 633
18.9  物体并行光栅化 637
18.9.1  每图元一个处理器的流水线 638
18.9.2  基于树结构的每图元一个处理器的体系结构 638
18.9.3  物体并行性和图像并行性的比较 639
18.10  混合并行光栅化 639
18.10.1  虚拟缓冲区和虚拟处理器 639
18.10.2  并行虚拟缓冲区体系结构 641
18.10.3  图像合成体系结构 642
18.11  增强的显示能力 643
18.11.1  对多窗口的支持 643
18.11.2  对增加的真实感的支持 644
18.11.3  Stellar GS2000—促进真实感绘制的紧密集成的体系结构646
18.11.4  对高级图元的支持 647
18.11.5  对增强的3D感知的支持 649
18.11.6  实时飞行模拟器 651
18.12  小结 652
习题 652
第19章  高级几何与光栅算法 655
19.1  裁剪 655
19.1.1  矩形区域对直线的裁剪 656
19.1.2  矩形和其他多边形区域对多边形的裁剪 659
19.1.3  矩形区域裁剪:梁友栋-Barsky多边形算法 659
19.1.4  Weiler多边形算法 665
19.2  图元的扫描转换 671
19.2.1  属性 671
19.2.2  评价扫描转换算法的准则 671
19.2.3  直线的其他考察方式 673
19.2.4  高级折线算法 674
19.2.5  画圆算法的改进 674
19.2.6  一般圆锥曲线算法 676
19.2.7  宽图元 683
19.2.8  填充图元 685
19.3  反走样 686
19.3.1  直线的反走样 687
19.3.2  圆的反走样 688
19.3.3  圆锥曲线的反走样 690
19.3.4  一般曲线的反走样 692
19.3.5 矩形、多边形和直线端点的反走样 692
19.4  文字的特殊问题 693
19.5  填充算法 695
19.5.1  区域类型、连通性和填充 695
19.5.2  基本填充算法 696
19.5.3  软填充算法 698
19.6  加速copyPixel 700
19.7  形状数据结构和形状代数 704
19.8  用bitBlt管理窗口 706
19.9  页面描述语言 708
19.10  小结 713
习题 713
第20章  高级建模技术 719
20.1  前述技术的扩展 720
20.1.1  采用样条的高级建模技术 720
20.1.2  基于噪声的纹理映射 722
20.2  过程模型 724
20.3  分形模型 725
20.4  基于文法的模型 729
20.5  粒子系统 732
20.6  体绘制 735
20.7  基于物理的建模 738
20.7.1  基于约束的建模 738
20.7.2  布面和柔软表面的建模 739
20.7.3  实体建模 740
20.7.4  地形建模 740
20.8  模拟自然物体和合成物体的特殊模型 740
20.8.1  波浪 741
20.8.2  云层和气象 741
20.8.3  湍流 743
20.8.4  滴状物体 743
20.8.5  生物 744
20.8.6  人 745
20.8.7  来自于娱乐业的一个例子 745
20.9  自动放置物体 746
20.10  小结 748
习题 749
第21章  动画 751
21.1  传统动画和计算机辅助动画 751
21.1.1  传统动画 751
21.1.2  计算机辅助动画 752
21.1.3  插值 752
21.1.4  简单的动画效果 755
21.2  计算机动画语言 756
21.2.1  线性表表示法 756
21.2.2  通用计算机语言 757
21.2.3  图形语言 757
21.3  动画控制方法 760
21.3.1  完全显式的控制 760
21.3.2  过程化控制 760
21.3.3  基于约束的系统 760
21.3.4  真实动作跟踪 762
21.3.5  演员 762
21.3.6  运动学和动力学 762
21.3.7  基于物理的动画 764
21.4  动画的基本规则 765
21.5  动画特有的一些问题 765
21.6  小结 767
习题 767
附录  计算机图形学的数学基础 769
参考文献 793
索引 833

教学资源推荐
作者: 陈有祺
作者: 范策 周世平 胡潇琨 等编著
作者: (德)Georg Hager,Gerhard Wellein 著
参考读物推荐
作者: [希]帕诺斯·卢里达斯(Panos Louridas) 著
作者: 华诚科技 编著
作者: 华诚科技 编著
作者: (美)John W. Rittinghouse; James F. Ransome 著