《国外经典教材 计算机科学与技术 交互式计算机图形学 基于OPENGL的自顶向下方法 第4版》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:(美)EDWARD ANGEL著;吴文国译(新墨西哥州大学)
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2007
  • ISBN:9787302152651
  • 页数:685 页
图书介绍:本书从OpenGL软件编程的角度讨论图形学的基本原理和算法。

第1章 图形系统和模型 1

1.1 计算机图形学的应用 1

1.1.1 信息的显示 2

1.1.2 设计 2

1.1.3 仿真与动画 3

1.1.4 用户界面 3

1.2 计算机图形系统 4

1.2.1 像素与帧缓存 5

1.2.2 输出设备 6

1.2.3 输入设备 8

1.3 图像:物理方法和人工合成方法 8

1.3.1 对象与观察者 9

1.3.2 光照与图像 10

1.3.3 成像模型 12

1.4 成像系统 13

1.4.1 针孔照相机 13

1.4.2 人眼视觉系统 15

1.5 虚拟照相机模型 16

1.6 程序员接口 18

1.6.1 笔式绘图仪模型 19

1.6.2 三维API软件包 21

1.6.3 彩图介绍 23

1.6.4 建模-绘制模式 24

1.7 图形系统的体系结构 25

1.7.1 显示处理器 25

1.7.2 流水线体系结构 26

1.7.3 图形处理流水线 27

1.7.4 顶点处理 27

1.7.5 裁剪与图元组装 28

1.7.6 光栅化 28

1.7.7 片元处理 28

1.8 可编程流水线 28

1.9 性能特性 29

1.10 小结 30

1.11 补充阅读材料 30

1.12 习题 31

第2章 图形学编程 33

2.1 Sierpinski镂垫 33

2.2 编写二维应用程序 34

2.3 OpenGL API工具包 39

2.3.1 图形函数 40

2.3.2 图形流水线和状态机 41

2.3.3 OpenGL接口 41

2.4 图元与属性 42

2.4.1 多边形基本概念 44

2.4.2 OpenGL里的多边形类型 46

2.4.3 球体的近似表示 47

2.4.4 字符 48

2.4.5 曲线和曲面 50

2.4.6 属性 50

2.5 颜色 51

2.5.1 RGB颜色 53

2.5.2 索引颜色 55

2.5.3 设置颜色属性 56

2.6 视图处理 57

2.6.1 正交视图 57

2.6.2 二维视图 60

2.6.3 矩阵模式 60

2.7 控制函数 61

2.7.1 与Windows操作系统的交互作用 61

2.7.2 纵横比和视口 63

2.7.3 main、display和myinit函数 64

2.7.4 程序结构 65

2.8 Sierpinski镂垫程序 65

2.9 多边形与递归 67

2.10 三维Sierpinski镂垫 69

2.10.1 使用三维点 69

2.10.2 在三维空间里使用多边形 71

2.10.3 隐藏面消除 73

2.11 描绘隐函数曲线 74

2.12 小结 82

2.13 补充阅读材料 83

2.14 习题 84

第3章 输入与交互 87

3.1 交互模式 87

3.2 输入设备 88

3.2.1 物理输入设备 89

3.2.2 逻辑设备 92

3.2.3 输入模式 92

3.3 客户-服务器结构 94

3.4 显示列表 95

3.4.1 显示列表的定义和运行 97

3.4.2 字符和显示列表 98

3.4.3 GLUT库里的字体 101

3.5 事件驱动编程 102

3.5.1 使用指向输入设备 102

3.5.2 窗口事件 105

3.5.3 键盘事件 106

3.5.4 显示函数和空闲回调函数 106

3.5.5 窗口管理 107

3.6 菜单 108

3.7 拾取 109

3.8 一个简单的画图程序 115

3.9 建立交互模型 120

3.10 交互式动画程序 123

3.10.1 旋转的正方形 123

3.10.2 双缓存 125

3.10.3 使用定时器 126

3.11 交互式程序的设计 127

3.12 逻辑运算 128

3.12.1 绘制可删除的直线 129

3.12.2 异或操作(XOR)和颜色 132

3.12.3 光标与覆盖层位平面 132

3.13 小结 133

3.14 补充阅读材料 134

3.15 习题 134

第4章 几何对象与坐标变换 138

4.1 标量、点和矢量 138

4.1.1 几何对象 139

4.1.2 与坐标无关的几何对象 141

4.1.3 数学观点:矢量与仿射空间 141

4.1.4 计算机科学的观点 142

