基本信息
- 原书名:Interactive Computer Graphics: A Top-Down Approach with OpenGL (3rd Edition)
- 原出版社: Addison Wesley/Pearson
- 作者: (美)Edward Angel
- 译者: 吴文国
- 丛书名: 国我经典教材·计算机科学与技术
- 出版社:清华大学出版社
- ISBN:730212390X
- 上架时间:2006-3-16
- 出版日期:2006 年2月
- 开本:185×260
- 页码:521
- 版次:3-1
- 所属分类:计算机 > 图形图像、多媒体、网页制作 > OpenGL
计算机 > 计算机科学理论与基础知识 > 图形学
教材 > 研究生/本科/专科教材 > 工学 > 计算机
教材 > 计算机教材 > 本科/研究生 > 计算机专业教材 > 计算机专业课程 > 图形图象与网页设计
教材 > 教材汇编分册 > 高等理工
内容简介
计算机书籍
本书从OpenGL编程角度讨论了图形学基本原理及基本算法。全书共13章,分为三大部分:第一部分为第1~6章,主要介绍三维图形程序的开发环境、三维对象的表示方法、空间坐标变换、三维视图的生成过程等内容;第二部分为第7~10章,主要介绍光栅扫描、区域填充、画直线和画圆弧、裁剪及消隐等基本理论和基本算法;第三部分为第11~13章,主要介绍过程建模技术、可视化处理方法以及高级绘制方法等高级内容。本书的特点是采用了自顶向下的方法,集知识性和趣味性为一体,全书还包括17个完整的、令人感兴趣的OpenGL程序。.
本书可作为计算机及相关专业本科生和研究生的图形学教材,也适合相关程序员、工程技术人员及科研人员使用。.
随着人工智能学科的发展,课程的内容也在不断更新。美国IEEE和ACM共同制定的Computing Curricula 2001/2005中,人:工智能课程除包括人工智能概论,问题状态与搜索,知识表示,机器人学等传统内容外,还增加了机器学习,智能体.自然语言处理。语音处理,知识库系统,神经网络,遗传算法等内容。.
本书按照困内外最新课程大纲的要求,介绍人工智能的理论、方法,技术及其应用,除了讨论仍然有用的和有效的基本原理与方法之外,着重阐述新的和正在研究的人工智能方法与技术,特别是近期发展起来的方法与技术。此外,用比较多的篇幅论述人工智能的应用,包括新的应用研究。...
作译者
Edward Angel 新墨西哥州大学计算机科学、电子与计算机1:程和传播艺术教授。1968年获南加利福尼亚大学博上学位。曾任教于南加州大学伯克利分校、南加州大学、罗切斯特大学。1978午在新墨西哥州大学任敦,1982至1985年担任新墨西哥州大学电子与计算机寸:程系副—:F任,1985至1988年担任计算机科学系主任。足瑞土伦德科技学院、印度科学学院(班加罗尔)、伦敦人学学院、伦敦皇家学院的客座教授。出版多本计算机图形学方面的专著。Edward Angel曾给来自全世界各地数以千计的科学家、工程师和程序员短期讲授计算机图形学和图像处理, 并多次在SIGGRAPH会议上讲授OpenGL。...
目录
1.1 计算机图形学的应用 1
1.1.1 信息显示 1
1.1.2 设计 2
1.1.3 仿真与动画 2
1.1.4 用户界面 3
1.2 计算机图形系统 3
1.2.1 像素与帧缓存 4
1.2.2 输出设备 4
1.2.3 输入设备 6
1.3 图像:物理方法和人工合成方法 6
1.3.1 对象与观察者 6
1.3.2 光照与图像 7
1.3.3 光线跟踪 8
1.4 人眼的视觉系统 9
1.5 针孔照相机 11
1.6 虚拟照相机模型 12
1.7 程序员接口 13
1.7.1 应用程序开发人员的接口 14
1.7.2 笔式绘图仪模型 14
前言
不仅图形系统的功能增加了许多,而且高端和低端工作站的价格也大幅度下降。在最近几年里,每秒能显示一千多万个三维多边形,且带有光照处理功能和纹理映射功能的图形系统的价格从最初的数十万美元下降到现在的数千美元,甚至价格不到1000美元的个人计算机也支持基本的三维图形应用。个人计算机专用图形显示卡的出现有其特别深远的意义,这些显示卡只需大约100美元,并提供工作站的性能。在软件方面,无论是编写图形学应用程序还是在科学研究领域里开发高端产品,OpenGL仍然是图形开发人员的标准接口。
自顶向下的方法
图形学最近的发展和本书前两版的成功,增强了笔者的信念:即采用自顶向下的、面向编程的方法介绍计算机图形学。尽管许多计算机科学和工程系提供了不止一门与计算机图形学相关的课程,但就大多数学生而言,他们只能选修其中一门课程。现在的教学计划往往把图形学课程安排在编程语言、数据结构、算法设计、软件工程和基础数学等课程之后。计算机图形学课程的老师应该以知识性和兴趣性为出发点并逐步深入讨论图形学相关内容。笔者希望选修图形学课程的学生尽可能快地动手编写三维图形应用程序,而等到学生掌握了建立图形技术之后再开始介绍画线和多边形填充等底层算法。
John Kemeny——一个计算机教育领域里的先驱者,用大家非常熟悉的汽车作了一个形象的比喻。即大家并不真正需要理解汽车发动机的工作原理,但是除非掌握汽车驾驶技术,否则只能坐在汽车的后座里看别人开车。这个比喻同样可以用在计算机图形学教学上。图形学教学有3种不同的方法:方法1是算法,就是要求学生掌握与汽车工作原理有关的各方面知识,如发动机、传动装置和燃烧过程等;方法2是观察法,就是叫一个驾驶员开车,让学生坐在后排做一个旁观者来观察这个世界;方法3是编程法,就是指导学生如何驾驶,如何把车开到任何他想要去的地方,本书采用这种方法。
用OpenGL和C语言编程
在20年前当我开始教授图形学课程时,在设计面向编程的课程和编写相应的教材过程中遇到的最大困难是缺少普遍认可的图形系统函数库或应用编程接口(Application Programmer’s Interface,API)工具包。其他困难还包括:高成本、有限的资源、缺少通用性和系统的高度复杂性。OpenGL的成功开发为我们解决了在使用其他一些API工具包(如GKS、PHIGS等)和一些程序开发人员自己开发的软件产品时遇到的许多困难。OpenGL得到了大多数工作站供货商的支持,并且通过第三方供货商,可以在绝大多数平台上工作。OpenGL与微软Windows操作系统所有的最新版本和苹果公司的麦金托什机(Macintosh)操作系统捆绑销售。OpenGL API还有一个称为Mesa的版本,它经过编译后可以在大多数系统上使用,并且与Linux操作系统捆绑发行。
作为一门图形学课程,我们要教授的内容远不止是介绍使用某个特定的API工具包,但是一个优秀的API工具包可以使讲解图形学中某些关键问题变得轻而易举。这些关键问题包括诸如三维图形、明暗处理、客户-服务器图形学(简称C-S图形学)、建模和算法实现等。OpenGL强大的功能和良好的结构使得它成为图形学理论教学和实践操作的强有力工具,也是讲授纹理映射和图像合成等最新功能的有用工具,这些功能直到最近还没有在任何一个API工具包中得到实现。
大概8年前我把我所教授的学生的兴趣转到OpenGL上,其结果令人吃惊。到了学期期中时,每个学生都能编写出具有相当难度的、用到三维视图知识和具有事件驱动输入模式的三维图形程序。在我前15年的图形学教学生涯里,从没有取得这么好的效果。对这个班级的成功教学最终促使我从头开始重新编写图形学课本。
这是一本计算机图形学的教科书,而不是一本OpenGL使用手册。因此并没有对OpenGL API的各个方面都进行详细讨论,只是对掌握本书内容必不可少的那部分OpenGL知识作介绍。本书对OpenGL的介绍达到这样的程度,即其他API的用户在遇到相关资料时不会感到有很大的困难。对于那些想深入了解OpenGL的读者,可以参考笔者最近出版的《OpenGL :A Primer》(OpenGL入门,Addison-Wesley ,2002),这是一本很有价值的参考书。
在本版里,笔者同时使用了C和C++语言,其中C作为主要语言。对于这种安排有两个理由。第一,由于OpenGL本身不是面向对象,所以除非要在OpenGL与用户之间建立一个面向对象的三维几何对象库,否则使用C++或Java等面向对象语言对基本问题的描述没有实质性的帮助。虽然这个方法看起来非常有吸引力,但本书没有这样做,因为这会影响学生掌握图形学那部分知识,而且会使那些有很强的编程能力但不熟悉面向对象编程的学生不能很好地理解本书。第二,面向对象方法会使用户看不到底层的知识(他们应该知道这些底层的东西)。然而作为图形学的导论课,学生应该了解底层知识。尽管图形学是向学生介绍面向对象编程方法的极好工具,但面向对象并不是向计算机科学和工程系学生介绍图形学最有效的方法。一个例外的情况是介绍场景图形,本书采用了面向对象的方法,而且这部分内容得益于C++的知识。至于本科学生,由于C++是他们最先要学习的课程之一,所以他们在阅读本书代码时,不管是对C或C++程序都不会有很大困难。
在计算机图形学领域,关于OpenGL的未来地位以及是否会被DirectX取代有很多争论。然而对于计算机图形学教育者来说,毫无疑问OpenGL仍将是图形学课程的首选API。尽管DirectX是游戏开发的一个标准,但在许多人看来,它并不十分适合作为计算机图形学的教学工具,也不适合于那些想开发自己应用程序的用户。而且由于DirectX专门针对Windows操作平台,所以要想编写可移植的应用程序必须要写很多额外的代码。从更高的层次来看,OpenGL和DirectX在很多方面都支持相同的功能。所以本书的读者如需要转到DirectX编程并不会有太大的困难。
本书的读者
本书适合计算机科学和工程系的高年级本科生和一年级研究生,以及其他学科有相当编程能力的学生。本书对许多图形学专业人员也有帮助。笔者曾为专业人员举办过大约一百期的短期培训,与专业人员的交往经历对编写本书有很大助益。
使用本书的先决条件是精通C或C++编程,具备基本的数据结构(链表和树)知识以及线性代数和三角几何方面的初步知识。而计算机系的学生,不管是本科生还是研究生,数学知识良莠不齐。所以在本书里插入了一些有关线性代数和三角几何等内容,这些内容是学习计算机图形学的必备条件。本书的附录B和附录C里概括介绍了这两方面的知识。
本书的组织
本书的内容安排如下。第1章综述了图形学领域,并介绍光学设备的成像过程,接着开始讨论三维图形概念。第2章介绍OpenGL编程,本章以及后面各章都要介绍一个或多个完整的编程实例,尽管这些实例都是二维的,但是它们都置于一个三维环境里。第3章讨论最新C-S环境里的交互式图形学,并介绍几个事件驱动图形程序。第4章和第5章集中介绍三维图形概念,其中第4章介绍三维对象的定义和处理方法;第5章介绍三维对象的视图生成过程。第6章介绍光与材质的相互作用以及明暗处理方法。以上这些章节都要求按顺序阅读,并且在10周左右时间内完成。
本书后面7章可以按任意次序进行阅读。这7章所有内容都安排成开放形式,即既可以快速浏览,也可以对某个专题进行深入讨论。第7章介绍许多最新的离散技术, 它们得到了图形硬件技术和OpenGL的支持。这些离散技术都与各个不同的缓存器有关,本章的结尾对计算机图形学中存在的走样问题进行简单讨论。第8章讨论算法实现。本章讨论了视图处理流水线过程的基本步骤,针对每一基本步骤都给出一两个主要算法。第9章把多个并不十分相关的专题都归纳到层级结构和面向对象图形学的标题下。这些专题范围比较广,从如何建立封装多个子部件及相互之间关系的复杂模型到如何访问Internet上图形这样的高级问题。本章还包括了一个简单场景图形API。
第10章讨论了曲线和曲面。第11章介绍过程建模方法,主要内容有基于语言的建模、分形方法和粒子系统。这些方法主要弥补多边形建模方法的不足。第12章介绍科学可视化。目前人们对这一领域产生了浓厚的兴趣,更重要的是该领域为我们提供了验证前面几章介绍的各种技术的一个机会。第13章内容是新增内容,主要介绍其他绘制技术。这一章对光线跟踪和辐射度方法进行深入讨论,同时也简单介绍了基于图像的绘制技术和并行绘制技术。..
本书第一部分的程序都包括在附录A里。这些程序都有相应的电子版(参看后面的补充阅读材料这一节)。