《计算机图形学 OpenGL版 第3版》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(美)希尔,(美)克雷著,胡事民等译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302186977
  • 页数:706 页
图书介绍:本书是一本国外很有影响的教材,为许多国外著名大学所采用。本书通过最能代表技术发展状况的示例综合介绍了计算机图形学方面的原则和技巧,本书对每个概念都进行了详细介绍,阐述了其背后的数学原理,并给出了用OpenGL实现的代码以及实现结果展示。

第1章 计算机图形学概述 1

1.1什么是计算机图形学 1

1.2计算机生成的图片用在哪里 3

1.2.1艺术、娱乐和出版行业 3

1.2.2计算机图形学、感知和图像处理 7

1.2.3过程监视 7

1.2.4仿真显示 8

1.2.5计算机辅助设计 8

1.2.6科学分析与体可视化 9

1.3计算机图形学中制作图像的基本元素 11

1.3.1折线 11

1.3.2文本 13

1.3.3填充区域 14

1.3.4光栅图像 15

1.3.5光栅图像的灰度和色彩表达 18

1.4图形显示设备 21

1.4.1线画显示 21

1.4.2光栅显示器 21

1.4.3视频卡/3D加速器 24

1.4.4其他的光栅显示设备 26

1.4.5硬拷贝光栅设备 27

1.5图形输入的基本单元和设备 28

1.5.1逻辑上的输入图形基元类型 28

1.5.2物理输入设备的类型 29

本章小结 31

本章习题 32

进一步阅读 32

第2章 OpenGL绘图入门 33

2.1生成图像初步 33

2.1.1设备无关的编程和OpenGL 35

2.1.2窗口的编程 36

2.1.3如何打开一个窗口画图 38

2.2 OpenGL的基本图形元素 40

2.2.1几个点丛绘制的例子 43

2.3 OpenGL中的直线绘制 50

2.3.1绘制折线和多边形 51

2.3.2使用moveTo()和lineTo()绘制线段 57

2.3.3绘制边校正的矩形 58

2.3.4边校正矩形的长宽比 58

2.3.5填充多边形 60

2.3.6 OpenGL中的其他图形元素 61

2.4与鼠标和键盘的交互 62

2.4.1用鼠标交互 62

2.4.2键盘交互 66

2.5程序中的菜单设计与使用 67

本章小结 71

案例分析 71

进一步阅读 80

第3章 更多的绘图工具 81

3.1概述 81

3.2世界窗口和视口 83

3.2.1窗口到视口的映射 86

3.3裁减线 95

3.3.1如何裁减一条线 95

3.3.2 Cohen-Sutherland裁减算法 96

3.4正多边形、圆和圆弧 99

3.4.1正多边形 99

3.4.2正n边形的变种 100

3.4.3绘制圆弧和圆 104

3.4.4曲线的逐次细化 105

3.5曲线的参数形式 107

3.5.1曲线的参数形式 107

3.5.2绘制参数曲线 110

3.5.3极坐标形状 111

本章小结 113

案例分析 114

进一步阅读 120

第4章 图形学中的向量工具 121

4.1概述 121

4.2向量回顾 124

4.2.1向量基本运算法则 125

4.2.2向量线性组合 126

4.2.3向量的度量和单位向量 127

4.3点积 128

4.3.1点积的性质 129

4.3.2两个向量的夹角 129

4.3.3 b·c的符号和正交性 130

4.3.4二维正交向量 132

4.3.5正交投影和点到直线的距离 133

4.3.6投影的应用:反射 135

4.4两个向量的叉积 136

4.4.1叉积的几何解释 137

4.4.2求平面的法向量 138

4.4.3判断平面多边形的凸性 139

4.5重要几何对象的表示 140

4.5.1坐标系统和坐标框架 141

4.5.2点的仿射组合 143

4.5.3两个点的线性插值 145

4.5.4使用内插的艺术和动画 145

4.5.5预览:用二次、三次内插生成贝塞尔曲线 148

