图书前言

本书是《计算机图形学基础教程(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++程序设计”和院级精品课程“计算机图形学”,本书是面向对象语言和计算机图形学原理相结合形成的产物,是笔者十多年教学科研工作成果的总结。

孔令德