第1章 绪论 1
1.1 计算机图形学的目标与任务 1
1.1.1 视觉交流是计算机图形学的核心目标 1
1.1.2 计算机图形学的三个基本任务 2
1.2 计算机图形学的内容体系 3
1.3 计算机图形学相关学科 5
1.3.1 图形与图像 5
1.3.2 相关学科 7
1.4 计算机图形学的应用领域 8
1.4.1 计算机辅助设计与制造(CAD/CAM) 8
1.4.2 科学计算可视化(Visualization in Scientific Computing) 10
1.4.3 虚拟现实(Virtual Reality) 10
1.4.4 动画(Animation) 11
1.5 计算机图形学的发展 12
1.5.1 计算机图形学的发展简史 12
1.5.2 计算机图形学的发展趋势 15
习题1 17
第2章 图形系统 18
2.1 图形系统概述 18
2.1.1 图形系统组成结构 18
2.1.2 图形系统分类 22
2.2 图形系统体系结构 23
2.2.1 概述 23
2.2.2 应用程序阶段 24
2.2.3 几何处理阶段 24
2.2.4 光栅阶段 25
2.3 图形支撑软件 25
2.3.1 OpenGL 26
2.3.2 DirectX 28
2.3.3 Java 2D和Java 3D 28
2.4 图形硬件显示原理 29
2.4.1 图形显示设备及工作原理 29
2.4.2 图形显示方式 34
2.4.3 光栅扫描图形显示系统 37
习题2 39
第3章 二维图形生成 40
3.1 直线生成算法 40
3.1.1 数值微分法 41
3.1.2 逐点比较法 42
3.1.3 Bresenham画线法 45
3.1.4 中点画线法 48
3.2 圆弧绘制算法 50
3.2.1 基于光栅的整圆绘制算法 51
3.2.2 角度离散法绘制圆弧和椭圆弧 54
3.3 区域填充 55
3.3.1 种子填充算法 56
3.3.2 多边形填充算法 58
3.4 字符 62
3.4.1 字符的编码 62
3.4.2 点阵字符 62
3.4.3 矢量字符 63
3.5 反走样技术 64
3.6 编程实例——地图绘制 66
3.6.1 地图绘制方法 66
3.6.2 基于OpenGL的地图绘制 67
习题3 69
第4章 图形几何变换 71
4.1 二维几何变换 71
4.1.1 基本变换 71
4.1.2 二维复合变换 83
4.1.3 二维坐标系间的变换 86
4.2 三维几何变换 88
4.2.1 基本变换 88
4.2.2 三维复合变换 93
4.2.3 三维坐标系间的变换 98
4.3 图形几何变换的模式 99
4.3.1 固定坐标系模式 100
4.3.2 活动坐标系模式 101
4.4 编程实例——三角形与矩形变换 102
习题4 112
第5章 二维观察 113
5.1 二维观察概述 113
5.2 二维观察流水线 114
5.2.1 坐标系统 115
5.2.2 坐标系之间的变换 116
5.3 裁剪 118
5.3.1 点的裁剪 119
5.3.2 直线裁剪 119
5.3.3 多边形裁剪 124
5.3.4 其他裁剪 126
5.4 OpenGL二维观察简介 127
5.4.1 OpenGL投影模式 128
5.4.2 GLU裁剪窗口函数 128
5.4.3 OpenGL视区函数 129
5.5 编程实例——红蓝三角形 129
习题5 131
第6章 三维观察 132
6.1 三维观察流水线 132
6.2 观察变换 133
6.2.1 三维观察坐标系参数 133
6.2.2 世界坐标系到观察坐标系的变换 136
6.3 投影变换 141
6.3.1 投影分类 141
6.3.2 平行投影 142
6.3.3 透视投影 149
6.4 三维裁剪 155
6.4.1 观察体及规范化 155
6.4.2 三维裁剪算法简介 163
6.5 编程实例——立方体透视投影 166
习题6 168
第7章 三维对象 169
7.1 三维对象概述 169
7.2 三维实体表示基础 170
7.2.1 基本几何元素 170
7.2.2 几何信息与拓扑信息 170
7.2.3 几何造型模型 171
7.3 三维实体表示方法 172
7.3.1 边界表示 172
7.3.2 扫描表示 175
7.3.3 构造实体几何表示 176
7.3.4 空间细分表示 177
7.3.5 编程实例——简单实体构建 178
7.4 三次参数曲线 181
7.4.1 基本特性 181
7.4.2 Hermite曲线 182
7.4.3 Bezier曲线 187
7.4.4 B样条曲线 194
7.5 双三次参数曲面 200
7.5.1 Coons曲面 201
7.5.2 Bezier曲面 202
7.5.3 B样条曲面 204
7.5.4 双三次参数曲面片的绘制 205
7.5.5 编程实例——Bezier曲线曲面绘制 206
习题7 210
第8章 真实感图形技术 211
8.1 概述 211
8.1.1 真实感图形生成流程 211
8.1.2 真实感图形特点 212
8.2 消隐算法 213
8.2.1 消隐基础知识 213
8.2.2 平面立体消隐算法 218
8.2.3 深度缓冲器算法 223
8.2.4 画家算法 226
8.3 颜色模型 230
8.3.1 物体的颜色 230
8.3.2 颜色空间 231
8.3.3 常用颜色模型 232
8.3.4 OpenGL中的颜色模型 233
8.4 光照模型 236
8.4.1 基本光照模型 236
8.4.2 明暗度处理模型 240
8.4.3 透明与阴影 244
8.4.4 光线追踪模型 246
8.5 纹理映射技术 252
8.5.1 概述 252
8.5.2 颜色纹理映射 253
8.5.3 几何纹理映射 256
8.5.4 环境映射 257
8.6 OpenGL真实感图形 258
8.6.1 OpenGL光照函数 258
8.6.2 物体表面特性函数 262
8.6.3 OpenGL纹理映射 263
8.6.4 编程实例——纹理映射 266
习题8 268
第9章 交互技术 269
9.1 人机交互界面 269
9.1.1 用户接口模型 269
9.1.2 信息输入控制方式 271
9.2 交互技术 273
9.2.1 交互输入技术 273
9.2.2 交互控制技术 274
9.2.3 图形拾取技术 277
9.3 OpenGL交互式绘图 281
9.3.1 OpenGL选择模式 281
9.3.2 OpenGL反馈模式 283
9.3.3 编程实例——图形拾取 284
习题9 287
第10章 计算机动画 288
10.1 动画简介 288
10.2 关键帧动画技术 289
10.2.1 关键帧插值 290
10.2.2 基于网格的图像变形技术 291
10.2.3 FFD自由变形技术(Free-Form Deformation) 292
10.2.4 关节动画和角色动画 293
10.3 过程动画 295
10.3.1 粒子系统 296
10.3.2 基于物理模型的布料动画 297
10.4 OpenGL动画 299
10.4.1 双缓存技术 299
10.4.2 OpenGL帧缓存 300
10.4.3 编程实例——太阳系动画 302
习题10 305
参考文献 306
附录A 课程实验指导 307
附录B 模拟试题 336