4.5.6表示直线和平面 149

4.6求两个线段的交点 154

4.6.1直线求交的应用:过三点的圆 155

4.7直线和平面求交及裁剪 157

4.8多边形求交问题 160

4.8.1处理凸多边形和凸多面体 161

4.8.2射线与凸多边形的交点以及裁剪问题 161

4.8.3 Cyrus-Beck裁剪算法 164

4.8.4更高级的裁剪问题 166

本章小结 167

案例分析 168

进一步阅读 172

第5章 物体变换 173

5.1概述 174

5.2几何变换初步 174

5.2.1点和物体变换 177

5.2.2仿射变换 179

5.2.3二维基本仿射变换的几何效果 180

5.2.4仿射变换的逆变换 184

5.2.5组合一个仿射变换 185

5.2.6二维组合变换的实例 186

5.2.7仿射变换的一些有用的性质 189

5.3三维仿射变换 193

5.3.1基本三维变换 193

5.3.2组合一个三维仿射变换 197

5.3.3旋转的组合 198

5.3.4总结三维仿射变换的性质 202

5.4如何实现坐标系变换 202

5.5在程序中使用仿射变换 206

5.5.1为后面的使用保存CT 212

5.6使用OpenGL绘制三维场景 215

5.6.1观察过程和图形绘制管道概述 215

5.6.2 OpenGL中的建模和视点工具 218

5.6.3用OpenGL绘制基本形状 221

5.6.4使用SDL从文件中读取一个场景的描述 230

本章小结 234

案例分析 235

进一步阅读 238

第6章 使用多边形网格建模 239

6.1概述 240

6.2多边形网格实体建模初步 241

6.2.1定义多边形网格 242

6.2.2 3D文件格式举例 244

6.2.3计算法向量 245

6.2.4网格的性质 246

6.2.5非实体对象的网格模型 248

6.2.6在程序中使用网格 248

6.3多面体 251

6.3.1棱柱 252

6.3.2柏拉图实体 253

6.3.3其他有趣的多面体 258

6.4拉伸形体 259

6.4.1生成棱柱 259

6.4.2带“扭结”的拉伸 261

6.4.3离散扫掠而成的旋转曲面 268

6.5用网格逼近光滑物体 269

6.5.1曲面的表示 270

6.5.2曲面的法向量 271

6.5.3仿射变换的影响 273

6.5.4三个“通用”形体:球面、柱面和锥面 274

6.5.5构造弯曲曲面的多边形网格 277

6.5.6直纹面 279

6.5.7旋转曲面 281

6.5.8基于3D曲线的管状体 284

6.5.9基于双变量显式函数的曲面 284

6.6粒子系统与基于物理的系统 285

6.6.1粒子系统 285

6.6.2基于物理的系统 286

本章小结 287

案例分析 288

进一步阅读 294

第7章 三维观察 295

7.1概述 295

7.2再次研究摄像机 296

7.2.1设置视景体 297

7.2.2摄像机的定位和定向 297

7.3在程序中指定一个摄像机 301

7.3.1交互地移动摄像机 303

7.4三维物体的透视投影 307

7.4.1点的透视投影 308

7.4.2直线的透视投影 310

7.4.3在图形绘制管道中加入透视投影 313

7.5生成立体视图 326

7.6投影的分类 327

7.6.1一点、两点以及三点透视 328

7.6.2平行投影的类型 330

本章小结 334

案例分析 334

进一步阅读 336

第8章 几何体的真实感渲染 337

8.1概述 337

8.2渲染模型 340

8.2.1影响反射光的几何因素 341

8.2.2如何计算漫反射分量 342

8.2.3镜面反射 343

8.2.4环境光的作用和人类的视觉感知 346

8.2.5如何综合光的贡献 347

8.2.6增加颜色 347

8.2.7渲染和图形管线 350

8.2.8在OpenGL中使用光源 351

8.2.9在OpenGL中使用材质属性 355

