教育>本科研究生>计算机类
计算机图形学(第四版)  

计算机图形学(第四版)  "

作者:蔡士杰,杨若瑜
ISBN:9787121439506
定价:¥139.0
字数:1333千字
页数:616
出版时间:2022-12
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书是一本内容丰富、取材新颖的计算机图形学著作,在前一版的基础上进行了全面扩充,增加了许多新的内容,覆盖了近年来计算机图形学的最新发展和成就。全书层次分明、重点突出,并附有使用OpenGL编写的大量程序及各种效果图,是一本难得的优秀教材。全书共分为24章及3个附录,全面系统地讲解了计算机图形学的基本概念和相关技术。作者首先对计算机图形学进行综述;然后讲解二维图形的对象表示、算法及应用,三维图形的相关技术、建模和变换等;接着介绍光照模型、颜色模型和动画技术。本书还新增了有关分层建模与动画的介绍,以及对OpenGL的全面介绍;最后的附录给出了计算机图形学中用到的基本数学概念、图形文件格式及OpenGL的相关内容等。

前言

译者序 交互式计算机图形学的飞速发展令人兴奋, 其广泛的应用使科学、 艺术、 工程、 商务、 工业、 医药、 政府、 娱乐、 广告、 教学、 培训和家庭等各领域均获得巨大收益。 由Donald Hearn和M. Pauline Baker合著的Computer Graphics初版于1986年, 在1994年进行了部分修改, 1997年两位作者又将其重写, 推出了第二版。2004年, 两位作者再次对本书第二版进行了大幅度的修改, 推出了第三版。本书第二版和第三版的中文翻译版深受广大读者的欢迎。作者在总结多年教学实践的基础上, 对第三版再次进行了从内容到练习题的全面扩充, 覆盖了计算机图形学的最新进展, 并对主题顺序进行了更加合理的组织, 推出了现在的第四版。 为了适应计算机图形学的发展并促进其应用, 几乎所有的高等院校均已开设了计算机图形学课程, 人们都希望有更好的计算机图形学教材。基于对本书不断修改、 越来越完善的认同, 我们继续把本书第四版介绍给国内读者, 希望能对计算机图形学的教学、 研究与应用起到积极的作用。 本书由蔡士杰和杨若瑜共同翻译。蔡士杰翻译了第1章~第13章, 杨若瑜翻译了其余部分。由于译者的水平有限, 书中难免出现错误和不妥之处, 敬请读者不吝赐教。 前言中文翻译版的一些字体、 正斜体、 图示等沿用了英文原版的写作风格, 特此说明。 计算机图形学是快速增长的现代技术之一。自本书第一版出版以来, 使用计算机图形学技术已成为应用软件和普通计算机系统的标准特性。计算机图形学方法已被应用到许多产品的设计之中, 如用于仿真、 音乐视频和电视广告的制作、 数据分析、 科学研究、 医疗等领域。这些应用领域使用了大量的现代技术和硬件设备或正在研发新的技术和硬件设备。如今的计算机图形学研究重点仍在于增强有效性、 现实性和图片生成的速度方面。这些领域的复杂材质(如头发、 布料)和液压传动研究的现实渲染, 以及图像处理、 动画和表面表示, 仍是研究人员关注的焦点。高级图形硬件作为一种商品, 其可用性意味着任何计算机实际上都可以生成高质量的图像, 并且可编程图形处理单元的使用已经成为人们日益关注的研究领域。 第四版的新特性 过去几年授课用的各种讲义已添加到本书第四版中, 包括计算机图形学导论、 高级计算机图形学、 科学可视化、 专题和项目课程的相关内容。 ● 罗切斯特理工大学的Warren R. Carithers教授加入了本书的编写工作。 ● 新增了通过OpenGL Shading Language(GLSL)介绍可编程着色器的一章。 ● 给出了关于OpenGL演化的内容, 并简要介绍了OpenGL 3.x和4.x的不同, 以及GPU体系结构的过去、 现在与将来。 ● 解释了在非C和C++语言(如Java和Python语言)中使用OpenGL的方法。 ● 将图元和属性的实现算法组织到单独的一章中。 ● 将光照模型、 纹理映射和全局光照的内容重新组织到更为紧凑的几章中。 ● 更早地探讨了分层建模和动画的内容。 ● 重新组织了关于三维对象表示的内容。 ● 重新组织了关于二维和三维变换及观察的内容。 ● 更新了150道练习题。 灵活的主题顺序 讲授计算机图形学导论课程要使用许多方法和主题, 我们重新组织了许多章节的内容和顺序, 以便更灵活地呈现各个主题。从本书结构来看, 图元和属性的实现算法已经组合为单独的一章, 而涉及许多主题的较大章节则拆分为几个更小的章节, 以便重点探讨各个主题的内容。 150道更新的练习题和新增习题集 与前一版相比, 第四版更新了150道练习题, 并在大部分章的练习题部分新增了名为“附加综合题”的一组习题集。这些练习题衔接了各章的内容, 允许学生以一种高级方式来开发OpenGL程序。 OpenGL的变化 在使用可编程GPU的情形下, 许多图形API(包括OpenGL)正在转为使用可编程着色器来对强大的硬件提供直接访问。相应地, 书中也添加了相关的内容, 这些内容以一种灵活的方式呈现。本书新增了一个附录来专门介绍OpenGL的演化、 OpenGL在非C和C++语言中的使用、 GPU的性能等。自本书前一版出版以来, OpenGL的性能已经在很大程度上得到了改善。那时, OpenGL推出仅十多年, 并且刚发布的版本为OpenGL 1.5。尽管那时OpenGL的功能已经很强大, 但仍是使用原始的定点函数流水线模型实现的。自那以后, OpenGL的内部组成得到了很大提升, 可以更好地使用当前的图形硬件;这些提升进而导致了OpenGL API的重要变化。 在准备本书的这一版时, 我们讨论过是否需要完全修订关于OpenGL及API的内容。经过与教师的仔细探讨及沟通, 我们决定在这一版中继续使用最初的接口和例子, 原因如下: ● 本书提供的只是OpenGL的简单介绍, 并且最初的API对于选修图形学课程的学生来说更易于掌握。 ● 在现在及可以预见的将来, 仍存在大量使用最初的API的原有OpenGL代码。 ● OpenGL的最新版本仍以一种兼容的方式支持最初的API。 ● 对于几种流行的操作系统, 唯一可用的OpenGL实现仅支持最初的API。 关于封面 英文原版书的封面图像是一块方形板被钢弹击中时破裂的静态仿真画面。这一仿真是使用有限元代码计算的, 有限元代码动态地重构了仿真过程中的网格。重新划分网格也调整了仿真网格的分辨率, 因此足以解决破裂这一复杂的物理效果。这一方法的详细描述请参阅Martin Wicke、 Daniel Ritchie、 Bryan M. Klingner、 Sebastian Burke、 Jonathan R. Shewchuk和James F. O’Brien于2010年7月在学报ACMSIGGRAPH上发表的文章“Dynamic Local Remeshing for Elastoplastic Simulation”。 编程示例 第四版中提供了20多个完整的C++程序, 这些程序使用了OpenGL、 GLU和GLUT库文件。这些程序演示了基本的构图技术、 二维和三维几何变换、 二维和三维观察方法、 透视投影、 样条生成、 分形方法、 交互式鼠标输入、 拾取操作、 菜单和子菜单显示及动画技术的应用。此外, 本书给出了100多个C++/OpenGL程序段, 演示了剪切、 光照效果、 表面渲染、 纹理映射、 可编程着色和许多其他计算机图形学方法的算法实现。 先修课程要求 我们假定读者之前并不了解计算机图形学, 但要求读者具备计算机编程能力和基本的数据结构知识(如数组、 指针链表、 文件和记录等)。在计算机图形学算法中, 使用了许多数学方法, 在附录A中给出了它们的详细描述。附录A中包含的数学主题有解析几何、 线性代数、 向量和张量分析、 复数、 四元数、 基本积分学和数值分析等。第四版既可作为之前无计算机图形学背景的学生的教材, 也可作为专业人士的参考书。本书的重点在于设计、 使用和理解计算机图形系统时所需的基本原理, 并且提供了大量的示例程序来演示每个主题的方法与应用。 课程教学建议 一学期或两学期课程 对于一学期课程, 可根据课程设置的要求, 选择讲授关于二维方法的主题, 或组合讲授二维与三维方法的主题。对于两学期课程, 可先在第一学期介绍基本的图形学概念与算法, 然后在第二学期介绍高级的三维方法。 对于本科生的计算机图形学导论课程, 可选择讲授第2章至第10章及第17章至第20章的内容。从这些章节中, 仅选择关于二维或三维(或二维和三维的组合)方法的小节, 以及关于光照和颜色的部分内容。另外一些主题, 如分形表示、 样条曲线、 纹理映射或深度缓存, 可在第一次计算机图形学课程中介绍。 对于研究生导论性课程或高年级本科生课程, 则要将重点放在三维观察、 三维建模、 光照模型和表面渲染方法上。但一般来说, 两学期课程可以更好地覆盖二维和三维计算机图形学方法的基础知识, 包括样条表示、 表面渲染和光线跟踪等。 对于具备基本计算机图形学知识的学生, 可以在一两个领域开设专题课程, 如可视化技术、 分形几何、 光线跟踪、 辐射度和计算机动画。 自学者 对于自学者, 可先学习前面的几章来了解图形学的基本概念, 然后从后面的几章中选学相关的主题。 章节内容 第1章通过研究人们使用图形软件包生成的各类图片来说明计算机图形学应用的多样性。第2章给出计算机图形学的基本术语, 并简单介绍图形系统的硬件和软件组成。第3章详细介绍OpenGL, 并给出一个完整的OpenGL示例程序。第4章至第6章介绍简单对象表示与显示的基本方法, 并探讨生成基本图片成分(如多边形和圆)的方法, 以及设置对象颜色、 大小和其他属性的方法。第4章和第5章介绍这些主题并探讨它们在OpenGL中的使用;第6章介绍绘制图元并修改属性的底层算法。第7章和第8章讨论在二维场景中实现几何变换(如旋转和缩放)和观察变换的算法;第9章和第10章讨论在三维场景中实现几何变换和观察变换的算法。第11章介绍复杂系统的分层建模方法。第12章介绍计算机动画技术。第13章、 第14章和第15章讨论复杂对象(如二次曲面、 样条和实心几何体)的显示方法。第16章介绍在三维场景中识别可视对象的各种计算机图形学技术。第17章介绍光照模型和对场景应用光照条件的方法。第18章介绍表示表面细节的纹理与方法。第19章介绍计算机图形学中的各种颜色模型和设计颜色时考虑的因素。第20章介绍交互式图形输入和设计图形用户界面的方法。第21章介绍与全局光照相关的概念。第22章介绍可编程着色器。第23章介绍分形、 粒子系统和其他建模技术。第24章讨论数据集可视化。 教学资源申请方式请参见目录后的教辅申请表。 本书提供以下教学资源: ● 习题解答手册。 ● 源代码。 ● 插图幻灯片。 致谢 过去几年来, 许多人以各种方式对本书做出了贡献。 对于提供照片和其他内容的组织与个人, 我们表示衷心的感谢。还要感谢参加各种计算机图形学和可视化课程的学生所提供的意见。感谢那些为本书内容提供建议、 意见的专家, 也向未能采用其建议与意见的专家表示歉意。 感谢Ed Angel、 Norman Badler、 Phillip Barry、 Brian Barsky、 Hedley Bond、 Bart Braden、 Lara Burton、 Robert Burton、 Greg Chwelos、 John Cross、 Steve Cunningham、 John DeCatrel、 Victor Duvaneko、 Gary Eerkes、 Parris Egbert、 Tony Faustini、 Thomas Foley、 Thomas Frank、 Don Gillies、 Andrew Glassner、 Jack Goldfeather、 Georges Grinstein、 Eric Haines、 Robert Herbst、 Larry Hodges、 Carol Hubbard、 EngKiat Koh、 Mike Krogh、 Michael Laszlo、 Suzanne Lea、 Michael May、 Nelson Max、 David McAllister、 Jeffrey McConnell、 Gary McDonald、 C. L. Morgan、 Greg Nielson、 James Oliver、 LeeHian Quek、 Laurence Rainville、 Paul Ross、 David Salomon、 Günther Schrack、 Steven Shafer、 Cliff Shaffer、 Pete Shirley、 Carol Smith、 Stephanie Smullen、 Jeff Spears、 William Taffe、 Wai Wan Tsang、 Spencer Thomas、 Sam Uselton、 David Wen、 Bill Wicker、 Andrew Woo、 Angelo Yfantis、 Marek Zaremba和Michael Zyda。 特别感谢为本书提供相关内容的专家, 包括Rosario Leonardi(PERCRO Scuola Superiore Sant’Anna)、 Paul Nagin(Chimborazo Publishing, Inc.)、 James O’Brien(University of California, Berkeley)、 Emanuele Ruffaldi(PERCRO Scuola Superiore Sant’Anna)和Graham Sellers(Advanced Micro Devices, Inc.)。 还要感谢我们的评审专家Emmanuel Agu(Worcester Polytechnic Institute)、 Ye Duan(University of Missouri, Columbia)、 John Hart(University of Illinois)、 Jong Kwan Lee(Bowling Green State University)、 Stephen Mann(University of Waterloo)、 Timothy Newman(University of Alabama, Huntsville)、 Amar Raheja(California State Polytechnic Institute, Pomona)、 Adrian Rusu(Rowan University)、 Jergen Schulze(University of California, San Diego)、 Soon Tee Teoh(San Jose State University)、 Iren Valova(University of Massachusettes, Dartmouth)、 Stephen Wismath(University of Lethbridge)和Dana Wortman(University of Colorado, Colorado Springs)。 最后, 感谢本书的编辑出版团队, 他们是Tracy Dunkelberger、 Melinda Haggerty、 Marilyn Lloyd和 Martha Wetherill, 感谢他们在第四版的出版过程中所给予的帮助与建议。 关 于 作 者 Donald Hearn从1985年开始任教于美国伊利诺伊大学UrbanaChampaigh分校的计算机科学系。Hearn博士担任过多门课程的教学工作, 包括计算机图形学、 科学计算可视化、 计算科学、 数学和应用科学等。他还指导过多个研究项目并在相关领域发表了许多学术论文。 M. Pauline Baker是美国印第安纳大学普度大学Indianapolis联合分校(IUPUI)信息学院的教授。Baker教授主持印第安纳大学可视化和交互空间渗透技术实验室的相关工作, 也是伊利诺伊大学美国国家超级计算应用中心(NCSA)的主任。Baker教授在康奈尔大学获得心理学学士学位, 在Syracuse大学获得教育学硕士学位, 并在伊利诺伊大学获得计算机科学博士学位。 Warren R. Carithers于1981年加入美国罗切斯特理工大学计算机科学系。除了担任多个院系计算机图形学课程的授课, Carithers教授还讲授其他领域的课程, 包括操作系统、 计算机体系结构与组织、 系统软件、 编程语言设计和计算机安全等。

