第0章 计算机图形学导论 1
0.1 计算机图形学的发展简史 1
0.2 处理计算机图形信息的三门学科 1
0.3 计算机图形学的主要研究内容 3
上篇 二维图形学基础 14
第1章 线段图形的生成 14
1.1 直线的生成 15
1.1.1 直线的简单微分(Digital Differential Analyzer,记为DDA)算法 15
1.1.2 直线的整数算法 16
1.2 圆的生成 18
1.2.1 圆的角度微分法 18
1.2.2 圆的整数算法 20
1.3 椭圆的生成 22
1.3.1 椭圆的角度微分法 22
1.3.2 椭圆的整数算法 23
1.4 自由曲线的生成 26
1.4.1 三次样条曲线 26
1.4.2 三次参数样条曲线 31
1.4.3 贝齐埃曲线 34
1.4.4 B样条曲线 37
1.4.4.1 均匀B样条曲线 38
1.4.4.2 准均匀B样条曲线 41
1.4.4.3 非均匀有理B样条曲线(Nonuniform Rational B-Splines,记为NURBS) 43
1.5 矢量字符的生成 45
本章小结:直线与曲线的描述、建模与生成 46
习题1 47
第2章 实面积图形的生成 50
2.1 多边形的填充 50
2.1.1 多边形的定义与性质 50
2.1.2 多边形的填充原理 51
2.1.3 多边形的(YX)填充算法 52
2.1.4 多边形的Y-X填充算法 53
2.1.5 多边形的优先级填充算法 58
2.2 直线与多边形的反走样显示处理技术 59
2.2.1 反走样直线的面积采样生成算法 60
2.2.2 反走样直线的加权面积采样生成算法 61
2.2.3 实面积多边形的反走样处理 62
本章小结:多边形的描述、建模、生成与直线的反走样技术 64
习题2 65
第3章 图形的基本运算 67
3.1 图形的几何变换 67
3.1.1 几何变换常用的齐次坐标变换矩阵 68
3.1.2 二维图形的几何变换 69
3.2 图形的集合运算 73
3.2.1 正则集合运算公式 73
3.2.2 A,B多边形之间的相互关系对生成新多边形的影响 75
3.2.3 二维图形(多边形)的集合运算的实现原理 76
3.2.4 集合运算所需的数据结构与实例 83
本章小结:图形建模方法的提升 84
习题3 85
第4章 图形的观察运算 86
4.1 图形的开窗 86
4.1.1 图形学中常用的坐标系 86
4.1.2 窗口、视区及窗视坐标变换 87
4.2 图形的裁剪 90
4.2.1 点与字符的裁剪 90
4.2.2 直线的裁剪 90
4.2.3 曲线的裁剪 92
4.2.4 实面积多边形的裁剪 93
本章小结:图形数据输出处理的第一步 96
习题4 96
第5章 图形的数据输入 97
5.1 图形数据输入常用的编程处理方法 98
5.1.1 利用高级图形专用语言编程输入图形数据 98
5.1.2 利用图形输入设备交互输入图形数据 100
5.1.3 图形标准为图形数据输入提供的交互处理方法 104
5.2 光栅扫描图形显示器常用的交互输入处理技术 106
5.2.1 光栅扫描图形显示器的工作原理与软件功能 106
5.2.2 图形的定位、拾取、命令选择等交互输入处理技术 110
5.3 图形系统交互设计的基本方法 113
5.3.1 图形系统交互设计的重要性与发展 113
5.3.2 图形系统的交互模型与交互设计的基本原则 115
5.3.3 图形系统交互设计的基本方法 116
本章小结:提高向计算机输入数据的效率是人们追求的目标 120
习题5 121
第6章 图形的数据结构 122
6.1 复合图形元素 122
6.1.1 图形组 123
6.1.2 重复图 125
6.2 图形的基本编辑功能 126
6.3 图形系统的数据结构与数据处理流程 129
本章小结:图形系统的构建原理 136
习题6 137
下篇 三维图形学基础 140
第7章 摄像机模型的建立——三维图形的显示基础 140
7.1 三维图形的几何变换 140
7.2 三维图形的投影 148
7.2.1 三维图形常用的坐标系 148
7.2.2 平行投影的基本原理 149
7.2.3 正透视投影 151
7.3 三维图形的正透视裁剪 156
7.3.1 二维齐次屏幕坐标系与观察空间裁剪范围 157
7.3.2 三维齐次屏幕坐标系与观察空间裁剪算法原理 158
7.3.3 裁剪坐标系中的直线裁剪算法 161
7.4 三维图形的规格化投影变换与裁剪 167
7.4.1 平行投影观察空间的规格化变换与规格化裁剪 169
7.4.2 透视投影观察空间的规格化变换与规格化裁剪 175
本章小结:摄像机显示三维图形的原理 180
习题7 181
第8章 平面物体的几何构造与显示 182
8.1 平面物体的描述与数据结构 182
8.1.1 平面物体常用的表示模型 182
8.1.2 平面物体常用的数据结构 184
8.2 平面物体的全剖切运算 187
8.2.1 全剖面的定义与平面物体的顶点分类 187
8.2.2 被剖物体有效剖面的形成 188
8.2.3 剖平面物体截面的形成 190
8.2.4 形成新的剖面体 191
8.3 平面物体的集合运算 192
8.3.1 求交 192
8.3.2 分类 194
8.3.3 合并 195
8.4 平面物体的三维重建输入介绍 197
8.5 真实感平面物体的线框模型输出显示——隐藏线的消除 199
8.6 真实感平面物体的表面模型输出显示——隐藏面的消除 205
8.6.1 Z向深度缓存算法(Z缓冲器算法) 205
8.6.2 扫描线深度缓存算法 207
8.6.3 间隔扫描线算法 209
8.6.4 快速显示多边形的BSP算法 211
8.6.5 A缓冲器算法 214
本章小结:平面物体建模与显示方法的成熟 218
习题8 219
第9章 曲面物体的构造基础与线框模型输出显示 220
9.1 三维物体常用的描述方法 220
9.1.1 八叉树表示法 220
9.1.2 扫描表示法 221
9.1.3 边界表示法 222
9.1.4 元球表示法 226
9.1.5 蒙皮表示法 226
9.1.6 物体表示方法的选择 227
9.2 常用曲面的数学描述函数 228
9.2.1 扫描曲面 229
9.2.2 孔斯(Coons)曲面 231
9.2.3 贝齐埃曲面 233
9.2.4 B样条曲面 234
9.3 几何造型中的相交计算问题 236
9.3.1 二维贝齐埃曲线之间的相互求交 237
9.3.2 常用二次曲面之间的求交计算 239
9.4 真实感曲面物体的线框模型输出显示 241
9.4.1 代数法描述曲面物体的输出显示 241
9.4.1.1 用轮廓线、边界线、交线显示曲面物体 241
9.4.1.2 用等值线方法来显示曲面物体 247
9.4.2 双参曲面物体的输出显示 248
本章小结:曲面物体构造与显示方法任重而道远 250
习题9 251
第10章 灯光模型,物体表面反光、透光、着色模型的建立——光照物体的显示 253
10.1 光色模型 253
10.1.1 光源(灯光模型) 253
10.1.2 颜色 254
10.1.3 颜色模型 259
10.2 物体的照明模型 261
10.2.1 物体的简单光照模型(Phong模型) 262
10.2.2 透明体的透明模型 265
10.3 真实感曲面物体的表面模型输出显示 267
10.3.1 曲面物体、透明物体表面的着色处理 267
10.3.2 物体表面的纹理显示 269
10.3.2.1 光滑纹理的显示 269
10.3.2.2 凸凹纹理的显示 277
10.3.3 物体的阴影显示 279
10.3.3.1 阴影的Z缓冲器算法 280
10.3.3.2 阴影的阴影体算法(影域多边形算法) 281
10.4 高度真实感图形显示技术 284
10.4.1 整体光照模型与光线跟踪算法 284
10.4.1.1 Whitted整体光照模型 285
10.4.1.2 光线跟踪算法原理 285
10.4.1.3 光线跟踪算法中需要的各种计算 288
10.4.2 辐射度算法 293
10.4.2.1 理想漫射环境中的辐射度方程 293
10.4.2.2 形状因子的计算公式与性质 294
10.4.2.3 用半立方体方法累计计算形状因子 295
10.4.2.4 求解辐射度时应注意的几个问题 297
10.5 图形标准的绘图流水线作业过程 301
本章小结:用计算机生成照片一样的真实感图形 303
习题10 304
第11章 OpenGL图形标准与应用 306
11.1 OpenGL的基本原理与编程特点 306
11.1.1 在Windows环境中OpenGL编程的两个基本特点 306
11.1.2 OpenGL的工作原理 307
11.1.3 OpenGL的基本功能 308
11.2 OpenGL编程的环境设置与语法 309
11.3 OpenGL中读写一个像素点的实现方法 310
11.4 OpenGL的正平行投影矩阵的设置与常用二维图形、字符的显示 313
11.5 OpenGL的正透视投影矩阵的设置与三维动画图形的显示 315
11.6 OpenGL的堆栈与图形的级联几何变换 317
11.7 OpenGL的显示列表与子图形 319
11.8 OpenGL的交互输入与拾取 320
11.9 OpenGL的材质、灯光与光照物体的显示 326
11.10 OpenGL的纹理与物体的光滑纹理显示 331
11.11 OpenGL的求值器与曲面物体的显示处理 335
11.12 OpenGL的图像融和及反走样直线的处理方法 340
11.13 OpenGL的模板及累加缓存的使用方法 343
本章小结:调用图形标准,轻松实现三维图形的实时显示 347
附录A 本书算法实例索引 348
参考文献 351