西安交通大学计算机图形学课件6

上传人:ni****g 文档编号:576283285 上传时间:2024-08-19 格式:PPT 页数:108 大小:8.03MB
返回 下载 相关 举报
西安交通大学计算机图形学课件6_第1页
第1页 / 共108页
西安交通大学计算机图形学课件6_第2页
第2页 / 共108页
西安交通大学计算机图形学课件6_第3页
第3页 / 共108页
西安交通大学计算机图形学课件6_第4页
第4页 / 共108页
西安交通大学计算机图形学课件6_第5页
第5页 / 共108页
点击查看更多>>
资源描述

《西安交通大学计算机图形学课件6》由会员分享,可在线阅读,更多相关《西安交通大学计算机图形学课件6(108页珍藏版)》请在金锄头文库上搜索。

1、第4章输出图元的属性杨新宇11.线属性2.曲线属性3.颜色和亮度等级4.区域填充属性 5.字符属性6.束属性7.查询函数8.反走样主要内容24-1线属性w线段的基本属性有线型、线宽和线色。w在一些软件包中,可以使用选择的画笔和笔刷来显示直线。3线型w线型属性包括实线、虚线和点线等。通过设置沿线路径显示的实线段的长度和间距来修改画线算法,以生成各种类型的线。n虚线:可以通过在实线段之间插入与实线段等长的空白段来显示。划线的长度和空白段长度经常作为用户的选项而进行指定。n点线:可以通过生成很短的划线和等于或大于划线大小的空白段而进行显示。4线型w为了在PHIGS应用程序中设置线段属性,用户需要调用

2、函数:setLinetype(lt)nlt为1、2、3、4分别生成实线、虚线、点线、点划线。5线型w光栅线算法通过绘制像素段来显示线型属性。w对于各种划线、点线和点划线样式,画线程序沿直线路径输出一些连续像素段,在每两个实心段之间有一个给定长度的空白中间段。w段长度和中间空白段的像素数目可以用像素掩模指定,像素掩模是包含数字0和1的字符串,用来指出沿线路径需要绘制哪些位置。w在二值系统上,掩模给出沿线路径应该装入帧缓冲器的位置,从而显示选定的线型。6线型w使用固定数目的像素来绘制划线会产生如图4-2所示的、在不同的直线方向生成不等长划线的现象。w如果要进行精确的绘制,那么对任何直线方向的划线长

3、度应保持近似的相等。因此,可按照直线的斜率来调整实心段和中间空白段的像素数目。7线宽w线宽选择的实现取决于输出设备的能力。w在视频监视器上的粗线可以用相邻的平行线进行显示;而在笔式绘图仪上则可能需要更换画笔。w类似PHIGS中的其他属性,使用线宽命令来设置属性表中的线宽值。使用下面命令对线宽属性进行设置:setLinewidthScaleFactor(lw) 8线宽w在光栅实现中(如Bresenham算法),通过在每个采样位置处使用一个像素来生成标准线宽。w其他线宽则是作为标准线宽的正整数倍,通过沿相邻平行线路径绘制额外的像素而显示的。9线宽w对于斜率绝对值小于1的直线,可修改画线程序,通过在

4、沿线的每个x位置绘制像素的垂直段来显示粗线。每段的像素数目等于参数lw的整数值。10线宽w对于斜率绝对值大于1的直线,可以在水平段交替地拾取线段路径左边和右边的像素而形成粗线。这个方法示例于图4-4中,其线宽为4,使用水平像素段进行绘制。11线宽w使用水平或垂直像素段实现线宽选择的另一个问题是:无论斜率大小,所生成直线的端点都是水平的或垂直的。这对于较粗的直线的影响则更为突出。w我们可以通过添加线帽(linecap)来调整线端的形状,从而给出更好的外观。12线宽w线帽的一种形式是方帽(buttcap),这种形式通过调整所构成的平行线的端点位置,使粗线的显示具有垂直于线路径的正方形端点。假如指定

