第3版前言
本书是与《计算机图形学基础教程(Visual C++版)》(第3版)(ISBN 9787302663065,简称主教材)配套的实践教程。对于主教材中讲解的每个原理,本书均给出配套的算法实现源代码,共计50个案例。本书案例没有采用任何第三方的图形库,纯粹使用C++语言从底层开发。所有的案例集合属于笔者的U3DS系统(山西省教学成果二等奖,2012年)。
本书的算法类模块包括直线类CLine、三角形填充类CTriangle、二维变换类CTransform2、三维变换类CTransform3、投影类CProjection、深度缓冲类CZBuffer、光源类CLightSource、材质类CMaterial、光照类CLighting、纹理类CTexture等。为了支持算法类的运行,定义的基础类模块包括二维点类CP2、三维点类CP3、表面类CFace、三维向量类CVector3、颜色类CRGB、纹理坐标类CT2等。三维物体是计算机图形学算法作用的对象,物体类模块主要包括立方体类CCube、球体类CSphere、圆环类CTorus、茶壶类CTeapot等。
每个案例按照“案例需求”“案例分析”“算法设计”“案例设计”“案例小结”“案例拓展”6部分编排。教师每讲完一个算法就定义一个类模块,该模块可以在后续案例中使用。举例说: 讲解法线贴图算法时,不需要讲解物体类模块、投影类模块CProjection、消隐类模块CZBuffer、光照类模块CLighting、纹理类模块CTexture,只须关注如何修改CZBuffer消隐类模块,从法线贴图中读出扰动后的法向量,进而产生凹凸光照效果。为了避免重复,前述案例已经阐述过的代码,后续案例中将不再提及。
本次改版的主要工作有以下5点。 
① 规范了算法类模块,严格按照面向对象方法重新搭建了算法类模块,主要修改包括物体类、填充类、投影类、纹理类。
② 规范了代码的注释,使得编写风格统一、注释规范。
③ 以茶壶为主体展示算法效果,这是国际上计算机图形学教材常用的方法。
④ 重新改写了光照和纹理相关的算法,增加了法线贴图、透视校正、环境贴图等与市场前沿技术接轨的算法。
⑤ 为每个案例增加了“案例拓展”部分,方便学习案例后进行自主创新。
本书可作为主教材的配套教材使用,也可作为计算机图形学课程的实验教材单独使用。用C++编写案例不是唯一的途径,读者可以采用其他程序设计语言重写所有案例。期望读者开展这方面的工作,与笔者共同开发计算机图形学案例。
不管如何教学,建立案例资源是必需的。教改文章可以写,教学模式可以改革,但教学的核心内容是案例资源建设,用编码实现来理解原理算法。经年累月,积少成多,笔者一直致力于打造计算机图形学优质教学资源库。本书提供的教学案例集曾荣获山西省教学成果最高奖。

孔令德2025年3月
学习资源
第2版前言
计算机图形学是一门只有通过实践才能掌握的课程,任何不给出算法的计算机图形学书籍都是不完整的,学习计算机图形学原理的最好方法之一就是编程实现这些原理,只有真正实现一个算法才能对原理有深刻的理解,才能对算法的细枝末节有所体会。
读者可能惊诧于彩插中的美丽图形,以为是使用3ds max软件或者OpenGL图形库绘制的,其实这些图形是使用C++语言绘制的,更确切地说是在本书配套的《计算机图形学基础教程(VisualC++版)》(第2版)所讲授的计算机图形学原理的指导下,使用 Visual C++的MFC框架完成的。对于《计算机图形学基础教程》(第2版)中讲解的每个原理,本书都给出了一一对应的案例源程序。笔者把这套自主开发的系统命名为Universal 3D System,简称为U3DS,共包含60个案例源程序。
每个案例使用“案例需求”“案例分析”“算法设计”“案例设计”“案例总结”五部曲模式进行编写。为了避免重复,前述案例已经讲解过的代码,在后续的案例中将不再提及。所有案例均经过了严格测试,读者只要在Visual C++的集成开发环境中编译、连接、运行就可以看到案例所展示的动画效果。U3DS中所有案例构成的计算机图形学实践教学资源库已于2012年被评为省级教学成果一等奖。
U3DS以类模块为单元,采用“搭积木”的方法建设。将《计算机图形学基础教程(Visual C+版)》(第2版)的每个原理使用MFC定义一个类,添加到U3DS架构中供后续案例调用。U3DS提供的原理级类模块包括CLine 直线类、CALine 反走样直线类、CFill填充类、CTransform几何变换类、CZBufier 深度缓冲类、CMaterial 材质类、CLightSource光源类、CLighting光照类等。为了支持原理类的运行,U3DS定义了一些必要的基础类包括CP2二维点类、CP3三维点类、CFace 表面类、CVector向量类和CRGB(或CRGBA)颜色类等。读完本书的所有案例,读者就可以在三维动画场景中,对自定义的物体(使用顶点表和表面表定义)施加光照,改变材质属性或映射纹理,最终生成真实感图形。
本书此次改版相当于重写,案例数由第1版的43个增加到60个,新增案例主要来自于真实感图形部分,本书既可作为教学案例指导书,配合主教材验证原理,也可以作为实验指导书供学生完成上机实验。
对于本书所提供的所有源程序,笔者享有软件著作权,如果本书代码存在不足之处,敬请读者提出宝贵建议,请选用本书的计算机图形学教师及时加入“计算机图形学教师群”,笔者可对书中的代码进行在线解释。

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

孔令德2008年4月