登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書

『簡體書』交互式计算机图形学(第八版)(英文版)

書城自編碼: 3547922
分類:簡體書→大陸圖書→計算機/網絡计算机理论
作者: [美]Edward,Angel[爱德华 ·,安杰尔]Dave
國際書號(ISBN): 9787121393983
出版社: 电子工业出版社
出版日期: 2020-08-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 209.9

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
危机与秩序:全球转型下的俄罗斯对外关系
《 危机与秩序:全球转型下的俄罗斯对外关系 》

售價:HK$ 405.6
西域考古记 世界科普名著经典译丛(精装)
《 西域考古记 世界科普名著经典译丛(精装) 》

售價:HK$ 106.8
数字图像处理——使用MATLAB分析与实现(第2版)
《 数字图像处理——使用MATLAB分析与实现(第2版) 》

售價:HK$ 82.8
陪你的情绪坐一坐
《 陪你的情绪坐一坐 》

售價:HK$ 71.8
公开的密谋
《 公开的密谋 》

售價:HK$ 70.8
可怕的战争——美国内战及其创伤(第三版)
《 可怕的战争——美国内战及其创伤(第三版) 》

售價:HK$ 177.6
超能团队:提高团队绩效的30个工具   [英]帕梅拉·汉密尔顿
《 超能团队:提高团队绩效的30个工具 [英]帕梅拉·汉密尔顿 》

售價:HK$ 82.8
渡鸦的文化史
《 渡鸦的文化史 》

售價:HK$ 94.8

 

建議一齊購買:

+

HK$ 74.8
《 计算机科学基础 》
+

HK$ 104.3
《 计算机科学引论(2021英文精编版) 》
+

HK$ 79.8
《 计算机科学引论(2017英文精编版) 》
+

HK$ 103.5
《 揭开数据真相:从小白到数据分析达人 》
+

HK$ 328.2
《 计算机网络:自顶向下方法(英文版·原书第7版) 》
+

