本书采用一种全新的计算机图形学架构,将内容分为“基础”、“几何”、“绘制”和“交互”4篇,叙述了计算机图形学的目的、内容、任务、理论与实践。
通过揭示“图形=图元+属性”与“计算机图形学=几何+绘制”的本质属性,给计算机图形学以准确的定位、合理的定义,明确计算机图形学“几何”与“绘制”两大任务,使教者易、学者清。
举重若轻、化繁为简,复杂问题简单化,是本书的另一特色。全书以全新的架构、明晰的分析、浅显的解释、精细的图示尽可能正确、通俗地阐述计算机图形学的理论体系、几何模型、基本算法与数据结构等根本要素,并努力保证它们准确、简单、直观、清晰。
本书配套网站http://cg.sjtu.edu.cn提供了电子教案、实验基础、算法案例、学生作品、相关课题、算法库及课程设计等内容,读者可以免费下载。
无
第2版前言
本书第1版于2006年1月由机械工业出版社出版。出版以后,收到了不少读者来信,包括教师、学生和设计人员等,除了对作者的鼓励以外,也对本书提出了许多有益的建议。2006年7月,机械工业出版社华章分社与中国计算机学会联合举办了2006年暑期教师培训班,与参会教师就计算机图形学的定义与定位、课堂教学与课程设计、计算机图形学研究方向以及算法和软件开发等议题进行了讨论,执教计算机图形学的老师提出了许多建议。同时,作者采用本书在上海交通大学本科生的“计算机图形学”、“计算机图形学课程设计”与“计算机辅助设计基础”等课程中进行了教学实践,广泛征求了学生的意见。据此,作者着手对第1版教材进行修订,新版本期望达到以下
目标:在宏观上,绘制一个清楚的计算机图形学框架与认知体系;在微观上,精致编织、准确表述具体而细小的知识点。
修订工作基于对图形/图像本质的分析,对计算机图形学定位、定义、内容和架构(architecture)进行研究。这项研究试图从认知方式关注计算机图形学的学科地位;从对图形/图像产生机理的梳理入手,认识计算机图形学的本质特征,明确计算机图形学的根本任务;从表现的视角理解图形/图像只是基本图元不同组合的显示方式;从构造的角度阐述“模型”的“几何品质”,认识几何计算在计算机图形学中的地位和作用的根本性;从几何奇异是造成几何造型系统不稳定性的本源入手,把握几何计算的关键;从“计算机图形学和造型依赖于点和向量的数学运算”的观点出发,以向量几何与“方向性”概念为基础,构筑几何计算的基本理论,研究它们的思想方法、几何结构以及几何算法与复杂性分析。最后,形成了以下论点:
图形(图像)本质上是具有线形、宽度、颜色等属性信息的图形元素(图元)的组合。因此,抽象图形的本质可以概括为:图形=图元+属性。
模型的根本是几何。在计算机图形学中拟采用“几何”(geometry)一词替代“模型”(model)。几何可以理解为几何模型、几何创建、几何运算等,有更宽泛的含义;而模型还可用作其他表述,如光照模型、纹理模型等,非几何类。
计算机图形学主要研究两个问题:一是如何在计算机中构造一个客观世界——几何(模型)的描述、创建和处理,以“几何”一词统一表述之;二是如何将计算机中的虚拟世界用最形象的方式静态或动态地展现出来——几何的视觉再现,以“绘制”一词统一表述之。因此可以说:
计算机图形学=几何+绘制。
几何是表示,是输入;绘制是展现,是输出。从宏观上讲,几何构造模型,绘制展示模型;从微观上讲,几何决定点,绘制显示点。两者的基础是几何计算。
几何计算是计算机图形学的基础,几何计算的关键是解决几何奇异问题,可对几何引入方向性概念解决几何奇异问题,构建几何计算的理论体系。
数学是几何与绘制的基础。
交互式图形学可以提供图形通信手段,是人机交互的主要工具。
可从“基础”、“几何”、“绘制”和“交互”4个方面构建计算机图形学的新架构。
基于上述思想,本书在结构框架(framework)和内容选择两个方面均进行了重大调整。
在结构框架上,本书的主要部分将分成“基础”、“几何”、“绘制”和“交互”4篇。这种结构框架不仅解决了
计算机图形学中越来越多的内容的分类问题,也可以比较清晰地理清与计算机图形学相关学科,例如CAD(及计算机绘图)、计算几何/计算机辅助几何设计、图像(及识别)处理等的关系。
内容选择与学科定义、学科架构有密切的关系。目前,计算机图形学教材内容的选择常与一些专业有关,例如“机械类”计算机图形学会涉及CAD,甚至讲述某一具体的CAD软件;“数学类”计算机图形学常会强调曲线曲面及光照模型;“计算机类”计算机图形学则会强化几何造型、光照模型等方面的内容;而“工业设计及艺术类”计算机图形学会加入一些3DMAX、Maya等的应用。一个典型例子是:“曲线曲面”应在计算机图形学中占多大的份量?这在计算机图形学教材中不甚清晰(Rogers的Procedural Elements for Computer Graphics(中译本:《计算机图形学算法基础》)一书就没有提及“曲线曲面”的内容)。按照本书对计算机图形学的定义,在计算机图形学中讲述曲线曲面应该是以“应用”而不是以“研究”为目的,它与分形造型、CAD中的参数设计及逆向工程等一样,只是计算机图形学借用的几何构造方法之一,是为了用更多、更好的手段构造虚拟世界,对它的详细研究应该放回到计算几何学科中去。
Rogers认为,图(picture)是计算机图形学的基本概念,必须解决计算机图形学中图的表示机理、图的预处理、图的最终输出及如何与用户交互的问题。这里,他是强调以“图”为中心的。前两个问题实际上是几何的表示和创建问题,第3个问题是几何的展现问题,而他将“交互”列为计算机图形学的核心问题之一,这也是为什么本书将“交互技术”单独列为一篇的部分缘由。
计算机图形学涉及计算机硬件(显示器、打印机、绘图仪等)、数学(几何计算、近似计算、拓扑结构等)、物理(运动、光学及颜色等)、计算机科学(算法及复杂性分析、数据结构、数据库、程序设计、交互技术等)、美学(色彩等)等领域的综合知识,需要有较好的数学基础和相关的计算机知识,对教师和学生均有一定的要求。
本书试图用结构化的框架、明晰的分析、浅显的解释、直观的图示使一些复杂、难懂的问题简单化;强调对基础理论、算法、几何模型与数据结构等基本理论和技术的叙述,并努力保证它们的正确性,尽可能使叙述准确、清晰。
本书框架包括绪论(1章)和4篇正文(14章):
本书采用一种全新的计算机图形学架构,将内容分为“基础”、“几何”、“绘制”和“交互”4篇,叙述了计算机图形学的目的、内容、任务、理论与实践。 通过揭示“图形=图元+属性”与“计算机图形学=几何+绘制”的本质属性,给计算机图形学以准确的定位、合理的定义,明确计算机图形学“几何”与“绘制”两大任务,使教者易、学者清。 举重若轻、化繁为简,复杂问题简单化,是本书的另一特色。全书以全新的架构、明晰的分析、浅显的解释、精细的图示尽可能正确、通俗地阐述计算机图形学的理论体系、几何模型、基本算法与数据结构等根本要素,并努力保证它们准确、简单、直观、清晰。 本书配套网站http://cg.sjtu.edu.cn提供了电子教案、实验基础、算法案例、学生作品、相关课题、算法库及课程设计等内容,读者可以免费下载。
何援军:暂无简介
第1章绪论
第一篇基础
第二篇几何
第三篇绘制
第四篇交互
第2章基本几何
第3章几何变换
第4章几何计算
第5章二维造型
第6章三维造型
第7章曲线曲面
第8章曲线拟合
第9章光栅计算
第10章裁剪计算
第11章消隐计算
第12章颜色模型
第13章光照模型
第14章交互技术
第1章全面分析了图形/图像的本质属性,探索了计算机图形学学科的定位与本质定义,阐述了“图形=图元+属性”和“计算机图形学=几何+绘制”两个公式的基本涵义,构筑了计算机图形学的新架构。该章强调了“几何计算”的概念,它在一些场合比“计算几何”有更宽泛的涵义;明晰了几何计算在计算机图形学中的地位和作用,认为几何表示与几何造型的基础是几何计算,图形/图像的产生工作本质上仍是几何计算的问题,指出几何计算是计算机图形学的基础与主要工作。此外,讨论了计算机图形学与其他学科的关系,并根据计算机图形学理论和技术的发展情况,简单地介绍了当前计算机图形学的一些相关开发技术等。
基础
该篇完整地叙述了一套以向量几何与“方向性”概念为基础的几何计算理论体系。根据这套理论体系定义了基本几何:点、线、圆/弧、平面及曲线和图形等,并将基本几何与角度、距离、面积、分比、几何元素连接时的方向、封闭图形的边界走向等辅助几何有机地联系在一起,特别是引入了“交点特征”的概念。
根据这套几何计算的理论体系,计算机图形学的一些典型几何算法变得相当简单,部分几何奇异问题将得到几乎完美的处理。
计算机图形学基础的另一个重点是图形(几何)变换,它是几何与绘制的工具。
图形变换包括二维变换、三维变换、三维向二维的变换及视图变换等几种情况。对应于几何元素及其选定的坐标系来说,图形变换则包括几何变换和坐标系变换两种。这些变换系统称为图形(几何)变换。
根据几何计算理论体系,图形变换有了全新的表达方式,它与基本几何紧密联系起来。
几何
几何(geometry)是指二维及三维空间各种几何模型的表示、创建与几何计算。没有几何模型,图形将是无本之木。几何模型可以是解析式表达的简单形体,或是隐函数表达的复杂曲线、曲面,也可以是由面片表达的几何体等。建模的理论和过程并非全属于计算机图形学的范畴。
基于理论的系统性、算法的完整性,该篇有选择地讨论了一些典型的二维/三维几何造型方法和计算机图形学中基本的几何算法。例如,三维几何造型与消隐计算常被公认为计算机图形学的内容,该篇讨论了扫掠造型与三维布尔运算等几何造型方法的基本策略,但它遵循的基本原理、设计的数据结构、采用的计算方案等与后面绘制篇的消隐计算等构成了完整的三维体系。
可以看到,由于“几何方向”与“交点特征”等概念的引入,该篇提及的一些经典几何算法,如凸包算法、包容性测试算法、图形填充算法、2D和3D布尔算法等,在基本几何的新体系下变得出奇的简单。
曲线与曲面分为两章介绍,“设计型”曲线与曲面(以“表示”为目的)以控制多边形定义的Bézier曲线和曲面的方法为代表;“拟合型”曲线(以“表现”为目的)以“样条函数”为代表。
绘制
图形是客观世界模拟的静态/动态表现,它可以分成“图形类”(graphics)和“图像类”(image)两种。图形类以矢量图形式呈现,能体现场景的几何个体,如工程图纸(drawing);图像类以点阵图形式呈现,更强调整体形式,如照片、图片和由计算机产生的真实感和非真实感图形等。
对图形类,二维绘制工作以光栅化算法和裁剪算法为代表;三维则以线消隐算法为代表。
对图像类,在计算机图形学中以三维几何的画面产生为主,主要代表是面消隐、光照模型、阴影模型和纹理模型,以及光源模型和颜色模型等。
实际上,绘制的主要工作也是几何计算。
交互
交互式图形学如今已能提供图形通信手段,成为人机交互的主要工具。Cooper提出将程序开发划分为“交互设计”和“编码设计”两大部分,交互设计师的工作重点并不在程序的编码实现,而是注重于用户如何最好地与系统交互工作。
该篇还讨论了交互式图形系统的设计问题,构筑了一个比较完善的课程设计体系。
从教学与实践的意义上说,该篇的内容是课程设计的基础。因此,该篇的内容可以提前到第一篇“基础”之后,先构造一个课程设计的平台。
第2版对本书的支持网站http://cgsjtueducn
也进行了相应的调整,增加了程序的应用范例。网站的内容和功能也有了较多的扩展,特别是在与读者的交流方面有了较大的提升。本书的课堂教案也做了同步更新,供注册读者(教师)下载。
在第2版中,除了对全书的总体框架做了重大改动外,对第1版中的一些非共性的内容也进行了一些删减,增加了习题与实践的内容。希望这些修改能适合更多的学校和教师应用。
博士后胡志萍,博士生研究生柳伟、田海山、王家乐、边前卫、章义等参加了计算机图形学架构的讨论;硕士研究生姚建强、曾晓一、梁李印、唐亮亮、陈杰、王力等参加了部分计算机图形学算法的论证与实现;一些本科生参与了上海交通大学计算机图形学教学网站的建设工作,提供了他们的习作;何一江、许剑秋、陈根珍等提供了不少的帮助,特向他们表示谢意。
感谢机械工业出版社华章分社的编辑对本书的出版所做的工作和付出的辛劳。
计算机图形学以全球性的语言演绎多彩的现实世界, “一图胜千言”,这是当今图形/图像时代赋予计算机图形学的使命,实现这个使命需要 “一言胜千图”的付出。举重若轻、化繁为简,把复杂的问题简单化,是本书的追求。
书中难免不当之处,希望读者、专家和同行勿吝指正。
何援军
2008年7月5日
于上海交通大学计算机系
目录
作者简介
第2版前言
第1章绪论
11计算机图形学的定位和定义
111图形和计算机图形学的定位
与定义
112计算机图形学的总体架构
113几何与几何计算
12计算机图形学与其他学科的关系
13计算机图形学的发展简史
131硬件平台
132基础理论
133实际应用
134SIGGRAPH
14计算机图形学的应用领域
141计算机辅助设计与制造
142科学计算可视化
143虚拟现实
144计算机艺术
145计算机动画
146图形用户接口
15计算机图形学的相关开发技术
151OpenGL
152ACIS
153DirectX
154Java3D
155VRML
16本章要点
17本章作业
第一篇基础
第2章基本几何
21向量
211向量及其性质
212向量点积
213向量叉积
22基本几何的描述
221点的描述
222直线的描述
223圆的描述
224圆弧的描述
225基本几何的统一描述
226圆弧曲线
23基本几何的方向
24图形边界的方向
25辅助几何
26向量交点特征
261交点特征的定义
262交点特征的几何意义
263交点特征的求取
264重交点的取舍规则
265重边交点的选择
266交点特征扩展到圆弧
27基本几何的建立
271直线的建立
272圆和圆弧的建立
28三维基本几何
281空间直线
282标准平面方程的建立
283通过N个顶点求取平面方程
284三维交点特征
29本章要点
210本章作业
第3章几何变换
31几何变换的基本描述
311齐次坐标
312齐次变换矩阵
313二维变换
314三维变换
32变换的几何化表示
321变换几何化表示的基本理论
322变换几何化表示的实施
323变换几何化表示的应用
324三维变换的几何化表示
325变换的几何化表示与基本几何
33投影与投影变换
331平行投影
332投影图示机理
333投影变换、深度坐标和三维观测
流水线
34轴测变换
35罗盘变换
351罗盘变换的基本原理
352罗盘变换公式
353屏幕轴三角架的实时产生
36透视变换
361透视变换的基本原理
362透视变换矩阵
363透视投影转化为平行投影
364灭点及其产生原理
365平行透视(一灭点)
366成角透视(二灭点)
367三灭点透视
37视图变换
371视图变换的基本原理
372视图变换的实施
38本章要点
39本章作业
第二篇几何
第4章几何计算
41判断计算
411拐向判断
412凸包算法
413包容性测试
414最小最大判定法
415线与面的关系
416线与线的关系(深度测试)
42距离与面积
421点到平面上一直线的距离
422点到一空间直线的垂足
423点到一条空间直线的距离
424点到平面的距离
425空间两直线的距离
426直线与平面的距离
427空间两平面的距离
428平面多角形面积
43相交计算
431直线与平面的相交
432平面与平面的相交
433曲线与曲线的相交
434图形填充
44本章要点
45本章作业
第5章二维造型
51二维布尔运算
511环
512二维几何构型中的图形描述
513两个环的交、并、差几何运算
514两个环运算时的特殊情况处理
515两个环运算的数据结构
516两个环运算的算法
517扩展到圆弧
518含有多个内环图形的运算
519算法复杂度分析
52变形造型
53本章要点
54本章作业
第6章三维造型
61物体描述
611构造表示
612边界表示
613分解表示
62垂直扫掠造型
621垂直扫掠算法的输入参数
622垂直扫掠算法的顶点编号与
坐标值定值
623垂直扫掠算法的构造过程
624垂直扫掠算法的扩展
625垂直扫掠物体产生程序
626进一步扩展
63旋转扫掠造型
631旋转体的输入参数
632旋转体的顶点编号与坐标定值
633旋转体的构造过程
634旋转体算法的扩展
635旋转体的物体产生程序
636旋转体产生示例
64场景构造
641物体构件
642场景装配
65三维布尔运算
651布尔运算的基本原理
652布尔运算的几何奇异问题
66本章要点
67本章作业
第7章曲线与曲面
71Bézier曲线
711Bézier曲线构造的基本原理与
函数
712Bézier曲线的性质
713Bézier曲线生成算法
714Bézier曲线的拼接
72Bézier曲面
721Bézier曲面表示
722Bézier曲面的性质
73B样条曲线
731B样条曲线的基本方程
732B样条曲线的性质
733常用B样条曲线的数学表达式
734deBoor算法与B样条曲线的
离散生成
74B样条曲面
741均匀二次B样条曲面
742均匀三次B样条曲面
75NURBS曲线和曲面
751NURBS的提出
752NURBS曲线
753NURBS曲面
76曲面的三角化表示
77本章要点
78本章作业
第8章曲线拟合
81小挠度样条函数的建立
811小挠度样条函数基本方程的
导出
812小挠度样条函数的边界条件
82大挠度样条函数的建立
821大挠度分段三次样条函数
822弧长作参数的大挠度三次样条
函数
83双圆弧逼近
831平均切线法
832双圆弧公切点的轨迹
833公切点的确定
834双圆弧的求法
835样条曲线的直线逼近
836一般函数曲线的双圆弧逼近
84圆的直线逼近
85本章要点
86本章作业
第三篇绘制
第9章光栅计算
91直线光栅化显示算法
911直线光栅化显示的数字微分
分析法
912直线光栅化显示的Bresenham
算法
92圆光栅化算法
921利用圆的八方对称性画圆
922简单的方程画圆方法
923Bresenham画圆算法
924中点圆算法
93椭圆光栅化算法
94多边形填充
941扫描线填充算法
942边填充算法
943种子填充算法
95字符和汉字显示
951点阵字符
952矢量字符
96反走样
961图形走样
962超采样
963区域采样方法
97本章要点
98本章作业
第10章裁剪计算
101线裁剪算法
1011CohenSutherland算法
1012CyrusBeck参数化的线裁剪
算法
1013LiangBarsky算法
1014一般多边形的裁剪算法
102多边形裁剪
1021SutherlandHodgon多边形裁剪
算法
1022图形求交集多边形裁剪法
103本章要点
104本章作业
第11章消隐计算
111凸多面体的隐藏线消除
1111凸多面体消隐算法的基本
原理
1112凸多面体对其他物体的遮挡
计算
1113凸多面体的自消隐
112一般多面体的隐藏线消除
1121一般多面体的描述
1122面的构造
1123棱分类——一般多面体的
自消隐
1124隐藏线的表示
1125一维交集算法
1126面消隐计算
1127消隐算法的数据结构
1128一般多面体消隐算法的实施
113一般多面体的隐藏面消除
1131隐藏面消除的基本原理
1132隐藏面消除的实施
114本章要点
115本章作业
第12章颜色模型
121光和颜色
1211人对世界的视觉感知
1212物体表面的性质
1213光源的种类
1214颜色论
1215色彩应用
1216三色学说
1217CIE色度图
122颜色模型
1221原色系统
1222RGB颜色模型
1223CMY颜色模型
1224HSV颜色模型
123本章要点
124本章作业
第13章光照模型
131光照模型
1311环境光
1312漫反射和Lambert模型
1313镜面反射和Phong模型
1314透明模型
1315简单局部光照模型
132插值算法
1321恒定明暗处理
1322Gouraud明暗处理——光强
插值算法
1323Phong明暗处理——法向插值
算法
133光线跟踪
1331Whitted整体光照模型
1332光线跟踪基本原理
1333光线跟踪算法
1334光线跟踪算法中的关键技术
1335光线跟踪的反走样
134阴影
1341自身阴影
1342投射阴影
1343阴影算法
135纹理
1351纹理的定义
1352颜色纹理
1353几何纹理
136本章要点
137本章作业
第四篇交互
第14章交互技术
141设计原则
142界面和菜单设计
1421建立一个新应用
1422定义主菜单
1423定义一个执行菜单
1424添加源代码
1425C语言(*c)程序文件的
加入
1426加标题
143交互系统的基本技术
1431定位技术
1432橡皮筋技术
1433拖拽技术
1434选择技术
144数据结构设计
1441图形的数据结构设计
1442层的数据结构设计
1443基本图元的数据结构设计
1444辅助图元的数据结构设计
1445其他数据结构设计
145UNDO和REDO技术
146本章要点
147本章作业
附录教学网站
参考文献
教学建议