高级搜索  |  搜索帮助
最近的浏览历史
购买此书的人还购买过
书  名:计算机图形学实验及课程设计(Visual C++版)
  • 作  者: 孔令德
  • 出版时间: 2012-03-01
  • 出 版 社: 清华大学出版社
  • 字  数: 615 千字
  • 印  次: 1-1
  • 印  张: 24.5
  • 开  本: 16开
  • ISBN: 9787302243519
  • 装  帧: 平装
  • 定  价:¥39.50
电子书价:¥27.70 折扣:70折 节省:¥11.80 vip价:¥27.70 电子书大小:17.79M
配套资源下载:
  • 名称
  • 说明
  • 权限
  • 文件大小
  • 点击图标下载
  • 图书样章
  • 所有用户
  • 256K
  • 图书课件
  • 教师
  • 5M
共有商品评论0条 查看评论摘要
内容简介
  本书是《计算机图形学基础教程(Visual C++版)》(ISBN 978-7-302-17082-2)教材的配套实验教材,提供了18个综合性教学实验和5个课程设计项目,可以满足计算机图形学课堂上机实验和设计周课程设计任务。实验项目编排上由浅入深,通过定义基础类、直线类、变换类、填充类、光照类,最终构造了三维动态光照场景。本书的全部内容都基于MFC框架完成,彩插中展示的所有图形均使用CDC类的SetPixel()成员函数绘制,未包含任何图形学库。教学实验和课程设计项目的开发过程按照OpenGL的操作流程编写,易于引导读者从图形学的原理领域进入到应用领域。