5、直线的斜率为m,那么粗线的方端的斜率为-1/m。w另一种线帽是圆帽(roundcap),这种形式通过对每个方帽添加一个填充的半圆而得到。圆弧的圆心在线段的端点,其直径与直线宽度相等。w第三种线帽是突方帽(project round cap),简单地将线段向两头延伸一个线宽并添加方帽。13线宽w生成粗折线需要一些额外的考虑。通常,显示单根线段所用的方法不能生成平滑连接的一系列线段。n例如,使用水平或垂直像素段显示粗线,会在不同斜率的线段的连接处,其水平段变成垂直段时留下间隙。14线宽w可以通过在线段端点进行额外处理来生成平滑连接的粗折线。图4-6示意了两线段平滑连接的三种可能方法。斜角连接(mi

6、terjoin):通过延伸两条线的外边界直到它们相交而形成。圆连接(roundjoin):通过使用直径等于线宽的圆弧边界将两线段连接而形成。斜切连接(beveljoin):通过使用方帽并在两线段相交处的三角形间隙中进行填充而形成。15画笔或笔刷的选择w有些图形软件包中,可以选择画笔和笔刷的方式来显示直线。这种类型的选项包括形状、尺寸和样式。图4-7中给出了一些可能的笔和刷的形状。16画笔或画刷的选择w这些形状可以按像素位置的数值形式存储在一个像素模板中,然后再设置到线路径上。17画笔或画刷的选择w通过改变模板的尺寸,使用笔(刷)形状生成的直线可以有多种宽度。w通过将样式值加到画笔和画刷的标记上

7、,可以按选定的样式显示线段。18画笔或画刷的选择w在绘画软件包中,可以额外提供模拟绘画技巧的显示。w图4-11示例了通过不同类型的毛笔笔画建模而显示的一些图案。19线颜色w当系统提供颜色(或亮度)选择时,给出的当前颜色索引的参数则包含在系统属性值表中。w折线程序以当前颜色显示折线,通过使用setPixel程序,将这种颜色设置在帧缓冲器中沿线路径的像素位置上而实现折线显示。w颜色选择的数目取决于帧缓冲器中每个像素的有效值数目。w在PHIGS中,使用下列函数设置线的颜色值:setPolylineColourIndex (lc)204-2曲线属性w曲线属性的参数与线段相同。w我们可以使用各种颜色、宽

8、度、点划线模式和有效的画笔和画刷选择来显示曲线。w采用画曲线算法来实现属性选择,这一点类似于画直线。214-2曲线属性w在实现线型选择中讨论的像素模板(掩模),也可用于在光栅曲线算法中生成划线和点线模式。w例如,掩模11100生成入图4-12所示的虚线圆弧。224-2曲线属性w可以利用圆的对称性在各个八分象限内生成虚线圆。但是,从一个八分象限到另一个八分象限时,必须交换像素位置以保持划线和间隙的正确顺序。w类似于画线算法,像素掩模显示的划线和中间间隙,也是按照曲线的斜率而变化。n例如,要显示等长划线,就必须在沿圆周移动时调整绘制每根划线的像素数目。w我们使用沿等角弧绘制像素的方法,代替使用等长

9、段的像素掩模来生成等长划线。234-2曲线属性w各种宽度的光栅曲线可用水平或垂直像素段进行显示。w曲线斜率的绝对值小于1时,使用垂直段;斜率绝对值大于1时,绘制水平段。图4-13示例了使用这种方法显示在第一象限中宽度为4的圆弧。244-2曲线属性w另一种显示粗曲线的方法是:填充两条距离等于预定宽度的平行曲线路径间的区域。w我们可以用指定的曲线路径作为第一条边界,并在其内侧或外侧建立第二条边界。这种方法使得原始曲线路径按所选的第二条边界向内或向外偏移。可以通过在指定的曲线路径两侧以宽度的一半为距离,设置两条边界曲线来保持原曲线的位置。254-2曲线属性w曲线的画笔(或笔刷)显示,可以使用在线段中

