第1章 计算机图形学综述 1
1.1 计算机辅助设计 1
1.2 图示图形学 3
1.3 计算机艺术 3
1.4 娱乐 5
1.5 教学与培训 6
1.6 可视化 7
1.7 图象处理 7
1.8 图形用户接口 8
第2章 图形系统综述 10
2.1 视频显示设备 10
2.1.1 刷新式CRT 10
2.1.2 光栅扫描显示器 13
2.1.3 随机扫描显示器 14
2.1.4 彩色CRT监视器 15
2.1.5 直视存储管 17
2.1.6 平板显示器 17
2.1.7 三维观察设备 19
2.1.8 立体感和虚拟现实系统 21
2.2 光栅扫描系统 21
2.2.1 视频控制器 21
2.2.1 光栅扫描显示处理器 23
2.3 随机扫描系统 24
2.4 图形监视器与工作站 25
2.5 输入设备 27
2.5.1 键盘 27
2.5.2 鼠标 27
2.5.3 跟踪球和空间球 28
2.5.4 操纵杆 28
2.5.5 数据手套 29
2.5.6 数字化仪 30
2.5.7 图象扫描仪 31
2.5.8 触摸板 32
2.5.9 光笔 33
2.5.10 声音系统 33
2.6 硬拷贝设备 34
2.7 图形软件 35
2.7.1 坐标表示 36
2.7.2 图形功能 37
2.7.3 软件标准 38
2.7.4 PHIGS工作站 38
小结 39
参考文献 40
练习题 40
第3章 输出图元 42
3.1 点和线 42
3.2 画线算法 43
3.2.1 DDA算法 44
3.2.2 Bresenham画线算法 45
3.2.3 并行画线算法 50
3.3 帧缓冲器的装载 51
3.4 画线函数 52
3.5 圆生成算法 53
3.5.1 圆的特征 53
3.5.2 中点圆算法 54
3.6 椭圆生成算法 58
3.6.1 椭圆的特征 58
3.6.2 中点椭圆算法 59
3.7 其它曲线 66
3.7.1 圆锥曲线 67
3.7.2 多项式和样条曲线 68
3.8 并行曲线算法 69
3.9 曲线函数 69
3.10 象素编址和物体的几何表示 69
3.10.1 屏幕网格坐标 70
3.10.2 保留显示物体的几何特性 70
3.11 填充区域图元 71
3.11.1 扫描线多边形填充算法 72
3.11.2 内-外测试 80
3.11.3 曲线边界区域的扫描线填充 81
3.11.4 边界填充算法 81
3.11.5 泛滥填充算法 83
3.12 区域填充函数 85
3.13 单元阵列 85
3.14 字符生成 86
小结 87
参考文献 94
练习题 94
第4章 输出图元的属性 96
4.1 线属性 96
4.1.1 线型 96
4.1.2 线宽 98
4.1.3 笔和刷选择 100
4.1.4 线颜色 101
4.2 曲线属性 102
4.3 颜色和亮度等级 103
4.3.1 彩色表 105
4.3.2 灰度等级 106
4.4 区域填充属性 106
4.4.1 填充模式 106
4.4.2 图案填充 107
4.4.3 软填充 110
4.5 字符属性 112
4.5.1 文本属性 112
4.5.2 标记属性 115
4.6 束属性 116
4.6.1 线的束属性 116
4.6.2 区域填充束属性 117
4.6.3 文本的束属性 117
4.6.4 标记的束属性 117
4.7 查询函数 117
4.8 反走样 118
4.8.1 直线段的过取样 119
4.8.2 象素加权掩模 120
4.8.3 直线段的区域取样 120
4.8.4 过滤技术 121
4.8.5 象素移相 121
4.8.6 线亮度差的校正 121
4.8.7 反走样区域边界 122
小结 124
参考文献 125
练习题 126
第5章 二维几何变换 128
5.1 基本变换 128
5.1.1 平移 128
5.1.2 旋转 129
5.1.3 缩放 131
5.2 矩阵表示和齐次坐标 132
5.3 复合变换 134
5.3.1 平移 134
5.3.2 旋转 134
5.3.3 缩放 135
5.3.4 通用基准点旋转 135
5.3.5 通用固定点缩放 136
5.3.6 通用定向缩放 136
5.3.7 合并特性 137
5.3.8 通用复合变换和计算效率 138
5.4 其它变换 143
5.4.1 反射 143
5.4.2 错切 145
5.5 坐标系间的变换 147
5.6 仿射变换 149
5.7 变换函数 149
5.8 变换的光栅方法 151
小结 152
参考文献 154
练习题 154
第6章 两维观察 156
6.1 观察流程 156
6.2 观察参考坐标系 158
6.3 窗口到视区的坐标变换 158
6.4 两维观察函数 160
6.5 裁剪操作 162
6.6 点的裁剪 162
6.7 线段的裁剪 163
6.7.1 Cohen-Sutherland线段裁剪算法 164
6.7.2 梁友栋-Barsky直线裁剪算法 167
6.7.3 Nicholl-Lee-Nicholl直线裁剪算法 170
6.7.4 非矩形裁剪窗口的线段裁剪 172
6.7.5 划分凹多边形 172
6.8 多边形的裁剪 173
6.8.1 Sutherland-Hodgeman多边形裁剪 173
6.8.2 Weiler-Atherton算法 178
6.8.3 其它多边形的裁剪算法 179
6.9 曲线的裁剪 179
6.10 文字的裁剪 180
6.11 外部裁剪 181
小结 181
参考文献 184
练习题 184
第7章 结构和层次模型 186
7.1 结构的概念 186
7.1.1 基本结构函数 186
7.1.2 设置结构属性 187
7.2 编辑结构 188
7.2.1 结构表和元素指针 189
7.2.2 设置编辑模式 190
7.2.3 插入结构元素 190
7.2.4 替代结构元素 190
7.2.5 删除结构元素 191
7.2.6 标识结构元素 192
7.2.7 从一个结构中将元素拷贝到另一个结构 194
7.3 基本建模概念 194
7.3.1 模型表示 194
7.3.2 符号层次 195
7.3.3 建模软件包 196
7.4 用结构来建立层次式模型 197
7.4.1 局部坐标和建模变换 197
7.4.2 模型变换 197
7.4.3 结构层次 198
小结 199
参考文献 200
练习题 200
第8章 图形用户接口和交互输入方法 201
8.1 用户对话 201
8.1.1 窗口和图符 201
8.1.2 适应多种熟练程度的用户 202
8.1.3 一致性 202
8.1.4 减少记忆量 202
8.1.5 回退和出错处理 203
8.1.6 反馈 203
8.2 图形数据的输入 204
8.2.1 输入设备的逻辑分类 204
8.2.2 定位设备 204
8.2.3 笔画设备 205
8.2.4 字符串设备 205
8.2.5 定值设备 205
8.2.6 选择设备 206
8.2.7 拾取设备 206
8.3 输入功能 208
8.3.1 输入模式 208
8.3.2 请求模式 209
8.3.3 取样模式 211
8.3.4 事件模式 211
8.3.5 输入模式的并行使用 213
8.4 输入设备参数的初值 213
8.5 交互式构图技术 214
8.5.1 基本的定位方法 214
8.5.2 约束 214
8.5.3 网格 215
8.5.4 引力场 216
8.5.5 橡皮条方法 216
8.5.6 拖曳 216
8.5.7 着色和绘图 216
8.6 虚拟现实环境 217
小结 218
参考文献 219
练习题 219
第9章 三维概念 221
9.1 三维显示方法 221
9.1.1 平行投影 221
9.1.2 透视投影 222
9.1.3 深度提示 222
9.1.4 可见线面的标识 222
9.1.5 面绘制 223
9.1.6 分解图和剖面图 223
9.1.7 三维和立体视图 223
9.2 三维图体软件包 223
第10章 三维物体的表示 225
10.1 多边形表面 225
10.1.1 多边形表 225
10.1.2 平面方程 227
10.1.3 多边形网格 229
10.2 曲线和曲面 229
10.3 二次曲面 230
10.3.1 球面 230
10.3.2 椭球面 230
10.3.3 环面 230
10.4 超二次曲面 231
10.4.1 超椭圆 231
10.4.2 超椭球面 232
10.5 柔性物体 233
10.6 样条表示 234
10.6.1 插值和逼近样条 235
10.6.2 参数连续性条件 237
10.6.3 几何连续性条件 237
10.6.4 样条描述 237
10.7 三次样条插值方法 239
10.7.1 自然三次样条 239
10.7.2 Hermite插值 240
10.7.3 Cardinal样条 242
10.7.4 Kochanek-Bartels样条 244
10.8 Bézier曲线和曲面 245
10.8.1 Bézier曲线 245
10.8.2 Bézier曲线的特性 248
10.8.3 使用Bézier曲线的设计技术 248
10.8.4 三次Bézier曲线 250
10.8.5 Bézier曲面 251
10.9 B-样条曲线和曲面 252
10.9.1 B-样条曲线 253
10.9.2 均匀周期性B-样条曲线 254
10.9.3 三次周期性B-样条曲线 256
10.9.4 开放均匀B-样条曲线 258
10.9.5 非均匀B-样条曲线 259
10.9.6 B-样条曲面 261
10.10 Beta-样条曲线 261
10.10.1 Beta-样条连续性条件 262
10.10.2 三次周期性Beta-样条曲线矩阵表示 263
10.11 有理样条 263
10.12 两种样条表达式间的转换 265
10.13 样条曲线和曲面的显示 266
10.13.1 Horner规则 266
10.13.2 向前差分计算 267
10.13.3 细分方法 268
10.14 扫描表示 270
10.15 结构实体几何法 271
10.16 八叉树 273
10.17 BSP树 276
10.18 分形几何方法 276
10.18.1 分形生成过程 277
10.18.2 分形分类 277
10.18.3 分形的维数 277
10.18.4 确定性自相似分形几何构造 279
10.18.5 统计自相似分形几何构造 282
10.18.6 仿射分形构造方法 282
10.18.7 随机中点位移方法 283
10.18.8 地面图控制 285
10.18.9 自平方分形 286
10.18.10 自逆分形 292
10.19 形状语法和其它过程性方法 293
10.20 微粒系统 293
10.21 基于物理的建模 294
10.22 数据集的可视化 295
10.22.1 标量场的可视表示 296
10.22.2 向量场的可视表示 297
10.22.3 张量场的可视表示 298
10.22.4 多变量数据场的可视表示 299
小结 299
参考文献 299
练习题 300
第11章 三维几何和建模变换 302
11.1 平移 302
11.2 旋转 302
11.2.1 坐标轴旋转 303
11.2.2 一般三维旋转 305
11.2.3 四元数旋转 311
11.3 缩放 313
11.4 其它变换 314
11.4.1 反射 314
11.4.2 错切 315
11.5 复合变换 315
11.6 三维变换函数 318
11.7 建模变换和坐标变换 319
小结 320
参考文献 321
练习题 321
第12章 三维观察 323
12.1 观察流水线 323
12.2 观察坐标 323
12.2.1 指定观察平面 324
12.2.2 从世界坐标到观察坐标的变换 326
12.3 投影 328
12.3.1 平行投影 328
12.3.2 透视投影 332
12.4 观察体和一般投影变换 335
12.4.1 一般平行投影变换 339
12.4.2 一般透视投影变换 341
12.5 裁剪 343
12.5.1 规范化观察体 345
12.5.2 视口裁剪 346
12.5.3 齐次坐标裁剪 348
12.6 硬件实现 349
12.7 三维观察函数 349
小结 351
参考文献 352
练习题 352
第13章 可见面判别算法 354
13.1 可见面判别算法的分类 354
13.2 后向面判别 354
13.3 深度缓冲器算法 355
13.4 A缓冲器算法 357
13.5 扫描线算法 359
13.6 深度排序算法 361
13.7 BSP树算法 363
13.8 区域细分算法 364
13.9 八叉树算法 366
13.10 光线投射算法 369
13.11 曲面 370
13.11.1 曲面表示 370
13.11.2 曲面的层位线显示 370
13.12 线框算法 371
13.13 可见性判别函数 371
小结 372
参考文献 373
练习题 373
第14章 光照模型和面绘制算法 375
14.1 光源 375
14.2 基本光照模型 376
14.2.1 环境光 377
14.2.2 漫反射 377
14.2.3 镜面反射和Phong模型 379
14.2.4 多光源漫反射和镜而反射的合并 383
14.2.5 Warn模型 383
14.2.6 强度衰减 384
14.2.7 颜色 384
14.2.8 透明度 385
14.2.9 阴影 387
14.3 光强度显示 387
14.3.1 分配强度等级 388
14.3.2 Gamma校正和视频查找表 389
14.3.3 显示连续色调的图象 390
14.4 半色调模式和抖动技术 390
14.4.1 半色调近似 391
14.4.2 抖动技术 394
14.5 多边形绘制算法 396
14.5.1 恒定光强度的明暗处理 397
14.5.2 Gouraud明暗处理 397
14.5.3 Phong明暗处理 399
14.5.4 快速Phong明暗处理 399
14.6 光线跟踪算法 400
14.6.1 基本光线跟踪算法 401
14.6.2 光线与物体表面的求交计算 402
14.6.3 减少物体求交计算量 405
14.6.4 空间分割方法 406
14.6.5 光线跟踪反走样 408
14.6.6 分布式光线跟踪 410
14.7 幅射度光照模型 412
14.7.1 基本幅射度模型 412
14.7.2 逐步求精幅射度方法 415
14.8 环境映射 416
14.9 添加表面细节 417
14.9.1 用多边形模拟表面细节 417
14.9.2 纹理映射 417
14.9.3 过程式纹理映射方法 419
14.9.4 凹凸映射 420
14.9.5 帧映射 421
小结 421
参考文献 422
练习题 423
第15章 颜色模型和颜色应用 425
15.1 光的特性 425
15.2 标准基色和色彩图 427
15.2.1 XYZ颜色模型 427
15.2.2 CIE色度图 428
15.3 直观的颜色概念 429
15.4 RGB颜色模型 430
15.5 YIQ颜色模型 431
15.6 CMY颜色模型 432
15.7 HSV颜色模型 433
15.8 HSV和RGB模型之间的转换 434
15.9 HLS颜色模型 436
15.10 颜色选择及其应用 436
小结 437
参考文献 438
练习题 438
第16章 计算机动画 439
16.1 动画序列的设计 439
16.2 通用计算机动画功能 440
16.3 光栅动画 440
16.4 计算机动画语言 440
16.5 关键帧系统 441
16.5.1 变形 442
16.5.2 模拟加速度 443
16.6 运动的描述 446
16.6.1 直接运动描述 446
16.6.2 目标导向系统 446
16.6.3 运动学和动力学 447
小结 448
参考文献 448
练习题 448
附录A 计算机图形学的数学基础 450
A.1 坐标参照系 450
A.1.1 二维笛卡儿参照系 450
A.1.2 xy平面的极坐标 450
A.1.3 三维笛卡儿参照系 451
A.1.4 三维曲线坐标系 452
A.1.5 立体角 453
A.2 点与向量 453
A.2.1 向量加与定比例乘 455
A.2.2 两向量的标量积 456
A.2.3 两向量的向量积 456
A.3 基向量和度量张量 457
A.3.1 正交基 458
A.3.2 度量张量 458
A.4 矩阵 459
A.4.1 标量乘法与矩阵加法 460
A.4.2 矩阵乘法 460
A.4.3 矩阵转置 461
A.4.4 矩阵的秩 461
A.4.5 矩阵的逆 462
A.5 复数 462
A.6 四元数 464
A.7 非参数表示 465
A.8 参数表示 466
A.9 数值方法 467
A.9.1 求解线性方程组 467
A.9.2 非线性方程的求根 468
A.9.3 积分估值 469
A.9.4 为数据集拟合曲线 471
总参考文献 473