第1章 绪论 1
1.1 计算机图形学的研究内容 1
1.2 计算机图形学的发展简史 2
1.3 计算机图形技术的应用 4
1.4 计算机图形系统 7
1.4.1 计算机图形系统的组成 7
1.4.2 常用图形输入设备 10
1.4.3 常用图形输出设备 12
1.4.4 计算机图形系统软件 23
1.5 计算机图形学的发展动向 24
1.5.1 造型技术的发展 24
1.5.2 真实图形生成技术的发展 25
1.5.3 人—机交互技术的发展 25
习题 26
第2章 二维图形生成技术 27
2.1 直线的生成 27
2.1.1 直接生成法 27
2.1.2 数值微分法 28
2.1.3 中点画线法 30
2.1.4 Bresenham画线算法 32
2.1.5 双步画线算法 33
2.2 圆的生成 35
2.2.1 圆的八点对称 35
2.2.2 Bresenham画圆算法 36
2.2.3 中点画圆算法 38
2.2.4 正负法画圆 40
2.3 椭圆的生成 42
2.4 自由曲线的生成 42
2.5 输出图元的属性 43
2.5.1 线宽控制 43
2.5.2 线型控制 44
2.6 字符的生成 45
2.6.1 字符形状表示 46
2.6.2 字符属性 47
习题 47
第3章 二维实面积图形的生成 50
3.1 矩形填充 50
3.2 区域填充 51
3.2.1 多边形的扫描转换算法 51
3.2.2 边填充算法 62
3.2.3 种子填充算法 72
3.3 图案填充 78
3.3.1 使用扫描转换的图案填充 78
3.3.2 不用扫描转换的图案填充 80
习题 81
第4章 二维图形变换 83
4.1 数学基础 83
4.1.1 向量及其性质 83
4.1.2 向量点积 84
4.1.3 矩阵 84
4.1.4 矩阵乘法 84
4.1.5 矩阵的转置 85
4.1.6 矩阵的逆 85
4.1.7 齐次坐标 85
4.2 基本变换 86
4.2.1 平移变换 86
4.2.2 比例变换 87
4.2.3 旋转变换 88
4.2.4 其他变换 89
4.3 组合变换 92
4.3.1 单一基本变换的组合变换 92
4.3.2 多个基本变换的组合变换 93
4.3.3 组合变换举例 95
习题 96
第5章 二维图形的裁剪 99
5.1 图形的开窗 99
5.1.1 图形学中常用的坐标系 99
5.1.2 窗口与视区的坐标变换 100
5.2 线段裁剪算法 102
5.2.1 裁剪端点 102
5.2.2 利用求解联立方程组的线段裁剪 102
5.2.3 Cohen-Sutherland线段裁剪 105
5.2.4 参数化的线段裁剪 108
5.3 多边形裁剪算法 109
5.3.1 Sutherland-Hodgman算法 110
5.3.2 Weiler-Atherton算法 113
5.4 圆的裁剪 127
5.5 文本裁剪算法 128
5.5.1 字符串裁剪 128
5.5.2 字符裁剪 128
5.5.3 笔画裁剪 128
5.6 二维图形的输出流程 129
习题 129
第6章 三维图形学基础 131
6.1 三维图形的几何变换 131
6.1.1 三维坐标系的建立 131
6.1.2 三维图形几何变换 132
6.1.3 三维坐标系变换 137
6.2 三维图形的投影 138
6.2.1 投影与投影变换的定义 138
6.2.2 平面几何投影的分类 139
6.2.3 透视投影 140
6.2.4 平行投影 141
6.3 三维裁剪 146
6.3.1 用三维规范视见体进行裁剪 146
6.3.2 在齐次坐标中裁剪 148
6.4 坐标系统 148
6.5 三维图形的输出流程 149
习题 150
第7章 三维物体的表示 152
7.1 平面物体的表示 152
7.1.1 多边形表 153
7.1.2 平面方程 154
7.1.3 多边形网格 156
7.2 二次曲面 157
7.2.1 球面 157
7.2.2 椭球面 158
7.2.3 环面 158
7.3 孔斯(Coons)曲面 159
7.3.1 第一类Coons曲面 159
7.3.2 第二类Coons曲面 160
7.4 贝塞尔(Bezier)曲面 162
7.4.1 Bezier曲面的定义 162
7.4.2 Bezier曲面的性质 163
7.5 B样条曲面 164
习题 165
第8章 真实感图形显示技术 168
8.1 颜色模型 168
8.1.1 RGB颜色模型 169
8.1.2 CMY颜色模型 169
8.1.3 HSV颜色模型 170
8.2 光照模型 171
8.2.1 环境光 173
8.2.2 漫反射 173
8.2.3 镜面反射 174
8.2.4 点光源与柱光源(锥光源) 175
8.3 阴影的生成 175
8.3.1 扫描线阴影生成算法 175
8.3.2 阴影体 177
8.4 纹理映射 177
8.4.1 颜色纹理 178
8.4.2 几何纹理 180
8.5 透明性 181
8.5.1 无折射的透明 181
8.5.2 折射透明性 182
8.6 隐藏线的消除 185
8.7 隐藏面的消除 192
8.7.1 基本检测 193
8.7.2 画家算法 195
8.7.3 深度缓冲器算法(Z缓冲区算法) 197
8.7.4 扫描线算法 198
8.7.5 区域细分算法 199
习题 200
第9章 OpenGL环境下图形系统的设计 203
9.1 概述 203
9.2 OpenGL应用程序的工作过程 204
9.3 OpenGL的功能 206
9.4 OpenGL的基本语法规则 207
9.4.1 OpenGL的数据类型 207
9.4.2 OpenGL的函数约定 208
9.5 OpenGL基本图元绘制 209
9.5.1 概述 209
9.5.2 点 210
9.5.3 线 211
9.5.4 多边形 213
9.5.5 字符 214
9.6 OpenGL图形的几何变换 214
9.6.1 矩阵操作函数 214
9.6.2 几何变换 215
9.6.3 OpenGL视区变换 216
9.7 OpenGL的交互操作 217
9.7.1 物体的选择 217
9.7.2 反馈 218
9.8 OpenGL观察流程和函数 220
9.8.1 常用的变换函数 220
9.8.2 模视变换 221
9.8.3 投影变换 223
9.8.4 视区变换 224
9.8.5 附加裁剪面 225
9.9 OpenGL中自由曲线和曲面的绘制 226
9.9.1 Bezier曲线的绘制 226
9.9.2 Bezier曲面的绘制 227
9.9.3 NURBS曲线的绘制 228
9.9.4 NURBS曲面的绘制 230
9.10 OpenGL中的多边形的消除与消隐 230
9.11 OpenGL的真实感图形绘制 232
9.11.1 OpenGL颜色 232
9.11.2 OpenGL光照 234
9.11.3 OpenGL明暗处理 235
9.11.4 OpenGL纹理映射 235
9.12 一个OpenGL图形演示系统的设计 238
9.12.1 位图数据的处理 239
9.12.2 模型的绘制 243
9.12.3 编程步骤 247
习题 249
第10章 VRML环境下图形系统的设计 251
10.1 虚拟现实简介 251
10.2 VRML概述 252
10.3 VRML基本语法 254
10.3.1 VRML的通用语法结构 254
10.3.2 VRML的基本概念 255
10.3.3 VRML空间计量单位 256
10.3.4 VRML的节点简介 256
10.3.5 域 257
10.4 在场景中添加几何体 259
10.4.1 Shape节点对几何体的封装 259
10.4.2 添加长方体 260
10.4.3 添加球体 260
10.4.4 添加圆柱体 261
10.4.5 添加圆锥体 262
10.4.6 添加文本 263
10.5 几何体的几何变换 265
10.5.1 理解VRML空间 265
10.5.2 Transform节点的语法 266
10.5.3 平移几何体 266
10.5.4 旋转几何体 267
10.5.5 缩放几何体 270
10.6 真实感场景创建 271
10.6.1 光照 271
10.6.2 纹理 276
10.6.3 雾化 279
10.7 一个VRML虚拟漫游系统的设计 281
10.7.1 物体模型的设计 281
10.7.2 漫游场景的最终生成 285
习题 287
参考文献 289