当前位置:文档之家› 计算机图形学

计算机图形学

a.扫描线算法:目标:利用相邻像素之间的连贯性,提高算法效率。

处理对象:简单多边形,非自交多边形(边与边之间除了顶点外无其它交点)。

扫描线:平行于坐标轴的直线,一般取平行于X轴。

区间:扫描线与边的交点间的线段。

基本原理:将整个绘图窗口内扫描多边形的问题分解到一条条扫描线,只要完成每条扫描线的绘制就实现了多边形的扫描转换;一条扫描线与多边形的边有偶数个交点,每2个点形成一区间。

步骤:(对于每一条扫描线)(1)计算扫描线与边的交点(2)交点按x坐标从小到大排序(3)交点两两配对,填充区间。

算法:1、建立ET;2、将扫描线纵坐标y的初值置为ET中非空元素的最小序号,如图中,y=1;3、置AEL为空;4、执行下列步骤直至ET和AEL都为空.4.1、如ET中的第y类非空,则将其中的所有边取出并插入AEL 中;4.2、如果有新边插入AEL,则对AEL中各边排序;4.3、对AEL中的边两两配对,(1和2为一对,3和4为一对,…),将每对边中x坐标按规则取整,获得有效的填充区段,再填充.4.4、将当前扫描线纵坐标 y 值递值1;4.5、将AEL中满足y = ymax边删去(因为每条边被看作下闭上开的);4.6、对AEL中剩下的每一条边的x 递增deltax,即x = x+deltax.
b.走样与反走样:走样:用离散量(像素)表示连续的量(图形)而引起的失真,称为走样,或称为混淆。

光栅图形的走样现象:阶梯(锯齿)状边界、图形细节失真、狭小图形遗失:动画序列中时隐时现,产生闪烁。

反走样:在图形显示过程中,用于减少或消除走样(混淆)现象的方法。

方法:提高分辨率方法{方法简单,但代价非常大,显示器的水平、竖直分辩率各提高一倍,则显示器的点距减少一倍,帧缓存容量则增加到原来的4倍,而扫描转换同样大小的图元却要花4倍时间}、非加权区域采样{扫描转换线段的两点假设:像素是数学上抽象的点,它的面积为0,它的亮度由覆盖该点的图形的亮度所决定;直线段是数学上抽象直线段,它的宽度为0。

而现实:像素的面积不为0;直线段的宽度至少为1个像素;假设与现实的矛盾是导致走样出现的原因之一。

解决方法:改变直线段模型,线上像素灰度不等。

方法步骤:1、将直线段看作具有一定宽度的狭长矩形;2、当直线段与某像素有交时,求出两者相交区域的面积;3、根据相交区域的面积,确定该像素的亮度值}、加权区域采样{权函数w(x, y),以像素A的中心为原点建立二维坐标系,w(x, y)反应了微面积元dA对整个像素亮度的贡献大小,与 dA 到像素中心距离d 成反比。

实现步骤:1.求直线段与像素的相交区域2.计算的值3.上面所得到的值介于0、1之间,用它乘像素的最大灰度值,即设该像素的显示灰度。

问题:计算量大。

c.为什么需要齐次坐标? 1、对多个点计算多次不同的变换时,分别利用矩阵计算各变换导致计算量大2、运算表示形式不统一:平移为“+”、旋转和放缩为“·”3、统一运算形式后,可以先合成变换运算的矩阵,再作用于图形对象。

d.Sutherland-Hodgman算法:S-H算法基本思想(亦称逐边裁剪算法):将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪。

步骤:1、多边形由一系列顶点表示:V1V2…Vn2、按一定(左上右下)的次序依次裁剪; 与左边所在直线裁剪
的结果是上边的输入,依次类推3、输出为顶点序列。

算法:将顶点序列P1P2…Pn作为输入、依次对窗口的每条裁剪线作下列处理、输入顶点序列、依次顶点序列中相邻顶点构成的边PiPi+1进行裁剪处理、输出顶点序列(下条裁剪线的输入)。

特点:裁剪算法采用流水线方式,算法简单、推广到任意凸多边形裁剪窗口。

原因是:凸多边形的边能将平面空间分成2部分,其中一部分含裁剪窗口。

1.橡皮筋技术的关键在于控制图形随着用户的操作(鼠标移动)而不断发生变化,此时需要擦除原有的图形同时生成新的图形。

橡皮筋技术的实现方法有两种:其一是利用颜色的异或(XOR运算)操作,对原有图形并不是擦除,而是再绘制一条同样的直线段并与原图形进行异或操作,此时原图形会从屏幕上消失;另一种是利用双缓存技术,绘制图形时分别绘制到两个缓存,交替显示。

2.一种直线裁剪圆的方法:利用直线和圆的位置关系。

直线是显然不可见,则去除;不是显然不可见,则进一步求解;是可见部分,则保留。

基本思想:从P0点出发找出距P0最近的可见点A,从P1点出发找出距P1最近的可见点B,AB为可见部分。

步骤:中点法(求离P0最近的可见点)(1)取中点Pm = (P0+P1) / 2(2)如 P0 Pm 不是显然不可见,且 P0 P1 在窗口中有可见部分,则距P0最近的可见点一定落在 P0 Pm 上,所以用P0 Pm 代替 P0 P1 ;否则用 Pm P1 代替 P0 P1 (3)再对新的P0 P1重复(1)(2),直到长度小于给定的控制常数ε为止。

3.多边形绘制光滑着色方法:Gouraud着色方法,用多边形顶点的颜色进行插值生成中间点的颜色;Phone着色方法,对顶点的法向量进行插值计算出中间点的法向量。

Gouraud 着色方法(颜色插值方法)主要步骤1、计算多边形的单位法向量2、计算多边形顶点的单位法向量(共享顶点的多边形法向量的平均值)3、利用光照明方程计算顶点颜色4、对多边形顶点颜色进行双线性插值,获得多边形内部各点的颜色;(1)计算多边形顶点的单位法向(2)内部点颜色计算:双线性插值增量法优化计算IA,IB,IPPhong 着色方法(法向插值着色方法)方法:通过对多边形顶点法向量进行插值,获得多边形内部各点的法向量,再利用光照方程计算各点的亮度。

主要步骤:1、计算多边形单位法向量2、计算多边形顶点单位法向量(以上两步同Gouraud着色方法)3、对多边形顶点法向量进行双线性插值,获得内部各点的法向量4、利用光照明方程计算多边形内部各点颜色法向量双线性插值法向量双线性插值计算优化(1)扫描线 y 递增为 y+1,NA和NB的增量分别为ΔNA和ΔNB(2)当x递增一个单位(P点沿扫描线右移一个单位)时,NP的增量为ΔNP。

Phong 着色方法效果更好,但计算效率低。

4.画家算法:算法基本思想:1)先把屏幕置成背景色2)将场景中的物体按其距观察点的远近进行排序,结果放在一张线性表中;(线性表构造:距观察点远的称优先级低,放在表头;距观察点近的称优先级高,放在表尾。

该表称为深度优先级表)3)然后按照从远到近(从表头到表尾)的顺序逐个绘制物体。