8.2.10渲染SDL设定的场景 356

8.3平面着色与平滑着色 357

8.3.1平面着色和马赫带 358

8.3.2平滑着色 359

8.4增加隐藏面消隐 362

8.4.1深度缓存方法——OpenGL使用的方法 362

8.5为面片添加纹理 365

8.5.1在平面上贴纹理 367

8.5.2渲染纹理 369

8.5.3什么是纹理调和 376

8.5.4一个OpenGL纹理的例子 377

8.5.5在曲面上卷绕纹理 382

8.5.6反射映射 386

8.6给物体添加阴影 389

8.6.1阴影简介 389

8.6.2利用阴影缓冲区绘制阴影 391

8.6.3辐射度的简要介绍 393

8.7 OPENGL2.0和着色语言(GLSL) 393

8.7.1凹凸贴图 394

8.7.2非真实感绘制 395

本章小结 396

案例分析 397

进一步阅读 398

第9章 光栅显示工具 399

9.1概述 399

9.2处理像素映射 401

9.2.1对像素映射的操作 401

9.2.2对像素映射有用的数据类型 402

9.2.3图像缩放和旋转 407

9.3合并像素映射 409

9.3.1读-改-写循环 410

9.3.2 alpha通道和图像融合 410

9.3.3像素的逻辑合并 414

9.3.4 BitBLT操作 418

9.4自己实现直线绘制:Bresenham算法 419

9.4.1 Bresenham直线绘制算法 420

9.5定义和填充像素区域 429

9.5.1区域定义 429

9.6处理符号定义的区域 430

9.6.1矩形定义的区域 430

9.6.2路径定义的区域 431

9.7填充多边形定义的区域 432

9.7.1边界上的哪些像素属于多边形 433

9.7.2改进算法性能 436

9.8走样和反走样技术 439

9.8.1反走样技术 440

9.8.2纹理的反走样 443

9.8.3使用OpenGL反走样 446

9.9生成更多的明暗效果和色彩 447

9.9.1误差扩散 448

本章小结 450

案例分析 451

进一步阅读 452

第10章 曲线和曲面设计 453

10.1概述 453

10.1.1作为运动轨迹的参数曲线 454

10.1.2运动的光滑性 454

10.2用多项式描述曲线 458

10.3关于交互式曲线设计 461

10.4用贝塞尔曲线进行曲线设计 463

10.4.1德卡斯特里奥算法 464

10.5贝塞尔曲线的性质 468

10.6寻找更好的混合函数 472

10.6.1局部控制问题 472

10.6.2混合函数集的性质 473

10.6.3分段多项式曲线和样条 475

10.6.4根据g(t)建立一组混合函数 476

10.6.5样条曲线和基函数 479

10.7 B样条基函数 480

10.7.1 B样条函数的定义 480

10.7.2如何利用节点向量中的多重节点 484

10.7.3非封闭B样条曲线:标准节点向量 485

10.8 B样条曲线在设计中的重要性质 488

10.8.1多重控制顶点 489

10.9有理曲线和非均匀有理B样条曲线 490

10.10插值一瞥 494

10.10.1利用分段三次多项式插值 494

10.10.2 Hermite插值 496

10.10.3自然三次样条 498

10.10.4三次样条插值中斜率的计算 500

10.10.5交互指定切向量 503

10.11自由曲面造型 504

10.11.1基于B样条的直纹面 504

10.11.2基于B样条的旋转曲面 505

10.11.3贝塞尔曲面片 506

10.11.4贝塞尔曲面片的拼接 507

10.11.5 B样条曲面片 509

10.11.6 NURBS曲面 510

10.11.7细分曲面 511

本章小结 513

案例分析 514

进一步阅读 522

第11章 颜色理论 523

11.1概述 523

11.1.1眼睛:人类颜色感知的生理学基础 524

11.1.2红绿蓝色盲 526

11.2颜色描述 526

11.2.1主导波长 526

11.2.2颜色感知和匹配 527

