第1章 导言 1
1.1作为图像分析的图像处理 1
1.2交互式图形学的优点 2
1.3计算机图形学的典型用途 3
1.4 应用分类 4
1.5 计算机图形学硬件与软件的发展 5
1.5.1输出技术 6
1.5.2输入技术 10
1.5.3软件的可移植性与图形标准 11
1.6交互式图形学的概念框架 12
1.6.1概述 12
1.6.2应用建模 12
1.6.3对图形系统描绘观察的内容 13
1.6.4交互处理 14
1.7 小结 15
习题 15
第2章 简单光栅图形软件包(SRGP)的编程 17
2.1用SRGP画图 17
2.1.1图形图元的规格 17
2.1.2属性 21
2.1.3填充图元及其属性 22
2.1.4存储和恢复属性 25
2.1.5文本 26
2.2基本交互处理 27
2.2.1人的因素 27
2.2.2逻辑输入设备 28
2.2.3采样与事件驱动处理 28
2.2.4采样模式 30
2.2.5事件模式 31
2.2.6交互处理中的关联拾取 34
2.2.7设置设备度量和属性 35
2.3光栅图形特性 37
2.3.1 画布 37
2.3.2矩形框的裁剪 39
2.3.3 SRGP_copyPixel操作 39
2.3.4写模式或RasterOp 41
2.4 SRGP的局限性 42
2.4.1 应用程序坐标系统 42
2.4.2为了重新定义存储图元 43
2.5小结 45
习题 45
程序设计项目 47
第3章 二维图元的基本光栅图形学算法 49
3.1概述 49
3.1.1显示系统体系结构的含义 49
3.1.2软件中的输出流水线 52
3.2直线的扫描转换 52
3.2.1基本增量算法 53
3.2.2 中点线算法 54
3.2.3补充要点 57
3.3圆的扫描转换 59
3.3.1八方向对称性 59
3.3.2 中点圆算法 60
3.4椭圆的扫描转换 62
3.5填充矩形 65
3.6填充多边形 66
3.6.1水平边 68
3.6.2狭长条 68
3.6.3边相关性和扫描线算法 68
3.7填充椭圆弧区域 71
3.8图案填充 72
3.9宽图元 75
3.9.1复制像素 75
3.9.2移动画笔 76
3.9.3填充边界之间的区域 77
3.9.4用宽折线进行逼近 78
3.10线型和笔型 78
3.11 光栅空间的裁剪操作 79
3.12线段裁剪 80
3.12.1裁剪端点 80
3.12.2利用求解联立方程组的线段裁剪 81
3.12.3 Cohen-Sutherland线裁剪算法 81
3.12.4参数化的线裁剪算法 84
3.13圆和椭圆的裁剪 90
3.14多边形裁剪 90
3.15 生成字符 93
3.15.1定义和裁剪字符 93
3.15.2一种文本输出图元的实现 95
3.16 SRGP_copyPixel 96
3.17 反走样 96
3.17.1 增加分辨率 96
3.17.2未加权的区域采样 97
3.17.3加权区域采样 98
3.17.4 Gupta-Sproull反走样线扫描算法 101
3.18小结 103
习题 104
第4章 图形硬件 107
4.1 硬拷贝技术 108
4.2显示技术 113
4.3光栅扫描显示系统 120
4.3.1简单的光栅显示系统 120
4.3.2具有外围显示处理器的光栅显示系统 124
4.3.3显示处理器的附加功能 127
4.3.4具有集成显示处理器的光栅显示系统 129
4.4视频控制器 130
4.4.1查找表动画 131
4.4.2位图变换和窗口技术 132
4.4.3视频混合 133
4.5随机扫描显示处理器 134
4.6用于操作者交互的输入设备 136
4.6.1定位设备 136
4.6.2键盘设备 140
4.6.3定值设备 140
4.6.4选择设备 140
4.7图像扫描仪 141
习题 142
第5章 几何变换 145
5.1 维变换 145
5.2齐次坐标和二维变换的矩阵表示 147
5.3 维变换的合成 150
5.4窗口到视口的变换 152
5.5效率 153
5.6三维变换的矩阵表示 154
5.7三维变换的合成 157
5.8坐标系的变换 160
习题 163
第6章 三维空间的观察 165
6.1投影 165
6.1.1透视投影 166
6.1.2平行投影 167
6.2指定一个任意的三维视图 170
6.3三维观察的例子 173
6.3.1透视投影 175
6.3.2 平行投影 177
6.3.3有限的视见体 179
6.4平面几何投影的数学 180
6.5实现平面几何投影 183
6.5.1 平行投影 185
6.5.2透视投影 188
6.5.3用三维规范视见体进行裁剪 192
6.5.4在齐次坐标中裁剪 194
6.5.5映射到一个视口 197
6.5.6实现小结 197
6.6坐标系统 198
习题 199
第7章 对象的层次结构和简单的PHIGS系统 203
7.1 几何造型 204
7.1.1什么是模型 204
7.1.2 几何模型 205
7.1.3 何模型中的层次 205
7.1.4模型、应用程序和图形系统间的关系 207
7.2保留模式图形包的特点 208
7.2.1 中央结构存储库及其优点 208
7.2.2保留模式软件包的局限性 209
7.3定义和显示结构 209
7.3.1打开和关闭结构 209
7.3.2定义输出图元及其属性 210
7.3.3提交结构进行显示遍历 212
7.3.4 见察 213
7.3.5 通过窗口管理共享屏幕的图像应用 215
7.4模型变换 216
7.5层次式结构网络 219
7.5.1两层层次结构 219
7.5.2简单的三层层次结构 220
7.5.3自底向上构造的机器人 221
7.5.4交互式造型程序 223
7.6显示遍历中的矩阵合成 223
7.7层次结构中外观属性的处理 226
7.7.1继承法则 226
7.7.2 SPHIGS的属性及文字不受变换影响 227
7.8屏幕的更新和绘制模式 228
7.9 用于动态效果的结构网络编辑 229
7.9.1利用索引和标记访问元素 229
7.9.2内部结构的编辑操作 230
7.9.3改进编辑方法的一些实例块 230
7.9.4如何控制屏幕图像的自动再生 232
7.10交互 232
7.10.1定位器 233
7.10.2关联拾取 233
7.11其他输出特性 235
7.11.1属性包 235
7.11.2高亮度与不可见性的名字集 236
7.11.3图像交换与元文件 236
7.12实现问题 237
7.12.1绘制 237
7.12.2关联拾取 240
7.13层次模型的优化显示 241
7.13.1省略 241
7.13.2参考结构 242
7.14 PHIGS中层次模型的局限性 242
7.14.1简单层次结构的局限性 242
7.14.2 SPHIGS“参数传递”的局限性 242
7.15层次建模的其他形式 243
7.15.1过程层次 243
7.15.2数据层次 244
7.15.3利用数据库系统 244
7.16 小结 245
习题 245
第8章 输入设备、交互技术与交互任务 247
8.1交互硬件 248
8.1.1定位设备 249
8.1.2键盘设备 250
8.1.3定值设备 250
8.1.4选择设备 250
8.1.5其他设备 251
8.1.6三维交互设备 252
8.1.7设备级人的因素 254
8.2基本交互任务 254
8.2.1定位交互任务 254
8.2.2选择交互任务——大小可变的选项集合 256
8.2.3选择交互任务——相对固定大小的选项集合 259
8.2.4文本交互任务 264
8.2.5定量交互任务 265
8.2.6三维交互任务 266
8.3复合交互任务 270
8.3.1 对话框 270
8.3.2构造技术 270
8.3.3动态操纵 273
习题 275
第9章 对话设计 277
9.1 人机对话的形式和内容 278
9.2用户界面风格 280
9.2.1所见即所得 280
9.2.2直接操纵 281
9.2.3图标化用户界面 282
9.2.4其他对话形式 284
9.3一些重要的设计问题 285
9.3.1一致性 285
9.3.2提供反馈 287
9.3.3减少错误概率 288
9.3.4提供错误恢复 289
9.3.5容许多种熟练级别 290
9.3.6减少记忆 292
9.4模式和语法 292
9.5视觉设计 295
9.5.1视觉清晰性 295
9.5.2视觉编码 298
9.5.3视觉的一致性 300
9.5.4布局原则 301
9.6设计方法学 303
习题 304
第10章 用户界面软件 307
10.1基本的交互处理模型 307
10.2窗口管理系统 310
10.3窗口系统中的输出处理 312
10.4窗口系统中的输入处理 315
10.5交互技术工具箱 318
10.6用户界面管理系统 322
10.6.1 对话序列 322
10.6.2高级UIMS概念 328
习题 331
第11章 曲线与曲面的表示 333
11.1多边形网格 334
11.1.1多边形网格的表示 334
11.1.2多边形网格表示法的一致性 336
11.1.3平面方程 336
11.2三次参数曲线 337
11.2.1 Hermite曲线 341
11.2.2 Bézier曲线 344
11.2.3均匀非有理B样条曲线 346
11.2.4非均匀非有理B样条曲线 349
11.2.5非均匀有理三次多项式曲线段 355
11.2.6其他样条曲线 356
11.2.7曲线分割 358
11.2.8各种表示法之间的转换 360
11.2.9曲线绘制 360
11.2.10三次曲线的比较 363
11.3 三次参数曲面 364
11.3.1 Hermite曲面 365
11.3.2 B6zier曲面 367
11.3.3 B样条曲面 368
11.3.4曲面的法线 368
11.3.5双三次曲面的显示 369
11.4二次曲面 372
11.5小结 373
习题 373
第12章 实体造型 377
12.1实体表示 377
12.2 正则布尔集合运算 378
12.3基本实体举例法 381
12.4扫掠表示法 381
12.5边界表示法 383
12.5.1多面体和欧拉公式 383
12.5.2翼边表示法 385
12.5.3布尔集合运算 385
12.5.4非多边形的边界表示法 386
12.6空间划分表示法 387
12.6.1单元分解法 387
12.6.2空间位置枚举法 387
12.6.3八叉树表示法 388
12.6.4二元空间划分树 392
12.7构造实体几何 393
12.8各种表示法的比较 394
12.9实体造型的用户界面 396
12.10 小结 396
习题 397
第13章 消色差光与彩色光 399
13.1消色差光 399
13.1.1选择亮度值——gamma校正 399
13.1.2半色调逼近 402
13.2彩色 406
13.2.1心理物理学 407
13.2.2 CIE色度图 409
13.3用于光栅图形的颜色模型 412
13.3.1 RGB颜色模型 413
13.3.2 CMY颜色模型 414
13.3.3 YIQ颜色模型 415
13.3.4 HSV颜色模型 416
13.3.5 HLS颜色模型 418
13.3.6颜色的交互指定 421
13.3.7在颜色空间中进行插值 422
13.4颜色再现 422
13.5在计算机图形学中应用颜色 424
13.6 小结 425
习题 426
第14章 可视图像真实感的探讨 429
14.1为什么讨论真实感 429
14.2基本的困难 430
14.3线条图的绘制技术 431
14.3.1多正交视图 431
14.3.2轴测投影和斜投影 432
14.3.3透视投影 432
14.3.4深度提示 432
14.3.5深度裁剪 432
14.3.6纹理 433
14.3.7颜色 433
14.3.8 可见线的判定 433
14.4明暗图像的绘制技术 433
14.4.1 可见面的判定 433
14.4.2光照和明暗处理 433
14.4.3插值明暗处理 434
14.4.4材质属性 434
14.4.5曲面造型 434
14.4.6改进光照和明暗效果 434
14.4.7纹理 434
14.4.8阴影 434
14.4.9透明性和反射 435
14.4.10改进的相机模型 435
14.5改进的物体模型 435
14.6动力学 435
14.7立体观测 436
14.8改进的显示技术 436
14.9与其他感官的交互 437
14.10走样与反走样 437
14.10.1点采样 439
14.10.2区域采样 439
14.10.3采样理论 441
14.10.4滤波 445
14.10.5重构 450
14.10.6实际的反走样 454
14.11 小结 456
习题 456
第15章 可见面的判定 459
15.1 双变量函数 460
15.2 可见面判定算法中的常用技术 463
15.2.1相关性 464
15.2.2透视变换 464
15.2.3范围与包围体 466
15.2.4背面消除 467
15.2.5空间划分 468
15.2.6层次结构 469
15.3 可见线判定算法 469
15.3.1 Roberts算法 469
15.3.2 Appel算法 470
15.3.3 光环线算法 470
15.4 z缓存算法 471
15.5列表优先级算法 474
15.5.1深度排序算法 474
15.5.2二元空间划分树 476
15.6扫描线算法 480
15.7区域细分算法 484
15.7.1 Warnock算法 484
15.7.2 Weiler-Atherton算法 486
15.7.3子像素区域细分算法 489
15.8八叉树算法 490
15.9曲面算法 492
15.10可见面光线跟踪 494
15.10.1相交计算 495
15.10.2 可见面光线跟踪算法的效率 496
15.10.3计算布尔集合运算 501
15.10.4反走样光线跟踪 503
15.11 小结 504
习题 505
第16章 光照和明暗处理 509
16.1 光照模型 509
16.1.1环境光 509
16.1.2漫反射 510
16.1.3大气衰减 513
16.1.4镜面反射 514
16.1.5点光源模型的改进 516
16.1.6多光源 517
16.2多边形的明暗处理模型 518
16.2.1恒定明暗处理 518
16.2.2插值明暗处理 518
16.2.3多边形网格的明暗处理 518
16.2.4 Gouraud明暗处理技术 519
16.2.5 Phong明暗处理技术 520
16.2.6插值明暗处理中的问题 521
16.3 曲面细节 522
16.3.1曲面细节多边形 523
16.3.2纹理映射 523
16.3.3凹凸映射 524
16.3.4其他方法 525
16.4阴影 525
16.4.1扫描线生成阴影算法 526
16.4.2 对象精确的两步法阴影算法 526
16.4.3阴影体 528
16.4.4两遍z缓存阴影算法 529
16.4.5全局光照阴影算法 531
16.5透明性 531
16.5.1无折射的透明性 531
16.5.2折射透明性 533
16.6物体间的反射 534
16.7基于物理的光照模型 536
16.7.1表面模型的改进 538
16.7.2微面元分布函数 538
16.7.3 几何衰减因子 539
16.7.4菲涅耳项 539
16.8扩展光源模型 543
16.9光谱采样 543
16.10相机模型的改进 545
16.11全局光照算法 545
16.12 递归光线跟踪 546
16.12.1 递归光线跟踪算法的效率考虑 550
16.12.2一个更佳的照明模型 553
16.12.3区域采样的不同方法 553
16.12.4分布式光线跟踪 554
16.12.5从光源出发的光线跟踪 557
16.13辐射度方法 558
16.13.1辐射度方程 558
16.13.2计算形状因子 560
16.13.3子结构技术 562
16.13.4逐步求精算法 562
16.13.5更加精确的形状因子的计算 565
16.13.6镜面反射 565
16.13.7辐射度和光线跟踪的结合 565
16.14绘制流水线 567
16.14.1局部光照绘制流水线 567
16.14.2全局光照绘制流水线 569
16.14.3设计灵活的绘制法 569
16.14.4逐步求精方法 571
16.15小结 571
习题 572
第17章 图像处理和存储 575
17.1什么是图像 576
17.2滤波 576
17.3图像处理 578
17.4图像的几何变换 578
17.4.1基本几何变换 579
17.4.2带滤波的几何变换 581
17.4.3其他图案映射技术 583
17.5多重变换 584
17.5.1多重变换的代数学 585
17.5.2利用滤波生成变换后的图像 587
17.5.3评价变换方法 589
17.6图像合成 589
17.6.1 α通道合成 589
17.6.2其他合成方法 593
17.6.3通过填充机制生成α值 595
17.6.4用于图像组装的一个界面 595
17.7图像存储机制 596
17.7.1存储图像数据 597
17.7.2用于图像压缩的迭代函数系统 598
17.7.3图像属性 600
17.8图像的特殊效果 601
17.9 小结 601
习题 601
第18章 高级光栅图形体系结构 605
18.1简单光栅显示系统 605
18.1.1帧缓冲内存访问问题 605
18.1.2动态存储器 606
18.1.3提高帧缓冲内存带宽 607
18.1.4视频RAM 607
18.1.5 高分辨率显示器的帧缓存 608
18.2显示处理器系统 609
18.2.1外部显示处理器 609
18.2.2德克萨斯仪器公司的TMS34020——单芯片外部显示处理器 610
18.2.3集成的图形处理器 611
18.2.4 Intel的i860——一个具有集成3D图形支持的单芯片微处理器 611
18.2.5三个性能障碍 612
18.3标准图形流水线 613
18.3.1显示遍历 613
18.3.2模型变换 614
18.3.3简单接受/简单拒绝的区分 614
18.3.4光照处理 614
18.3.5 见察变换 615
18.3.6裁剪 615
18.3.7除以w并映射到3D视口 615
18.3.8光栅化 615
18.3.9一个样板应用的性能要求 616
18.4多处理简介 618
18.4.1流水线 618
18.4.2并行性 619
18.4.3多处理器图形系统 620
18.5流水线前端体系结构 620
18.5.1应用程序和显示遍历 620
18.5.2几何变换 621
18.5.3简单接受/简单拒绝的区分 621
18.5.4光照处理 621
18.5.5裁剪 621
18.5.6除w并映射到3D视口 622
18.5.7前端流水线的限制 622
18.6并行前端体系结构 622
18.6.1显示遍历 622
18.6.2重组并行数据流 623
18.6.3流水线同并行性的比较 624
18.7多处理器光栅化体系机构 624
18.7.1 以物体为序的流水线体系结构 624
18.7.2 以图像为序的流水线体系结构 627
18.7.3流水线光栅化的限制和对并行性的需求 627
18.8图像并行光栅化 627
18.8.1 内存划分体系结构 628
18.8.2 Silicon Graphics公司的POWERIRIS 4D/240GTX——一个交叉划分帧缓冲内存体系结构 630
18.8.3逻辑增强的内存 633
18.9物体并行光栅化 637
18.9.1每图元一个处理器的流水线 638
18.9.2基于树结构的每图元一个处理器的体系结构 638
18.9.3物体并行性和图像并行性的比较 639
18.10混合并行光栅化 639
18.10.1虚拟缓冲区和虚拟处理器 639
18.10.2并行虚拟缓冲区体系结构 641
18.10.3图像合成体系结构 642
18.11增强的显示能力 643
18.11.1 对多窗口的支持 643
18.11.2 对增加的真实感的支持 644
18.11.3 Stellar GS2000——促进真实感绘制的紧密集成的体系结构 646
18.11.4对高级图元的支持 647
18.11.5对增强的3D感知的支持 649
18.11.6实时飞行模拟器 651
18.12小结 652
习题 652
第19章 高级几何与光栅算法 655
19.1裁剪 655
19.1.1矩形区域对直线的裁剪 656
19.1.2矩形和其他多边形区域对多边形的裁剪 659
19.1.3矩形区域裁剪:梁友栋-Barsky多边形算法 659
19.1.4 Weiler多边形算法 665
19.2图元的扫描转换 671
19.2.1属性 671
19.2.2 评价扫描转换算法的准则 671
19.2.3直线的其他考察方式 673
19.2.4高级折线算法 674
19.2.5画圆算法的改进 674
19.2.6一般圆锥曲线算法 676
19.2.7宽图元 683
19.2.8填充图元 685
19.3反走样 686
19.3.1直线的反走样 687
19.3.2圆的反走样 688
19.3.3圆锥曲线的反走样 690
19.3.4一般曲线的反走样 692
19.3.5矩形、多边形和直线端点的反走样 692
19.4文字的特殊问题 693
19.5填充算法 695
19.5.1 区域类型、连通性和填充 695
19.5.2基本填充算法 696
19.5.3软填充算法 698
19.6加速copyPixel 700
19.7形状数据结构和形状代数 704
19.8 用bitBlt管理窗口 706
19.9 页面描述语言 708
19.10 小结 713
习题 713
第20章 高级建模技术 719
20.1前述技术的扩展 720
20.1.1采用样条的高级建模技术 720
20.1.2基于噪声的纹理映射 722
20.2 过程模型 724
20.3分形模型 725
20.4基于文法的模型 729
20.5粒子系统 732
20.6体绘制 735
20.7基于物理的建模 738
20.7.1基于约束的建模 738
20.7.2布面和柔软表面的建模 739
20.7.3实体建模 740
20.7.4地形建模 740
20.8模拟自然物体和合成物体的特殊模型 740
20.8.1波浪 741
20.8.2云层和气象 741
20.8.3湍流 743
20.8.4滴状物体 743
20.8.5生物 744
20.8.6人 745
20.8.7来自于娱乐业的一个例子 745
20.9自动放置物体 746
20.10小结 748
习题 749
第21章 动画 751
21.1传统动画和计算机辅助动画 751
21.1.1传统动画 751
21.1.2计算机辅助动画 752
21.1.3插值 752
21.1.4简单的动画效果 755
21.2 计算机动画语言 756
21.2.1线性表表示法 756
21.2.2通用计算机语言 757
21.2.3图形语言 757
21.3动画控制方法 760
21.3.1完全显式的控制 760
21.3.2过程化控制 760
21.3.3基于约束的系统 760
21.3.4真实动作跟踪 762
21.3.5演员 762
21.3.6 运动学和动力学 762
21.3.7基于物理的动画 764
21.4动画的基本规则 765
21.5动画特有的一些问题 765
21.6小结 767
习题 767
附录 计算机图形学的数学基础 769
参考文献 793
索引 833