10、讨论的相同技术来生成。在图4-15中,我们沿线路径重复画笔的形状,从而生成第一象限内的圆弧。这里,矩形画笔的中心移向后继曲线位置,从而产生向下的曲线形状。264-3颜色和亮度等级w按照特定系统的能力和设计目标,可以为用户提供各种颜色和亮度等级的选择。n通用光栅扫描系统通常提供较多的颜色,而随机扫描监视器最多只能提供几种颜色以供选择。w颜色选项使用0到某一正整数之间的整数值进行编码。n对于CRT监视器,颜色码被转换成电子束的强度等级。n对于彩色绘图仪,编码控制喷墨范围或画笔选择。274-3颜色和亮度等级w在彩色光栅系统中,可选颜色的数量取决于帧缓冲器中为每个像素提供的存储器数量。w颜色信息可以通

11、过两种方法存储在帧缓冲器中:n可以将颜色码直接存储在帧缓冲器中;n把颜色码放在一个独立的表中,并使用像素值作为这个表的索引。284-3颜色和亮度等级w利用直接存储策略,一旦在应用程序中指定了某种颜色码,那么就在帧缓冲器中为以这种颜色显示的输出图元的每个组成像素设置对应的二进制值。294-3颜色和亮度等级w颜色表w灰度等级30颜色表w图4.16示例了在颜色查找表(colorlookuptable或视频查找表videolookuptable)中存储彩色值的一种方案。在该表中,帧缓冲器值作为颜色表的索引。31颜色表w在PHIGS应用程序中,用户可以使用下列函数设置颜色表表项:setColourRep

12、resentation(ws, ci, colorptr)32颜色表w在查找表中存储颜色码的优点:n使用颜色表可以提供合理的能够同时显示的颜色数量,而无需大容量的帧缓冲器。对于大多数应用,256或512种不同颜色足以表示单个图像。n表项还可以随时改变,从而使用户能容易地测试在设计、场景或图形中使用的不同的颜色组合,而无需改变对图形数据结构的属性设置。n可视化应用在帧缓冲器中存储类似能量这样的物理量,并使用查找表测试各种颜色编码而不改变像素值。n而且,在可视化和图像处理应用中,颜色表是设置颜色阈值的简便工具,可以使指定阈值上下的所有像素设置为同样的颜色。w因此,有些系统为颜色码存储提供两种功能,

13、从而使用户能选择在帧缓冲器中使用颜色表或直接存储颜色码。33灰度等级w对于不能显示彩色的监视器,颜色功能在应用程序中可以用于设置显示的元素的灰度效果,即灰度等级(Grayscale)。w使用0到1范围内的数值来指定灰度级别,然后将其转换成适当的二进制码存储在光栅中。w这样可以使所设置的亮度容易移植到具有不同灰度等级的系统中。34灰度等级w表4.2列出了四级灰度等级系统中亮度码的详细说明。w另一种存储亮度信息的方案是,将每个亮度码直接转换成电压值,该电压值在所使用的输出设备上产生这些灰度等级。35灰度等级w如果在一个配置中同时可以使用多个输出设备,那么所有的监视器可能使用相同的颜色表接口。在这种

14、情况下,可以使用图4-17中所示的RGB值范围来建立单色显示器的颜色表。对于给定的颜色索引ci,其亮度显示可计算为:亮度=0.5min(r,g,b)+max(r,g,b)364-4区域填充属性w对于填充一个定义的区域的选择内容,包括选择实心区域颜色(纯色)或图案填充方式,以及选择某种颜色和图案。取决于可用软件包的处理能力,这些填充选择可以应用于多边形区域,或是用于曲线边界定义的区域。w此外,区域也可以使用多种画笔样式、颜色和透明度参数进行绘制。374-4区域填充属性填充模式图案填充软填充38填充模式u区域显示有三种基本填充模式:具有颜色边界的空心区域使用纯色填充的实心区域使用指定图案或设计填充

15、的区域39填充模式n在PHIGS程序中,使用下列函数来选择基本填充模式:setInteriorstyle(fs)填充模式参数fs的值包括空心、实心和图案(图4.18)。40填充模式填充模式的另一个值是影线(hatch),该值使用选定的影线图案平行线或交叉线对区域进行填充,如图4-19所示。41填充模式空心区域通过仅显示边界轮廓并保持其内部颜色与背景色相同而实现。实心区域则以单一颜色对区域内部进行填充,也可以包含其边界。实心区域内部或空心区域轮廓的颜色,则使用下列函数进行选择:setInteriorColourIndex(fc)其他的填充选择包括区域的边类型、边宽度和边颜色的指定。42图案填充使

