第1章 MFC图形编程基础 1
1.1 MFC概述 1
1.2 创建MFC项目 1
1.2.1 使用MFC AppWizard创建MFC项目 1
1.2.2 MFC项目工作区窗口 4
1.2.3 文档/视图体系 6
1.3 设备环境和OnDraw函数 7
1.4 CDC类常用绘图函数 10
1.4.1 SetPixel函数和GetPixel函数 10
1.4.2 LineTo函数和MoveTo函数 11
1.4.3 Polyline函数和PolylineTo函数 12
1.4.4 Arc函数和ArcTo函数 14
1.4.5 AngleArc函数 15
1.4.6 PolyBezier函数和PolyBezierTo函数 16
1.4.7 Rectangle函数 17
1.4.8 RoundRect函数 17
1.4.9 Ellipse函数 18
1.4.10 Pie函数 19
1.4.11 Chord函数 19
1.4.12 Polygon函数 20
1.4.13 PolyPolygon函数 20
1.5 视图重画 21
1.5.1 编辑应用程序菜单 21
1.5.2 使用ClassWizard为菜单项连接处理函数 24
1.5.3 主动视图重画 28
1.6 绘图工具 32
1.6.1 使用库存的绘图工具 32
1.6.2 使用自定义绘图工具 38
1.7 文本输出 53
1.7.1 文本输出函数 54
1.7.2 设置文本颜色及文本对齐方式 57
1.7.3 CFont类 60
1.8 绘图属性 63
1.8.1 映射模式和坐标变换 64
1.8.2 设置坐标系原点 68
1.8.3 设置背景模式和背景颜色 69
1.8.4 设置画弧方向 71
1.8.5 设置绘图模式 71
1.8.6 其他绘图属性函数及较常用的CDC成员函数 73
第2章 图形基元扫描转换算法的实现 74
2.1 直线扫描转换算法的实现 74
2.1.1 DDA直线扫描转换算法的实现 75
2.1.2 中点画线法的实现 75
2.1.3 Bresenham画线算法的实现 79
2.1.4 演示三种直线扫描转换算法 83
2.1.5 比较三种直线扫描转换算法的运行效率 86
2.1.6 线型和线宽 87
2.2 圆的扫描转换算法的实现 90
2.2.1 中点画圆法的实现 90
2.2.2 Bresenham画圆算法的实现 92
2.2.3 Bresenham画椭圆算法的实现 94
2.3 区域填充算法的实现 97
2.3.1 种子填充算法的实现 97
2.3.2 多边形扫描转换算法的实现 100
第3章 图形变换 108
3.1 变换的数学基础 108
3.2 二维图形的几何变换 110
3.3 投影变换 122
3.3.1 平行投影 122
3.3.2 透视投影 126
3.4 三维图形变换 126
3.5 裁剪 130
第4章 曲线和曲面 140
4.1 埃尔米特多项式 140
4.1.1 三次埃尔米特多项式 140
4.1.2 埃尔米特曲线绘制的程序设计 140
4.2 孔斯曲面 144
4.2.1 孔斯双三次曲面片 144
4.2.2 孔斯曲面绘制的程序设计 145
4.3 贝济埃曲线 149
4.3.1 直接绘制法 149
4.3.2 几何作图法 150
4.3.3 分裂法 152
4.3.4 贝济埃曲线绘制的程序设计 154
4.4 贝济埃曲面 160
4.4.1 双三次贝济埃曲面 160
4.4.2 贝济埃曲面绘制的程序设计 160
4.5 B样条曲线 164
4.5.1 直接绘制法 165
4.5.2 几何作图法(de Boor算法) 165
4.5.3 de Boor算法的几何意义 168
4.5.4 均匀B样条曲线 168
4.5.5 准均匀B样条曲线 168
4.5.6 B样条曲线绘制的程序设计 169
4.6 B样条曲面 175
4.6.1 双三次B样条曲面 175
4.6.2 B样条曲面绘制的程序设计 176
第5章 图形运算 178
5.1 线段的交点计算 178
5.2 平面中的凸壳算法 183
5.3 包含与重叠 188
5.4 简单多边形的三角剖分 198
5.4.1 程序代码 199
5.4.2 程序运行方法 203
第6章 形体的表示以及数据结构 204
6.1 分形图的递归算法 204
6.1.1 康托尔集 204
6.1.2 Koch曲线和Koch雪花 205
6.1.3 Sierpinski垫和Sierpinski地毯 208
6.2 分形图的L-S文法构造算法 211
6.2.1 单一规则的L-S文法生成 211
6.2.2 多规则L-S文法生成 212
6.2.3 具体程序实现 212
6.3 时间逃逸算法 217
6.3.1 Julia集 217
6.3.2 Mandelbrot集 220
第7章 消隐 223
7.1 外法向量法消除隐藏线 223
7.2 浮动水平线法消除隐藏线 226
7.3 画家算法 232
7.4 z缓冲算法 235
7.5 扫描线算法 244
第8章 使用MFC实现真实感图形绘制 259
8.1 演示程序使用的场景造型 259
8.1.1 球体造型 260
8.1.2 生成球体表面参数点 261
8.1.3 球体表面三角剖分 261
8.2 局部光照模型 263
8.2.1 局部光照模型概述 263
8.2.2 Lambert漫反射光照模型概述 264
8.2.3 Lambert漫反射光照模型的实现 265
8.2.4 Phong局部光照模型概述 270
8.2.5 Phong局部光照模型的实现 271
8.3 色彩模型 274
8.4 多边形网格明暗处理的实现 279
8.5 阴影绘制的实现 286
8.6 简单纹理映射的实现 293
8.7 Whitted整体光照模型的实现 297
参考文献 310