标题：计算机图形学实用技术（第3版）
图书简介
本书介绍了计算机图形学的有关原理、算法及实现，从计算机图形学的基本图形生成讲起，采取循序渐进的内容安排，由简单到复杂，由二维到三维，理论与实践相结合。书中的算法都尽量给出C程序，在后面的实验指导中每章均有一个VC编程案例，读者可以将书中讲解内容很容易地在计算机上一一验证，从而为深入理解图形学原理提供最重要的保证，并为今后的计算机图形学应用打下坚实的实践基础和编程积累。全书共8章，分别为：绪论、交互式图形软件设计、基本图形生成、图形变换、曲线和曲面、几何造型、真实感图形和实验指导，其中最后一章“实验指导”介绍了用VC编程实现各种计算机图形学算法。本书可作为高等院校各专业本、专科生计算机图形学或计算机绘图的教材，也可作为广大计算机图形学爱好者的自学教材或工作参考用书。
图书信息
作者：陈元琰　张睿哲　李建华 ISBN：9787302287674定价：42元印次：3-1装帧：平装印刷日期：2012-7-4
前言
计算机应用的广泛普及和深入以及我国高校本、专科生的大量扩招，促使计算机专业人员和广大非计算机专业的应用人员从计算机图形学的理论高度和计算机绘图的实用角度来研究和开发计算机图形生成技术及软件。目前，有关计算机图形学的理论、用C语言编写的计算机绘图和用VC进行标准Windows界面的图形软件设计都有许多图书出版，但这些均是独立出现的。在多年的教学、科研和开发工作中我们深刻地体会到，如果没有计算机图形学的理论基础，计算机图形生成技术就无从谈起；没有用高级语言描述算法的详细思路，计算机图形学复杂的理论和方法就不能真正得到理解和应用。基于这些体会，作者认为很有必要编写出版这样的一本书，把计算机图形学理论与计算机绘图的实践结合起来，在计算机图形学理论与交互式图形软件设计之间架起一座桥梁，对图形学的每个理论和方法尽量用详细的算法程序描述出来，并掌握用Visual?C++开发工具进行交互式图形软件设计实践，使学习者在掌握理论与实践两方面均可进退自如。
本书介绍了计算机图形学的有关原理、算法及实现，从计算机图形学的基本图形生成讲起，采取循序渐进的内容安排，由简单到复杂，由二维到三维，理论与实践相结合。书中的算法都尽量给出C程序，在后面的实验指导中每章均有一个VC编程案例，读者可以将书中讲解内容很容易地在计算机上一一验证，从而为深入理解图形学原理提供最重要的保证，并为今后的计算机图形学应用打下坚实的实践基础和编程积累。全书共8章，分别为：绪论、交互式图形软件设计、基本图形生成、图形变换、曲线和曲面、几何造型、真实感图形和实验指导。其中最后一章为实验指导，介绍了用VC编程实现各种计算机图形学的算法。
本书要求读者有线性代数和C语言基础，若有Visual C++基础则更好。读者可根据自身情况，在C语言或Visual C++的基础上进行上机练习、掌握和应用计算机图形学的各种算法，并开发一些具有实用性的小型图形软件。
根据使用本书第2版的多年教学的经验和体会，为了加强、充实一些经典的理论部分描述，使之更通俗易懂，同时使实践部分更易实施与操作，本书第3版在第2版的基础上做了如下一些修订：第1章适当增加一些图示说明；第2章增加一节简单实用图形学程序设计举例；第3章对Bresenham画圆、中点画椭圆、Bresenham画椭圆、有序边表的填充、种子填充等算法的文字叙述、插图或公式推导进行了修改和补充，增加了Cyrus Beck直线段的裁剪算法；第4章修改了错切变换、投影变换、窗口视区变换的图例，增加了新的一节“视域体及三维裁剪”；第5章增加了Bezier曲线的de Casteljau算法及伪码和Bezier曲线的拼接讨论，增设均匀B样条曲线的递归定义表达式及示意图，修改二次B样条曲线示意图，增设deboor算法及伪代码。
本书由陈元琰主笔，张睿哲参与了第4章和第5章的编写，李建华参与了第3～5章的编写和全书的修订。由于水平有限，书中难免存在缺点和不足，殷切希望广大读者批评指正。
目录
第1章 绪论1
1.1 计算机图形学的概念、发展和应用1
1.1.1 计算机图形学的概念1
1.1.2 计算机图形学的发展4
1.1.3 计算机图形学的应用6
1.2 计算机图形系统10
1.2.1 计算机图形系统硬件10
1.2.2 计算机图形系统软件11
1.3 计算机图形标准11
1.3.1 图形标准12
1.3.2 图形设备接口标准13
1.3.3 图形元文件标准13
1.3.4 基本图形交换规范14
习题15
第2章 交互式图形软件设计16
2.1 交互式图形软件设计方法16
2.1.1 Visual C++ 6.0开发环境和开发工具概述16
2.1.2 MFC类库简介18
2.1.3 使用AppWizard生成图形应用程序的框架21
2.1.4 使用资源编辑器生成图形用户界面24
2.1.5 利用消息映射和消息处理实现交互式绘图26
2.2 CDC图形程序库30
2.2.1 绘图工具选择30
2.2.2 坐标系统设置与转换33
2.2.3 绘图模式与背景设置35
2.2.4 图形绘制36
2.2.5 区域填充39
2.3 面向对象的画图程序设计40
2.3.1 类与数据封装40
2.3.2 派生类与继承性41
2.3.3 虚函数与多态性42
2.3.4 数据存储与屏幕重绘43
2.3.5 绘图程序的设计思路43
2.4 图形类的定义44
2.4.1 图形基类CShape45
2.4.2 直线类CLine45
2.4.3 贝塞尔曲线类CBezier46
2.4.4 矩形类CRectangle47
2.4.5 圆类CCircle49
2.4.6 椭圆类CEllipse50
2.4.7 多边形类CPolygon52
2.5 绘图程序的实现53
2.5.1 建立绘图程序框架53
2.5.2 增加绘图菜单54
2.5.3 在屏幕上画图58
2.5.4 在文档类中保存图形64
2.5.5 创建线型线宽对话框67
2.5.6 图形程序的编译运行73
2.5.7 简单实用图形学程序设计举例74
习题79
第3章 基本图形生成80
3.1 直线的生成80
3.1.1 数值微分算法81
3.1.2 中点画线算法83
3.1.3 Bresenham画线算法84
3.2 圆与椭圆的生成86
3.2.1 圆的特性86
3.2.2 中点画圆算法88
3.2.3 Bresenham画圆算法89
3.2.4 椭圆的生成算法90
3.3 区域填充95
3.3.1 有序边表填充算法95
3.3.2 边填充算法101
3.3.3 种子填充算法102
3.3.4 圆和椭圆的填充106
3.3.5 图案填充106
3.4 裁剪108
3.4.1 点的裁剪108
3.4.2 直线段的裁剪109
3.4.3 多边形的裁剪118
3.5 线宽与线型的处理124
3.5.1 直线线宽的处理124
3.5.2 圆弧线宽的处理126
3.5.3 线型的处理127
习题127
第4章 图形变换129
4.1 几何变换129
4.1.1 几何变换的齐次坐标法129
4.1.2 二维基本变换131
4.1.3 二维组合变换135
4.1.4 三维基本变换137
4.1.5 三维组合变换143
4.1.6 参数图形的几何变换144
4.2 投影变换148
4.2.1 正投影变换（三视图）149
4.2.2 正轴测投影变换150
4.2.3 斜轴测投影变换153
4.2.4 透视投影变换155
4.2.5 视域体及三维裁剪159
4.3 窗口视区变换161
4.3.1 坐标系161
4.3.2 窗口与视区162
4.3.3 窗口-视区变换163
4.4 视向变换164
4.4.1 世界坐标系和观察坐标系164
4.4.2 视向变换矩阵165
习题167
第5章 曲线和曲面168
5.1 曲线和曲面基础168
5.1.1 规则曲线和曲面的3种坐标表示法168
5.1.2 参数样条曲线和曲面的常用术语171
5.2 二次插值样条曲线174
5.2.1 二次插值样条曲线的数学表达式174
5.2.2 二次插值样条曲线的加权合成176
5.2.3 二次插值样条曲线的端点条件178
5.2.4 二次插值样条曲线的性质179
5.3 三次插值样条曲线181
5.3.1 三次自然样条曲线181
5.3.2 Hermite样条曲线182
5.3.3 Cardinal样条曲线183
5.4 Bezier曲线和曲面185
5.4.1 Bezier曲线的定义186
5.4.2 Bezier曲线的性质187
5.4.3 二次Bezier曲线188
5.4.4 三次Bezier曲线189
5.4.5 反算Bezier曲线控制点190
5.4.6 Bezier曲线的多项式定义生成算法191
5.4.7 Bezier曲线的分割递推de Casteljau算法192
5.4.8 Bezier曲线的拼接193
5.4.9 Bezier曲面195
5.5 B样条曲线和曲面196
5.5.1 B样条曲线的多项式定义（Clark定义法）197
5.5.2 B样条曲线的递推定义198
5.5.3 二次B样条曲线201
5.5.4 三次B样条曲线202
5.5.5 B样条曲线生成的de Boor算法205
5.5.6 反求B样条曲线的控制点及其端点性质208
5.5.7 B样条曲面209
5.6 有理样条曲线211
5.6.1 有理Bezier曲线211
5.6.2 有理B样条曲线213
5.6.3 非均匀有理B样条（NURBS）曲线215
习题216
第6章 几何造型217
6.1 形体的定义和存储模型217
6.1.1 形体的定义217
6.1.2 形体的存储模型219
6.2 实体表示方法222
6.2.1 构造的实体几何法222
6.2.2 边界表示法224
6.2.3 扫描表示法225
6.2.4 特征表示法225
6.2.5 单元分解表示法227
6.3 布尔运算228
6.3.1 布尔运算的概念229
6.3.2 多边形的描述229
6.3.3 多边形重叠性检验229
6.3.4 布尔运算的规则231
6.4 分形几何造型232
6.4.1 分形和分形几何造型的概念232
6.4.2 分形维数和分形几何造型233
6.4.3 典型分形曲线集235
习题248
第7章 真实感图形249
7.1 消除隐藏线249
7.1.1 平面体的消隐处理250
7.1.2 曲面体的消隐处理256
7.2 消除隐藏面269
7.2.1 基本检测270
7.2.2 画家算法272
7.2.3 深度缓冲器算法（Z缓冲区算法）274
7.2.4 扫描线算法275
7.2.5 区域细分算法277
7.3 光照模型与明暗效应278
7.3.1 光照的基本模型278
7.3.2 局部光照模型281
7.3.3 整体光照模型283
7.3.4 明暗处理方法284
7.4 纹理图案映射286
7.4.1 确定映射关系287
7.4.2 平面图案的矢量化处理与离散细分288
7.4.3 映射效果的三维显示288
习题295
第8章 实验指导297
8.1 基础篇297
实验一 直线扫描转换298
实验二 圆的扫描转换298
实验三 椭圆扫描转换298
实验四 区域递归种子填充299
实验五 区域链队列种子填充300
实验六 有序边表的图案填充301
实验七 Cohen-Sutherland线段编码裁剪303
实验八 Cyrus-Beck多边形窗口参数化裁剪305
实验九 矩形窗口逐边裁剪多边形306
实验十 二维图形的几何变换308
实验十一 三维图形投影变换310
实验十二 Bezier曲线绘制312
实验十三 B样条曲线绘制313
8.2 提高篇315
实验A 基本图形生成编程315
实验B 图形变换编程332
实验C 曲线编程342
实验D 三维几何造型编程349
实验E 真实感图形编程356
参考文献359
附录A 计算机图形学函数库361
A.1 全局函数原型定义362
A.2 全局函数的实现365[1]