16、用下列函数选择填充图案:setInteriorStyleIndex(pi)p其中,图案索引参数指定表中的一个位置。例如,下面的一组语句将使用图案表中的第二种图案类型填充fillArea命令中定义的区域:setInteriorStyle(pattern)setInteriorStyleIndex(2)fillArea(n,points)43图案填充对于图案填充模式,可以使用下面的函数在单独的输出设备上创建表项:setPatternRepresentation(ws,pi,m,ny,cp)参数pi为工作站码,ws设置图案索引码,cp是一个具有nx列、ny行的二维颜色码数组。下列程序段给出了如何使用

17、这个函数来为工作站1设置图案表中的第一个表项。cp1,1:=4;cp2,2:=4;cp1,2:=0;cp2,1:=0;setPatternRepresentation(1,1,2,2,cp);44图案填充表4-3给出了这个颜色表的前两项。这个例子中的颜色数组cp指定了在八色系统上产生红黑相间的对角线的图案。45图案填充当使用颜色数组cp来填充一个区域时,需要指定数组中每个元素覆盖的区域的大小。这个过程可以通过设置图案的矩形坐标范围来完成:setPatternSize(dx,dy)其中,参数dx和dy给出了数组映射的坐标宽度和高度。46图案填充图4-20给出了有关图案数组坐标尺寸的例子。假如这个

18、图形中的dx和dy值是以屏幕坐标形式给出的,那么颜色数组的每个元素将应用于包含4个像素的2x2屏幕网格。47图案填充开始图案填充的参照位置可以使用下列语句进行设置:setPatternReferencePoint(position)参数position是指向矩形图案左下角坐标(xp,yp)的指针。从这个起始位置开始,将在x和y方向重复地复制图案,直到所定义的区域全部由不重叠的图案数组副本所覆盖。使用矩形图案填充区域的过程称为铺瓦(tiling),而矩形填充图案有时则称为“瓦片图案”。48图案填充4-21示例了从图案参照点开始的三角形填充区域的瓦片。49图案填充为了演示图案命令的使用,程序(书上

19、)列出了在平行四边形填充区域(图4-22)的内部显示黑白图案的例子,程序中的图案大小设置为将每个数组元素映射到一个单独像素。50图案填充影线填充用来在区域内显示一组平行线。其填充程序实现单一影线或交叉影线的绘制。影线的间距和斜率在影线表中以参数形式设定。在光栅系统中,可以使用为一组对角像素设置颜色值的图案数组来描述影线填充。51图案填充在很多系统中,图案参照点(xp,yp)由系统设置。例如,参照点可能将自动地设置在多边形的顶点上。通常,对于一个任意的填充区域,参照点可以是该区域的坐标范围确定的包围矩形(包围盒,boundingbox)的左下角(图4.23)。52图案填充也可以按多种方法对填充图

20、案和背景色(包括灰度等级)进行组合。对于仅包含数字1和0的位图图案,0值可用做显示背景的透明指示器,也可将1和0表示为使用两种颜色图案来填充内部区域。颜色填充图案可以使用几种方法与背景色进行组合。图案和背景色可以使用布尔操作进行组合,或者简单地使用图案颜色替代背景色。53图案填充图4.24示例了如何在二进制(黑白)系统上以特定的背景图案设置像素值,从而对2x2填充图案进行布尔及替代操作。54软填充经过修改的边界填充和泛滥填充程序,可以应用于重新绘制区域,这种使填充颜色和背景色结合的方法称为软填充(soft-fill)或色彩填充(tint-fill)算法。这种填充方法的一种作用是,减弱在已经模糊

21、的对象边界上的填充颜色,从而实现对边的反走样(antialias)。另一种用途是允许对原来用半透明笔刷填充的颜色区域进行重新涂色。这时,当前颜色与笔刷颜色以及区域“后面”的背景色进行混合。55软填充线性软填充算法是这类填充的一个例子,该算法在将前景色F与单一背景色B(FB)合并后绘制的区域上重新绘制。假如F和B的值为已知,那么通过检测帧缓冲器中当前的颜色内容,就可确定这些颜色原来是怎样组合的。区域内将要重新填充的每个像素的当前RGB颜色P是F和B的线性组合:P=tF+(1-t)B(4-1)56软填充向量方程(4.1)包含了颜色的RGB三个成分,即P=(PR,PG,PB)F=(FR,FG,FB)

