chapter2_456_2004

上传人:xx****x 文档编号:242867901 上传时间:2024-09-10 格式:PPT 页数:61 大小:365KB
返回 下载 相关 举报
chapter2_456_2004_第1页
第1页 / 共61页
chapter2_456_2004_第2页
第2页 / 共61页
chapter2_456_2004_第3页
第3页 / 共61页
点击查看更多>>
资源描述
单击此处插入标题,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机图形学,第二章 光栅图形学,2.1直线段的扫描转换算法,2.2圆弧的扫描转换算法,2.3多边形的扫描转换与区域填充,2.4字符,2.5裁剪,2.6反走样,2.7消隐,计算机图形学,2.4 字符,字符指数字、字母、汉字等符号。,计算机中字符由一个数字编码唯一标识。,国际上最流行的字符集:,“美国信息交换用标准代码集”,简称ASCII码。它是用7位二进制数进行编码表示128个字符;,包括字母、标点、运算符以及一些特殊符号。,计算机图形学,汉字编码的国家标准字符集:,GB231280。该字符集分为94个区,94个位,每个符号由一个区码和一个位码共同标识。区码和位码各用一个字节表示。,为了能够区分ASCII码与汉字编码,采用字节的最高位来标识:最高位为0表示ASCII码;最高位为1表示表示汉字编码。,计算机图形学,字库:为了在显示器等输出设备上输出字符,系统中必须装备有相应的字库。字库中存储了每个字符的形状信息,字库分为矢量型和点阵型两种。,计算机图形学,点阵字符:,每个字符由一个位图表示,,该位为1表示字符的笔画经过此位,对应于此位的象素应置为字符颜色。该位为0表示字符的笔画不经过此位,对应于此位的象素应置为背景颜色。,计算机图形学,点阵字符 点阵字库中的位图表示,计算机图形学,在实际应用中,有多种字体(如宋体、楷体等),每种字体又有多种大小型号,因此字库的存储空间是很庞大的。解决这个问题一般采用压缩技术。,点阵字符的显示分为两步。首先从字库中将它的位图检索出来。然后将检索到的位图写到帧缓冲器中。,计算机图形学,矢量字符:,记录字符的笔画信息,,而不是整个位图,具有存储空间小,美观、变换方便等优点。对于字符的旋转、缩放等变换,,点阵字符的变换需要对表示字符位图中的每一象素进行;,矢量字符的变换只要对其笔画端点进行变换就可以了。矢量字符的显示也分为两步。,计算机图形学,显示:首先从字库中将它的字符信息。然后取出端点坐标,对其进行适当的几何变换,再根据各端点的标志显示出字符。,点阵字符 点阵字库中的位图表示 矢量轮廓字符,计算机图形学,特点:,点阵字符:存储量大,易于显示,矢量字符:存储量小,美观,变换方便; 但需要光栅化后才能显示。,计算机图形学,字符属性,字体 宋体,仿宋体,楷体,黑体,隶书,字高,宋体,宋体,宋体,宋体,字宽,字倾斜角倾斜,倾斜,对齐 (左对齐、中心对齐、右对齐),字色,红色,、,绿色,、,蓝色,计算机图形学,字符也是图形,方正的启发:符合国情才有生命力。,对软件的启发:ISO、CMM?中国特色?,思考:CAD软件,计算机图形学,2.5 裁剪,裁剪:,确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。这个选择过程称为,裁剪,。,在使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的只是图的一部分。,计算机图形学,问:为什么要裁减,直接处理呢?即:在绘制(写帧缓存时)再处理?,计算机图形学,最简单的裁剪方法是把各种图形扫描转换为点之后,再判断各点是否在窗内。但那样太费时,一般不可取。这是因为有些图形组成部分全部在窗口外,可以完全排除,不必进行扫描转换。所以一般采用先裁剪再扫描转换的方法。,计算机图形学,2.5.1直线段裁剪,直线段裁剪算法是复杂图元裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为直线段的裁剪问题。,2.5.1.1Cohen-Sutherland,2.5.1.2中点分割算法,2.5.1.3梁友栋barskey算法。,计算机图形学,2.5.1.1 Cohen-Sutherland裁剪,基本思想:对于每条线段P,1,P,2,分为三种情况处理分为三种情况处理:,(1)若P,1,P,2,完全在窗口内,则显示该线段P,1,P,2,简称“取”之。,(2)若P,1,P,2,明显在窗口外,则丢弃该线段,简称“弃”之。,(3)若线段不满足“取”或 “弃”的条件,则在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。,计算机图形学,为快速判断,采用如下编码方法:,每个区域赋予4位编码,计算机图形学,编码 线段裁剪,计算机图形学,若P,1,P,2,完全在窗口内code1=0,且code2=0,则“取”,若P,1,P,2,明显在窗口外code1&code20,则“弃”,在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。,计算机图形学,计算线段P1(x1,y1)P2(x2,y2)与窗口边界的交点,if(LEFT&code !=0),x=XL;y=y1+(y2-y1)*(XL-x1)/(x2-x1);,else if(RIGHT&code !=0),x=XR;y=y1+(y2-y1)*(XR-x1)/(x2-x1);,else if(BOTTOM&code !=0),y=YB;x=x1+(x2-x1)*(YB-y1)/(y2-y1);,else if(TOP & code !=0),y=YT;x=x1+(x2-x1)*(YT-y1)/(y2-y1);,计算机图形学,示例,计算机图形学,编码的思想在图形学中非常重要。,Sutherland:Coons, 图灵, IEEE 计算机先驱奖。,计算机图形学,2.5.1.2 中点分割裁剪算法,基本思想:,与前一种Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段与窗口的关系分为三种情况:,全在、完全不在和线段和窗口有交。对前两种情况,进行一样的处理。,对于第三种情况,用中点分割的方法求出线段与窗口的交点。,计算机图形学,求线段与窗口的交点,A、B分别为距,P,0,、P,1,最近的可见点,,P,m,为P,0,P,1,中点,计算机图形学,问:算法为什么可行?会不会无限循环、不断二分?,计算机图形学,从 出发找最近可见点的方法,先求出 的中点,若 不是显然不可见的,并且 在窗口中有可见部分,则距 最近的可见点一定落在 上,所以用 代替 ;,计算机图形学,否则取 代替,再对新的 求中点 。重复上述过程,直到 长度小于给定的控制常数为止,此时 收敛于交点。,从 出发找最近可见点采用上面类似方法。,计算机图形学,2.5.1.3梁友栋Barsky算法,梁-Barsky算法的几何含义:入边、出边与端点,计算机图形学,* 写入图形学教科书的唯一中国人的算 法,* Communication of ACM,的论文,梁有栋教授的二三事,Liang-Barsky算法,几何连续理论,从几何学与纤维缠绕理论到基因工程,计算机图形学,参数化形式写出裁剪条件:,可以统一表示为形式:,入边 出边,计算机图形学,=0且 0,则线段完全在边界外, 0,则该线段平行于裁剪边界并且在窗口内。,计算机图形学,当 0,,当 0,线段从裁剪边界延长线的内部延伸到外部。,计算机图形学,对于每条直线,可以计算出参数u1和u2,它们定义了在裁剪矩形内的线段部分,u1的值由线段从外到内遇到的矩形边界所决定(p0)。对这些边界计算r,k,=q,k,/p,k,。u2取1和各个r,k,值之中的最小值,。,计算机图形学,如果u1u2,则线段完全落在裁剪窗口之外,被舍弃。,否则裁剪线段由参数u的两个值u1,u2计算出来。,计算机图形学,void LB_LineClip(x1,y1,x2,y2,XL,XR,YB,YT),float x1,y1,x2,y2,XL,XR,YB,YT;,float dx,dy,u1,u2;,tl=0;tu=1;dx =x2-x1;dy =y2-y1;,if(ClipT(-dx,x1-Xl,&u1,&u2),if(ClipT(dx,XR-x1, &u1,&u2),if(ClipT(-dy,y1-YB, &u1,&u2),if(ClipT(dy,YT-y1, &u1,&u2),displayline(x1+u1*dx,y1+u1*dy, x1+u2*dx,y1+u2*dy),return;,计算机图形学,bool ClipT(p,q,u1,u2),float p,q,*u1,*u2;, float r;,if(p*u2) return FALSE;,else if(r*u1), *u1=r;return TRUE;,。/下页,计算机图形学,else if(p0),r=p/q;,if(r*u1)return FALSE;,else if(r*u2),*u2=r;return TRUE;,else if(q0) return FALSE;,return TRUE;,计算机图形学,裁减的插曲:,汪嘉业的快速算法,80年代的裁减热:,应道宁(工程图学研究所)、,汪国昭(图形图像研究所),对三种算法比较:,Cohen-Sutherland与中点法在区域码测试阶段能以位运算方式高效率地进行,因而当大多数线段能够简单的取舍时,效率较好。,梁友栋Barskey算法只能应用于矩形窗口的情形,但其效率比前两者要高,这是因为运算只涉及到参数,仅到必要时才进行坐标计算。,计算机图形学,start,计算机图形学,2.5.2 多边形裁剪,基本思想是一次用窗口的一条边裁剪多边形。,考虑窗口的一条边以及延长线构成的裁剪线,该线把平面分成两个部分:可见一侧;不可见一侧,计算机图形学,多边形的各条边的两端点S、P。它们与裁剪线的位置关系只有四种,计算机图形学,对于,情况(1)仅输出顶点P;,情况(2)输出0个顶点;,情况(3)输出线段SP与裁剪线的交点I;,情况(4)输出线段SP与裁剪线的交点I和终点P,计算机图形学,上述算法仅用一条裁剪边对多边形进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入。,对于每一条裁剪边,只是判断点在窗口哪一侧以及求线段SP与裁剪边的交点算法应随之改变。,计算机图形学,示意图(5之1),计算机图形学,示意图(5之2),计算机图形学,示意图(5之3),计算机图形学,示意图(5之4),计算机图形学,示意图(5之5),计算机图形学,其他窗口,的裁剪,圆域窗口裁剪:潜望镜、.,任意(凸)多边形裁剪:个性化电脑显示器定制,,计算机图形学,2.5.3 字符裁剪,串精度:,将包围字串的外接矩形对窗口作裁剪,字符精度:,将包围字的外接矩形对窗口作裁剪,以及笔画象素精度:,将笔划分解成直线段对窗口作裁剪,待裁剪字符串 串精度裁剪 字符精度裁剪 象素精度裁剪,计算机图形学,用离散量表示连续量引起的失真现象,称之为,走样,(aliasing),用于减少或消除这种效果的技术称为,反走样,(antialiasing),2.6.1提高分辨率,2.6.2 区域采样,2.6.3 加权区域取样,2.6 反走样,计算机图形学,2.6.1提高分辨率,把显示器分辨率提高一倍,,直线经过两倍的象素,锯齿也增加一倍,,但同时每个阶梯的宽度也减小了一倍,,所以显示出的直线段看起来就平直光滑了一些。,增加分辨率虽然简单,但是不经济的方法,有物理上的困难,而且它也只能减轻而不能消除锯齿问题,计算机图形学,2.6.2 区域采样,基本思想:,每个象素是一个具有一定面积的小区域,将直线段看作具有一定宽度的狭长矩形。当直线段与象素有交时,求出两者相交区域的面积,然后根据相交区域面积的大小确定该象素的亮度值。,示意图,计算机图形学,有宽度的线条轮廓 象素相交的五种情况及用于计算面积的量,计算机图形学,面积计算,情况(5)阴影面积为:D,2,/2m;,情况(4)阴影面积为:D - m/2;,情况阴影面积为:1 - D,2,/m,计算机图形学,为了简化计算可以采用离散的方法,n=9,k=3近似面积为1/3,首先将屏幕象素均分成n个子象素,,然后计算中心点落在直线段内的子象素的个数k。,将屏幕该象素的亮度置为相交区域面积的近似值可k/n。,计算机图形学,非加权区域采样方法有两个缺点:,象素的亮度与相交区域的面积成正比,而与相交区域落在象素内的位置无关,这仍然会导致锯齿效应。,直线条上沿理想直线方向的相邻两个象素有时会有较大的灰度差。,计算机图形学,2.6.3 加权区域取样,基本思想:,使相交区域对象素亮度的贡献依赖于该区域与象素中心的距离,当直线经过该象素时,该象素的亮度F是在两者相交区域A上对滤波器(函数w)进行积分的积分值。,计算机图形学,可采用离散计算方法,如:我们将屏幕划分为n=33个子象素,加权表可以取作:,权函数w(x,y)为微面元dA与象素中心距离d的函数,计算机图形学,然后求出所有中心落于直线段内的子象素。,最后计算所有这些子象素对原象素亮度贡献之和,乘以象素的最大灰度值作为该象素的显示灰度值。,计算机图形学,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!