第一部分 教学实验 3
实验任务书 3
实验1绘制金刚石图案 4
1.1实验目的 4
1.2实验要求 4
1.3效果图 4
1.4实验准备 5
1.5实验步骤 5
1.5.1创建Test工程实验框架 5
1.5.2绘制金刚石图案 15
1.5.3写出实验报告 24
1.6思考与练习 24
实验2绘制任意斜率的直线段 28
2.1实验目的 28
2.2实验要求 28
2.3效果图 28
2.4实验准备 29
2.5实验步骤 29
2.5.1定义颜色类CRGB 29
2.5.2设计CLine直线类 32
2.5.3消息映射 37
2.5.4写出实验报告 41
2.6思考与练习 41
实验3交互式绘制多边形 45
3.1实验目的 45
3.2实验要求 45
3.3效果图 45
3.4实验准备 46
3.5实验步骤 46
3.5.1人机交互技术 46
3.5.2双缓冲技术 48
3.5.3绘制多边形 49
3.5.4设计CPtrArray类 49
3.5.5有效边表填充算法 50
3.5.6写出实验报告 58
3.6思考与练习 58
实验4二维几何变换 61
4.1实验目的 61
4.2实验要求 61
4.3效果图 61
4.4实验准备 62
4.5实验步骤 62
4.5.1静态切分视图框架 62
4.5.2设计左窗格视图 65
4.5.3设计CTestDoc类 69
4.5.4设计包含齐次坐标的二维点类CP2 69
4.5.5设计二维几何变换类 70
4.5.6设计双缓冲 74
4.5.7读入图形顶点 75
4.5.8绘制图形 75
4.5.9碰撞检测 76
4.5.10定时器函数 76
4.5.11禁止背景刷新函数 77
4.5.12写出实验报告 77
4.6思考与练习 77
实验5直线段裁剪 80
5.1实验目的 80
5.2实验要求 80
5.3效果图 80
5.4实验准备 81
5.5实验步骤 81
5.5.1定义CP2类 81
5.5.2 OnDrw()函数 82
5.5.3绘制裁剪窗口 82
5.5.4鼠标左键按下函数 83
5.5.5鼠标移动函数 83
5.5.6编码函数 84
5.5.7裁剪函数 85
5.5.8写出实验报告 87
5.6思考与练习 87
实验6立方体线框模型正交投影 89
6.1实验目的 89
6.2实验要求 89
6.3效果图 89
6.4实验准备 90
6.5实验步骤 90
6.5.1立方体数学模型 90
6.5.2三维变换 91
6.5.3正交投影 93
6.5.4设计三维点类 93
6.5.5定义三维变换类 95
6.5.6定义点表 100
6.5.7定义面表 100
6.5.8绘制立方体线框模型 101
6.5.9键盘控制 101
6.5.10动画控制 102
6.5.11写出实验报告 104
6.6思考与练习 104
实验7立方体线框模型透视投影 106
7.1实验目的 106
7.2实验要求 106
7.3效果图 106
7.4实验准备 107
7.5实验步骤 107
7.5.1透视投影变换的实现 109
7.5.2定义点表 110
7.5.3定义面表 111
7.5.4绘制立方体 111
7.5.5缩小立方体 112
7.5.6放大立方体 112
7.5.7写出实验报告 112
7.6思考与练习 112
实验8动态三视图 115
8.1实验目的 115
8.2实验要求 115
8.3效果图 115
8.4实验准备 116
8.5实验步骤 116
8.5.1建立多面体的数据结构 116
8.5.2创建2×2静态切分窗格 117
8.5.3建立齐次三维点类 117
8.5.4建立表面类 119
8.5.5内存复制 120
8.5.6三视图变换矩阵 122
8.5.7矩阵相乘函数 123
8.5.8绘制多面体斜等测图 123
8.5.9绘制三视图 125
8.5.10写出实验报告 125
8.6思考与练习 126
实验9交互绘制Bezier曲线 128
9.1实验目的 128
9.2实验要求 128
9.3效果图 128
9.4实验准备 129
9.5实验步骤 129
9.5.1 Bezier曲线的分割递推德卡斯特里奥算法 129
9.5.2德卡斯特里奥函数 130
9.5.3绘制Bezier曲线 131
9.5.4绘制控制多边形 131
9.5.5鼠标左键按下的函数 132
9.5.6鼠标右键按下的函数 133
9.5.7鼠标移动的函数 133
9.5.8写出实验报告 133
9.6思考与练习 134
实验10交互绘制三次B样条曲线 135
10.1实验目的 135
10.2实验要求 135
10.3效果图 135
10.4实验准备 136
10.5实验步骤 136
10.5.1三次B样条曲线的几何性质 136
10.5.2绘制控制多边形 137
10.5.3绘制三次B样条曲线 138
10.5.4鼠标移动函数 138
10.5.5写出实验报告 139
10.6思考与练习 139
实验11旋转的Koch雪花 142
11.1实验目的 142
11.2实验要求 142
11.3效果图 142
11.4实验准备 143
11.5实验步骤 143
11.5.1 Koch曲线的生成元 143
11.5.2绘制Koch雪花 145
11.5.3双缓冲函数 145
11.5.4分形函数 146
11.5.5 Koch函数 147
11.5.6写出实验报告 147
11.6思考与练习 147
实验12颜色渐变立方体 150
12.1实验目的 150
12.2实验要求 150
12.3效果图 150
12.4实验准备 151
12.5实验步骤 151
12.5.1定义矢量类CVector 151
12.5.2定义颜色点类 154
12.5.3定义点表 155
12.5.4定义面表 156
12.5.5绘制物体 156
12.5.6颜色渐变有效边表填充算法 157
12.5.7写出实验报告 165
12.6思考与练习 165
实验13地理划分线框球 169
13.1实验目的 169
13.2实验要求 169
13.3效果图 169
13.4实验准备 170
13.5实验步骤 170
13.5.1球体几何模型 170
13.5.2绘制球体 173
13.5.3写出实验报告 175
13.6思考与练习 175
实验14交叉条消隐 180
14.1实验目的 180
14.2实验要求 180
14.3效果图 180
14.4实验准备 181
14.5实验步骤 181
14.5.1交叉条数学模型 181
14.5.2叠加条数学模型 183
14.5.3消隐算法 184
14.5.4定义深度缓冲点表 185
14.5.5定义深度排序点表 186
14.5.6设置坐标系 187
14.5.7禁用深度缓冲绘制交叉条 187
14.5.8启用深度缓冲绘制交叉条 188
14.5.9深度排序函数 188
14.5.10设置背景色为黑色 189
14.5.11深度缓冲消隐算法 189
14.5.12写出实验报告 199
14.6思考与练习 199
实验15立方体光照模型 201
15.1实验目的 201
15.2实验要求 201
15.3效果图 201
15.4实验准备 202
15.5实验步骤 202
15.5.1简单光照模型 202
15.5.2设计光源类CLightSource 205
15.5.3设计材质类CMaterial 207
15.5.4设计光照类CLighting 208
15.5.5设计默认光源颜色和材质颜色 211
15.5.6设计红色、绿色和蓝色光源菜单项 211
15.5.7设计红宝石、绿宝石和蓝宝石材质菜单项 212
15.5.8设计变换类 213
15.5.9写出实验报告 217
15.6思考与练习 217
实验16球体Gouraud光照模型 221
16.1实验目的 221
16.2实验要求 221
16.3效果图 221
16.4实验准备 222
16.5实验步骤 222
16.5.1双线性光强插值模型算法 222
16.5.2设置光源颜色和材质颜色 222
16.5.3读入网格小面表 223
16.5.4读入网格顶点表 224
16.5.5计算面片顶点的颜色 225
16.5.6绘制球面 226
16.5.7写出实验报告 227
16.6思考与练习 227
实验17球体Phong光照模型 229
17.1实验目的 229
17.2实验要求 229
17.3效果图 229
17.4实验准备 230
17.5实验步骤 230
17.5.1 Phong双线性法矢插值模型 230
17.5.2修改CAET类 231
17.5.3修改CZBuffer类 231
17.5.4光照环境初始化 240
17.5.5绘制球面函数 241
17.5.6写出实验报告 242
17.6思考与练习 242
实验18立方体纹理映射 245
18.1实验目的 245
18.2实验要求 245
18.3效果图 245
18.4实验准备 246
18.5实验步骤 246
18.5.1定义CFacet类 246
18.5.2读入位图纹理 247
18.5.3定义面表 248
18.5.4绘制立方体 250
18.5.5填充立方体表面 250
18.5.6写出实验报告 253
18.6思考与练习 253
第二部分 课程设计 259
课程设计任务书 259
课程设计Ⅰ基本图元光栅扫描演示系统 261
Ⅰ.1设计目标 261
Ⅰ.2设计效果 261
Ⅰ.3总体设计 263
Ⅰ.4类的设计 264
Ⅰ.5视图的设计 281
Ⅰ.6结论 293
课程设计Ⅱ 递归动态球体演示系统 294
Ⅱ.1设计目标 294
Ⅱ.2设计效果 294
Ⅱ.3总体设计 296
Ⅱ.4类的设计 297
Ⅱ.5视图的设计 300
Ⅱ.6结论 309
课程设计Ⅲ圆环动态纹理演示系统 311
Ⅲ.1设计目标 311
Ⅲ.2设计效果 311
Ⅲ.3总体设计 313
Ⅲ.4类的设计 317
Ⅲ.5视图的设计 337
Ⅲ.6结论 346
课程设计Ⅳ动态光源演示系统 348
Ⅳ.1设计目标 348
Ⅳ.2设计效果 348
Ⅳ.3总体设计 350
Ⅳ.4类的设计 350
Ⅳ.5视图的设计 356
Ⅳ.6结论 360
课程设计Ⅴ 3DS接口演示系统 361
Ⅴ.1设计目标 361
Ⅴ.2设计效果 362
Ⅴ.3总体设计 362
Ⅴ.4类的设计 364
Ⅴ.5视图的设计 372
Ⅴ.6结论 376
参考文献 378