4.1.5 几何抽象数据类型 142

4.1.6 直线 144

4.1.7 仿射加 144

4.1.8 凸性 145

4.1.9 点积和叉积 146

4.1.10 平面 147

4.2 三维几何图元 148

4.3 坐标系与标架 150

4.3.1 矢量表示与N-元组 152

4.3.2 坐标系变换 153

4.3.3 表示变换的示例 155

4.3.4 齐次坐标 156

4.3.5 标架变换的示例 159

4.3.6 表示矩阵的运算处理 161

4.4 OpenGL里的标架系统 162

4.5 建立一个彩色立方体模型 166

4.5.1 立方体模型 166

4.5.2 内侧面与外侧面 167

4.5.3 对象表示的数据结构 168

4.5.4 彩色立方体 169

4.5.5 双线性插值 169

4.5.6 顶点数组 171

4.6 仿射变换 173

4.7 平移、旋转和缩放 175

4.7.1 平移变换 175

4.7.2 旋转变换 176

4.7.3 缩放变换 178

4.8 齐次坐标表示的变换公式 179

4.8.1 平移 180

4.8.2 缩放 181

4.8.3 旋转 181

4.8.4 剪切变换 183

4.9 变换的串乘运算 184

4.9.1 绕某一固定点的旋转 185

4.9.2 一般的旋转变换 186

4.9.3 实例变换 187

4.9.4 绕任一轴旋转 188

4.10 OpenGL中的变换矩阵 192

4.10.1 当前变换矩阵 192

4.10.2 旋转、平移和缩放 193

4.10.3 在OpenGL中绕固定点旋转 194

4.10.4 变换次序 194

4.10.5 立方体的旋转 195

4.10.6 矩阵的装载、压栈和弹栈操作 196

4.11 三维应用程序的交互方式 197

4.11.1 利用屏幕区域设置交互 197

4.11.2 一个虚拟跟踪球 198

4.11.3 平滑旋转 199

4.11.4 递增式旋转 200

4.12 四元数 201

4.12.1 复数与四元数 201

4.12.2 四元数与旋转 202

4.13 小结 204

4.14 补充阅读材料 205

4.15 习题 205

第5章 视图 208

5.1 经典视图和计算机视图 208

5.1.1 经典视图 210

5.1.2 正射投影 210

5.1.3 轴测法投影 211

5.1.4 斜投影 212

5.1.5 透视图 213

5.2 计算机视图 214

5.3 照相机定位 215

5.3.1 照相机标架的定位 215

5.3.2 两个视图处理API工具包 220

5.3.3 Look-At函数 223

5.3.4 其他视图API工具包 224

5.4 简单投影 225

5.4.1 透视投影 225

5.4.2 正交投影 228

5.5 OpenGL的投影视图 229

5.5.1 OpenGL的透视投影 230

5.5.2 OpenGL的平行视图 232

5.6 隐藏面消除 232

5.7 交互式网格显示 234

5.7.1 网格 234

5.7.2 在场景中漫游 236

5.7.3 多边形偏移 238

5.8 平行投影矩阵 239

5.8.1 投影归一化 239

5.8.2 正交投影矩阵 240

5.8.3 斜投影 242

5.9 透视投影矩阵 244

5.9.1 透视正则化 245

5.9.2 OpenGL的透视变换 248

5.10 投影与阴影 249

5.11 小结 252

5.12 补充阅读材料 253

5.13 习题 253

第6章 明暗处理 255

6.1 光与材质 255

6.2 光源 258

6.2.1 彩色光源 259

6.2.2 环境光 260

6.2.3 点光源 260

6.2.4 聚光灯 261

6.2.5 远距离光源 262

6.3 Phong反射模型 263

6.3.1 环境反射 265

6.3.2 漫反射 265

6.3.3 镜面反射 266

6.3.4 改进的Phong模型 268

6.4 矢量计算 269

6.4.1 法向矢量 270

6.4.2 反射角度 272

6.5 多边形的明暗处理 273

6.5.1 平面明暗处理 274

6.5.2 插值和Gouraud明暗处理方法 276

6.5.3 Phong明暗处理方法 277

6.6 球面的递归细分逼近 278

6.7 OpenGL中的光源 282

6.8 OpenGL程序中的材质设置 284

6.9 球体模型的明暗处理 285

6.10 全局照明 287

6.11 小结 288

6.12 补充阅读材料 289

6.13 习题 290

第7章 从顶点到片元 292

7.1 绘制实现的基本策略 292