22、B=(BR,BG,BB)(4-2)因此,我们可以使用任意一个RGB颜色成分来计算参数t的值:t=(Pk-Bk)/(Fk-Bk)(4-3)57软填充v类似的软填充程序可以用于前景色与多个背景色相混合的区域,例如检测板图案。当两种背景色B1和B2与前景色F相混合时,产生的像素颜色P为:P=t0F+t1B1+(1t0t1)B2(4-4)584-5字符属性显示的字符的外观由以下属性控制:字体大小颜色方向594-5字符属性w文本属性w标记属性60文本属性w有许多可供图形程序员使用的文本选项。w首先是选择字体,字体就是使用类似Courier、Helvetica、Arial、Times Roman等特定设计

23、风格的一组字符和其他一些特殊的符号组。所选字体的字符也可以使用附加的下划线风格(实线、点线和双线)、黑体、斜体、轮廓轮廓或影线风格。w在PHIGS程序中,通过在下列函数中为文本字体参数tf设置一个整数值,来选择指定的字体和相应的风格:setTextFont(tf)61文本属性w显示的文本的颜色设置存储在系统属性表中,并由将字符定义装入帧缓冲器中的程序所使用。w文本颜色(或亮度)则由应用程序中的下列函数进行控制:setTextColorIndex(tc)62文本属性w调整文本大小可通过缩放字符的整体尺寸(高度和宽度)或仅缩放字符宽度来实现。w字符高度则定义为字符基线(baseline)和帽线(c

24、apline)间的距离。63文本属性w使用下列函数可以在不改变字符的高宽比的情况下调整文本大小:setCharacterHeight(ch)64文本属性w字符的宽度可以使用下列函数设置:setCharacterExpansionFactor(cw)65文本属性w字符间间距的设置可以使用下列函数:setCharacterSpacing(cs)66文本属性w字符串的显示方向按照字符向上向量(character upvector)的方向进行设置:setCharacterUpVector(upvect)67文本属性w在很多应用中能垂直地或水平地安排字符串的功能是十分有用的(图4.30)。这种属性参数可

25、以使用下列语句进行设置:setTextPath(tp)68文本属性w使用向上向量与文本路径说明相结合的方法,从而对字符串定向而生成倾斜的文本。69文本属性w对齐是字符串的另一个方便的属性,这个属性指定文本如何按照起始坐标进行定位。对齐属性使用下列函数设置:setTextAlignment(h,v)70文本属性w对文本显示的精确指定可以使用下列函数给出:setTextPrecision(tpr)71标记属性w标记符号是一种单一字符,它能以不同的颜色和不同的大小进行显示。通过一个程序在所定义的位置用指定的颜色和大小将所选择的字符装入光栅,即可实现标记属性。w使用下列函数选择特定的字符作为标记符号:

26、setMarkerType(mt)72标记属性w使用下列函数设置标记大小:setMarkerSizescaleFactor(ms)w使用下列函数指定标记的颜色:setPolymarkerColourIndex(mc)734-6束属性w通过对每个输出设备建立一张表来完成,这张表列出了在该设备上要显示的每种图元所使用的属性值。然后,通过指定合适的表索引,从而为每个输出设备上的图元选择特定的一组属性值。w使用这种方式指定的属性称为束(bundled)属性,在特定输出设备上显示该图元时,为每个图元定义的所要使用的一组属性值表称为束表。744-6束属性w对于束或非束描述的选择,则是通过设置这些属性的每一