HK$ 163.4
《 计算机简史 第三版 》
編輯推薦:
* 经典教材,权威作者。
* 将所有示例和程序更新为WebGL 2.0。
* 增加了三维纹理映射的内容。
* 增加了使用点精灵进行模拟的内容。
* 扩展并更新了有关绘制的内容。
* 加强了对硬件实现和GPU架构的讨论。
內容簡介:
本书采用自顶向下的方法并辅以面向编程的方式,基于现代可编程GPU的WebGL 2.0着色器编程,综合利用HTML5、JavaScript和GLSL(OpenGL ES 3.0),开发可以在所有*浏览器中运行的三维图形应用程序,同时系统地介绍了现代计算机图形学的核心概念、原理和方法。本书是作者多年教学与科研的结晶,涵盖了交互式图形编程、可编程GPU绘制流水线、变换与观察、光照与着色、曲线与曲面建模、离散技术等计算机图形学的基本内容,以及层级建模、过程建模、光线跟踪、并行绘制、体绘制和虚拟现实等高级内容。为了方便读者进一步深入学习和研究计算机图形学,本书在每章末尾提供了相关的建议阅读资料。
關於作者:
Edward Angel是新墨西哥大学(UNM)计算机科学的退休教授,并担任过艺术、技术和科学实验室(ARTS Lab)的主任。直到2007年7月,他一直是UNM的计算机科学、电子与计算机工程、媒体艺术教授。Angel于1964年在加州理工大学获得学士学位,并于1968年在南加州大学获得博士学位。他曾任职于加州大学伯克利分校、南加州大学和罗切斯特大学。Angel目前的研究领域是计算机图形学及科学可视化、虚拟现实和大规模并行计算等。
Edward Angel是新墨西哥大学(UNM)计算机科学的退休教授,并担任过艺术、技术和科学实验室(ARTS Lab)的主任。直到2007年7月,他一直是UNM的计算机科学、电子与计算机工程、媒体艺术教授。Angel于1964年在加州理工大学获得学士学位,并于1968年在南加州大学获得博士学位。他曾任职于加州大学伯克利分校、南加州大学和罗切斯特大学。Angel目前的研究领域是计算机图形学及科学可视化、虚拟现实和大规模并行计算等。
目錄
CONTENTS
CHAPTER 1 GRAPHICS SYSTEMS AND MODELS 1
1.1 Applications of Computer Graphics 2
1.1.1 Display of Information 2
1.1.2 Design 3
1.1.3 Simulation and Animation 4
1.1.4 User Interfaces 6
1.2 A Graphics System 7
1.2.1 Pixels and the Framebuffer 8
1.2.2 The CPU and the GPU 9
1.2.3 Output Devices 10
1.2.4 Input Devices 13
1.3 Images: Physical and Synthetic 13
1.3.1 Objects and Viewers 14
1.3.2 Light and Images 15
1.3.3 Imaging Models 17
1.4 Imaging Systems 19
1.4.1 The Pinhole Camera 19
1.4.2 The Human Visual System 21
1.5 The Synthetic-Camera Model 22
1.6 The Programmers Interface 24
1.6.1 The Pen-Plotter Model 25
1.6.2 Three-Dimensional APIs 28
1.6.3 A Sequence of Images 31
1.6.4 The Modeling?CRendering Paradigm 32
1.7 Graphics Architectures 35
1.7.1 Display Processors 36
1.7.2 Pipeline Architectures 37
1.7.3 The Graphics Pipeline 38
1.7.4 Vertex Processing 39
1.7.5 Clipping and Primitive Assembly 40
1.7.6 Rasterization 40
1.7.7 Fragment Processing 40
1.8 Programmable Pipelines 41
1.9 Performance Characteristics 42
1.10 OpenGL Versions and WebGL 43
Summary and Notes 44
Suggested Readings 45
Exercises 45
CHAPTER 2 GRAPHICS PROGRAMMING 49
2.1 The Sierpinski Gasket 49
2.2 Programming Two-Dimensional Applications 52
2.3 The WebGL Application Programming Interface 58
2.3.1 Graphics Functions 59
2.3.2 The Graphics Pipeline and State Machines 61
2.3.3 OpenGL and WebGL 61
2.3.4 The WebGL Interface 62
2.3.5 Coordinate Systems 64
2.4 Primitives and Attributes 65
2.4.1 Polygon Basics 67
2.4.2 Polygons in WebGL 70
2.4.3 Triangulation 71
2.4.4 Text 73
2.4.5 Vertex Attributes 75
2.5 Color 76
2.5.1 RGB Color 78
2.5.2 Color Tables 80
2.5.3 Setting of Color Attributes 81
2.6 Viewing 82
2.6.1 The Orthographic View 83
2.6.2 Two-Dimensional Viewing 84
2.7 Control Functions 85
2.7.1 The HTML Canvas 87
2.7.2 Aspect Ratio and Viewports 88
2.7.3 Application Execution 89
2.8 The Gasket Program 90
2.8.1 Sending Data to the GPU 93
2.8.2 Rendering the Points 94
2.8.3 The Vertex Shader 94
2.8.4 The Fragment Shader 96
2.8.5 Combining the Parts 96
2.8.6 The initShaders Function 97
2.8.7 The init Function 98
2.8.8 Reading the Shaders from the Application 99
2.9 Polygons and Recursion 100
2.10 The Three-Dimensional Gasket 102
2.10.1 Use of Three-Dimensional Points 103
2.10.2 Use of Polygons in Three Dimensions 106
2.10.3 Hidden-Surface Removal 109
Summary and Notes 110
Code Examples 113
Suggested Readings 113
Exercises 114
CHAPTER 3 INTERACTION AND ANIMATION 119
3.1 Animation 119
3.1.1 The Rotating Square 120
3.1.2 The Display Process 122
3.1.3 Double Buffering 123
3.1.4 Using a Timer 124
3.1.5 Using requestAnimationFrame 125
3.2 Interaction 125
3.3 Input Devices 127
3.4 Physical Input Devices 127
3.4.1 Keyboard Codes 128
3.4.2 The Mouse and the Trackball 128
3.4.3 Data Tablets,Touch Pads, and Touch Screens 130
3.4.4 Multidimensional Input Devices 131
3.4.5 Logical Devices 132
3.4.6 Input Modes 133
3.4.7 Clients and Servers 134
3.5 Programming Event-Driven Input 135
3.5.1 Events and Event Listeners 135
3.5.2 Adding a Button 136
3.5.3 Menus 137
3.5.4 Using Key Codes 138
3.5.5 Sliders 139
3.6 Position Input 140
3.7 Window Events 142
3.8 Gesture and Touch 143
3.9 Picking 145
3.10 Building Models Interactively 146
3.11 Design of Interactive Programs 150
Summary and Notes 151
Code Examples 153
Suggested Readings 153
Exercises 154
CHAPTER 4 GEOMETRIC OBJECTS AND TRANSFORMATIONS 159
4.1 Scalars, Points, and Vectors 160
4.1.1 Geometric Objects 160
4.1.2 Coordinate-Free Geometry 162
4.1.3 The Mathematical View: Vector and Affine Spaces 163
4.1.4 The Computer Science View 164
4.1.5 Geometric ADTs 165
4.1.6 Lines 166
4.1.7 Affine Sums 167
4.1.8 Convexity 168
4.1.9 Dot and Cross Products 169
4.1.10 Planes 170
4.2 Three-Dimensional Primitives 172
4.3 Coordinate Systems and Frames 175
4.3.1 Representations and N-Tuples 177
4.3.2 Change of Coordinate Systems 178
4.3.3 Example: Change of Representation 180
4.3.4 Homogeneous Coordinates 182
4.3.5 Example: Change in Frames 185
4.3.6 Working with Representations 187
4.4 Frames in WebGL 189
4.5 Matrix and Vector Types 193
4.5.1 Row Versus Column Major Matrix Representations 195
4.6 Modeling a Colored Cube 195
4.6.1 Modeling the Faces 196
4.6.2 Inward- and Outward-Pointing Faces 197
4.6.3 Data Structures for Object Representation 198
4.6.4 The Colored Cube 198
4.6.5 Color Interpolation 200
4.6.6 Displaying the Cube 201
4.6.7 Drawing by Elements 202
4.6.8 Primitive Restart 203
4.7 Affine Transformations 204
4.8 Translation, Rotation, and Scaling 207
4.8.1 Translation 207
4.8.2 Rotation 207
4.8.3 Scaling 209
4.9 Transformations in Homogeneous Coordinates 211
4.9.1 Translation 212
4.9.2 Scaling 213
4.9.3 Rotation 214
4.9.4 Shear 215
4.10 Concatenation of Transformations 217
4.10.1 Rotation About a Fixed Point 218
4.10.2 General Rotation 219
4.10.3 The Instance Transformation 220
4.10.4 Rotation About an Arbitrary Axis 222
4.11 Transformation Matrices in WebGL 226
4.11.1 Current Transformation Matrices 227
4.11.2 Basic Matrix Functions 228
4.11.3 Rotation, Translation, and Scaling 229
4.11.4 Rotation About a Fixed Point 229
4.11.5 Order of Transformations 230
4.12 Spinning of the Cube 231
4.12.1 Uniform Matrices 233
4.13 Smooth Rotations 235
4.13.1 Incremental Rotation 236
4.14 Quaternions 237
4.14.1 Complex Numbers and Quaternions 237
4.14.2 Quaternions and Rotation 238
4.14.3 Quaternions and Gimbal Lock 240
4.15 Interfaces to Three-Dimensional Applications 242
4.15.1 Using Areas of the Screen 242
4.15.2 A Virtual Trackball 243
4.15.3 Implementing the Trackball with Quaternions 245
Summary and Notes 247
Code Examples 247
Suggested Readings 248
Exercises 248
CHAPTER 5 VIEWING 253
5.1 Classical and Computer Viewing 253
5.1.1 Classical Viewing 255
5.1.2 Orthographic Projections 255
5.1.3 Axonometric Projections 256
5.1.4 Oblique Projections 258
5.1.5 Perspective Viewing 259
5.2 Viewing with a Computer 260
5.3 Positioning of the Camera 262
5.3.1 From the Object Frame to the Camera Frame 262
5.3.2 Two Viewing APIs 267
5.3.3 The Look-At Function 271
5.4 Parallel Projections 272
5.4.1 Orthogonal Projections 274
5.4.2 Parallel Viewing with WebGL 275
5.4.3 Projection Normalization 276
5.4.4 Orthogonal Projection Matrices 277
5.4.5 Oblique Projections 279
5.4.6 An Interactive Viewer 282
5.5 Perspective Projections 284
5.5.1 Simple Perspective Projections 285
5.6 Perspective Projections with WebGL 288
5.6.1 Perspective Functions 289
5.7 Perspective Projection Matrices 290
5.7.1 Perspective Normalization 291
5.7.2 WebGL Perspective Transformations 294
5.7.3 Perspective Example 296
5.8 Hidden-Surface Removal 296
5.8.1 Culling 298
5.9 Displaying Meshes 299
5.9.1 Displaying Meshes as Surfaces 302
5.9.2 Polygon Offset 304
5.9.3 Walking Through a Scene 305
5.10 Projections and Shadows 306
5.10.1 Projected Shadows 306
5.11 Shadow Maps 310
Summary and Notes 312
Code Examples 313
Suggested Readings 313
Exercises 313
CHAPTER 6 LIGHTING AND SHADING 317
6.1 Light and Matter 318
6.2 Light Sources 321
6.2.1 Color Sources 322
6.2.2 Ambient Light 322
6.2.3 Point Sourc
內容試閱
前 言
本书是计算机图形学的入门教材,重点介绍应用程序的编写。本书于1997年首次出版,第一版使用了OpenGL和自顶向下的方法,这多多少少算是一场革命。在接下来的22年中,本书一共发行了八个版本。到目前为止,大多数计算机图形学的入门课程以及各种与本书类似的教材都采用了本书的方法。
自顶向下的方法
图形学的新进展以及本书前七个版本的成功,一直驱使着我们坚持采用自顶向下、面向编程的方法来介绍计算机图形学。虽然许多计算机科学与工程系现在开设了多门计算机图形学课程,但是大多数学生只选修一门。通常在学生学习了编程、数据结构、算法、软件工程和基础数学之后,再给他们安排这样一门图形学课程。因此,教师应以内容充实并且有趣的方式按上述已学内容来组织计算机图形学课程。我们希望这些学生在学习这门课程时尽可能早地编写出三维图形应用程序。底层的算法,例如绘制线段或者填充多边形,可以在学生编写了三维图形应用程序之后再考虑。
当被问到为什么讲授编程这个问题时,计算机教育的先驱John Kemeny曾经把自顶向下的编程方法与我们熟悉的汽车进行类比:你没有必要知道汽车发动机罩下面是什么,但是如果知道汽车的驾驶方法,就能够驾驶汽车而不是坐在汽车后座上。同样的类比适用于讲授计算机图形学的方法。第一种方法(算法的方法)是把汽车工作原理的方方面面都交代清楚,例如发动机、变速器、燃烧过程等。第二种方法(概览的方法)是雇一名司机,自己则坐在后座上。第三种方法(本书采用的编程方法)是教会你如何驾驶汽车并到达你的目的地。正如一句过时的广告词所说:让我们把你放在驾驶员的位子上。
本书第六版和第七版反映了由于图形硬件的进步而导致的图形应用程序开发的重大变化。特别是第六版完全基于着色器,使读者能够创建可以充分利用现代GPU性能的应用程序。我们注意到,这些改变也包含在OpenGL ES 2.0中,后者用于开发嵌入式系统和手持设备(例如手机和平板电脑)以及使用JavaScript语言实现的WebGL应用程序。当初,通过HTML5支持WebGL的Web浏览器出现的时候,我们并没有预料到大家会对WebGL产生如此大的兴趣。从第七版开始,我们从桌面版OpenGL切换到了WebGL。
正如我们在第七版中指出的那样,WebGL应用程序无处不在,包括运行在一些最新的智能手机上。虽然WebGL缺少最新桌面版OpenGL的某些高级功能,但是其与HTML5的整合,开辟了大量新的应用领域。另外一个好处是,我们发现它比桌面版OpenGL更适合讲授计算机图形学。我们在第七版中实现了这个愿望。无论是教学还是开发可在所有平台上运行的实际应用程序,WebGL已被证明是一种出色的应用程序编程接口(API)。
第七版具有如下特征:
所有的示例和程序均使用WebGL 1.0。
所有的代码均使用JavaScript编写。
所有的代码均可以在最新的Web浏览器中运行。
增加了一章关于交互的内容。
增加了关于绘制到纹理的内容。
增加了关于显示网格的内容。
包含了一个高效的矩阵-向量工具包。
增加了基于Agent建模的介绍。
第八版在成功使用WebGL的基础上,包含如下变动:
将所有示例和程序更新为WebGL 2.0。
增加了许多新的示例。
绘制到纹理的内容扩展成单独的一章,其中包括新的主题,如阴影贴图和投影纹理。
增加了三维纹理映射的内容。
更新了关于建模的章节,其中包括对three.js(一种流行的高级JavaScript场景图API)的介绍。
增加了使用点精灵进行模拟的内容。
扩展并更新了有关绘制的内容。
加强了对硬件实现和GPU架构的讨论。
使用WebGL和JavaScript编程
当本书的第一作者Edward Angel在30多年前开始讲授计算机图形学的时候,以面向编程的方式讲授这门课程并编写相应教材的最大障碍是,缺乏一个被广泛接受的图形库或者API。当时遇到的困难包括:高成本、可用性受限、缺乏通用性以及高度复杂性。OpenGL的开发解决了我们在使用其他API以及使用自己编写的软件作为替代方案时所遇到的大多数困难。如今的OpenGL在所有的平台上都得到支持,并被普遍认为是跨平台的标准。WebGL建立在OpenGL被广泛接受(实际上它们是相同的API)的基础上,但是使用Web技术提供了更易于访问的开发平台。
一门计算机图形学的课程不能仅讲授如何使用一种特定的API,而一种好的API应使讲授图形学中的一些关键内容变得更加易于理解,这些内容包括三维变换、光照和着色、客户服务器图形系统、建模以及实现算法。我们相信,OpenGL的扩展功能以及良好定义的结构,可以为讲授图形学理论和实践这两方面都提供更好的基础,而且OpenGL同样也可以为讲授包括纹理映射、合成以及可编程着色器在内的一些高级概念提供更好的基础。
大约25年前,Edward Angel就开始在授课时使用OpenGL,结果令他欣喜若狂。到了学期中间,每个学生都能够编写一个中等复杂程度的三维图形应用程序,而编写这样的程序需要理解三维观察和事件驱动的输入。在以往的计算机图形学教学中,Edward Angel从未获得如此好的教学效果,那次课程孕育出本书的第一版。
本书是关于计算机图形学的教材,而不是OpenGL或者WebGL使用手册。因此,它并不涵盖WebGL API的所有方面,而仅说明了掌握本书内容所必需的那部分。因此,本书在介绍WebGL时的定位是允许使用其他API的用户可以毫无困难地阅读本书。
与早期版本不同,这一版使用WebGL和JavaScript来编写所有的示例。WebGL 2.0是OpenGL ES 3.0的JavaScript实现,可在最新的浏览器中运行。由于HTML5的支持,WebGL不但提供了和其他应用程序的兼容性,而且不依赖于特定的平台。WebGL在浏览器中运行,并且可以充分利用本地图形硬件。虽然JavaScript不是我们讲授编程课程常用的语言,但它是一种Web语言。在过去的几年中,JavaScript变得越来越强大。经验告诉我们,那些熟悉Java、Python、C或者C语言的学生在使用JavaScript编程时几乎没有遇到困难。为了使本书能够继续支持具有不同背景的广泛读者,我们保留了仅需ES5的JavaScript基本内容。对JavaScript有更多经验的学生可以毫不费力地更新我们的示例和库,从而利用ES6中包含的强大的JavaScript新特性①。
包括WebGL在内的所有现代OpenGL版本都要求每个应用程序提供两个着色器,这两个着色器用OpenGL着色器语言(OpenGL Shading Language,GLSL)编写。GLSL类似于C语言,但增加了向量和矩阵作为基本类型,并含有一些C语言特性(例如运算符重载)。我们提供了一个JavaScript库MV.js,不仅支持我们使用的图形函数表示,还支持GLSL中的类型和操作。这个库还包含许多函数,这些函数执行的操作等效于OpenGL早期固定功能版本中不推荐使用的那些函数。
适用的读者
本书适用于计算机科学与工程专业的高年级本科生和一年级研究生,以及具有良好编程能力的其他专业的学生。本书对于许多专业人员也具有参考价值。我们已经成功地为专业人员讲授了100多次短期课程(包括在SIGGRAPH年会上介绍的许多课程,另外YouTube上的SIGGRAPH University频道也提供了其中的两门课程),甚至还有Coursera提供的大型在线开放课程(MOOC)。从这些非传统意义的学生身上获得的经验极大地影响了本书的内容。
在阅读本书之前,读者应该具备JavaScript、Python、C、C或Java语言的良好编程能力,理解基本的数据结构(数组、链表和树),并具有线性代数和三角学的基础知识。我们发现,计算机科学专业学生的数学背景差异很大,不管是本科生还是研究生都是如此。因此,本书包含了很多计算机图形学基础所需的线性代数和几何学知识。
本书的组织
本书内容组织如下:
第1章概述了计算机图形学,并介绍了光学设备的成像方法,这样我们从一开始就引入了三维的概念。
第2章介绍了WebGL编程。虽然编写的第一个示例程序是二维的(每一章都有一个或者多个完整的编程示例),但这个程序是嵌入在三维设置下编写的,可以扩展到三维。
第3章介绍了交互式图形,并在浏览器环境中开发了基于事件驱动的图形程序。
第4章和第5章着重讨论了三维图形学的相关概念。第4章讨论了如何定义和处理三维对象,而第5章讨论了如何观察它们。
第6章介绍了光线与材质之间的相互作用和着色。
第7章和第8章介绍了如今被图形硬件和WebGL所支持的许多新的离散技术。所有这些技术都涉及各种缓存的使用。第7章将重点放在具有单个纹理的经典纹理映射上,而第8章则将重点放在使用离屏缓存(off-screen buffer)的纹理映射上。
上述这些章应按顺序讲授,在一个总共15周的学期里,大约10周可以讲完这些内容。
后面的5章可以按照任意顺序阅读。这5个主题或多或少是开放性的,读者可以概览,也可以深入探讨其中的一些主题。
第9章包含层级建模主题中的若干内容,涉及从层级模型(封装了模型各部分之间的关系)的构造到因特网图形绘制的高级方法。这一章还包含对场景图的介绍。
第10章介绍了许多过程方法,包括粒子系统、分形和过程噪声。
第11章讨论了曲线与曲面,包括细分曲面。
第12章讨论了实现。对三维图形绘制流水线中的每个基本步骤(包括裁剪、线段生成和多边形填充)都给出了一种或两种主要算法。
最后,第13章介绍了一些其他的高级绘制方法。进一步讨论了光线跟踪和辐射度方法,并介绍了基于图像的绘制、并行绘制以及虚拟现实和增强现实的概念。
本书包含几个附录,以提供额外参考:
附录A提供了读取、编译和链接应用程序与着色器所需的WebGL函数的详细信息。
附录B和附录C包含了

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.