7.2 绘制实现过程的4个主要任务 294

7.2.1 建模 295

7.2.2 几何处理 295

7.2.3 光栅化 296

7.2.4 片元处理 297

7.3 裁剪 297

7.4 线段裁剪 298

7.4.1 Cohen-Sutherland裁剪算法 298

7.4.2 Liang-Barsky裁剪算法 300

7.5 多边形裁剪 301

7.6 其他图元的裁剪 305

7.6.1 包围盒与包围体 305

7.6.2 曲线、曲面和字符 306

7.6.3 帧缓存里的裁剪操作 307

7.7 三维裁剪 307

7.8 光栅化 310

7.9 Bresenham算法 313

7.10 多边形光栅化 315

7.10.1 内外测试法 315

7.10.2 OpenGL与凹多边形 317

7.10.3 填充与排序 318

7.10.4 泛洪填充法 318

7.10.5 奇异性 319

7.11 隐藏面消除 319

7.11.1 景物空间和图像空间 319

7.11.2 排序与隐藏面消除 321

7.11.3 扫描线填充算法 321

7.11.4 背面剔除 323

7.11.5 Z-Buffer算法 324

7.11.6 带Z-Buffer算法的扫描转换 326

7.11.7 深度排序和画家算法 327

7.12 反走样 330

7.13 显示器因素 332

7.13.1 颜色系统 332

7.13.2 颜色矩阵 335

7.13.3 γ校正 336

7.13.4 抖动技术与半色调技术 336

7.14 小结 337

7.15 补充阅读材料 339

7.16 习题 339

第8章 离散技术 342

8.1 缓存 342

8.2 数字图像 344

8.3 缓存写操作 346

8.3.1 写入模式 347

8.3.2 异或写入模式 349

8.4 OpenGL的位运算与像素运算 349

8.4.1 OpenGL缓存和像素管道 350

8.4.2 位图 351

8.4.3 光栅字体 352

8.4.4 像素与图像 353

8.4.5 查找表 354

8.5 示例 356

8.5.1 Mandelbrot集合 356

8.5.2 验证第7章的算法 358

8.5.3 用于拾取操作的缓存 359

8.6 映射方法 359

8.7 纹理映射 361

8.8 OpenGL的纹理映射 366

8.8.1 二维纹理映射 367

8.8.2 纹理采样 369

8.8.3 纹理坐标设置 372

8.8.4 纹理对象 374

8.8.5 多纹理通道 374

8.9 纹理生成过程 375

8.10 环境贴图 376

8.11 合成技术 380

8.11.1 不透明性与融合 381

8.11.2 图像合成 382

8.11.3 OpenGL中的融合与图像合成 382

8.11.4 反走样 383

8.11.5 从后至前绘制与从前至后绘制 385

8.11.6 景深提示和雾效果 386

8.12 多通道绘制与累加缓存 387

8.12.1 场景反走样 388

8.12.2 凹凸贴图和浮雕效果 388

8.12.3 图像处理 389

8.12.4 OpenGL的图像处理扩展集 390

8.12.5 其他多通道方法 390

8.13 采样与走样 391

8.13.1 采样理论 391

8.13.2 重构 396

8.13.3 量化 398

8.14 小结 398

8.15 补充阅读材料 399

8.16 习题 400

第9章 可编程着色器 402

9.1 可编程流水线 402

9.2 着色语言 403

9.3 OpenGL功能扩展 405

9.3.1 OpenGL版本和扩展集 405

9.3.2 GLSL和Cg 406

9.4 OpenGL着色语言(上) 406

9.4.1 顶点着色器 406

9.4.2 片元着色器 408

9.5 OpenGL着色语言(下) 409

9.5.1 GLSL执行过程 409

9.5.2 数据类型与修饰符 410

9.5.3 运算符与函数 412

9.6 着色器连接到OpenGL程序 413

9.7 顶点移动 415

9.7.1 缩放顶点位置 415

9.7.2 渐变效果 416

9.7.3 粒子系统 417

9.8 光照作用与着色器 418

9.8.1 Phong着色 418

9.8.2 非真实感着色 421

9.9 片元着色器 422

9.10 基于顶点与基于片元的Phong着色模型 422

9.11 采样器 424

9.12 立方体贴图 427

9.12.1 反射贴图 427

9.12.2 折射 429

9.12.3 法线贴图 432

9.13 凹凸映射 433

9.13.1 凹凸贴图的原理 433

9.13.2 高度场与凹凸映射 435

9.13.3 凹凸映射与片元着色器 436

