计算机图形学实验及课程设计(Visual C++版)(第2版)

计算机图形学实验及课程设计(Visual C++版)(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: ,
2018-04
版次: 2
ISBN: 9787302489498
定价: 59.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 378页
字数: 604千字
12人买过
  • 本书是与《计算机图形学基础教程(Visual C
      版)(第2版)》(ISBN 978?7?302?29752?9)配套的实验教材,提供了18个综合性教学实验和5个课程设计项目,可以满足计算机图形学课堂上机实验和设计周课程设计任务。实验项目编排由浅入深,通过定义基础类、直线类、变换类、填充类、光照类,*终构造了三维动态光照场景。本书的全部内容都基于MFC框架完成,彩插中展示的所有图形均使用CDC类的SetPixel()成员函数绘制,未包含任何图形学库。教学实验和课程设计项目的开发过程按照OpenGL的操作流程编写,易于引导读者从图形学的原理领域进入应用领域。
       本书的教学实验和课程设计项目的源代码和实验拓展项目的可执行文件全部提供在笔者的个人网站(http://www.klingde.com/)上,请读者下载后参照源代码学习。通读本书,读者可以轻松掌握多面体、球体、圆环等三维物体线框模型的建模方法。在三维动态光照场景中,可以调整物体表面模型的材质属性、添加纹理细节,改变视点和光源的位置,完成三维真实感图形的动态绘制。
      本书内容全面、案例丰富、注重理实一体化,适合作为本科计算机图形学的实验和课程设计教材。本书为源代码提供了详尽的注释,可供计算机图形学爱好者从编程的角度理解和掌握计算机图形学原理。 目录

    第一部分教

    学 实 验实验任务书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定义颜色类CRGB29

    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.2OnDrw()函数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.1Bezier曲线的分割递推德卡斯特里奥算法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.1Koch曲线的生成元143

    11.5.2绘制Koch雪花145

    11.5.3双缓冲函数145

    11.5.4分形函数146

    11.5.5Koch函数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设计光源类CLightSource205

    15.5.3设计材质类CMaterial207

    15.5.4设计光照类CLighting208

    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.1Phong双线性法矢插值模型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课程设计Ⅰ基本图元光栅扫描演示系统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
  • 内容简介:
    本书是与《计算机图形学基础教程(Visual C
      版)(第2版)》(ISBN 978?7?302?29752?9)配套的实验教材,提供了18个综合性教学实验和5个课程设计项目,可以满足计算机图形学课堂上机实验和设计周课程设计任务。实验项目编排由浅入深,通过定义基础类、直线类、变换类、填充类、光照类,*终构造了三维动态光照场景。本书的全部内容都基于MFC框架完成,彩插中展示的所有图形均使用CDC类的SetPixel()成员函数绘制,未包含任何图形学库。教学实验和课程设计项目的开发过程按照OpenGL的操作流程编写,易于引导读者从图形学的原理领域进入应用领域。
       本书的教学实验和课程设计项目的源代码和实验拓展项目的可执行文件全部提供在笔者的个人网站(http://www.klingde.com/)上,请读者下载后参照源代码学习。通读本书,读者可以轻松掌握多面体、球体、圆环等三维物体线框模型的建模方法。在三维动态光照场景中,可以调整物体表面模型的材质属性、添加纹理细节,改变视点和光源的位置,完成三维真实感图形的动态绘制。
      本书内容全面、案例丰富、注重理实一体化,适合作为本科计算机图形学的实验和课程设计教材。本书为源代码提供了详尽的注释,可供计算机图形学爱好者从编程的角度理解和掌握计算机图形学原理。
  • 目录:
    目录

    第一部分教

    学 实 验实验任务书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定义颜色类CRGB29

    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.2OnDrw()函数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.1Bezier曲线的分割递推德卡斯特里奥算法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.1Koch曲线的生成元143

    11.5.2绘制Koch雪花145

    11.5.3双缓冲函数145

    11.5.4分形函数146

    11.5.5Koch函数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设计光源类CLightSource205

    15.5.3设计材质类CMaterial207

    15.5.4设计光照类CLighting208

    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.1Phong双线性法矢插值模型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课程设计Ⅰ基本图元光栅扫描演示系统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
查看详情
12