计算机图形学总结自我.docx
- 文档编号:5447087
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:15
- 大小:578.06KB
计算机图形学总结自我.docx
《计算机图形学总结自我.docx》由会员分享,可在线阅读,更多相关《计算机图形学总结自我.docx(15页珍藏版)》请在冰点文库上搜索。
计算机图形学总结自我
计算机图形学总结(自我)
12、消隐
(1)深度缓存(Z-Buffer)算法。
(2)扫描线算法。
(3)多边形区域排序算法。
(4)列表优先算法
13、为什么需要隐藏面消隐算法?
答:
因为我们在用计算机生成三维物体的真实感图形,必须要做的是确定物体的可见部分,只有确定了物体的可见部分,我们才能在计算机中真实地再现三维物体。
因此,我们就需要一个隐藏面消隐算法来去掉物体的不可见部分,从而避免错误地将不可见部分显示出来,这样就可以在计算机中生成一个三维物体的真实感图形了。
14、 多边形的顶点和点阵表示各有什么优缺点?
答案:
顶点表示是用多边形的顶点序列来描述多边形。
该表示几何意义强、占内存少、几何变换方便;但它不能直观地说明哪些像素在多边形内,故不能直接用于面着色。
点阵表示用位于多边形内的像素的集合来描述多边形。
该方法虽然没有多边形的几何信息,但便于用帧缓存表示图形,可直接用于面着色。
15、解释走样和反走样的概念,以及反走样的几种表现形式。
答案:
图形信号是连续的,而它们在光栅显示器上对应的图形则是由一系列相同亮度的离散像素组成。
用离散的像素表示连续的直线或多边形的边界必然会引起图形的失真,即光滑的线段变成了阶梯的形状,这种现象就称为走样。
用于减轻或消除这种效果的技术就称为反走样。
光栅图形的走样现象除产生阶梯状的边界外,还有图形的细节失真、狭小图形遗失等。
16、简要叙述几种反走样算法的原理和优缺点。
答案:
1、提高分辨率的反走样算法2、区域采样的反走样算法3、加权区域采样的反走样算法
17、简述四连通区域和八连通区域的概念以及两者之间的关系。
四连通的区域是指从该区域内一点出发,通过上、下、左、右四种运动
的组合,在不越出区域的前提下,可到达区域内的任一点。
八连通的区域是指从该区域内一点出发,通过沿水平方向、垂直方向和对角线方向的八种运动的组合,在不越出区域的前提下,可到达区域内的任一点。
四连通区域的边界为八连通区域,而八连通区域的边界为四连通区域。
18、简述区域的两种表示方法。
在光栅图形中,区域可采用内点表示和边界表示两种表示形式。
把位于给定区域内的所有像素一一列举出来的方法称为内点表示法。
它将区域内的所有像素填充成同一种颜色(常称为原色),而区域边界上的像素则不能填这种颜色。
把位于给定区域边界上的像素一一列举出来的方法称为边界表示法。
它
将区域边界上的像素都着上同一种颜色(常称为边界色),而区域内的像素则不能着这种颜色。
19、
17、试按左下右上顺序用四向算法,分析当S1为种子时,下图区域的填充过程
18、
19、
20、
21、
22、
23、
24、DDA算法最基本思想:
从x的左端点x0开始,向x右端点步进,步长=1(个像素)。
X步进后,用y=kx+b计算相应的y坐标。
最后取像素点(x,取整round(y))作为当前点的坐标。
即当x每递增1,y递增k。
PS:
实际代码时用Y+0.5替代取整。
PS2:
当|k|>1时,必须把x,y地位互换。
按照从(x1,y1)到(x2,y2)方向不同,分8个象限。
例如对于方向在第1a象限内的直线而言,取增量值Dx=1,Dy=k。
对于方向在第1b象限内的直线而言,取增量值Dy=1,Dx=1/k。
其余同理。
优点:
最简单,最直接的画线算法。
采用增量的思想,每计算一个像素,只需计算一个加法。
缺点:
由于斜率很可能是小数(浮点数),因此每个加法都意味着是浮点运算,浮点运算不利于硬件实现;每次加法后还必须进行一次四舍五入后的取整运算。
中点画线法
假设当前像素点为P(xp,yp),则下一个像素点为P1(右)或P2(右上)。
设M=(xp+1,yp+0.5),为p1与p2之中点,Q为理想直线与x=xp+1垂线的交点。
将Q与M的y坐标进行比较。
当M在Q的下方,则P2应为下一个像素点;M在Q的上方,应取P1为下一点。
具体算式:
d=F(M)=F(xp+1,yp+0.5)=a(xp+1)+b(yp+0.5)+c
(a=y0-y1,b=x1-x0,c=x0y1-x1y0)
当d<0,M在Q点下方,取右上方P2为下一个像素;
当d>0,M在Q点上方,取右方P1为下一个像素;
当d=0,选P1或P2均可,约定取P1为下一个像素;
改进1:
根据前一点的判别式值d和整数增量即可得到后一点的判别式值d’。
因此可采用增量计算,只有加法,提高运算效率。
若当前像素处于d>0情况,则取正右方像素P1(xp+1,yp),要判下一个像素位置,应计算d’=d+a;若d<0时,则取右上方像素P2(xp+1,yp+1)。
要判断再下一像素,则要计算d’=d+a+b
改进2:
由于只判别d的符号确定下一个像素位置,因此可以用2d来判别,化为整数算法。
递推算法中只包含加、减运算,便于硬件实现。
d’=d+2a;d’=d+2(a+b)
Bresenham算法
基本思想:
过各行各列像素中心构造一组虚拟网格线。
按直线从起点到终点的顺序计算直线与各垂直网格线的交点,然后根据误差项的符号确定该列像素中与此交点最近的像素。
算法:
假设起始位置像素落在直线上,d=0;沿横坐标每前进一步,d的值增加量为k,即d=d+k;一旦d>1,即令d=d-1,保证d介于0与1之间。
当d>=0.5时,直线接近右上方像素,d<0.5时,直线接近右方像素。
为便于判别,令e=d-0.5,则当e>=0,取右上方像素,当e<0,取右方像素。
e的初始值为-0.5。
y在递增时,e在取值范围一般介于-0.5与0.5之间。
改进:
由于只判别e的符号,确定像素的取舍,因此可令e’=2×e×dx,通过判别e’的符号确定像素取舍,不但可以避免小数运算,还能避免除法。
优点:
增量算法、避免了浮点运算、避免了乘除法运算,节省运算量,并适合硬件实现,使用最广泛
25、扫描转换与区域填充的联系与区别
(1)定义
多边形的扫描转换:
从多边形顶点表示到点阵表示的转换,这种转换称为多边形的扫描转换。
这种转换就是给多边形包围的区域着色的过程。
即从多边形的给定边界出发,求出位于其内部的各个像素,并将其灰度和颜色值写入帧缓存中相应单元。
主要用来填充多边形区域以及由多边形拟合的其他简单曲线区域。
区域填充:
从给定的位置开始涂描直到指定的边界为止。
区域是指一组相邻而又相连的像素,且具有相同的属性。
区域填充可用在具有复杂形状边界的多边形以及交互式绘图系统中。
(2)联系
都是光栅图形面着色,二者可相互转换。
当已知顶点表示的多边形内一点作为种子点,并用扫描转换直线段的算法将多边形的边界表示成八连通区域后,多边形扫描转换问题就可转化为区域填充问题;若已知给定区域是多边形区域,并且通过一定的方法求出它的顶点坐标,则区域填充问题便可以转化为多边形扫描转换问题。
(3)区别
A基本思想不同,各自应用的场合不同。
多边形扫描转换是指将多边形的顶点表示转换成点阵表示的方法,而区域填充只改编了区域的填充颜色,没有改变区域的表示方法。
B对边界的要求不同。
多边形扫描转换不要求多边形的边界封闭。
而区域填充为了防止递归填充时跨越区域的边界,需设定边界。
C基于的条件不同。
多边形扫描转换是从多边形的边界信息出发,利用多种形式的连贯性进行填充;区域填充算法给定区域内一点作为种子点,从这点根据连通性将新的颜色扩散到整个区域。
26、
(1)射线法
由被测点向某方向做射线,计算此射线与多边形所有边的交点个数。
若交点个数为奇数,则被测点在多边形内部;若交点个数为偶数(包括0),则该点在多边形的外部。
规定射线过顶点时,计数为1;在射线左边的边与该射线相交时交点有效,应计数;而在射线右边的边与射线相交时交点无效,不计数(左闭右开原则)。
(2)弧长法
前提:
多边形由有向边组成,即规定沿多边形各边的走向其左侧(或右侧)为多边形的内部。
方法:
以被测点为圆心作单位圆,将全部有向边向单位圆作径向投影,并计算其在单位圆上弧长的代数和。
若代数和为0,则被测点在多边形之外;若代数和为2Pi,则被测点在多边形之内。
(效率低)
(3)扫描线填充算法
算法思想:
按扫描线顺序,先计算出扫描线与多边形区域边界的交点,然后判断扫描线上的哪些部分在区域边界之内,最后用要求的颜色对边界内的像素填色。
实现方法:
依次考察各条扫描线,一条扫描线从左至右与多边形的交点是成对出现的。
即A、B点,C、D点之间的像素都位于多边形之内,则A、B为一个区段,C、D为一个区段。
对这些区段内的像素用指定的颜色进行填充后,就完成了该扫描线的填充工作,再继续下一条扫描线。
实现步骤(四步):
A求交点:
计算扫描线与多边形各边的交点
B交点排序:
把所有交点按递增顺序进行排序
C交点配对:
第一个交点与第二个交点,第三个交点与第四个交点等,每对交点代表扫描线与多边形的一个相交区间((A、B)(C、D))
D区间填色:
把这些相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。
注1:
如何保证交点正确配对?
答:
检查两相邻边在扫描线的哪一侧。
若共享顶点的两条边:
分别落在扫描线两边,取交点1次;均高于扫描线,取交点2次;均低于扫描线,取交点0次。
(具体实现:
检查顶点的两条边的另外两个端点的y值,按这两个y值中大于交点y值的个数是0、1、2来决定交点是取零个、一个、两个。
)
注2:
边界上像素的取舍问题?
答:
落在右/上边界的象素不予填充,而落在左/下边界的象素予以填充。
(具体实现:
对扫描线与多边形的相交区间,取“左闭右开”;而正确配对则保证了多边形的“下闭上开”。
)
27、
边界填充算法
基本思想:
与漫水法的基本思想一样,只是在测试(x,y)点的象素是否处在区域之内同时又未被访问过时,包括两部分的内容:
与边界值相比较,以检测此象素是否为该区域的一部分;与新值相比较,以决定该象素是否已被访问过。
前提条件:
在初始状态,区域内没有一个象素已设置为新值。
但是允许新值等于边界值。
在区域内测试(x,y)点的象素是否在区域之内同时又未被访问过,一般采用堆栈的方法。
对边界定义的区域进行填充,基本流程如下:
A种子象素入栈,当栈非空时,执行如下三步操作:
B栈顶象素出栈;
C将出栈象素置成多边形色;
D按上、下、左、右的顺序检查与出栈象素相邻的四个象素,若其中某个象素不在边界上且未置成多边形色,则把该象素入栈。
算法特点:
A算法程序简单,表达清楚
B需要反复递归,其执行效率并不高
C未考虑象素间的相关性,而是孤立地对一个个象素进行测试。
8扫描线区域填充算法
基本思想:
利用了象素之间的连贯性,将扫描线上位于区域内部的相邻象素作为一个区域来考虑,只选一个象素作为代表进栈,从而极大地减少了对栈空间的需求,并且显著地提高了执行效率。
算法过程:
首先填充当前扫描线上位于区域内部的一个区段,它的颜色为old_Color,现在将fill_Color作为区域填充的新颜色;然后确定与这一区段相邻的上、下两条扫描线上位于区域内部的区段,分别将它们右端象素作为种子点保存起来。
反复进行这一过程,直到保存的区段都填充完毕为止。
基本步骤:
A种子象素压入堆栈;
B从包含种子象素的堆栈中推出区段的种子象素;
C沿着扫描线对种子象素的左右象素进行填充,直至遇到边界象素为止,标记区段的左、右端点坐标为xl和xr;
D在区间[xl,xr]中检查与当前扫描线y上、下相邻的两条扫描线上的象素。
若存在非边界、未填充的象素,则把每一区间的最右象素作为种子点压入堆栈,返回第②步。
E堆栈为空时结束。
Bezier曲线公式:
其中t在0,1之间。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 图形学 总结 自我