步骤:1)将场景中所有多边形存入一个线性表,记为L;2)如果L中仅有一个多边形,算法结束;否则根据每个多边形的nmin 对它们预排序。

不妨假定多边形P落在L的表首,即nmin(P) 为最小。

再记 Q 为 L – {P} (表中其余多边形)中任意一个;3)判别P, Q之间的关系。

处理多边形循环遮挡和多边形相互
穿透.解决方法:分割。

通过分割能够避免多边形多边形循环遮挡和多边形相互穿透。

再多补充点。

5. 提高消隐算法效率的常见方法1.利用连贯性(物体、面、区域、扫面线、深度连贯性2.将透视投影转换成平行投影3.包围盒技术4.背面剔除5.空间分割技术
6.物体分层表
6.绘制Bezier曲线,根据顶点多边形与拟合曲线间的误差控制参数t的个数选取:分割定理:时,曲线上的点 P(t)将Bezier曲线分成两段.误差控制:曲线Q(或R)的
控制多边形较曲线P的控制多边形更接近曲线.方法:首先判断曲线与其控制多边形的距离是否小于给点的逼近误差,如果是,则显示控制多边形;否则,按分割定理将曲线一分为二。

对新的两段曲线,重复上述判断,直至结束。

曲线与控制多边形间的距离: 由
Bezier曲线的凸包性可知,曲线位于控制顶点的凸包之内,从而曲线与控制多边形间的距
离必然小于其中,d(P
i , P
P
n
)为P
i
点到直线P
P
n
的距离.
7.透视投影的规范视见体空间转换为平行投影规范视见体原因:1关于长方体的裁剪较关
于正四棱台的裁剪简单2平行投影较透视投影简单3透视投影与平行投影都采用同一套裁剪与投影程序,处理一致,便于用硬件实现.形状分别为:透,四棱台;平,半立方体。

8.仿射变换和透视变换联系:仿射变换是一种线性变换,包括平移变换、缩放变换、翻转变换、旋转变换、错切变换等。

但是仿射变换只是透视变换的一个特例。

对于空间中两平面π,π’,如果一个双射使得对应点的连线相互平行,则是一个透视仿射对应(平行投影)。

因此,观点片面,还要看具体情况。

9.三维流水线过程:采用规范视见体的三维图形显示流程图
在投影之前裁剪的理由:三维物体的表面通常被离散表示成多边形或折线,而对这类简单图元,三维裁剪同样比较简单。

三维图形在显示过程中需要被消隐,做这个工作要有图形的深度信息,所以必须在投影之前完成。

消隐很费时,如果在此之前裁剪(或部分裁剪)掉不可见的图形,可使需要消隐的图形减至最小。

观察点就是投影中心世界坐标到观察坐标的转化将世界坐标所有的点乘以一个摄像机变换矩阵这个变换矩阵就是将摄像机坐标的的三个轴和原点与世界坐标系重合的变换矩阵
10.透视投影和平行投影性质: 投影中心与投影平面之间的距离为有限。

灭点:不平行于投影平面的平行线,经过透视投影之后收敛于一点,称为灭点,灭点的个数无限.主灭点:平行于坐标轴的平行线的灭点。

一点透视:1个灭点.两点透视:2个灭点.三点透视:3个灭点.特点:产生近大远小的视觉效果,由它产生的图形深度感强,看起来更加真实。

平行投影 :投影中心与投影平面之间的距离为无限,是透视投影的极限状态.。

相关主题