9.13.4 示例 437

9.14 小结 438

9.15 补充阅读材料 439

9.16 习题 439

第10章 建模 441

10.1 图符与实例 441

10.2 层级模型 443

10.3 机器手 445

10.4 树与树的遍历 448

10.5 树形数据结构的应用 451

10.6 动画 455

10.7 图形对象 456

10.7.1 方法、属性和消息 457

10.7.2 一个立方体对象 458

10.7.3 实现立方体对象 460

10.7.4 对象与层级结构 460

10.7.5 几何对象 461

10.8 场景图 462

10.9 一个简单的场景图形API工具包 464

10.9.1 结点类 464

10.9.2 几何结点 466

10.9.3 照相机类 468

10.9.4 光源和材质 468

10.9.5 变换类 470

10.9.6 机器人类 470

10.9.7 实现观察者类 472

10.9.8 实现结点类 475

10.10 其他的树形结构 478

10.10.1 CSG树 479

10.10.2 BSP树 480

10.10.3 四叉树和八叉树 482

10.11 图形与因特网 484

10.11.1 网络与协议 484

10.11.2 超媒体与HTML语言 485

10.11.3 数据库与VRML 486

10.11.4 Java与Java小程序 487

10.12 过程建模 487

10.13 基于物理模型和粒子系统 489

10.14 牛顿粒子 490

10.14.1 独立粒子 491

10.14.2 弹簧力 492

10.14.3 吸引力与排斥力 493

10.15 粒子系统的求解方法 495

10.16 约束 497

10.16.1 碰撞 497

10.16.2 软约束 499

10.17 小结 500

10.18 补充阅读材料 501

10.19 习题 501

第11章 曲线与曲面 503

11.1 曲线和曲面的表示方法 503

11.1.1 显式表示法 503

11.1.2 隐式表示 504

11.1.3 参数形式 505

11.1.4 参数多项式曲线 507

11.1.5 参数多项式曲面 508

11.2 设计准则 509

11.3 三次多项式参数曲线 511

11.4 插值 512

11.4.1 调和函数 514

11.4.2 三次插值面片 515

11.5 Hermite曲线和曲面 517

11.5.1 Hermite形式 517

11.5.2 几何连续和参数连续 519

11.6 Bezier曲线和曲面 521

11.6.1 Bezier曲线 521

11.6.2 Bezier曲面面片 524

11.7 三次B-样条 525

11.7.1 三次B-样条曲线 525

11.7.2 B-样条与基函数 528

11.7.3 样条曲面 529

11.8 通用的B样条函数 530

11.8.1 B-样条的递归定义 530

11.8.2 均匀样条 531

11.8.3 非均匀B-样条 532

11.8.4 NURBS 532

11.9 曲线和曲面的绘制 533

11.9.1 多项式求值方法 534

11.9.2 Bezier多项式的递归细分 535

11.9.3 其他多项式曲线的细分绘制法 537

11.9.4 细分Bezier曲面 538

11.10 犹他大学的茶壶模型 540

11.11 代数曲面 541

11.11.1 二次曲面 542

11.11.2 曲面的光线跟踪绘制方法 542

11.11.3 曲线与曲面的细分方法 543

11.11.4 网格的细分方法 544

11.12 OpenGL里的曲线与曲面 547

11.12.1 Bezier曲线 547

11.12.2 Bezier曲面 548

11.12.3 绘制茶壶 549

11.12.4 NURBS函数 550

11.12.5 二次曲面对象 551

11.13 小结 551

11.14 补充阅读材料 552

11.15 习题 552

第12章 高级绘制 554

12.1 超越流水线绘制 554

12.2 光线跟踪 555

12.3 建立一个简单的光线跟踪器 558

12.3.1 光线跟踪的递归算法 558

12.3.2 求交计算 560

12.3.3 光线跟踪的变异形式 563

12.4 绘制方程 563

12.5 辐射度法 566

12.5.1 辐射度方程 566

12.5.2 求解辐射度方程 568

12.5.3 形状因子的计算方法 569

12.5.4 实现辐射度算法 571

12.6 RenderMan 572

12.7 大规模场景绘制 573

12.7.1 中排序绘制法 575

12.7.2 后排序绘制 576

12.7.3 先排序绘制 579

12.8 基于图像的绘制 580

12.9 小结 582

12.10 补充阅读材料 583

12.11 习题 583

附录A 实例程序 585

附录B 空间 645

附录C 矩阵 654

附录D OpenGL函数简介 663

参考文献 678