《高等学校计算机专业教材精选·图形图像与多媒体技术:计算机图形学实践教程(Visual C++版)(第2版)》是《计算机图形学基础教程(Visual C++版)(第2版)》的姊妹篇。编写原则是将计算机图形学的基本原理与其体编程实践相结合起来。本书选用面向对象程序设计语言Visual C++6.O的MFC框架作为开发平台,可以更好地展示真彩色以及对图形的交互式操作。
《高等学校计算机专业教材精选·图形图像与多媒体技术:计算机图形学实践教程(Visual C++版)(第2版)》共给出60个案例,内容包括直线中点Bresenham算法、多边形有效边表填充算法、三维图形几何变换算法、透视投影算法、地理划分球面动态隐线算法、Z-Buffer算法、球面光源和材质交互算法、球面Phong明暗处理算法、简单透明模型算法、简单阴影算法、立方体图像纹理映射算法、圆环面图像纹理映射算法、三维纹理映射算法、球面几何纹理映射反走样算法等。
《高等学校计算机专业教材精选·图形图像与多媒体技术:计算机图形学实践教程(Visual C++版)(第2版)》的所有案例全部由笔者独立开发,具有自主知识产权。在第1版的基础上新增了Sutherland Hodgman多边形裁剪算法、球面光源与材质交互算法、简单透明模型算法、简单阴影算法、三维纹理映射算法、球面几何纹理映射反走样算法等案例,丰富了计算机图形学精品课程的建设内容。
本书使用类结构编写,代码统一,注释规范,读者可以很容易地按照本书提供的源程序开发自己的图形学作品。
本书不仅可以作为学习《计算机图形学基础教程(Visual C++版)(第2版)》的辅助教材,也可作为上机实践教材,还可供从事游戏开发的程序员自学使用。
《高等学校计算机专业教材精选·图形图像与多媒体技术:计算机图形学实践教程(Visual C++版)(第2版)》给出60个案例,内容包括直线中点Bresenham算法、多边形有效边表填充算法、三维图形几何变换算法、透视投影算法、地理划分球面动态隐线算法、Z-Buffer算法、球面光源和材质交互算法、球面Phong明暗处理算法、简单透明模型算法、简单阴影算法、立方体图像纹理映射算法、圆环面图像像纹理映射算法、三维纹理映射算法、球面几何纹理映射反走样算法等的实现步骤,并提供了全部源代码。 《高等学校计算机专业教材精选·图形图像与多媒体技术:计算机图形学实践教程(Visual C++版)(第2版)》使用类架构编写,包括基础类、变换类、消隐类、渲染类等,采用“搭积本”的方式构造了三维光照场景,读者只要修改物体的数据结构(点表与面表)就可以绘制出真实感图形。基础类包括二维点类CP2、二维纹理类CT2、三维点类CP3、三维纹理CT3、表面类CFace、颜色类CRGB、矢量类CVector等,使用基础类可以完成物体的基础设置。CTransform变换类可以对物体实施二维或三维变换。CZbuffer消隐类可以对表面模型进行深度消隐。渲染类包括材质类CMaterial、光源类CLiglit、光照类CLighting等。综合使用以上类可以完全实现本书的姊妹篇《计算机图形学基础教程(VisualC++版)(第2版)》中讲解的所有计算机图形学原理。综合本书的所有案例,相当于为读者提供了一个使用MFC开发的小型“OpenGL”,引导读者从零开始逐步掌握机算机图形学原理与编程实现方法。
本书是《计算机图形学基础教程(Visual C++版)(第2版)》配套的实践教程。对于主教材中讲解的每个原理,本书均给出了配套的算法实现源代码。《计算机图形学基础教程(Visual C++版)(第2版)》完善了光照模型、新增了简单透明模型、简单阴影模型以及图像纹理与几何纹理等内容。相应地,本书增加了球面Phong明暗处理、简单透明模型、简单阴影、立方体函数纹理映射、长方体图像纹理映射、圆柱面图像纹理映射、圆环面图像纹理映射、三维纹理映射、球面几何纹理映射、球面几何纹理映射反走样等算法,共计60个案例。60个案例的源代码使用类的架构建设,教师每讲解完一个原理就定义一个类,该类可以包含到后续案例中使用,不必每个案例都从零开始建设。本书提供的主要原理级类模块包括:CLine直线类、CALine反走样直线类、CFill有效边表填充类、CTransform几何变换类、CZBuffer深度缓冲类、CMaterial材质类、CLight光源类、CLighting光照类等。为了支持原理类的运行,定义了一些必要的基础类,具体包括:CP2二维点类、CP3三维点类、CFace表面类、CVector矢量类和CRGB颜色类等。基于以上类模块,读者可以学会对物体施加光照,改变材质或进行纹理映射。在场景中使用鼠标、键盘来旋转物体或按下“动画”图标按钮来播放物体旋转的动画,基本达到OpenGL或3ds max渲染的图形效果。
本书使用“案例需求”、“案例分析”、“算法设计”、“案例设计”和“案例总结”的五部曲编写,讲解清晰、注释清晰。笔者在个人网站:http://www.klingde.com上提供了全部60个案例源代码,供读者教学之用。每个案例都经过了严格测试,读者只要编译、连接、运行就可以看到动画效果。笔者对该网站所提供的案例源代码享有著作权,请读者一起维护知识产权。感谢国内高校教师对笔者第1版中43个案例的肯定,敬请教学一线的计算机图形教师对本书提供的案例提出宝贵的修改建议。笔者E-mail: klingde@163.com, QQ: 997796978.
本书得到2011年山西省重点教改项目“图形图像处理系列课程实践教学资源与平台的建设”的资助。本书所提供的60个实践教学资源已经于2012年底荣获山西省教学成果一等奖,获奖项目名称为:计算机图形学实践教学资源库的建设。
孔令德2012年10月第1版前言
计算机图形学是交互式图形开发的基本理论,同时也是一门实践性的学科。笔者积累了十多年的计算机图形学讲授经验,使用Visual C++6.0的MFC框架开发了涉及“基本图形的扫描转换”、“多边形填充”、“二维变换和裁剪”、“三维变换和投影”、“自由曲线和曲面”、“分形几何”、“动态消隐”和“真实感图形”等章节内容的43个案例。
本书是《计算机图形学基础教程(Visual C++版)》(ISBN 978-7-302-17082-2)的配套实践教程。对于Visual C++的MFC框架,本书从使用者的角度进行了详细操作说明。本书的程序给出了*.h文件和*.cpp文件,算法编写规范,注释清晰,读者可以很容易地按照本书提供的源程序一步一步地完成上机实践。
学习完本书,读者可以建立三维场景,对形体施加光照,改变材质或实现纹理映射。在场景中使用鼠标、键盘来控制形体的旋转和动画,基本达到OpenGL或3DS生成的图形效果。
本书中有许多案例是笔者工作的基础,如有效边表填充算法、透视投影变换、Gouraud明暗处理、Z-Buffer消隐算法和光照模型等,希望读者认真体会和理解。
笔者负责主持山西省精品课程“C++程序设计”和院级精品课程“计算机图形学”,本书是面向对象语言和计算机图形学原理相结合形成的产物,是笔者十多年教学科研工作成果的总结。
孔令德
案例1 金刚石图案算法
案例2 直线中点Bresenham算法
案例3 圆中点Bresenham算法
案例4 椭圆中点Bresenham算法
案例5 Wu反走样直线算法
案例6 多边形有效边表填充算法
案例7 多边形边缘填充算法
案例8 四邻接点种子填充算法
案例9 区域八邻接点种子填充算法
案例10 扫描线种子填充算法
案例11 二维图形几何变换算法
案例12 Cohen-Sutherland直线段裁剪算法
案例13 中点分割直线段裁剪算法
案例14 Liang-Barsky直线段裁剪算法
案例15 Sutherland-Hodgman多边形裁剪算法
案例16 三维图形几何变换算法
案例17 正交投影算法
案例18 三视图算法
案例19 透视投影算法
案例20 n次Bczier曲线方程算法
案例21 n次Bezier曲线de Casteljau算法
案例22 双三次Bezier曲面算法
案例23 三次B样条曲线算法
案例24 双三次B样条曲面算法
案例25 Cantor集算法
案例26 Koch曲线算法
案例27 Peano-Hilbert曲线算法
案例28 Sierpinski垫片算法
案例29 Sierpinski地毯算法
案例30 Mcnger海绵算法
案例31 C字曲线算法
案例32 Cayley树算法
案例33 Koch曲线L系统模型算法
案例34 分形草L系统模型算法
案例35 Peano-Hilbert曲线L系统模型算法
案例36 灌木丛L系统模型算法
案例37 Koch曲线IFS算法
案例38 正二十面体动态隐线算法
案例39 地理划分球面动态隐线算法
案例40 递归划分球面动态隐线算法
案例41 圆柱面动态隐线算法
案例42 圆锥面动态隐线算法
案例43 圆环面动态隐线算法
案例44 Z-Buffer算法
案例45 画家算法
案例46 原色系统算法
案例47 颜色渐变立方体线框模型算法
案例48 RGB颜色模型算法
案例49 HSV颜色模型算法
案例50 球面光源与材质交互算法
案例51 球面Phong明暗处理算法
案例52 简单透明模型算法
案例53 简单阴影算法
案例54 立方体函数纹理映射算法
案例55 长方体图像纹理映射算法
案例56 圆柱面图像纹理映射算法
案例57 圆环面图像纹理映射算法
案例58 三维纹理映射算法
案例59 球面几何纹理映射算法
案例60 球面几何纹理反走样算法
参考文献