计算机图形学基础教程第2版重点难点指导作者孔令德2013年12月第1章导论重点:图形学的定义、光栅扫描显示器;难点:图形图像的区别、图形学的热点技术;第1章重点学习指导:1.计算机图形学的定义1963年美国麻省理工学院的Ivan E.Sutherland完成了《Sketchpad: A Man-Machine Graphical Communication System》博士学位论文。
该论文首次使用“Computer Graphics”术语,证明了交互式计算机图形学是一个可行的、有应用价值的研究领域,从而确立了计算机图形学作为一个崭新学科的独立地位。
Ivan E.Sutherland为计算机图形学技术做出了巨大的贡献,被称作计算机图形学之父。
一般意义上,计算机图形学的定义如下:计算机图形学是一门研究如何用计算机表示、生成、处理和显示图形的学科。
IEEE的定义为:Computer graphics is the art or science of producing graphical images with the aid of computer。
2.光栅扫描显示器光栅扫描显示器采用阴极射线管CRT技术产生电子束,电子束的强度可以不断变化,容易生成颜色连续变化的真实感图像。
光栅扫描显示器是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的颜色,这些点阵单元被称为像素。
光栅扫描显示器不能从单元阵列中的一个可编址的像素点直接画一段直线到达另一个可编址的像素点,只能用靠近这段直线路径的像素点集来近似地表示这段直线。
显然,只有在绘制水平直线段、垂直直线段以及45°直线段时,像素点集在直线路径上的位置才是准确的,其他情况下的直线段均呈锯齿状。
光栅扫描显示器的重要术语有扫描线、三枪三束等。
由于电子束在屏幕上从左至右、从上至下有规律的周期运动,在屏幕上留下了一条条扫描线。
为了显示彩色图像,需要配备彩色光栅扫描显示器。
该显示器的每个像素由呈三角形排列的红(Red,R)、绿(Green,G)及蓝(Blue,B)三原色的3个荧光点组成,因此需要配备3支电子枪与每个彩色荧光点一一对应,叫做“三枪三束”显示器。
第1章难点学习指导:1.图形与图像的区别图形的表示方法有两种:参数法和点阵法。
参数法是在设计阶段建立几何模型时,用形状参数和属性参数描述图形的一种方法。
形状参数可以是点、线、面、体等几何属性的描述;属性参数则是颜色、线型和宽度等非几何属性的描述。
一般将用参数法描述的图形依旧称为图形。
点阵法是在绘制阶段用具有颜色信息的像素点阵来表示图形的一种方法,所描述的图形通常称为图像。
计算机图形学就是研究将图形的表示法从参数法转换为点阵法的一门学科。
这意味着真实感图形的计算结果是以数字图像的方式来提供的,因此图形与图像的界限越来越模糊。
尽管如此,二者依然是可以区别的。
图形是由场景的几何模型与物体的物理属性共同组成的;图像是指计算机内以位图形式存在的彩色信息。
2.图形学的热点技术计算机图形学研究的热点技术是指在实时绘制方面的LOD技术和IBR技术。
实时绘制技术面临的一个挑战是模型复杂程度的不断提高,单靠提高机器性能已经无法满足实时绘制的需求,通常需要通过损失一定的图形质量来达到平衡。
就目前的技术而言,主要靠降低三维场景中几何模型的复杂度,这种技术被称为细节层次技术(levels of detail,LOD),这也是大多数商业软件所采用的技术。
另一种技术被称为基于图像的绘制技术(image based rendering,IBR),它是利用已有的图像来生成不同视点下的新图像。
简言之,LOD是采用根据物体距离视点的远近而有选择地采用不同分辨率的模型,但依旧需要建立物体的三维模型,并对三维模型加以贴图以生成真实感场景。
LOD技术真实感强,是大多数游戏采用的建模技术,一般情况下,固定物体采用斜投影建设,移动物体采用透视投影建设。
IBR是以景物的360°全景照片为基础,采用柱面纹理映射来模拟现实环境。
IBR不需要建模,照片的分辨率决定了运行速度,但是视点方向的图像失真是最大的问题。
因此,视图插值是其关键技术。
IBR技术真实感略差,但是运行速度很快。
从一个场景切换到另一个场景,即从一个360°全景图片围成的范围切换到另一个360°全景图片围成的范围,需要采用“热点”切换。
第2章MFC绘图基础重点:画笔和画刷函数;基本图元绘图函数;路径层函数;位图函数;文本函数;难点:映射模式、双缓冲;第2章重点学习指导:1.画笔和画刷函数画笔用来绘制直线、曲线或区域的边界线,默认的画笔是1个像素宽度的黑色实线画笔。
画刷用于对图形内部进行填充,默认的画刷是白色画刷。
使用二者的共同特征为:若要更换新画笔或画刷,可以在创建新画笔或画刷对象后,将其选入设备上下文,就可以使用新画笔或画刷进行绘图,使用完新画笔或画刷后要将设备上下文恢复原状。
2.基本图元绘图函数主要包括绘制像素点函数、绘制直线函数、绘制椭圆函数、绘制矩形函数等。
重点掌握绘制像素点函数。
3.路径层函数设备上下文提供了路径层(Path Bracket)的概念,可以在路径层内进行绘图。
比如使用MoveTo()函数和LineTo()可以绘制一个闭合的多边形,那么如何对该多边形填充颜色呢?这里需要使用路径层来实现。
MFC提供了BeginPath()和EndPath()两个函数来定义路径层。
BeginPath()的作用是在设备上下文中打开一个路径层,然后利用CDC类的成员函数可以进行绘图操作。
绘图操作完成之后,调用EndPath()函数关闭当前路径层。
使用路径层函数的一个主要目的是为使用CDC类的MoveTo()函数和LineTo()绘制的闭合的多边形,然后使用FillPath()函数进行着色。
4.位图函数蒋一幅位图作为屏幕背景时,常通过MFC的资源标签页导入一幅BMP位图,然后使用位图函数显示在屏幕客户区内。
主要是BitBlt()函数和StretchBlt(),前者不拉伸位图,后者拉伸位图铺满屏幕客户区。
5.文本函数文本函数中的难点是输出数字,需要先使用Format()格式化为字符串后才能输出。
第2章难点学习指导:1.映射模式把图形显示在屏幕坐标系中的过程称为映射,根据映射模式的不同可以分为逻辑坐标和设备坐标,逻辑坐标的单位是米制尺度或其它与字体相关的尺度,设备坐标的单位是像素。
注意:使用各向同性的映射模式MM_ISOTROPIC 和各向异性的映射模式MM_ANISOTROPIC 时,需要调用SetWindowExt()和SetViewportExt()函数来改变窗口和视区的设置。
2.双缓冲双缓冲是一种基本的动画技术。
创建一个与屏幕显示设备上下文兼容的内存设备上下文,先将图形绘制到内存设备上下文中,然后调用BitBlt()函数将内存位图复制到屏幕上,同时禁止背景刷新,可实现平滑动画,消除了屏幕闪烁现象。
第3章基本图形的扫描转换重点:中点Bresenham算法;八分法画圆算法;四分法绘制椭圆算法;计算椭圆弧上任一点的法矢量;计算椭圆下半部分误差项的初始值;直线的反走样算法;难点:彩色直线段的扫描转换算法;直线段绘制闭合图形算法;基于背景色的第一个八分之一象限内彩色直线段上下相邻像素的颜色计算法;第3章重点学习指导:1.中点Bresenham算法直线的扫描转换就是在屏幕像素点阵中确定最佳逼近于理想直线的像素点集的过程。
中点Bresenham算法是一种高效的直线扫描转换算法。
直线的中点Bresenham算法原理:每次在主位移方向上走一步,另一个方向上走不走步取决于中点误差项的值。
需要计算的主要步骤是:(1)根据直线的斜率确定主位移方向;(2)中点误差项的递推公式;(3)中点误差项的初始值。
2.八分法画圆法根据圆的对称性,可以用四条对称轴x=0,y=0,x=y,x=-y将圆分成8等份。
只要绘制出第一象限内的1/8圆弧,根据对称性就可绘制出整圆,这称为八分法画圆算法。
假定第一象限内的任意点为P(x,y),可以顺时针确定另外7个点:P(y,x),P(-y,x),P(x,-y),P(-x,-y),P(-y,-x),P(y,-x),P(-x,y)。
3.四分法绘制椭圆算法考虑到椭圆的对称性,可以用对称轴x=0和y=0把椭圆四等份。
只要绘制出第一象限内的1/4椭圆弧,根据对称性就可绘制出整个椭圆,这称为四分法绘制椭圆算法。
已知第一象限内的点P(x,y),可以顺时针得到椭圆的另外3个对称点为P(x,-y)、P(-x,-y)和P (-x,y)。
4.计算椭圆弧上任一点的法矢量采用《高等数学》中的偏导数计算椭圆上任意一点P(x,y)处的法矢量yj a xi b j yF i x F y x N 2222),(+=∂∂+∂∂= 式中,i 和j 是沿x 轴向和沿y 轴向的单位矢量。
5. 计算椭圆下半部分误差项的初始值假定图1中P i (x i ,y i )点是椭圆弧上半部分Ⅰ的最后一个像素,M Ⅰ(x i +1,y i -0.5)是用于判断选取P u 和P d 像素的中点。
由于下一像素就转入了椭圆弧的下半部分Ⅱ,所以其中点转换为判断P l 和P r 的中点M Ⅱ(x i +0.5,y i -1),所以下半部分的初始值d 20为22222220)1()5.0(b a y a x b d --++=图1 确定下半部分的初始值 6. 直线的反走样算法Wu 反走样算法是根据像素与理想直线的距离对相邻两个像素的亮度等级进行调节。
已知理想直线段起点为A(x 0,y 0),终点为B(x 1,y 1),斜率为0101x x y y k --=,假定0≤k ≤1。
直线段与上下像素中心连线的交点为F 1,F 2,F 3,如图2所示。
按照中点Bresenham 算法原理,直线段AB 的x 方向为主位移方向,理想直线段经过扫描转换后,像素点P 4离直线上的F 1点较近,像素点P 1离直线上的F 1点较远, P 4点被选取;像素点P 2离直线上的F 2点较近,像素点P 5离直线上的F 2点较远,P 2点被选取;像素点P 3离直线上的F 3点较近,像素点P 6离直线上的F 3点较远,P 3点被选取。
直线段AB 扫描转换结果为像素点P 4、P 2和P 3。
P 4点显示在第一行,P 2点和P 3点显示在第二行,发生了锯齿走样。
P u (x i +1,y i )P d (x i +1,y i -1)= P r (x i +1,y i -1) M Ⅰ(x i +1,y i -0.5)P l (x i ,y i -1)P i (x i ,y i ) P 2 P 3 P 1距离理想直线0.8个像素远的像素亮度为80% 距离理想直线0.45个像素远的像素亮度为45% 距离理想直线0.1个像素远的像素亮度为10%图2 Wu 反走样算法示意图Wu 反走样算法原理是对于理想直线上的任一点,同时以两个不同亮度等级的相邻像素来表示。