本书的教学实验和课程设计项目的源代码和实验拓展项目的可执行文件全部提供在笔者的个人网站(http://www.klingde.com/)上,请读者下载后参照源代码学习。通读本书,读者可以轻松掌握柏拉图正多面体(正四面体、正六面体、正八面体、正十二面体和正二十面体)、球体、圆环等三维物体的线框模型、表面模型的建模方法。在三维动态光照场景中,可以调整物体表面模型的材质、添加纹理细节,改变视点和光源的位置,完成三维真实感图形的动态绘制。
  本书内容全面、案例丰富、注重理实一体化,适合作为本科计算机图形学的实验和课程设计教材。本书为源代码提供了详尽的注释,可供计算机图形学爱好者从编程的角度理解和掌握计算机图形学原理。
前言
  2008年清华大学出版社出版了笔者编写的《计算机图形学基础教程(Visual C++版)》和《计算机图形学实践教程(Visual C++版)》. 《计算机图形学基础教程(Visual C++版)》中讲解的每个原理,在《计算机图形学实践教程(Visual C++版)》中都给出了相应的实现源代码。《计算机图形学实践教程(Visual C++版)》中的43个案例严格按照《计算机图形学基础教程(Visual C++版)》的原理讲解顺序实现,功能单一,仅适合于作为验证性实验,供教师课堂上对照原理讲授,学生课后上机练习。
  为了进一步提升本科院校的计算机图形学实验教学质量,本书设计了18个综合性教学实验和5个课程设计项目,可以满足36学时的上机实验和5周的课程设计任务。实验项目参见表1, 5个课程设计项目见表2. 表1 本书实验与计算机图形学基础教程的对应关系序 号实 验 名 称实 验 时 数对应的主教材章节1绘制金刚石图案2第2章2绘制任意斜率的直线段2第3章3交互式绘制多边形2第4章4二维几何变换2第5章5直线段裁剪2第5章6立方体线框模型正交投影2第6章7立方体线框模型透视投影2第6章8动态三视图2第6章9动态绘制Bezier曲线2第7章10交互式三次B样条曲线2第7章11旋转的Koch雪花2第8章12颜色渐变立方体2第9章13地理划分线框球2第9章14交叉条消隐2第9章15立方体光照模型2第10章16球体Gouraud光照模型2第10章17球体Phong光照模型2第10章18立方体纹理映射2第10章表2 课程设计项目序 号课程设计名称设 计 时 数1基本图元光栅扫描演示系统一周2递归动态球体演示系统一周3圆环动态纹理演示系统一周4动态光源演示系统一周53DS接口演示系统一周 本书特色如下。
1. 实验全部使用Visual C++的MFC框架开发
计算机图形学讲授的是图形生成原理和算法,本书使用Visual C++的MFC框架开发了综合性教学实验及课程设计项目,从原理级描述了真实感图形的生成过程和实现方法,并在个人网站上提供了完整源代码供读者免费下载。目前市面上流行的计算机图形学教学实验及课程设计教材大多基于某种图形库(如OpenGL或Direct 3D等),图形原理以函数形式封装,只要正确调用相关函数就可以完成图形绘制。基于某种图形库的实验强调了图形库函数的应用,弱化了对图形生成原理的理解。本书开发了原理级类模块,搭建了三维光照场景,实现了从原理到应用的自然进阶。本书教学实验和课程设计项目的全部经过了严格的调试,能够直接在Visual C++ 6.0的MFC环境中运行。
2. 综合性实验提供了拓展实验项目
计算机图形学每个实验项目都是综合使用《计算机图形学基础教程(Visual C++版)》提供的相关原理而完成,同时提供了实验的拓展项目。如实验2给出了任意斜率的直线生成方法,在拓展项目部分提供了任意斜率的反走样直线生成方法、任意斜率的颜色渐变直线生成方法、以及任意斜率的颜色渐变反走样直线生成方法。每个教学实验及其拓展项目的训练可以满足实际工程项目对直线使用的要求。
3. 采用类模块集成方式构造三维光照场景
(1) 基础类: 提供了CP2类绘制二维点;提供了CP3类绘制三维点;提供了CRGB类处理RGB颜色;提供了CVector类处理矢量。
(2) 直线类: 提供了CLine类绘制任意斜率的直线;提供了CALine类绘制任意斜率的反走样直线;提供了CCLine类绘制任意斜率的颜色渐变直线;提供了CACLine类绘制任意斜率的反走样颜色渐变直线。
(3) 变换类: 提供了CTransForm类实现二维和三维图形变换。
(4) 填充类: 提供了CFill类使用有效边表算法填充多边形;提供了CZBuffer类实现深度缓冲消隐,并使用Gouraud和Phong明暗处理填充三角形或四边形面片。
(5) 光照类: 提供了CLight类设置光源;提供了CMaterial类设置物体材质;提供了CLighting类对物体施加光照。
对于任何三维物体只要建立点表和面表数据文件,就可以在三维光照场景中绘制真实感图形。
4. 消除了内存泄漏
图形绘制过程中常会动态分配内存,如果在程序结束时没有释放这部分内存,极易造成内存泄漏。本书重点处理了使用new运算符所引起的内存泄漏问题。
5. 图形开发模式符合OpenGL规范
本书的实验开发按照OpenGL的操作流程实现。物体和光源位于用户坐标系,视点位于观察坐标系。物体使用三维正交变换类旋转,物体在屏幕坐标系的投影使用透视变换实现。视点位置固定,物体旋转,生成动态图形。物体的面消隐使用Z-Buffer类实现,因为使用到物体的深度值,所以将物体在屏幕坐标系的透视投影的二维坐标拓展为三维坐标,即包含了物体的深度坐标。
  读者可以根据本校实验时数,选择不同的上机实验项目。在条件允许的情况下,建议读者完成全部实验项目,在实验中体会计算机图形学基本原理的具体实现方法。上机环境选用Visual C++ 6.0或更高版本,建议显示分辨率为1024×768.
本书虽然是笔者编写的《计算机图形学基础教程(Visual C++版)》的配套教程,但在“实验步骤”中详细给出了每个实验使用到的基本原理,也可以独立成书。本书是《计算机图形学基础教程(Visual C++版)》的实践性补充,有助于从实践角度掌握计算机图形学的基本原理。通过本书的学习,读者可以学会柏拉图正多面体、球体、圆环等三维物体的建模方法,可以改变物体的材质,为物体添加函数纹理或图片纹理,调整光源的数量、位置和颜色对物体施加光照,使用动画按钮或键盘方向键交互旋转真实感图形。
本书的教学实验部分由康凤娥编写,课程设计部分由孔令德编写,全书由孔令德提出编写计划并进行统稿。博创研究所的潘晓、宋准、左亮亮和刘玉辰等参与了实验项目的开发。
  笔者一直秉承“精心、精业、精品”的编写理念,虽然综合性教学实验及课程设计项目的案例多年前已经开发完成,并经过了08~10届学生试用,但出版前的最后修改仍耗费了大量的时间,因为相当于开发了一套独立的“OpenGL”图形库,诚恳欢迎计算机图形学方面的专家学者提出宝贵建议。笔者努力打造“精品课程平台+计算机图形学系列教材+数字化资源”的计算机图形学教学体系,希望笔者所做的工作对计算机图形学的实验教学数字化资源建设方面有所帮助,以进一步扩大省级计算机图形学精品课程的受益面。
  笔者的个人网站: http//:www.klingde.com/
  登录网站可以免费下载本书的所有教学实验和课程设计项目的源程序代码以及实验拓展项目的可执行文件。网站上同时提供了《计算机图形学基础教程(Visual C++版)》的教案及课件、《计算机图形学实践教程(Visual C++版)》的43个案例源程序、《计算机图形学基础教程(Visual C++版)习题解答与编程实践》的所有习题解答源程序以及习题拓展的可执行文件。网站“精品展示”项目提供了博创研究所开发的计算机图形学成功案例可执行文件,“示例源码”栏目提供了笔者定期公开的计算机图形学成功案例源程序。
  笔者主持的省级计算机图形学精品网站: http://210.31.100.100/jsjtxx/welcome.html.


编 者2011年5月
目录
第一部分 教 学 实 验实验任务书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 绘制任意斜率的直线段27
2.1 实验目的27
2.2 实验要求27
2.3 效果图27
2.4 实验准备28
2.5 实验步骤28
2.5.1 定义颜色类CRGB28
2.5.2 设计CLine直线类31
2.5.3 消息映射36
2.5.4 写出实验报告40
2.6 思考与练习40实验3 交互式绘制多边形44
3.1 实验目的44
3.2 实验要求44
3.3 效果图44
3.4 实验准备45
3.5 实验步骤45
3.5.1 人机交互技术45
3.5.2 双缓冲技术47
3.5.3 绘制多边形48
3.5.4 设计CPtrArray类48
3.5.5 有效边表填充算法49
3.5.6 写出实验报告57
3.6 思考与练习57实验4 二维几何变换60
4.1 实验目的60
4.2 实验要求60
4.3 效果图60
4.4 实验准备61
4.5 实验步骤61
4.5.1 静态切分视图框架61
4.5.2 设计左窗格视图64
4.5.3 设计CTestDoc类68
4.5.4 设计包含齐次坐标的二维点类CP268
4.5.5 设计二维几何变换类69
4.5.6 设计双缓冲73
4.5.7 读入图形顶点74
4.5.8 绘制图形74
4.5.9 碰撞检测75
4.5.10 定时器函数75
4.5.11 禁止背景刷新函数76
4.5.12 写出实验报告76
4.6 思考与练习76实验5 直线段裁剪79
5.1 实验目的79
5.2 实验要求79
5.3 效果图79
5.4 实验准备80
5.5 实验步骤80
5.5.1 定义CP2类80
5.5.2 OnDrw()函数81
5.5.3 绘制裁剪窗口81
5.5.4 鼠标左键按下函数82
5.5.5 鼠标移动函数82
5.5.6 编码函数83
5.5.7 裁剪函数84
5.5.8 写出实验报告86
5.6 思考与练习86实验6 立方体线框模型正交投影88
6.1 实验目的88
6.2 实验要求88
6.3 效果图88
6.4 实验准备89
6.5 实验步骤89
6.5.1 立方体数学模型89
6.5.2 三维变换90
6.5.3 正交投影92
6.5.4 设计三维点类92
6.5.5 定义三维变换类94
6.5.6 定义点表99
6.5.7 定义面表99
6.5.8 绘制立方体线框模型100
6.5.9 键盘控制100
6.5.10 动画控制101
6.5.11 写出实验报告103
6.6 思考与练习103实验7 立方体线框模型透视投影105
7.1 实验目的105
7.2 实验要求105
7.3 效果图105
7.4 实验准备106
7.5 实验步骤106
7.5.1 透视投影变换的实现108
7.5.2 定义点表109
7.5.3 定义面表110
7.5.4 绘制立方体110
7.5.5 缩小立方体111
7.5.6 放大立方体111
7.5.7 写出实验报告111
7.6 思考与练习111实验8 动态三视图114
8.1 实验目的114
8.2 实验要求114
8.3 效果图114
8.4 实验准备115
8.5 实验步骤115
8.5.1 建立多面体的数据结构115
8.5.2 创建2×2静态切分窗格116
8.5.3 建立齐次三维点类116
8.5.4 建立表面类118
8.5.5 内存复制119
8.5.6 三视图变换矩阵120
8.5.7 矩阵相乘函数122
8.5.8 绘制多面体斜等测图122
8.5.9 绘制三视图124
8.5.10 写出实验报告124
8.6 思考与练习124实验9 动态绘制Bezier曲线127
9.1 实验目的127
9.2 实验要求127
9.3 效果图127
9.4 实验准备128
9.5 实验步骤128
9.5.1 Bezier曲线的分割递推德卡斯特里奥算法128
9.5.2 德卡斯特里奥函数129
9.5.3 绘制Bezier曲线130
9.5.4 绘制控制多边形130
9.5.5 鼠标左键按下函数131
9.5.6 鼠标右键按下函数132
9.5.7 鼠标移动函数132
9.5.8 写出实验报告132
9.6 思考与练习133实验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雪花144
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 定义矢量类CVector151
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 设计光源类CLight205
15.5.3 设计材质类CMaterial207
15.5.4 设计光照类CLighting208
15.5.5 设计默认光源颜色和材质颜色210
15.5.6 设计红色、绿色和蓝色光源菜单项211
15.5.7 设计红宝石、绿宝石和蓝宝石材质菜单项212
15.5.8 设计变换类212
15.5.9 写出实验报告217
15.6 思考与练习217实验16 球体Gouraud光照模型220
16.1 实验目的220
16.2 实验要求220
16.3 效果图220
16.4 实验准备221
16.5 实验步骤221
16.5.1 双线性光强插值模型221
16.5.2 设置光源颜色和材质颜色221
16.5.3 读入顶点表222
16.5.4 读入面表223
16.5.5 计算面片顶点的颜色224
16.5.6 绘制球面224
16.5.7 写出实验报告226
16.6 思考与练习226实验17 球体Phong光照模型228
17.1 实验目的228
17.2 实验要求228
17.3 效果图228
17.4 实验准备229
17.5 实验步骤229
17.5.1 Phong双线性法矢插值模型229
17.5.2 修改CAET类230
17.5.3 修改CZBuffer类230
17.5.4 光照环境初始化239
17.5.5 绘制球面函数240
17.5.6 写出实验报告241
17.6 思考与练习241实验18 立方体纹理映射244
18.1 实验目的244
18.2 实验要求244
18.3 效果图244
18.4 实验准备245
18.5 实验步骤245
18.5.1 定义CFace类245
18.5.2 读入位图纹理246
18.5.3 定义面表247
18.5.4 绘制立方体249
18.5.5 填充立方体表面249
18.5.6 写出实验报告252
18.6 思考与练习252
第二部分 课 程 设 计
课程设计任务书257课程设计I 基本图元光栅扫描演示系统259
I.1 设计目标259
I.2 设计效果259
I.3 总体设计261
I.4 类的设计262
I.5 视图的设计278
I.6 结论289课程设计II 递归动态球体演示系统291
II.1 设计目标291
II.2 设计效果291
II.3 总体设计293
II.4 类的设计294
II.5 视图的设计297
II.6 结论306课程设计III 圆环动态纹理演示系统308
III.1 设计目标308
III.2 设计效果308
III.3 总体设计310
III.4 类的设计314
III.5 视图的设计334
III.6 结论343课程设计IV 动态光源演示系统345
IV.1 设计目标345
IV.2 设计效果345
IV.3 总体设计347
IV.4 类的设计347
IV.5 视图的设计353
IV.6 结论356课程设计V 3DS接口演示系统358
V.1 设计目标358
V.2 设计效果359
V.3 总体设计359
V.4 类的设计361
V.5 视图的设计369
V.6 结论373参考文献374
Copyright(C)清华大学出版社有限公司,All Rights Reserved 京ICP备10035462号 联系我们