第1章 绪论 1
1.1 计算机图形学及它与其他学科的关系 1
前言 1
1.2 计算机图形学发展简史 2
1.3 计算机图形学的应用领域 3
1.3.1 计算机辅助设计与制造 3
1.3.2 科学计算可视化 4
1.3.3 虚拟现实 4
1.3.4 计算机艺术 5
1.3.5 计算机动画 5
1.4.1 图形输入 6
1.3.6 图形用户接口 6
1.4 计算机图形学研究的基本问题 6
1.4.2 图形描述 7
1.4.3 图形变换 7
1.4.4 图形运算 8
1.4.5 图形输出 8
1.4.6 几何算法、几何复杂性和计算效率 9
1.5 计算机图形学的相关开发技术 10
1.5.1 OpenGL 10
1.5.3 DirectX 11
1.5.2 ACIS 11
1.5.4 Java3D 12
1.5.5 VRML 12
第2章 光栅图形学 14
2.1 直线光栅化显示算法 14
2.1.1 直线光栅化显示的数字微分分析法(DDA) 14
2.1.2 直线光栅化显示的Bresenham算法 16
2.2 圆光栅化算法 19
2.2.1 利用圆的八方对称性画圆 20
2.2.2 简单的方程画圆方法 20
2.2.3 Bresenham画圆算法 21
2.2.4 中点圆算法 23
2.3 椭圆光栅化算法 25
2.4 多边形填充 26
2.4.1 扫描线填充算法 27
2.4.2 边填充算法 28
2.4.3 种子填充算法 29
2.5 字符和汉字显示 31
2.5.1 点阵字符 31
2.6.1 图形走样 32
2.5.2 矢量字符 32
2.6 反走样 32
2.6.2 超采样 33
2.7 本章要点 34
2.8 本章作业 35
第3章 图形裁剪 36
3.1 线裁剪算法 36
3.1.1 Cohen-Sutherland算法 36
3.1.2 Liang-Barsky算法 38
3.2.1 Sutherland-Hodgon多边形裁剪算法 41
3.2 多边形裁剪 41
3.2.2 图形求交集多边形裁剪法 42
3.3 本章要点 43
3.4 本章作业 43
第4章 基本几何 44
4.1 基本几何的描述 44
4.1.1 直线的描述 44
4.1.2 圆的描述 46
4.1.3 圆弧的描述 46
4.1.4 基本几何的统一描述 47
4.2.1 基本几何及其方向的定义 48
4.1.5 圆弧曲线 48
4.2 基本几何及图形边界的方向 48
4.2.2 几何元素定向的优点 51
4.3 直线和圆弧的相交 52
4.3.1 坐标系变换求交 52
4.3.2 几何计算求交 53
4.4 曲线和曲线的相交 54
4.4.1 劣弧段最小外接矩形求取 55
4.4.2 圆弧曲线的相交算法 56
4.5 本章要点 57
4.6 本章作业 58
第5章 二维几何 59
5.1 向量和向量的交点 59
5.2 包容性测试 60
5.2.1 符号判别法 60
5.2.2 角度判别法 60
5.2.3 半射线交点计数判别法 61
5.2.4 Griffiths判别法 63
5.3 直线段和图形公共部分的求取 63
5.4.1 一般图形的描述 65
5.4.2 一般图形的填充算法 65
5.4 一般图形的填充算法 65
5.5 二维布尔运算 66
5.5.1 环 67
5.5.2 二维几何构型中的图形描述 67
5.5.3 两个环的交、并、差几何运算 68
5.5.4 两个环运算的数据结构 75
5.5.5 两个环运算的算法 76
5.5.6 扩展到圆弧 77
5.5.7 含有多个内环图形的运算 80
5.6 平面多角形面积的求取 81
5.5.8 算法复杂度分析 81
5.7 本章要点 82
5.8 本章作业 82
第6章 图形变换 83
6.1 图形变换的理论基础 83
6.1.1 坐标系、基底、坐标行 83
6.1.2 基底变换 84
6.1.3 线性变换及其乘积 85
6.2 图形变换的基本描述 87
6.2.1 齐次坐标 87
6.1.4 不同基底下的线性变换 87
6.2.2 齐次坐标变换矩阵 88
6.2.3 二维图形变换 88
6.2.4 三维图形变换 88
6.3 图形变换的几何化表示 91
6.3.1 几何化表示的基本理论 91
6.3.2 图形变换的几何化表示 92
6.3.3 图形变换几何化表示的实施 92
6.3.4 图形变换几何化表示的应用 93
6.3.5 三维变换的几何化表示 95
6.3.6 图形变换几何化表示与基本几何 98
6.4 投影与投影变换 99
6.4.1 平行投影 99
6.4.2 投影变换、深度坐标与三维观测流水线 99
6.4.3 投影示意图 100
6.5 轴测 变换 101
6.5.1 轴测变换的定义 101
6.5.2 正轴测变换 102
6.5.3 轴测投影变换的一般公式 104
6.5.4 斜二测变换 105
6.6.1 罗盘变换的基本原理 106
6.6.2 罗盘变换公式 106
6.6 罗盘变换 106
6.6.3 屏幕轴三角架的实时产生 107
6.7 透视变换 108
6.7.1 透视变换的基本原理 108
6.7.2 透视变换矩阵 109
6.7.3 透视投影转化为平行投影 109
6.7.4 灭点及其产生 110
6.8 坐标变换矩阵小结 116
6.9 视图变换 117
6.9.1 视图变换的基本原理 117
6.9.2 视图变换的实施 118
6.10 本章要点 119
6.11 本章作业 120
第7章 三维几何 121
7.1 坐标系统 122
7.2 物体的描述 122
7.3 几何计算 124
7.3.1 最小最大判定法 124
7.3.2 标准平面方程的建立 125
7.3.3 通过N个顶点求取平面方程 126
7.3.4 深度测试 126
7.3.5 面对棱的遮挡 127
7.3.6 隐藏线的表示 128
7.3.7 一维交集算法 129
7.4 凸多面体的隐藏线消除 130
7.4.1 凸多面体的描述 131
7.4.2 全体凸多面体的数据结构 132
7.4.3 棱的表示与输出 132
7.4.4 凸多面体消隐算法的基本原理 134
7.4.5 凸多面体落影区的求取 135
7.4.6 凸多面体对其他物体的遮挡计算 136
7.4.7 凸多面体的自消隐 137
7.4.8 凸多面体场景消隐算法的实施 138
7.5 一般多面体的隐藏线消除 140
7.5.1 物体的描述和面的构造 140
7.5.2 棱分类——一般多面体的自消隐 141
7.5.3 面对棱的遮挡 141
7.5.4 面消隐时特殊情况的处理 145
7.5.5 消隐算法的数据结构 147
7.5.6 一般多面体消隐算法的实施 149
7.6 一般多面体的隐藏面消除 151
7.6.1 隐藏面消除的基本原理 151
7.6.2 隐藏面消除的实施 153
7.8 本章作业 156
7.7 本章要点 156
第8章 几何造型 158
8.1 垂直扫掠物体生成算法 159
8.1.1 垂直扫掠算法的输入参数 159
8.1.2 垂直扫掠算法的顶点编号与坐标值定值 160
8.1.3 垂直扫掠算法的构造过程 160
8.1.4 垂直扫掠算法的三维物体记录 160
8.1.5 垂直扫掠算法边的重复显示处理 161
8.1.6 垂直扫掠算法的扩展 161
8.1.8 进一步扩展 162
8.1.7 垂直扫掠物体产生程序 162
8.2 旋转物体的生成算法 163
8.2.1 旋转体的输入参数 163
8.2.2 旋转体的顶点编号与坐标定值 163
8.2.3 旋转体的构造过程 164
8.2.4 旋转体的三维物体记录 165
8.2.5 旋转体边的重复显示处理 165
8.2.6 特殊情况处理 165
8.2.8 旋转体的物体产生程序 166
8.2.9 旋转体产生示例 166
8.2.7 旋转体算法的扩展 166
8.3 物体装配 167
8.3.1 基本构件的输入 167
8.3.2 装配数据的输入 169
8.4 布尔运算 170
8.4.1 布尔运算的基本原理——拓扑重构 171
8.4.2 布尔运算的几何信息重构——误差处理 174
8.5 本章要点 175
8.6 本章作业 175
9.1.1 人对世界的视觉感知 176
9.1.2 光源的种类 176
9.1 光和颜色 176
第9章 光照模型 176
9.1.3 物体表面的种类 177
9.1.4 颜色论 177
9.1.5 三色学说 178
9.1.6 CIE色度图 178
9.1.7 色彩应用 181
9.2 颜色模型 182
9.2.1 原色系统 182
9.2.2 RGB颜色模型 182
9.2.4 HSV颜色模型 183
9.2.3 CMY颜色模型 183
9.3 光照模型 184
9.3.1 环境光 184
9.3.2 漫反射和Lambert模型 185
9.3.3 镜面反射和Phong模型 186
9.3.4 透明模型 188
9.3.5 简单局部光照模型 189
9.4 插值算法 189
9.4.1 恒定明暗处理 189
9.4.3 Phong明暗处理(法向插值算法) 190
9.4.2 Gouraud明暗处理(光强插值算法) 190
9.5 光线跟踪 191
9.5.1 Whitted整体光照模型 191
9.5.2 光线跟踪基本原理 191
9.5.3 光线跟踪算法 192
9.5.4 光线跟踪算法中的关键技术 195
9.5.5 光线跟踪的反走样 196
9.6 阴影 197
9.6.1 自身阴影 197
9.6.2 投射阴影 198
9.6.3 阴影算法 198
9.7 纹理 200
9.7.1 纹理的定义 201
9.7.2 颜色纹理 202
9.7.3 几何纹理 205
9.8 本章要点 206
9.9 本章作业 206
第10章 曲线和曲面 208
10.1 曲线曲面的基本理论 209
10.1.1 曲线与曲面的参数表示 209
10.1.2 曲线的切矢及自然参数表示 209
10.2 参数三次曲线曲面 210
10.1.3 曲面论 210
10.2.1 参数三次曲线方程 211
10.2.2 参数三次曲面 212
10.2.3 参数连续性和几何连续性 212
10.3 Bézier曲线和曲面 213
10.3.1 Bézier曲线方程 214
10.3.2 Bernstein基函数的性质 215
10.3.3 Bézier曲线的性质 216
10.3.4 Bézier曲线的升阶 217
10.3.5 Bézier曲线的拼接 218
10.3.6 Bézier曲面 219
10.4.1 B样条曲线方程及其与Bézier曲线的比较 220
10.4.2 B样条基函数的递推定义及其性质 220
10.4 B样条曲线和曲面 220
10.4.3 B样条曲线的类型划分 222
10.4.4 一般非均匀B样条曲线 222
10.4.5 B样条曲面方程及其性质 224
10.4.6 B样条曲面的矩阵表示和常见的B样条曲面 225
10.5.1 NURBS的提出 226
10.5.2 NURBS曲线方程及其性质 226
10.5 NURBS曲线和曲面 226
10.5.3 NURBS曲面方程及其性质 227
10.6 Coons曲面 228
10.7 曲面的三角化表示 228
10.7.1 曲面三角化描述 229
10.7.2 曲面三角化遍历 230
10.7.3 三角形曲面的简化 231
10.7.4 三角形曲面的压缩 232
10.8 本章要点 234
10.9 本章作业 234
11.1 小挠度样条函数的建立 235
11.1.1 小挠度样条函数基本方程的导出 235
第11章 曲线拟合与双圆弧逼近 235
11.1.2 小挠度样条函数的边界条件 239
11.2 大挠度分段三次样条函数的建立 240
11.2.1 大挠度样条函数基本方程组的导出 240
11.2.2 大挠度样条基本方程组的解法 242
11.3 双圆弧逼近 244
11.3.1 平均切线法 244
11.3.2 双圆弧公切点的轨迹 245
11.3.3 公切点的确定 245
11.3.4 双圆弧的求法 246
11.3.5 样条曲线的直线逼近 247
11.3.6 一般函数曲线的双圆弧逼近 248
11.4 圆的直线逼近 249
11.5 本章要点 250
11.6 本章作业 251
第12章 交互技术 252
12.1 设计原则 252
12.2 界面和菜单设计 253
12.2.1 建立一个新应用 254
12.2.2 定义主菜单 254
12.2.3 定义一个执行菜单 254
12.2.6 加标题 256
12.2.4 添加源代码 256
12.2.5 C语言(*.c)程序文件的加入 256
12.3 交互设计的基本技术 257
12.3.1 定位技术 257
12.3.2 橡皮筋技术 257
12.3.3 拖拉技术 257
12.3.4 选择技术 258
12.4 数据结构设计 258
12.4.4 辅助图元的数据结构设计 259
12.4.3 基本图元的数据结构设计 259
12.4.2 层的数据结构设计 259
12.4.1 图形的数据结构设计 259
12.4.5 其他数据结构设计 260
12.5 UNDO和REDO技术 260
12.5.1 UNDO和REDO功能的数据结构设计 261
12.5.2 UNDO和REDO功能命令执行时的操作 262
12.5.3 交互应用系统中的命令接口 263
12.5.4 UNDO或REDO时的动作流程 264
12.6 本章要点 265
12.7 本章作业 265
第13章 参数设计 266
13.1 几何约束满足问题 267
13.2 基于点簇归约的几何推理算法 268
13.2.1 基于点簇的几何推理算法原理 268
13.2.2 基于点簇的几何推理算法 271
13.3 基于图形构造模型的参数设计方法 273
13.3.1 基本模型 273
13.3.2 表示点的各种节点 275
13.3.3 表示直线的各种节点 277
13.3.4 表示圆的各种节点 278
13.3.5 模型扩展 280
13.3.6 模型求解 282
13.4 参数化图库建库工具 283
13.4.1 文件转换器 283
13.4.2 图形校正 284
13.4.3 用户界面 284
13.5 本章要点 285
13.6 本章作业 285
附录A 基础算法程序 286
附录B 图形接口 337
附录C 教学网站 344
参考文献 345