第1章 绪论 1
1.1 计算机图形学及其相关概念 1
1.2 计算机图形学的发展 2
1.3 计算机图形学的应用 6
1.4 计算机图形学的相关技术 9
1.4.1 OpenGL技术 9
1.4.2 DirectX技术 10
1.4.3 Web3D技术 10
本章小结 11
习题1 11
第2章 计算机图形系统组成 12
2.1 概述 12
2.1.1 计算机图形系统的功能 12
2.1.2 计算机图形系统的结构 13
2.2 图形显示与观察设备 14
2.3 图形输入设备 20
2.4 图形输出设备 23
2.5 图形软件及其标准 24
本章小结 27
习题2 27
第3章 OpenGL编程基础 28
3.1 OpenGL简介 28
3.2 OpenGL的功能 29
3.3 OpenGL的组成 30
3.4 OpenGL体系结构 33
3.5 OpenGL工作流程 33
3.6 OpenGL数据类型 34
3.7 OpenGL函数命名约定 35
3.8 OpenGL编程初探 36
3.8.1 OpenGL编程入门 36
3.8.2 OpenGL程序结构 37
本章小结 37
习题3 37
第4章 基本图元的生成 38
4.1 点的生成算法 38
4.2 直线的生成算法 39
4.2.1 DDA算法 39
4.2.2 Bresenham算法 40
4.3 圆的生成算法 41
4.4 区域填充算法 44
4.4.1 多边形扫描转换算法 44
4.4.2 边缘填充算法 49
4.4.3 种子填充算法 50
4.5 字符的生成 51
4.6 光栅图形的反走样 51
本章小结 53
习题4 53
第5章 OpenGL中基本图元的绘制 54
5.1 点的绘制 55
5.2 直线的绘制 55
5.3 可填充的图元绘制 57
5.4 多边形的绘制模式 58
5.5 圆和椭圆的绘制 61
5.6 状态的保存 63
5.7 字符的绘制 65
5.8 反走样的实现 67
本章小结 68
习题5 68
第6章 图形用户界面与交互技术 69
6.1 概述 69
6.2 入机交互用户界面的设计原则 70
6.3 逻辑输入设备及数据输入处理 71
6.3.1 逻辑输入设备 72
6.3.2 数据输入处理 73
6.4 基本交互技术 74
6.4.1 基本绘图技术 74
6.4.2 基本三维交互技术 74
6.5 OpenGL交互与动画技术的实现 75
6.5.1 窗口改变回调函数 75
6.5.2 闲置回调函数 75
6.5.3 重绘回调函数 76
6.5.4 单、双缓存技术 77
6.5.5 键盘交互 78
6.5.6 鼠标交互 80
6.5.7 快捷菜单 82
6.5.8 子窗口与多窗口 83
6.5.9 显示列表 84
6.5.10 拾取操作 88
本章小结 95
习题6 95
第7章 图形变换 96
7.1 二维基本几何变换 96
7.1.1 平移变换 96
7.1.2 比例变换 97
7.1.3 旋转变换 98
7.1.4 对称变换 98
7.1.5 错切变换 100
7.2 齐次坐标 101
7.2.1 齐次坐标的概念 101
7.2.2 二维齐次坐标变换 102
7.3 组合变换 103
7.3.1 组合平移 103
7.3.2 组合旋转 104
7.3.3 组合缩放 104
7.3.4 对任一固定点旋转 105
7.3.5 对任一固定点缩放 105
7.3.6 对任一固定轴对称变换 106
7.3.7 矩阵合并特性 107
7.4 二维观察 108
7.4.1 二维观察流程 108
7.4.2 窗口到视区的变换 110
7.4.3 OpenGL二维图形变换及其实例 113
7.4.4 二维直线裁剪算法及其实现 120
7.4.5 其他二维图形裁剪算法介绍 128
7.5 三维几何变换 129
7.5.1 三维基本几何变换 129
7.5.2 三维组合变换 134
7.5.3 OpenGL三维图形变换及其实例 136
本章小结 141
习题7 141
第8章 三维观察与投影变换 142
8.1 三维观察 142
8.1.1 三维观察流程 142
8.1.2 三维观察坐标系 142
8.1.3 从世界坐标系到观察坐标系的变换 143
8.2 投影变换 144
8.2.1 平行投影 145
8.2.2 透视投影 147
8.3 空间规范化 149
8.4 三维裁剪 152
8.4.1 三维区域码 152
8.4.2 三维编码裁剪法 153
8.5 OpenGL三维观察与投影函数 154
本章小结 157
习题8 157
第9章 真实感图形绘制 158
9.1 颜色模型 158
9.1.1 RGB模型 158
9.1.2 CMY模型 159
9.1.3 HSV模型 159
9.1.4 YIQ模型 160
9.1.5 OpenGL颜色表示 160
9.2 光照基础知识 164
9.2.1 表面光照效果 164
9.2.2 光源 165
9.2.3 反射定律 165
9.2.4 折射定律 165
9.3 简单光照明模型 166
9.3.1 环境反射光 166
9.3.2 漫反射光 166
9.3.3 镜面反射光 167
9.3.4 Phong光照模型 168
9.4 消隐技术 170
9.4.1 消隐算法分类 170
9.4.2 深度缓存算法 171
9.4.3 OpenGL消隐算法的实现 172
9.5 OpenGL的简单光照实现 175
9.6 雾气效果 180
9.7 透明的生成 182
9.8 阴影的生成 184
9.9 纹理映射 187
9.9.1 纹理概念 187
9.9.2 OpenGL基本纹理映射 188
9.9.3 自动纹理映射 193
9.9.4 Mipmap纹理映射技术 195
本章小结 197
习题9 197
第10章 曲线曲面造型 198
10.1 曲线曲面基础知识 198
10.1.1 曲线曲面表示 198
10.1.2 插值与逼近 200
10.1.3 参数连续性与几何连续性 201
10.2 Bézier曲线曲面 203
10.2.1 Bézier曲线曲面的定义 203
10.2.2 Bézier曲线曲面的性质 205
10.3 B样条曲线曲面 207
10.3.1 B样条曲线曲面的定义 207
10.3.2 B样条曲线曲面的性质 208
10.4 NURBS曲线曲面 209
10.4.1 NURBS曲线曲面的定义 209
10.4.2 NURBS曲线曲面的性质 210
10.5 多结点样条曲线曲面 211
10.5.1 多结点样条曲线曲面的定义 211
10.5.2 多结点样条曲线曲面的性质 213
10.6 曲线曲面造型算法比较 214
10.7 OpenGL中曲线曲面绘制 215
10.7.1 Bézier曲线曲面绘制 215
10.7.2 NURBS曲线曲面绘制 223
10.7.3 控制点基函数曲线曲面绘制 230
本章小结 242
习题10 242
第11章 三维形体的表示 243
11.1 构造实体几何表示法 243
11.2 扫描表示法 244
11.3 分解模型表示法 245
11.4 边界表示法 246
11.5 分形几何法 247
11.5.1 分形几何概念 247
11.5.2 分形几何模型 248
11.5.3 OpenGL分形实现举例 250
11.6 粒子系统 254
11.6.1 粒子系统介绍 254
11.6.2 OpenGL粒子系统 255
本章小结 259
习题11 259
实验一 OpenGL图形编程入门 260
实验二 OpenGL的简单动画 267
实验三 OpenGL的键盘交互绘制 272
实验四 OpenGL的鼠标交互绘制 277
实验五 基本图元的生成算法 282
实验六 2D图形变换 291
实验七 2D太阳系绘制 294
实验八 线段裁剪算法 298
实验九 3D编程基础 300
实验十 3D机器人 306
实验十一 交互的3D漫游世界 310
实验十二 简单光照和材质 315
实验十三 雾、透明和阴影 331
实验十四 3DS格式的模型显示 349
实验十五 纹理映射 371
实验十六 Bézier曲线曲面绘制 383
实验十七 多结点样条曲线曲面绘制 385
参考文献 387