11.3 CIE标准 529

11.3.1构造CIE色度图 531

11.3.2 CIE色度图的应用 532

11.3.3色域 533

11.4颜色空间 534

11.4.1 RGB颜色空间 535

11.4.2加/减色系统 535

11.4.3 HLS颜色模型 537

11.5索引颜色和颜色查找表 538

11.6颜色量化 540

11.6.1均匀量化 541

11.6.2流行度算法 543

11.6.3中值切分算法 544

11.6.4八叉树量化 545

本章小结 547

案例分析 547

进一步阅读 549

第12章 光线跟踪基础 550

12.1前言 551

12.2建立光线跟踪的几何场景 552

12.3光线跟踪过程纵览 554

12.4光线与物体求交 555

12.4.1光线与通用平面求交 556

12.4.2光线与通用球面求交 557

12.4.3光线与仿射变换后的物体求交 558

12.5一个光线跟踪器的应用 560

12.5.1光线和球体的求交程序 565

12.5.2一个完整的光线跟踪器 567

12.6光线和其他基本几何体求交 568

12.6.1与正方形求交 568

12.6.2与锥形柱体求交 569

12.6.3与立方体(或任何凸多面体)求交 571

12.6.4添加更多的基本形状 576

12.7绘制场景的明暗图 577

12.7.1计算交点处的法向量 578

12.7.2根据物体的表面材质为其着色 578

12.7.3基于物理的明暗着色模型—Cook Torrance明暗处理 580

12.8添加表面纹理 585

12.8.1体纹理 586

12.8.2在表面上粘贴图像 594

12.9光线跟踪算法中的反走样技术 596

12.10包围盒技术 597

12.10.1长方体和球体包围盒 599

12.10.2投影包围盒 603

12.10.3其他光线跟踪加速方法:二叉空间剖分树技术 605

12.11添加阴影 607

12.12反射与透明 610

12.12.1光线的折射 612

12.12.2在函数shade()中处理折射 616

12.13复合体:物体上的布尔操作 618

12.13.1 CSG体的光线跟踪 620

12.13.2布尔物体的数据结构 622

12.13.3布尔体与光线的交 624

12.13.4为CSG物体构建和使用包围盒 627

12.14光线跟踪与光线投射 628

本章小结 629

案例分析 630

进一步阅读 632

附录1 图形工具:怎样获取和安装OpenGL 633

A1.1获取和安装OpenGL 633

附录2 计算机图形学的数学基础 636

A2.1一些关于矩阵及其运算的主要定义 636

A2.1.1矩阵运算 636

A2.1.2两个矩阵相乘 637

A2.1.3矩阵分块 639

A2.1.4矩阵的行列式 639

A2.1.5矩阵的逆 640

A2.2向量及其运算的一些性质 641

A2.2.1向量的正交、正交点积 641

A2.3球坐标和方向余弦 642

附录3 有用的类、例程以及SDL 644

A3.1 2D图形类 644

A3.1.1基本2D图形类 644

A3.1.2场景和支持类 652

A3.1.3一些用于光线跟踪的类 680

A3.1.4 SDL:场景描述语言 682

A3.1.5 Scene类 683

A3.2 SDL语法 683

A3.3 SDL中的宏 687

A3.4扩展SDL 688

附录4 分形和曼德布洛特集合 690

A4.1引言 690

A4.2分形和自相似 690

A4.3曼德布洛特集合 691

A4.3.1曼德布洛特集合和迭代函数系统 691

A4.3.2如何判断点c是否属于曼德布洛特集合 693

A4.3.3描绘曼德布洛特集合 694

A4.3.4曼德布洛特集合的一些注释 696

附录5 相对性和海龟绘图 698

A5.1编写moveRel()和lineRel()函数 698

A5.2海龟绘图法 699

A5.2.3绘制曲径 702

A5.2.4其他类型的曲径 702

A5.3基于正多边形的图 702

A5.3.1正多边形 703

A5.3.2 n-gon的变种 704