您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 西安交通大学计算机图形学课件 (6)
ComputerGraphics1第4章输出图元的属性杨新宇ComputerGraphics21.线属性2.曲线属性3.颜色和亮度等级4.区域填充属性5.字符属性6.束属性7.查询函数8.反走样主要内容ComputerGraphics34-1线属性线段的基本属性有线型、线宽和线色。在一些软件包中,可以使用选择的画笔和笔刷来显示直线。ComputerGraphics4线型线型属性包括实线、虚线和点线等。通过设置沿线路径显示的实线段的长度和间距来修改画线算法,以生成各种类型的线。虚线:可以通过在实线段之间插入与实线段等长的空白段来显示。划线的长度和空白段长度经常作为用户的选项而进行指定。点线:可以通过生成很短的划线和等于或大于划线大小的空白段而进行显示。ComputerGraphics5线型为了在PHIGS应用程序中设置线段属性,用户需要调用函数:setLinetype(lt)lt为1、2、3、4分别生成实线、虚线、点线、点划线。ComputerGraphics6线型光栅线算法通过绘制像素段来显示线型属性。对于各种划线、点线和点划线样式,画线程序沿直线路径输出一些连续像素段,在每两个实心段之间有一个给定长度的空白中间段。段长度和中间空白段的像素数目可以用像素掩模指定,像素掩模是包含数字0和1的字符串,用来指出沿线路径需要绘制哪些位置。在二值系统上,掩模给出沿线路径应该装入帧缓冲器的位置,从而显示选定的线型。ComputerGraphics7线型使用固定数目的像素来绘制划线会产生如图4-2所示的、在不同的直线方向生成不等长划线的现象。如果要进行精确的绘制,那么对任何直线方向的划线长度应保持近似的相等。因此,可按照直线的斜率来调整实心段和中间空白段的像素数目。ComputerGraphics8线宽线宽选择的实现取决于输出设备的能力。在视频监视器上的粗线可以用相邻的平行线进行显示;而在笔式绘图仪上则可能需要更换画笔。类似PHIGS中的其他属性,使用线宽命令来设置属性表中的线宽值。使用下面命令对线宽属性进行设置:setLinewidthScaleFactor(lw)ComputerGraphics9线宽在光栅实现中(如Bresenham算法),通过在每个采样位置处使用一个像素来生成标准线宽。其他线宽则是作为标准线宽的正整数倍,通过沿相邻平行线路径绘制额外的像素而显示的。ComputerGraphics10线宽对于斜率绝对值小于1的直线,可修改画线程序,通过在沿线的每个x位置绘制像素的垂直段来显示粗线。每段的像素数目等于参数lw的整数值。ComputerGraphics11线宽对于斜率绝对值大于1的直线,可以在水平段交替地拾取线段路径左边和右边的像素而形成粗线。这个方法示例于图4-4中,其线宽为4,使用水平像素段进行绘制。ComputerGraphics12线宽使用水平或垂直像素段实现线宽选择的另一个问题是:无论斜率大小,所生成直线的端点都是水平的或垂直的。这对于较粗的直线的影响则更为突出。我们可以通过添加线帽(linecap)来调整线端的形状,从而给出更好的外观。ComputerGraphics13线宽线帽的一种形式是方帽(buttcap),这种形式通过调整所构成的平行线的端点位置,使粗线的显示具有垂直于线路径的正方形端点。假如指定直线的斜率为m,那么粗线的方端的斜率为-1/m。另一种线帽是圆帽(roundcap),这种形式通过对每个方帽添加一个填充的半圆而得到。圆弧的圆心在线段的端点,其直径与直线宽度相等。第三种线帽是突方帽(projectroundcap),简单地将线段向两头延伸一个线宽并添加方帽。ComputerGraphics14线宽生成粗折线需要一些额外的考虑。通常,显示单根线段所用的方法不能生成平滑连接的一系列线段。例如,使用水平或垂直像素段显示粗线,会在不同斜率的线段的连接处,其水平段变成垂直段时留下间隙。ComputerGraphics15线宽可以通过在线段端点进行额外处理来生成平滑连接的粗折线。图4-6示意了两线段平滑连接的三种可能方法。斜角连接(miterjoin):通过延伸两条线的外边界直到它们相交而形成。圆连接(roundjoin):通过使用直径等于线宽的圆弧边界将两线段连接而形成。斜切连接(beveljoin):通过使用方帽并在两线段相交处的三角形间隙中进行填充而形成。ComputerGraphics16画笔或笔刷的选择有些图形软件包中,可以选择画笔和笔刷的方式来显示直线。这种类型的选项包括形状、尺寸和样式。图4-7中给出了一些可能的笔和刷的形状。ComputerGraphics17画笔或画刷的选择这些形状可以按像素位置的数值形式存储在一个像素模板中,然后再设置到线路径上。ComputerGraphics18画笔或画刷的选择通过改变模板的尺寸,使用笔(刷)形状生成的直线可以有多种宽度。通过将样式值加到画笔和画刷的标记上,可以按选定的样式显示线段。ComputerGraphics19画笔或画刷的选择在绘画软件包中,可以额外提供模拟绘画技巧的显示。图4-11示例了通过不同类型的毛笔笔画建模而显示的一些图案。ComputerGraphics20线颜色当系统提供颜色(或亮度)选择时,给出的当前颜色索引的参数则包含在系统属性值表中。折线程序以当前颜色显示折线,通过使用setPixel程序,将这种颜色设置在帧缓冲器中沿线路径的像素位置上而实现折线显示。颜色选择的数目取决于帧缓冲器中每个像素的有效值数目。在PHIGS中,使用下列函数设置线的颜色值:setPolylineColourIndex(lc)ComputerGraphics214-2曲线属性曲线属性的参数与线段相同。我们可以使用各种颜色、宽度、点划线模式和有效的画笔和画刷选择来显示曲线。采用画曲线算法来实现属性选择,这一点类似于画直线。ComputerGraphics224-2曲线属性在实现线型选择中讨论的像素模板(掩模),也可用于在光栅曲线算法中生成划线和点线模式。例如,掩模11100生成入图4-12所示的虚线圆弧。ComputerGraphics234-2曲线属性可以利用圆的对称性在各个八分象限内生成虚线圆。但是,从一个八分象限到另一个八分象限时,必须交换像素位置以保持划线和间隙的正确顺序。类似于画线算法,像素掩模显示的划线和中间间隙,也是按照曲线的斜率而变化。例如,要显示等长划线,就必须在沿圆周移动时调整绘制每根划线的像素数目。我们使用沿等角弧绘制像素的方法,代替使用等长段的像素掩模来生成等长划线。ComputerGraphics244-2曲线属性各种宽度的光栅曲线可用水平或垂直像素段进行显示。曲线斜率的绝对值小于1时,使用垂直段;斜率绝对值大于1时,绘制水平段。图4-13示例了使用这种方法显示在第一象限中宽度为4的圆弧。ComputerGraphics254-2曲线属性另一种显示粗曲线的方法是:填充两条距离等于预定宽度的平行曲线路径间的区域。我们可以用指定的曲线路径作为第一条边界,并在其内侧或外侧建立第二条边界。这种方法使得原始曲线路径按所选的第二条边界向内或向外偏移。可以通过在指定的曲线路径两侧以宽度的一半为距离,设置两条边界曲线来保持原曲线的位置。ComputerGraphics264-2曲线属性曲线的画笔(或笔刷)显示,可以使用在线段中讨论的相同技术来生成。在图4-15中,我们沿线路径重复画笔的形状,从而生成第一象限内的圆弧。这里,矩形画笔的中心移向后继曲线位置,从而产生向下的曲线形状。ComputerGraphics274-3颜色和亮度等级按照特定系统的能力和设计目标,可以为用户提供各种颜色和亮度等级的选择。通用光栅扫描系统通常提供较多的颜色,而随机扫描监视器最多只能提供几种颜色以供选择。颜色选项使用0到某一正整数之间的整数值进行编码。对于CRT监视器,颜色码被转换成电子束的强度等级。对于彩色绘图仪,编码控制喷墨范围或画笔选择。ComputerGraphics284-3颜色和亮度等级在彩色光栅系统中,可选颜色的数量取决于帧缓冲器中为每个像素提供的存储器数量。颜色信息可以通过两种方法存储在帧缓冲器中:可以将颜色码直接存储在帧缓冲器中;把颜色码放在一个独立的表中,并使用像素值作为这个表的索引。ComputerGraphics294-3颜色和亮度等级利用直接存储策略,一旦在应用程序中指定了某种颜色码,那么就在帧缓冲器中为以这种颜色显示的输出图元的每个组成像素设置对应的二进制值。ComputerGraphics304-3颜色和亮度等级颜色表灰度等级ComputerGraphics31颜色表图4.16示例了在颜色查找表(colorlookuptable或视频查找表videolookuptable)中存储彩色值的一种方案。在该表中,帧缓冲器值作为颜色表的索引。ComputerGraphics32颜色表在PHIGS应用程序中,用户可以使用下列函数设置颜色表表项:setColourRepresentation(ws,ci,colorptr)ComputerGraphics33颜色表在查找表中存储颜色码的优点:使用颜色表可以提供合理的能够同时显示的颜色数量,而无需大容量的帧缓冲器。对于大多数应用,256或512种不同颜色足以表示单个图像。表项还可以随时改变,从而使用户能容易地测试在设计、场景或图形中使用的不同的颜色组合,而无需改变对图形数据结构的属性设置。可视化应用在帧缓冲器中存储类似能量这样的物理量,并使用查找表测试各种颜色编码而不改变像素值。而且,在可视化和图像处理应用中,颜色表是设置颜色阈值的简便工具,可以使指定阈值上下的所有像素设置为同样的颜色。因此,有些系统为颜色码存储提供两种功能,从而使用户能选择在帧缓冲器中使用颜色表或直接存储颜色码。ComputerGraphics34灰度等级对于不能显示彩色的监视器,颜色功能在应用程序中可以用于设置显示的元素的灰度效果,即灰度等级(Grayscale)。使用0到1范围内的数值来指定灰度级别,然后将其转换成适当的二进制码存储在光栅中。这样可以使所设置的亮度容易移植到具有不同灰度等级的系统中。ComputerGraphics35灰度等级表4.2列出了四级灰度等级系统中亮度码的详细说明。另一种存储亮度信息的方案是,将每个亮度码直接转换成电压值,该电压值在所使用的输出设备上产生这些灰度等级。ComputerGraphics36灰度等级如果在一个配置中同时可以使用多个输出设备,那么所有的监视器可能使用相同的颜色表接口。在这种情况下,可以使用图4-17中所示的RGB值范围来建立单色显示器的颜色表。对于给定的颜色索引ci,其亮度显示可计算为:亮度=0.5[min(r,g,b)+max(r,g,b)]ComputerGraphics374-4区域填充属性对于填充一个定义的区域的选择内容,包括选择实心区域颜色(纯色)或图案填充方式,以及选择某种颜色和图案。取决于可用软件包的处理能力,这些填充选择可以应用于多边形区域,或是用于曲线边界定义的区域。此外,区域也可以使用多种画笔样式、颜色和透明度参数进行绘制。ComputerGraphics384-4区域填充属性填充模式图案填充软填充ComputerGraphics39填充模式区域显示有三种基本填充模式:具有颜色边界的空心区域使用纯色填充的实心区域使用指定图案或设计填充的区域ComputerGraphics40填充模式在PHIGS程序中,使用下列函数来选择基本填充模式:setInteriorstyle(fs)填充模式参数fs的值包括空心、实心和图案(图4.18)。ComputerGraphics41填充模式填充模式的另一个值是影线(hatch),该值使用选定的影线图案—平行线或交叉线对区域进行
本文标题:西安交通大学计算机图形学课件 (6)
链接地址:https://www.777doc.com/doc-6983051 .html