目录

目录 第1章 计算机图形学综述 1.1 图和表 1.2 计算机辅助设计 1.3 虚拟现实环境 1.4 数据可视化 1.5 教学与培训 1.6 计算机艺术 1.7 娱乐 1.8 图像处理 1.9 图形用户界面 1.10 小结 参考文献 第2章 计算机图形硬件 2.1 视频显示设备 2.2 光栅扫描系统 2.3 图形工作站和观察系统 2.4 输入设备 2.5 硬拷贝设备 2.6 图形网络 2.7 因特网上的图形 2.8 小结 参考文献 练习题 附加综合题 第3章 计算机图形软件 3.1 坐标表示 3.2 图形功能 3.3 软件标准 3.4 其他图形软件包 3.5 OpenGL简介 3.6小结 参考文献 练习题 附加综合题 第4章 输出图元 4.1 坐标系 4.2 在OpenGL中指定二维世界坐标系 4.3 OpenGL画点函数 4.4 OpenGL画线函数 4.5 OpenGL曲线函数 4.6 填充区图元 4.7 多边形填充区 4.8 OpenGL多边形填充区函数 4.9 OpenGL顶点数组 4.10 像素阵列图元 4.11 OpenGL像素阵列函数 4.12 字符图元 4.13 OpenGL字符函数 4.14 图形分割 4.15 OpenGL显示表 4.16 OpenGL显示窗口重定形函数 4.17 小结 示例程序 参考文献 练习题 附加综合题 第5章 图元的属性 5.1 OpenGL状态变量 5.2 颜色和灰度 5.3 OpenGL颜色函数 5.4点的属性 5.5 OpenGL点属性函数 5.6 线的属性 5.7 OpenGL线属性函数 5.8 曲线属性 5.9 填充区属性 5.10 OpenGL填充区属性函数 5.11 字符属性 5.12 OpenGL字符属性函数 5.13 OpenGL反走样函数 5.14 OpenGL查询函数 5.15 OpenGL属性组 5.16 小结 参考文献 练习题 附加综合题 第6章 实现图元及属性的算法 6.1 画线算法 6.2 并行画线算法 6.3 设定帧缓存值 6.4 圆生成算法 6.5 椭圆生成算法 6.6 其他曲线 6.7 并行曲线算法 6.8 像素编址和对象的几何要素 6.9 直线段和曲线属性的实现 6.10 通用多边形扫描线填充算法 6.11 凸多边形的扫描线填充 6.12 曲线边界区域的扫描线填充 6.13 不规则边界区域的填充方法 6.14 填充模式的实现方法 6.15 反走样的实现方法 6.16 小结 参考文献 练习题 附加综合题 第7章 二维几何变换 7.1 基本的二维几何变换 7.2 矩阵表示和齐次坐标 7.3 逆变换 7.4 二维复合变换 7.5 其他二维变换 7.6 几何变换的光栅方法 7.7 OpenGL光栅变换 7.8 二维坐标系间的变换 7.9 OpenGL二维几何变换函数 7.10 OpenGL几何变换程序示例 7.11 小结 参考文献 练习题 附加综合题 第8章二维观察 8.1 二维观察流水线 8.2 裁剪窗口 8.3 规范化和视口变换 8.4 OpenGL二维观察函数 8.5 裁剪算法 8.6 二维点裁剪 8.7 二维线段裁剪 8.8 多边形填充区裁剪 8.9 曲线的裁剪 8.10 文字的裁剪 8.11 小结 参考文献 练习题 附加综合题 第9章 三维几何变换 9.1 三维平移 9.2 三维旋转 9.3 三维缩放 9.4 三维复合变换 9.5 其他三维变 9.6 三维坐标系间的变换 9.7 仿射变换 9.8 OpenGL几何变换函数 9.9 OpenGL几何变换编程示例 9.10 小结 参考文献 练习题 附加综合题 第10章 三维观察 10.1 三维观察概念综述 10.2 三维观察流水线 10.3 三维观察坐标系参数 10.4 世界坐标系到观察坐标系的变换 10.5 投影变换 10.6 正投影 10.7 斜投影 10.8 透视投影 10.9 视口变换和三维屏幕坐标系 10.10 OpenGL三维观察函数 10.11 三维裁剪算法 10.12 OpenGL任选裁剪平面 10.13 小结 参考文献 练习题 附加综合题 第11章 层次建模 11.1 基本建模概念 11.2 建模软件包 11.3 通用层次建模方法 11.4 使用OpenGL显示表的层次建模 11.5 小结 参考文献 练习题 附加综合题 第12章 计算机动画 12.1 计算机动画的光栅方法 12.2 动画序列的设计 12.3 传统动画技术 12.4 通用计算机动画功能 12.5 计算机动画语言 12.6 关键帧系统 12.7 运动的描述 12.8 角色动画 12.9 周期性运动 12.10 OpenGL动画子程序 12.11 小结 参考文献 练习题 附加综合题 第13章 三维对象的表示 13.1 多面体 13.2 OpenGL多面体函数 13.3 曲面 13.4 二次曲面 13.5 超二次曲面 13.6 OpenGL二次曲面和三次曲面函数 13.7 小结 参考文献 练习题 附加综合题 第14章样条表示 14.1 插值和逼近样条 14.2 参数连续性条件 14.3 几何连续性条件 14.4 样条描述 14.5 样条曲面 14.6 修剪样条曲面 14.7 三次样条插值方法 14.8 Bézier样条曲线 14.9 Bézier曲面 14.10 B样条曲线 14.11 B样条曲面 14.12 beta样条 14.13 有理样条 14.14 样条表示之间的转换 14.15 样条曲线和曲面的显示 14.16 OpenGL的逼近样条函数 14.17 小结 参考文献 练习题 附加综合题 第15章 其他三维对象的表示 15.1 柔性对象 15.2 扫描表示法 15.3 结构实体几何法 15.4 八叉树 15.5 BSP树 15.6 基于物理的方法 15.7 小结 参考文献 练习题 附加综合题 第16章 可见面判别算法 16.1 可见面判别算法的分类 16.2 后向面判别 16.3 深度缓存算法 16.4 A缓存算法 16.5 扫描线算法 16.6 深度排序算法 16.7 BSP树算法 16.8 区域细分算法 16.9 八叉树算法 16.10 光线投射算法 16.11 可见性检测算法的比较 16.12 曲面 16.13 线框图可见性算法 16.14 OpenGL可见性检查函数 16.15 小结 参考文献 练习题 附加综合题 第17章 光照模型与面绘制算法 17.1 光源 17.2 表面光照效果 17.3 基本光照模型 17.4 透明表面 17.5 雾气效果 17.6 阴影 17.7 照相机参数 17.8 光强度显示 17.9 半色调模式和抖动技术 17.10 多边形绘制算法 17.11 OpenGL光照和表面绘制函数 17.12 小结 参考文献 练习题 附加综合题 第18章 纹理与表面细节添加方法 18.1 用多边形模拟表面细节 18.2 纹理映射 18.3 凹凸映射 18.4 帧映射 18.5 OpenGL纹理函数 18.6 小结 参考文献 练习题 附加综合题 第19章 颜色模型和颜色应用 19.1 光的特性 19.2 颜色模型 19.3 标准基色和色度图 19.4 RGB颜色模型 19.5 YIQ颜色模型 19.6 CMY和CMYK颜色模型 19.7 HSV颜色模型 19.8 HLS颜色模型 19.9 颜色选择及其应用 19.10 小结 参考文献 练习题 附加综合题 第20章 图形用户界面和交互输入方法 20.1 图形数据的输入 20.2 输入设备的逻辑分类 20.3 图形数据的输入功能 20.4 交互式构图技术 20.5 虚拟现实环境 20.6 OpenGL支持交互式输入设备的函数 20.7 OpenGL的菜单函数 20.8 图形用户界面的设计 20.9 小结 参考文献 练习题 附加综合题 第21章 全局光照 21.1 光线跟踪方法 21.2 辐射度光照模型 21.3 环境映射 21.4 光子映射 21.5 小结 参考文献 练习题 附加综合题 第22章 可编程着色器 22.1 着色语言的发展历史 22.2 OpenGL渲染流水线 22.3 OpenGL着色语言 22.4 着色器效果 22.5 小结 参考文献 练习题 附加综合题 第23章 基于算法的建模 23.1 分形几何方法 23.2 粒子系统 23.3 形状语法和其他过程方法 23.4 小结 参考文献 练习题 附加综合题 第24章 数据集可视化 24.1 标量场的可视化表示 24.2 向量场的可视化表示 24.3 张量场的可视化表示 24.4 多变量数据场的可视化表示 24.5 小结 参考文献 练习题 附加综合题 索引 OpenGL函数索引

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个