27、个称为状态源标记(aspectsourceflag)的开关而实现的:setIndividualASF(attributeptr,flagptr)754-6束属性w线的束属性w区域填充束属性w文本的束属性w标记的束属性76线的束属性w指定工作站上线属性的束表项使用下列函数进行设置:setPolylineRepresentation(ws,li,lt,lw,lc)w一旦建立了束表,就可通过指定表索引值来为每个工作站选择一组线的束属性:setPolylineIndex(li)77区域填充束属性w区域填充束属性表项使用下列函数进行设置:setInteriorRepresentation(ws,fi,f

28、s,pi,fc)w可以使用下列函数从表中选择某个属性束:setInteriorIndex(fi)78文本的束属性w文本的束属性表项使用下列函数进行设置:setTextRepresentation(ws,ti,tf,tp,te,ts,tc)w特定的文本索引值使用下列函数进行选择:setTextIndex(ti)79标记的束属性w标记的束属性表项使用下列函数而建立:setPolymarkerRepresentation(ws,mi,mt,ms,mc)w使用下列函数进行束表选择:setPolymarkerIndex(mi)804-7查询函数w对于当前属性值的检测,通过在查询函数中标出属性的名字来完成

29、。函数为:inquirePolylineIndex(lastli)和inquireInteriorColourIndex(lastfc)814-8反走样w由于低频取样(不充分取样)而造成的信息失真称为走样(aliasing)。w可以使用校正不充分取样过程的反走样(untialiasing)方法,来改善所显示的光栅线的外观。824-8反走样w图4.36示例了不充分取样的效果。为了避免从这种周期性对象中丢失信息,则必须把取样频率至少设置为对象中出现的最高频率的两倍,这个频率称为Nyquist取样频率(或Nyquist取样速率)fs:fs=2fmax(4-5)834-8反走样w另一种说法是,取样间隔

30、不应超过循环间隔(Nyquist取样间隔)的一半。对于x间隔取样,Nyquist取样间隔xs为:xs=xcycle/2(4-6)844-8反走样w增加光栅系统取样频率的一种方法是简单地以较高分辨率显示对象。但是,即使用当前技术能达到的最高分辨率,仍会在一定范围内出现锯齿形。w对于能显示两级以上亮度的光栅系统,可以用反走样方法来修改像素亮度。改变边界的像素亮度,来减少锯齿形。854-8反走样w一种简单、直接的反走样方法,就是把屏幕当做比实际所具有的更细的网格,从而增加取样频率,然后根据这种更细网格,使用取样点来确定每个屏幕像素的合适亮度等级。w这种在高分辨率下对对象特性取样并在较低分辨率上显示其

31、结果的技术称为过取样(supersampling),也称为后过滤(postfiltering)。864-8反走样w可以代替过取样的另一种方法是,通过计算待显示的每个像素在对象上的覆盖区域,从而确定像素亮度。w计算覆盖区域的反走样称为区域取样(areasampling),(也称为前过滤,prefiltering),因为像素亮度是作为一个整体来确定的,所以不用计算子像素亮度。874-8反走样w也可以移动像素区域的显示位置而实现光栅对象的反走样,这种技术称为像素移相(pixelphasing)。w通过与对象几何形状相关的电子束的“微定位”而应用该技术。884-8反走样1.直线段的过取样2.加权的像素

32、掩模3.直线段的区域取样4.过滤技术5.像素移相6.直线亮度差的校正7.反走样区域边界89直线段的过取样w直线段的过取样可以使用多种方式而完成。对于直线段的灰度显示,可以把每个像素分成一定数目的子像素,并统计沿线路径的子像素数目,然后将每个像素的亮度等级设置为正比于子像素数目的值。90直线段的过取样w对于图4.37中的例子,可以通过对平行于线路径的多边形边界进行定位,从而以有限宽度来表示这样的直线,如图4.38所示。并且,每个像素现在可设置成0以上9个亮度级别之一。91加权的像素掩模w过取样算法经常在实现时将更大的权值赋给接近于像素区域中心的子像素,因为我们希望这些子像素在确定像素的整体亮度中

