第1章 绪论 1
1.1 计算机图形学的概念、发展和应用 1
1.1.1 计算机图形学的概念 1
1.1.2 计算机图形学的发展 4
1.1.3 计算机图形学的应用 6
1.2 计算机图形系统 10
1.2.1 计算机图形系统硬件 10
1.2.2 计算机图形系统软件 11
1.3 计算机图形标准 11
1.3.1 图形标准 12
1.3.2 图形设备接口标准 13
1.3.3 图形元文件标准 13
1.3.4 基本图形交换规范 14
习题 15
第2章 交互式图形软件设计 16
2.1 交互式图形软件设计方法 16
2.1.1 Visual C+++ 6.0开发环境和开发工具概述 16
2.1.2 MFC类库简介 18
2.1.3 使用AppWizard生成图形应用程序的框架 21
2.1.4 使用资源编辑器生成图形用户界面 24
2.1.5 利用消息映射和消息处理实现交互式绘图 26
2.2 CDC图形程序库 30
2.2.1 绘图工具选择 30
2.2.2 坐标系统设置与转换 33
2.2.3 绘图模式与背景设置 35
2.2.4 图形绘制 36
2.2.5 区域填充 39
2.3 面向对象的画图程序设计 40
2.3.1 类与数据封装 40
2.3.2 派生类与继承性 41
2.3.3 虚函数与多态性 42
2.3.4 数据存储与屏幕重绘 43
2.3.5 绘图程序的设计思路 43
2.4 图形类的定义 44
2.4.1 图形基类CShape 45
2.4.2 直线类CLine 45
2.4.3 贝塞尔曲线类CBezier 46
2.4.4 矩形类CRectangle 47
2.4.5 圆类CCircle 49
2.4.6 椭圆类CEllipse 50
2.4.7 多边形类CPolygon 52
2.5 绘图程序的实现 53
2.5.1 建立绘图程序框架 53
2.5.2 增加绘图菜单 54
2.5.3 在屏幕上画图 58
2.5.4 在文档类中保存图形 64
2.5.5 创建线型线宽对话框 67
2.5.6 图形程序的编译运行 73
2.5.7 简单实用图形学程序设计举例 74
习题 79
第3章 基本图形生成 80
3.1 直线的生成 80
3.1.1 数值微分算法 81
3.1.2 中点画线算法 83
3.1.3 Bresenham画线算法 84
3.2 圆与椭圆的生成 86
3.2.1 圆的特性 86
3.2.2 中点画圆算法 88
3.2.3 Bresenham画圆算法 89
3.2.4 椭圆的生成算法 90
3.3 区域填充 95
3.3.1 有序边表填充算法 95
3.3.2 边填充算法 101
3.3.3 种子填充算法 102
3.3.4 圆和椭圆的填充 106
3.3.5 图案填充 106
3.4 裁剪 108
3.4.1 点的裁剪 108
3.4.2 直线段的裁剪 109
3.4.3 多边形的裁剪 118
3.5 线宽与线型的处理 124
3.5.1 直线线宽的处理 124
3.5.2 圆弧线宽的处理 126
3.5.3 线型的处理 127
习题 127
第4章 图形变换 129
4.1 几何变换 129
4.1.1 几何变换的齐次坐标法 129
4.1.2 二维基本变换 131
4.1.3 二维组合变换 135
4.1.4 三维基本变换 137
4.1.5 三维组合变换 143
4.1.6 参数图形的几何变换 144
4.2 投影变换 148
4.2.1 正投影变换(三视图) 149
4.2.2 正轴测投影变换 150
4.2.3 斜轴测投影变换 153
4.2.4 透视投影变换 155
4.2.5 视域体及三维裁剪 159
4.3 窗口视区变换 161
4.3.1 坐标系 161
4.3.2 窗口与视区 162
4.3.3 窗口-视区变换 163
4.4 视向变换 164
4.4.1 世界坐标系和观察坐标系 164
4.4.2 视向变换矩阵 165
习题 167
第5章 曲线和曲面 168
5.1 曲线和曲面基础 168
5.1.1 规则曲线和曲面的3种坐标表示法 168
5.1.2 参数样条曲线和曲面的常用术语 171
5.2 二次插值样条曲线 174
5.2.1 二次插值样条曲线的数学表达式 174
5.2.2 二次插值样条曲线的加权合成 176
5.2.3 二次插值样条曲线的端点条件 178
5.2.4 二次插值样条曲线的性质 179
5.3 三次插值样条曲线 181
5.3.1 三次自然样条曲线 181
5.3.2 Hermite样条曲线 182
5.3.3 Cardinal样条曲线 183
5.4 Bezier曲线和曲面 185
5.4.1 Bezier曲线的定义 186
5.4.2 Bezier曲线的性质 187
5.4.3 二次Bezier曲线 188
5.4.4 三次Bezier曲线 189
5.4.5 反算Bezier曲线控制点 190
5.4.6 Bezier曲线的多项式定义生成算法 191
5.4.7 Bezier曲线的分割递推de Casteliau算法 192
5.4.8 Bezier曲线的拼接 193
5.4.9 Bezier曲面 195
5.5 B样条曲线和曲面 196
5.5.1 B样条曲线的多项式定义(Clark定义法) 197
5.5.2 B样条曲线的递推定义 198
5.5.3 二次B样条曲线 201
5.5.4 三次B样条曲线 202
5.5.5 B样条曲线生成的de Boor算法 205
5.5.6 反求B样条曲线的控制点及其端点性质 208
5.5.7 B样条曲面 209
5.6 有理样条曲线 211
5.6.1 有理Bezier曲线 211
5.6.2 有理B样条曲线 213
5.6.3 非均匀有理B样条(NUBS)曲线 215
习题 216
第6章 几何造型 217
6.1 形体的定义和存储模型 217
6.1.1 形体的定义 217
6.1.2 形体的存储模型 219
6.2 实体表示方法 222
6.2.1 构造的实体几何法 222
6.2.2 边界表示法 224
6.2.3 扫描表示法 225
6.2.4 特征表示法 225
6.2.5 单元分解表示法 227
6.3 布尔运算 228
6.3.1 布尔运算的概念 229
6.3.2 多边形的描述 229
6.3.3 多边形重叠性检验 229
6.3.4 布尔运算的规则 231
6.4 分形几何造型 232
6.4.1 分形和分形几何造型的概念 232
6.4.2 分形维数和分形几何造型 233
6.4.3 典型分形曲线集 235
习题 248
第7章 真实感图形 249
7.1 消除隐藏线 249
7.1.1 平面体的消隐处理 250
7.1.2 曲面体的消隐处理 256
7.2 消除隐藏面 269
7.2.1 基本检测 270
7.2.2 画家算法 272
7.2.3 深度缓冲器算法(Z缓冲区算法) 274
7.2.4 扫描线算法 275
7.2.5 区域细分算法 277
7.3 光照模型与明暗效应 278
7.3.1 光照的基本模型 278
7.3.2 局部光照模型 281
7.3.3 整体光照模型 283
7.3.4 明暗处理方法 284
7.4 纹理图案映射 286
7.4.1 确定映射关系 287
7.4.2 平面图案的矢量化处理与离散细分 288
7.4.3 映射效果的三维显示 288
习题 295
第8章 实验指导 297
8.1 基础篇 297
实验一 直线扫描转换 298
实验二 圆的扫描转换 298
实验三 椭圆扫描转换 298
实验四 区域递归种子填充 299
实验五 区域链队列种子填充 300
实验六 有序边表的图案填充 301
实验七 Cohen-Sutherland线段编码裁剪 303
实验八 Cyrus-Beck多边形窗口参数化裁剪 305
实验九 矩形窗口逐边裁剪多边形 306
实验十二 维图形的几何变换 308
实验十一 三维图形投影变换 310
实验十二 Bezier曲线绘制 312
实验十三 B样条曲线绘制 313
8.2 提高篇 315
实验A 基本图形生成编程 315
实验B 图形变换编程 332
实验C 曲线编程 342
实验D 三维几何造型编程 349
实验E 真实感图形编程 356
参考文献 359
附录A 计算机图形学函数库 361
A.1 全局函数原型定义 362
A.2 全局函数的实现 365