第1章 概述 1
1.1 计算机图形学的概念与研究内容 1
1.1.1 什么是计算机图形学 1
1.1.2 图像处理、模式识别与计算机图形学 2
1.1.3 计算机绘图与CAD/CAM技术的关系 4
1.1.4 计算机图形学研究的内容及当前的热点课题 5
1.2 计算机图形学发展概况 6
1.3 计算机图形学特点和应用 7
1.3.1 计算机图形学的特点 7
1.3.2 计算机图形学的应用领域 8
1.4 计算机图形生成和输出的流水线 10
1.4.1 图形生成和输出的流水线概述 10
1.4.2 基本图形的点阵转换 11
1.4.3 区域填充 11
1.4.4 图形变换 11
1.4.5 图形裁剪 12
1.4.6 三维图形生成和输出的流水线(真实感图像的绘制) 12
习题 12
第2章 计算机图形系统 13
2.1 计算机图形系统的组成 13
2.1.1 图形系统的结构 13
2.1.2 图形系统的基本功能及其硬件性能要求 14
2.1.3 图形系统分类及硬件工作平台 15
2.2 计算机图形显示器 17
2.2.1 CRT显示器 17
2.2.2 液晶显示器 26
2.2.3 等离子显示器 29
2.2.4 其他类型的显示器 30
2.3 计算机图形输入/输出设备 31
2.3.1 计算机图形输入设备 31
2.3.2 计算机图形输出设备 35
2.4 图形核心系统简介 39
2.4.1 GKS的功能 40
2.4.2 GKS的基本概念 41
2.4.3 GKS图形输出原语 42
2.4.4 图段 43
2.4.5 GKS图形输入设备 44
2.4.6 GKS-3D简介 46
2.5 通用图形软件简介 46
2.5.1 通用图形软件的分类 46
2.5.2 典型图形软件及图形库一览 47
2.5.3 主流图形接口及软件简介 48
习题 50
第3章 C语言图形程序设计基础 51
3.1 屏幕设置 51
3.1.1 屏幕显示模式与坐标系 51
3.1.2 图形驱动程序与图形模式 52
3.1.3 图形系统初始化和模式控制 53
3.1.4 图形坐标的设置 56
3.1.5 屏幕窗口操作 57
3.2 图形颜色设置 59
3.2.1 颜色的设置 59
3.2.2 调色板 61
3.2.3 获取颜色信息 63
3.3 线的特性设定和填充 64
3.3.1 线的特性设定 64
3.3.2 填充 65
3.4 图形模式下文本处理 67
3.4.1 文本输出函数 67
3.4.2 输出文本的设置 68
3.5 图形存取处理 71
3.5.1 检测所需内存 71
3.5.2 把图形存入内存 71
3.5.3 从内存复制图形到屏幕 72
3.6 常用画图函数简介 73
3.6.1 直线类函数 73
3.6.2 多边形类函数 73
3.6.3 圆弧类函数 73
3.6.4 填充类函数 74
3.7 绘图程序实例 74
3.8 C++语言环境下绘图 82
3.8.1 Borland C++开发图形程序环境设置 82
3.8.2 在VC++6.0中使用Borland的图形程序包 82
习题 82
第4章 二维图形生成和变换技术 83
4.1 基本绘图元素 83
4.1.1 点 84
4.1.2 直线 84
4.1.3 曲线 85
4.1.4 区域填充 85
4.2 直线段的生成 86
4.2.1 逐点比较法 86
4.2.2 数值微分法 89
4.2.3 Bresenham法 90
4.3 曲线的生成 92
4.3.1 圆弧的生成 92
4.3.2 椭圆的生成 99
4.3.3 规则曲线的生成 101
4.3.4 自由曲线的生成 105
4.4 区域填充 121
4.4.1 多边形区域填充 121
4.4.2 边填充 123
4.4.3 种子填充 124
4.5 二维图形变换 126
4.5.1 二维图形几何变换的基本原理 126
4.5.2 几何变换的矩阵表示形式 130
4.5.3 二维图形齐次坐标矩阵变换 134
4.5.4 组合变换 137
4.5.5 二维图形变换程序设计 141
4.6 二维图像裁剪 146
4.6.1 窗口区和视图区 146
4.6.2 直线段裁剪 148
4.6.3 多边形裁剪 153
4.6.4 其他类型图形裁剪 156
4.6.5 二维图形裁剪程序设计 156
4.7 反走样技术 159
4.7.1 走样和反走样的定义 159
4.7.2 超采样 159
4.7.3 区域采样 160
习题 161
第5章 三维图形生成和变换技术 163
5.1 三维图形的概念 163
5.2 自由曲面的生成 163
5.2.1 空间曲面的参数表示 164
5.2.2 Bezier(贝塞尔)曲面 165
5.2.3 B样条曲面 169
5.2.4 Coons(孔斯)曲面 172
5.2.5 NURBS(非均匀有理B样条)曲面 175
5.3 三维图形变换 175
5.3.1 三维图形几何变换 176
5.3.2 三维图形平行投影变换 184
5.3.3 三维图形透视投影变换 195
5.4 三维图形裁剪和消隐技术 200
5.4.1 三维图形的裁剪 200
5.4.2 三维图形消隐 202
习题 208
第6章 真实感图形生成技术 209
6.1 概述 209
6.2 简单光照模型 210
6.2.1 环境反射光 211
6.2.2 漫反射光 211
6.2.3 镜面反射光 211
6.2.4 Phong光照模型 212
6.3 明暗处理方法 213
6.3.1 哥罗德(Gouraud)强度插值法 213
6.3.2 Phong(冯)法向插值方法 214
6.4 阴影生成方法 215
6.4.1 自身阴影生成方法 215
6.4.2 投射阴影生成方法 216
6.5 整体光照模型 217
6.5.1 透明性的简单模型 217
6.5.2 整体光照模型 218
6.5.3 光线跟踪算法 218
6.5.4 辐射度算法 219
6.6 纹理处理方法 220
6.6.1 纹理映射 221
6.6.2 扰动映射 222
6.7 图形颜色和颜色模型 223
6.7.1 颜色的性质 223
6.7.2 CIE色度图 225
6.7.3 颜色模型 228
习题 230
第7章 几何造型简介 231
7.1 概述 231
7.2 几何造型系统的三种模型 232
7.2.1 线框模型 232
7.2.2 表面模型 233
7.2.3 实体模型 234
7.3 实体模型的构造 234
7.3.1 概述 234
7.3.2 边界表示法 236
7.3.3 构造实体几何法 238
7.3.4 扫描法 241
7.3.5 分解表示法 241
习题 244
第8章 计算机动画技术 245
8.1 计算机动画概述 245
8.1.1 计算机动画历史与现状 245
8.1.2 传统动画和计算机动画 246
8.1.3 计算机动画的研究内容 247
8.1.4 计算机动画的应用 247
8.2 计算机动画的分类和原理 249
8.2.1 计算机动画的分类 249
8.2.2 计算机动画原理 252
8.3 计算机动画的关键技术 254
8.3.1 旋转的四元数表示 254
8.3.2 碰撞检测技术 256
8.3.3 运动捕捉技术 260
习题 266
第9章 计算机动画实践 267
9.1 计算机动画编程 267
9.1.1 Turbo C动画编程 267
9.1.2 基于OpenGL的Visual C++动画编程 270
9.1.3 基于OGRE的Visual C++动画编程 273
9.2 计算机动画软件 276
9.2.1 二维动画软件 277
9.2.2 三维动画软件 278
9.3 3ds Max动画制作 279
9.3.1 软件环境简介 279
9.3.2 刚体动画实例 283
9.3.3 软体动画实例 285
9.3.4 骨骼动画实例 288
习题 291
第10章 虚拟现实技术及VRML语言 292
10.1 虚拟现实技术概述 292
10.1.1 虚拟现实技术的基本概念 292
10.1.2 虚拟现实技术的特征与分类 292
10.1.3 虚拟现实技术的发展 294
10.1.4 几个典型的虚拟现实应用 294
10.2 虚拟现实系统工具 295
10.2.1 虚拟现实设备 295
10.2.2 主流的虚拟现实引擎 296
10.2.3 虚拟现实的软件开发工具 296
10.3 虚拟现实建模及语言 298
10.3.1 虚拟现实建模技术 298
10.3.2 虚拟现实建模语言 299
10.3.3 分布式虚拟现实系统 319
10.4 基于VRML语言的虚拟现实场景实例 321
10.4.1 南京邮电大学校园导游系统 321
10.4.2 分布式虚拟坦克战场 327
习题 335
附录A 实验 336
实验1 编程实现“自行车行驶动画” 336
实验2 自由设计“美术图案” 336
实验3 编程生成“三次贝塞尔曲线” 337
实验4 编程实现“多边形扫描线种子填充算法” 337
实验5 编程生成“双三次Bezier曲面” 338
实验6 编程实现“三维图形的几何变换” 338
实验7 编程实现“三维图形的消隐” 339
实验8 编程实现“光线跟踪算法” 339
实验9 编程实现“基于OpenGL图形库的三维动画” 340
实验10 制作基于3ds Max的三维动画 341
实验11 实现“颜色随机变换的旋转十字架”虚拟现实场景 341
实验12 设计与实现“校园导航系统” 342
附录B 标准显示模式及扩充VGA显示模式 343
参考文献 345