1、1第一章 计算机图形学概述计算机图形学研究的对象是图形。IEEE 给出的计算机图形学的定义是借助计算机产生图形、图像的技术或科学*计算机图形学由数据结构、 图形算法和语言构成。 图形常用以下两种方法: 1) 点阵法 最常用的 2) 参数法点阵法是用具有灰度或色彩的点阵来表示图形的一种方法。点阵法通过枚举出图形中所有的点来表示图形 参数法用图形的形状参数和属性参数来表示图形。 计算机图形系统的工作方式有被动式和交互式两种。 计算机图形学与数字图像处理及计算机视觉的关系计算机图形学,侧重图形的生成。数字图像处理,对图像进行处理,分析的过程。数字图像处理将客观世界中原来存在的物体映像处理成新的数字化
2、图像。 计算机视觉,研究能理解自然景物的系统,为机器人提供眼睛的功能。图象处理将客观世界中原来存在的物体映像处理成新的数字化图像。模式识别研究如何对所输入的图像进行分析和识别。研究的是计算机图形学的逆过程计算几何研究几何模型和数据处理的学科,着重讨论几何形体的计算机表示、分析和综合,研究如何方便灵活、有效地建立几何形体的数学模型以及如何更好地存储和管理等。第二章 交互式图形系统自己复习刷新(Refresh):为了让荧光物质保持一个稳定的亮度值像素(Pixel:Picture Cell):构成屏幕(图像)的最小元素分辨率(Resolution) :CRT 在水平或竖直方向单位长度上能识别的最大像
3、素个数,单位通常为 dpi(dots per inch)。若每个单元有 24 位(每种基色占 8 位)即显示系统可同时产生 224 种颜色(24 位真彩色) 。分辨率 M*N、颜色个数 K 与显存大小 V 的关系带宽 T 与分辨率、帧频 F 的关系第三章 基本图形元素生成算法直线的扫描转换的两个概念* 理想直线:没有宽度,由无数个点构成的集合.* 直线的扫描变换(用显示器绘制直线):在显示器所给定的有限个象素集合组成的矩阵中,确定最佳逼近于该直线的一组象素.数值微分法 (DDA 画线算法) DDA 设(x0, y0)为直线段的始点, ( x1, y1)为直线段的终点, 若 x=1, 则当 x
4、每递增 1 时, y 递增 k。 若 y=1, 则当 y 每递增 1 时, x 递增 1/k。 中点算法d0=-2*dy+dx;delta1=-2*dy;delta2=-2*(dy-dx);当 d0 时, 取正右方像素 P1 (xP+1, yP)d0=-2*dy+dx dy=y1-y0;dx=x1-x0;KNM2logFT2若 d0 d=d+delta1;中点画线法例:设 p0(x0=1, y0=2),p1(x1=5,y1=4),试用中点画线算法由 p0 到 p1 画一直线。 (要求写出主要公式、步骤,画出结果图。dy=y1-y0=4-2=2;dx=x1-x0=5-1=4;d0=-2*dy+d
5、x=-2*2+4=0;delta1=2*dy=2*2=4;delta2=2*(dy-dx)=2*(2-4)=-4;X(1)=0;Y(1)=0;for x=1:x1if d=0)当 e 0 时, 让 e=e-1, (重新初始化误差项)定义决策变量 e = 2*e*dx, e0 = - dx; e=e +2*dy则下一点为: (x+1,y) (e =0); 当 e 0 时, 让 e= e - 2dx, (重新初始化误差项)已知一直线段起点(0,0) ,终点(-8,-3) ,利用 Bresenham 算法生成此直线段,写出生成过程中坐标点及误差 的变化情况。并在下面的方格中,标出直线上各点 0)(2
6、)()()(11 iii iii yyxxxy 误 差 初 值误 差 计 算 公 式 :p x y d P1 1 1 0 P2 2 1 4 P3 3 2 0 P4 4 2 4 P5 5 3 0 4 3解: 以 X 方向计长1830XY走步数 C=8是第三象限 0)(11,1 iri iii xyxC=8 x0= 0,y 0=0,取点(0,0)C=7 (x 1)= 2Y-X=6-8=-2=0 e+=2*(x-y)+5d=0, (中点在圆外)选右下方的 SE 点,d0=1-R y=R;x=0;d0 d=d+2*(x-y)+5 x=x+1 y=y-1步骤:画出第二个八分圆利用八对称性画出其它八分圆画
7、园的二阶差分法及其与中点算法的比较(0,0)4当前点是(xi,yi),构造判别式:d(1)d 初始值为:d=1-R(2)d=0, (中点在圆外)选右下方的 SE 点,再下一个象素的判别式为 dnew =d+2(xi-yi)+5二阶差分算法算法思想判别式 d 的增量是 x , y 的线性函数,选正右方的 E 点:dnew=d+(2xi+3)x 递增 1,d 递增 2;选右下方的 SE 点:dnew =d+(2xi+3)+(-2yi+2)x 递增 1,d 递增 2;y 递减 1,d 递增 2;x y d E SEx=x+1 ( d=0) y-1 d + SE E+2 SE+4算法步骤:1,依据上一
8、次迭代中的 d 的符号来选择现在点 E 或 SE(d0=1-R)2,用在上一次迭代计算的 和 来计算新的 d3,用移到新象素点的二次差分值,并用它来更新和 4,移到下一点x y d E SE初始值 0 6 1-6=-5 3 5-2*6=-7x0 3 5 3-3=0 7+2=9 -3+4=1x=y 结束 3)Bresenham 算法思想:当 D0 时,若 DV=0,则取 D,否则取 V;当 D0 时,若 HD=0,则取 H,否则去 D;当 D=0 时,取 D1)中点画圆算法只用到整数的加法、减法和左移(乘 2)运算,效率较高并且适合用硬件实现。中点算法利用八对称性画圆,从当前已获得的象素递推出下
9、一个象素。2)二阶差分算法利用八对称性画圆,用差分法消除中点算法中的乘法运算,提高了中点算法的效率 3)Bresenham 算法利用四分圆对称性画圆,每次只需检查误差项(增量)的符号椭圆的中点算法区域填充的步骤30*RS250*2ESESRRD121022初 始 值5区域填充的步骤及算法:1、确定填表充区域,即确定被填充的象素 2、确定填充的颜色主要方法:扫描线法、边缘填充法、种子填充法。矩形区域的填充算法:扫描线法的步骤、扫描线相交时交点的选取原则、边界上交点的选取原则原则:左闭右开,下闭上开多边形的边的分类表(ET) 、活性边表(AET)例:画出如图所示的多边形的边的分类表(ET)及对应的
10、活性边表(AET)2 0 7 3.5 -1.5 7 7 2 8 11 0 8 9 2 8 11 0 8 x x y x x y x x y x x y 6 p4 p5 p5 p6 5 5 2 8 5 -1.5 7 4 p3 p4 3 11 0 8 2 2 0 7 1 5 -3 2 5 3 3 0 p1 p2 p2 p3 种子填充算法的思想及其适用的设备只适用于光栅扫描设备1、种子象素压入堆栈2、若堆栈非空,即有区域中象素在堆栈中,做如下循环:A.栈顶象素出栈;B.将出栈象素置为多边形颜色。C.按左、上、右、下四个方向左右顺序检查与出栈象素相邻 的四个象素,若其中某象素不在边界置为多边形颜色,则
11、将该象素推入堆栈。ASCII 的编码GB231280 的编码,可表示的汉字个数和图形符号个数 6763 个基本汉字7445 个图形字符 202 个一般符号字符库:存储字符的形状的数据库点阵字符(存储及显示)点阵字符的存储(点阵字符是由位图表示的,保存字符就是保存它的位图)6例:1616 点阵汉字:16*16=256 位(32 个字节)常用汉字 6763 个:6763*32=216416 字节 16*24=384 位(48 字节)6763*48=324K 字节需要压缩技术点阵字符的显示:从字库中将字的位图检索出来。将检索到的位图写出到帧缓存中。矢量字符(存储及显示)显示:首先从字库中将它的字符信
12、息。然后取出端点坐标,对其进行适当的几何变换,再根据各端点的标志显示出字符。点阵字符:存储量大,易于显示矢量字符:存储量小,美观,变换方便; 但需要光栅化后才能显示。线宽的处理是指绘制多个像素宽的图形。 通常有线刷子、 方形刷子和区域填充的三种方法。 采用扫描线算法对多边形进行填充,请写出 EL、AEL 的结构,并分析扫描线算法的步骤和处理扫描线的步骤。答: 活化边 AET:指与当前扫描线相交的多边形的边,也称为活性边。Ymax X X(即 1/k)边的分类表 ET:把有效边按与扫描线交点 x 坐标递增的顺序存放在一个链表中,此链表称为有效边表。有效边表的每个结点:Ymax X 1/k nex
13、t算法步骤:(1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大 y 值(ymin 和ymax) 。(2)从 y=ymin 到 y=ymax,每次用一条扫描线进行填充。(3)对一条扫描线填充的过程可分为四个步骤:a.求交b.排序c.交点配对d.区间填色4、若用扫描线填充法将顶点为P0,P 1,P 2,P 3,P 4,P 5,P 6的多边形填充。请写出其边分类表 EL 及 y=8 时的活化链表。答:边分类表 EL 如下:y=8 时,活化链表为:xy2134567891123456789101202p1p3p4p5(a) 多 边 形 P01P23P45P60p2 p0 p6712 1.
14、4 2/5 12 7 -1 9 8 5 9 11.5 1/2AEL用扫描线填充法将顶点为 P0 (2,5), P1(2,10),P 2(9,6),P 3(16,11),P 4(18,4),P5(12,2),P 6(7,2)的多边形填充。写出填充步骤。答:(1)建立边分类表 EL:(2)写出每一条扫描线的活化链表以及交点进行配对和着色:y=2,AEL交点:(7,2) (12,2) ,着色两点间所有点y=3,AEL交点:(5.3,3)(15,3), 根据左闭右开原则,着色(5,3)(15,3)之间所有点y=4, AEL交点:(3.6,4) (18,4), 根据左闭右开原则,着色(3,4) (18,
15、4)之间所有点y=5, AEL交点:(2,5) (17.7,5), 根据左闭右开原则,着色(2,5) (17,5)之间所有点y=6, AEL交点:(2,6)(9,6) (9,6)(17.4,6),按 X 大小配对,并根据左闭右开原则,着色(2,6)与(9,6), (9,6)与(17,6)之间的所有点y=7, AEL交点:(2,7)(7.3,7) (10.4,7)(17.1,7),按 X 大小配对,并根据左闭右开原则,着色(2,7)与(7,7), (10,6)与(17,6)之间的所有点y=8, AEL交点:(2,8)(5.6,8) (11.8,8)(16.8,8),按 X 大小配对,并根据左闭右
16、6543215 7 -5/3 4 12 311 17.7 -2/711 9 7/510 9 -4/710 2 05 7 -5/3 4 12 35 5.3 -5/3 4 15 35 3.6 -5/3 4 18 35 2 -5/3 11 17.7 2/710 2 0 10 9 -7/4 11 9 7/5 11 17.4 -2/710 2 0 10 7.3 -7/4 11 10.4 7/5 11 17.1 -2/710 2 0 10 5.6 -7/4 11 11.8 7/5 11 16.8 -2/710 2 0 10 3.9 -7/4 11 13.2 7/5 11 16.5 -2/710 2 0 1
17、0 2.2 -7/4 11 14.6 7/5 11 16.2 -2/711 16 7/5 11 16 -2/7P0P1P2P3P4P5P68开原则,着色(2,8)与(5,8), (11,8)与(16,8)之间的所有点y=9, AEL交点:(2,9)(3.9,9) (13.2,9)(16.5,9),按 X 大小配对,并根据左闭右开原则,着色(2,9)与(3,9), (13,9)与(16,9)之间的所有点y=10,AEL交点:(2,10)(2.2,10) (14.6,10)(16.2,10),按 X 大小配对,根据左闭右开原则,着色(2,10)与(2,10), (14,10)与(16,10)之间的
18、所有点y=11,AEL 交点(16,11)(16,11), 着色点(16,11)。种子填充算法的思想及其适用的设备种子填充算法根据已知多边形区域内部的一个象素点来找到区域内其它象素点,从而对多边形区域内部进行填充。四向连通区域及八向连通区域的定义和区别八向连通区域:各象素在水平、垂直、及四个对角线方向都是是边通的。即从区域内任一点出发,可水平、垂直、及四个对角线方向移动到达区域内任一点。四向连通区域:各象素在水平垂直四个方向是边通的。即从区域内任一点出发,可水平垂直移动到达区域内任一点。4 连通与 8 连通区域的区别 连通性: 4 连通可看作 8 连通区域,但对边界有要求 对边界的要求第四章曲
19、线和曲面表示曲线的三种表示方法曲线的表示形式显示表示 y=kx+b隐式表示 f(x,y)=0参数表示 平面直线及园的参数表示 直线参数方程园参数方程切矢量、法矢量、曲率和挠率的概念及定义对于三维参数曲线, 曲线上任一点的切矢量可用矢量 P( t)表示, P ( t)= x( t) y( t) z( t)。 其大小反映了曲线关于参数 t 在该点处的变化速度, 其方向趋于该点的切线方向。 对于一般参数 t, 若|d P/dt|0, 则有 对于弧长参数 s, 对于空间的参数曲线, 所有垂直于切矢量 T 的矢量都是法矢量设以弧长 s 为参数, 则参数曲线上任一点的曲率定义为 k=|dT/ds|。 ty
20、yxxtPtP)(1,0)01001036,sincoRyx tPttT/d/d)(d),(d2sPksPtT 2122ddszyx9称 =1/k 为曲率半径。 仍设以弧长 s 为参数, 则参数曲线上任一点的挠率定义为 =|d B/ds|, 它反映了曲线在该点处扭出其密切平面的速率。 确定曲线为平面曲线的充要条件是, 曲线上任意点处的挠率等于零密切平面、法平面及副法平面的定义。曲线上某一点处就有一束法线, 它们在一个平面上, 我们称此平面为曲线在该点处的法平面在曲线算法中,线性插值和二次插值的基本思想和实现步骤。线性插值就是给定函数 f(x)的两个不同的点(x1,y1)和( x2,y2), 构
21、造一个线性插值函数 (x)=ax+b 近似代替函数 f(x)。 根据插值的定义可以确定系数 a 和 b, 因而可得线性插值函数为多项式插值采用多项式函数去插值给定的数据点,即对于给定的点Pi(i=0,1,n) ,要构造多项式函数 y=P(x),使得 yi=P(xi)。几何约束矩阵和基矩阵的概念。参数曲线的归一化表示(几何约束矩阵和基矩阵)。三次 Hermite 曲线几何约束矩阵 HG三次 Hermite 曲线的基矩阵 MH三次 Hermite 曲线的基函数(调合函数)M H.T三次 Bezier 曲线的几何约束矩阵 ,BEZ基矩阵 。BEZ第五章 图形变换图形变换指对图形的几何信息经过几何变换
22、后产生新的图形。齐次坐标系就是 N 维向量由 N+1 维向量来表示。一个 N 维向量的齐次坐标表示不惟一。用户坐标系用户为处理自已的图形时所采用的坐标系,单位由用户自己决定。规范化设备坐标系将各个设备坐标系中的数据化为统一的数据范围从而得到的设备坐标系。二维图形的几何变换(平移、旋转、放缩、对称)1.平移变换: 其中, , , 是物体在三个坐标方向上的位移量。 2112)(x102旋转变换: 绕 Z 轴旋转的公式为: 绕 X 轴旋转的公式为: 绕 Y 轴旋转的公式为: 2缩放变换:写出透视变换矩阵和各种投影(三视图、正轴测和斜投影)变换矩阵。答: 透视变换矩阵形式为: 11主视图: 俯视图:侧
23、视图: 正轴测: 斜投影: 二维图形的复合变换例:求一二维复合变换矩阵 T,其功能为先将图形在 X 方向向右平移6,在 Y 方向向上平移 8,再将图形逆向旋转 45 度。已知三角形 ABC 各顶点的坐标 A(1,2)、B(5,2)、C(3,5),相对直线 Y=4 做对称变换后到达 A、B 、C 。试计算 A、B 、C的坐标值。 (要求用齐次坐标进行变换,列出变换矩阵)解:(1)将坐标系平移至 P1 (0,4)点140AT(2) 以 X 轴对称10BT(3)将坐标系平移回原处140CT12(4) 变换矩阵:T=T A*TB*TC= 180(5) 求变换后的三角形 ABC 各顶点的坐标 A、B 、
24、C A: 168012121 TYXAXA=1, Y A=6 B: 16580125125 TBXB=5, Y B=6 C: 1380153153 TCXA=3, Y A=3 窗口在用户坐标系中的图形根据需要常用一个矩形区域确定一个矩形部分,然后将这个区域内的图形输出到屏幕上去,这个矩形称这窗口。视区在图形设备的显示范围内,由设备坐标系定义的一个矩形区域。第六章 几何造型表示形体的三种模型:(线框模型、表面模型、实体模型)凸多边形是指这样一类多边形:在多边形内任选两个点,将这两个点用线段连接后,此线段上所有的点都在多边形内。第七章 立体真实感图形图形消隐计算机为了反映真实的图形,把隐藏的部分从
25、图中消除。简述消隐算法的分类。1物体空间的消隐算法:物体空间是物体所在的空间,即规范化投影空间。这类算法是将物体表面上的 个多边形中的每一个面与其余的 个面进行比较,精确求出物体上每条边或每个面的遮挡关系。计算量正比于 。2图象空间的消隐算法:图象空间就是屏幕坐标空间,这类算法对屏幕的每一象素进行判断,以决定物体上哪个多边形在该象素点上是可见的。若屏幕上有 个象素点,物体表面上有 个多边形,在该类消隐算法计算量正比于 。3. 物体空间和图象空间的消隐算法 P192简述深度缓存算法及其特点。答:深度缓存算法是一种典型的、也是最简单的图象空间的消隐算法。在屏幕空间坐标系中, 轴为观察方向,通过比较平行于 轴的射线与物体表面交点的 值(又称为深度值) ,用深度缓存数组记录下最小的 值,并将对应点的颜色存入显示器的帧缓存。深度缓存算法最大的优点是简单。它在 、 、 方向上都没有进行任何13排序,也没有利用任何相关性。算法复杂性正比于 。在屏幕大小,即 一定的情况下,算法的计算量只与多边形个数 成正比。另一个优点是算法便于硬件实现,并可以并行化。