33、可以实现更重要的作用。图4.39示例了3x3像素部分所采用的加权方案。92加权的像素掩模w指定子像素的相对重要性的数值数组有时称为子像素权值的“掩模”(mask)。也可以为较大的子像素网格建立类似的掩摸。而且,经常扩展这些掩模以包含来自属于相邻像素中子像素的作用,从而对相邻像素进行平均以获得亮度。93直线段的区域取样w通过将每个像素亮度设置为正比于像素与有限宽度直线的重叠区域,可以完成对直线的区域取样。w将直线看成矩形,而将两相邻的垂直(或两相邻的水平)屏幕网格线间的直线区域看做不规则四边形,那么就可以通过确定在垂直列(或水平行)中每个像素被多少四边形区域所覆盖来计算像素的重叠区域。94过滤技

34、术w对直线进行反走样的更精确的方法是采用过滤技术。这种方法类似于应用加权的像素掩模,只是假设一个连续的加权曲面(或过滤函数)覆盖像素。图4.40示例了矩形、圆锥和高斯过滤函数。95像素移相w在能够对屏幕网格内的子像素位置进行编址的光栅系统上,可以使用像素移相来反走样对象。通过将电子束移动(微定位)到更接近对象几何形状指定的近似位置,可以平滑沿线路径或物体边界的阶梯状现象。加入这种技术的系统,则设计为使单个像素位置可以根据像素直径的小数部分进行移动。96像素移相97直线亮度差的校正w为了减轻阶梯状效应,对直线进行反走样也为另一种光栅效果提供了校正,如图4.42所示。98反走样区域边界w直线的反走

35、样概念也可以用于区域的边界,从而消除其锯齿形的外观效果。w可以将这种程序加入到扫描线算法中,在生成区域时来平滑区域轮廓。99反走样区域边界w假如系统具有允许像素重定位的功能,那么就可以调整边界像素位置,使其沿着定义区域边界的直线而实现对区域边界的平滑处理。w其他方法则是根据边界内像素区域的百分比,来调整每个边界位置上的像素亮度。100反走样区域边界w过取样方法是通过分割整体区域并确定区域边界内的子像素数目而应用的。101反走样区域边界w另一种由Pitteway和Watkinson提出的确定边界内像素区域百分比的方法,是以中点算法为基础的。w这个算法通过测试两像素间的中间位置,确定哪个像素更接近

36、于直线而选择沿扫描线的下一个像素。类似于Bresenham算法,可以建立决策参数p,其符号可以表明下面的两个候选像素中哪一个更接近于直线。通过对p形式的略微修改,就可以得到被对象覆盖的当前像素区域的百分比。102反走样区域边界w首先考虑斜率在0到1之间的画线算法。在图4.46中,线路径显示在像素网格之上。假设已经绘制了(xk,yk)上的像素,那么最接近x=xk+1上直线的下一个像素可能是yk上的像素或是yk+1上的像素。我们使用下列计算来确定哪一个更接近直线:y-ymid=m(xk+1)+b-(yk+0.5)(4-7)103反走样区域边界w上述计算给出了以直线上的实际y坐标到位置yk和yk+1

37、间的中点间的垂直距离。n假如差为负,那么yk上的像素更接近直线。n假如差为正,则yk+1上的像素更接近。w我们可以通过加上1-m来调整这个计算,从而使它产生一个0到1之间的正数:p=m(xk+1)+b-(yk+0.5)+(1-m)(4-8)n假如p1-m,则yk+1上的像素更接近。104反走样区域边界w参数p也能计算区域覆盖当前像素的实际量。对于图4.47中(xk,yk)处的像素,像素的内部有一个区域可计算为:area=mxk+b-yk+0.5(4-9)w这个对(xk,yk)上的覆盖区域表达式,与等式(4.8)中对于决策参数p的表达式是相同的。因此,通过计算p值来确定沿多边形边界的下一个位置,也可以确定对当前像素覆盖区域的百分比。105反走样区域边界w在多边形顶点处和对于很小的多边形(如图4.48所示),有多于一条边通过像素区域。对于这些情况,我们需要处理所有通过像素的边并确定正确的内部区域来修改Pitteway-Watkinson算法。106反走样区域边界w对于直线的反走样所讨论的过滤技术,也能应用于区域边。同样,各种反走样方法可用于多边形区域或具有曲线边界的区域。n边界方程被用来估计像素区域与将要显示的区域的区域覆盖量。n而连贯性技术则用于沿扫描线之间以简化计算。107谢谢观赏!谢谢观赏!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号