《工学计算机图形学课件.pptx》由会员分享,可在线阅读,更多相关《工学计算机图形学课件.pptx(93页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1概述图形显示前需要:图形显示前需要:图形生成图形生成+裁剪裁剪第1页/共93页2概述 坐标系直线、圆、椭圆的扫描变换多边形的生成图形剪裁走样与反走样第2页/共93页33.1 计算机图形学坐标系用户坐标系(实数域)设备坐标系(整数域)规范化设备坐标系(01实数域)第3页/共93页43.2直线、圆、椭圆的扫描变换直线直线DDADDA第4页/共93页53.2直线、圆、椭圆的扫描变换直线直线DDADDA增量算法增量算法第5页/共93页63.2直线、圆、椭圆的扫描变换直线直线DDADDA第6页/共93页73.2直线、圆、椭圆的扫描变换中点画线中点画线关键:如何判定关键:如何判定M M和和Q Q的关系的
2、关系第7页/共93页83.2直线、圆、椭圆的扫描变换中点画线中点画线第8页/共93页93.2直线、圆、椭圆的扫描变换中点画线中点画线第9页/共93页103.2直线、圆、椭圆的扫描变换P=(Xp,Yp)P1P2Q中点画线中点画线第10页/共93页113.2直线、圆、椭圆的扫描变换中点画线中点画线第11页/共93页123.2直线、圆、椭圆的扫描变换BresenhamBresenham画线画线第12页/共93页133.2直线、圆、椭圆的扫描变换=BresenhamBresenham画线画线由于由于可令可令第13页/共93页143.2直线、圆、椭圆的扫描变换v处理对象处理对象:圆心在原点的圆弧:圆心在
3、原点的圆弧v圆的八对称性圆的八对称性圆的生成圆的生成第14页/共93页153.2直线、圆、椭圆的扫描变换中点画圆中点画圆第15页/共93页163.2直线、圆、椭圆的扫描变换中点画圆中点画圆第16页/共93页173.2直线、圆、椭圆的扫描变换P=(Xp,Yp)P1P2M中点画圆中点画圆第17页/共93页183.2直线、圆、椭圆的扫描变换中点画圆中点画圆第18页/共93页193.2直线、圆、椭圆的扫描变换v椭圆方程椭圆方程:F(x,y)=b2x2+a2y2-a2b2=0v椭圆的对称性椭圆的对称性v椭圆上点椭圆上点(x,y)处的法向:处的法向:N(x,y)=(F)x i +(F)y j =2b2 x
4、 i +2a2 y j椭圆的生成椭圆的生成第19页/共93页203.2直线、圆、椭圆的扫描变换在上半部分,法向量的y分量大在下半部分,法向量的x分量大上半部分下半部分M1M2 在当前中点处,法向量(2b2(Xp+1),2a2(Yp-0.5)的y分量比x分量大,即:b2(Xp+1)a2(Yp-0.5),而在下一中点,不等式改变方向,则说明椭圆弧从上部分转入下部分.椭圆的生成椭圆的生成第20页/共93页213.2直线、圆、椭圆的扫描变换1.直线段:Line2.射线:Ray3.构造线:XLineAUTOCAD画线画线第21页/共93页223.2直线、圆、椭圆的扫描变换AUTOCAD画圆画圆v1.圆圆
5、 v(1)执行方式执行方式v命令行:命令行:CIRCLEv菜单:绘图菜单:绘图圆圆v工具栏:绘图工具栏:绘图圆圆v(2)操作步骤操作步骤v命令命令:CIRCLE v指定圆的圆心或指定圆的圆心或 三点三点(3P)/两点两点(2P)/相切、相切、半径相切、相切、半径(T):(指定圆心指定圆心)v指定圆的半径或指定圆的半径或 直径直径(D):(直接输入半径数值或用鼠标指定半径长度直接输入半径数值或用鼠标指定半径长度)v指定圆的直径指定圆的直径:(输入直径数值或用鼠标指定直径长度输入直径数值或用鼠标指定直径长度)v(3)选项说明选项说明v三点三点(3P):用指定圆周上三点的方法画圆。用指定圆周上三点的
6、方法画圆。v两点两点(2P):指定直径的两端点画圆。指定直径的两端点画圆。v相切、相切、半径相切、相切、半径(T):按先指定两个相切对象,后给出半径的方法画圆。按先指定两个相切对象,后给出半径的方法画圆。v菜单还提供一种菜单还提供一种“相切、相切、相切相切、相切、相切”模式画圆模式画圆第22页/共93页233.2直线、圆、椭圆的扫描变换v2.圆弧圆弧 v(1)执行方式执行方式v命令行:命令行:ARC(缩写名:(缩写名:A)v菜单:绘图菜单:绘图弧弧v工具栏:绘图工具栏:绘图圆弧圆弧v(2)操作步骤操作步骤v命令命令:ARC v指定圆弧的起点或指定圆弧的起点或 圆心圆心(C):(指定起点)(指定
7、起点)v指定圆弧的第二点或指定圆弧的第二点或 圆心圆心(C)/端点端点(E):(指定第二点)(指定第二点)v指定圆弧的端点指定圆弧的端点:(指定端点)(指定端点)AUTOCAD画圆画圆第23页/共93页243.2直线、圆、椭圆的扫描变换v3.圆环圆环v(1)执行方式执行方式v命令行:命令行:DONUTv菜单:绘图菜单:绘图圆环圆环v(2)操作步骤操作步骤v命令命令:DONUT v指定圆环的内径指定圆环的内径 :(指定圆环内径指定圆环内径)v指定圆环的外径指定圆环的外径:(指定圆环外径指定圆环外径)v指定圆环的中心点或指定圆环的中心点或:(指定圆环的中心点)(指定圆环的中心点)v指定圆环的中心点
8、或指定圆环的中心点或:(继续指定圆环的中心点,则继续绘制相同内外径的圆环。(继续指定圆环的中心点,则继续绘制相同内外径的圆环。用回车、空格键或鼠标右键结束命令)。用回车、空格键或鼠标右键结束命令)。v(3)选项说明选项说明v若指定内径为零,则画出实心填充圆。若指定内径为零,则画出实心填充圆。v用命令用命令FILL可以控制圆环是否填充。可以控制圆环是否填充。v命令命令:FILL v输入模式输入模式 开开(ON)/关关(OFF):(选择(选择ON表示填充,选择表示填充,选择OFF表示不填充)表示不填充)AUTOCAD画圆画圆第24页/共93页253.3 多边形的生成第25页/共93页263.3 多
9、边形的生成第26页/共93页273.3 多边形的生成目标:利用相邻像素之间的连贯性,提高算法效率目标:利用相邻像素之间的连贯性,提高算法效率处理对象:非自交多边形处理对象:非自交多边形(边与边之间除了顶点外(边与边之间除了顶点外无其它交点)无其它交点)扫描线算法扫描线算法综合利用了区域的连贯性、扫描线的连贯性和综合利用了区域的连贯性、扫描线的连贯性和边的连贯性,避免对象素逐点运算。边的连贯性,避免对象素逐点运算。第27页/共93页283.3 多边形的生成区区区区间间间间连连连连贯贯贯贯性性性性第28页/共93页293.3 多边形的生成扫扫扫扫描描描描线线线线连连连连贯贯贯贯性性性性第29页/共
10、93页303.3 多边形的生成边边边边的的的的连连连连贯贯贯贯性性性性第30页/共93页313.3 多边形的生成基本原理基本原理一条扫描线与多边形的边有偶数个交点一条扫描线与多边形的边有偶数个交点步骤步骤(对于每一条扫描线对于每一条扫描线):(1)求交点求交点(2)交点排序交点排序(3)交点配对,填充区段交点配对,填充区段。扫描线算法扫描线算法第31页/共93页323.3 多边形的生成交点的取整规则交点的取整规则-要求:使生成的像素全部位于多边形之内要求:使生成的像素全部位于多边形之内用于线画图元扫描转换的四舍五入原则导致部分像素位于多用于线画图元扫描转换的四舍五入原则导致部分像素位于多边形之
11、外,从而不可用边形之外,从而不可用-假定非水平变与扫描线假定非水平变与扫描线y=e相交,交点的横坐标为相交,交点的横坐标为x,规则如下规则如下扫描线算法扫描线算法第32页/共93页333.3 多边形的生成规则规则1:X为小数,即交点落于扫描线上两个相邻像素之间为小数,即交点落于扫描线上两个相邻像素之间(a)交点位于左边之上,向右取整交点位于左边之上,向右取整(b)交点位于右边之上,向左取整交点位于右边之上,向左取整第33页/共93页343.3 多边形的生成规则规则2:边界上象素的取舍问题,避免填充扩大化。边界上象素的取舍问题,避免填充扩大化。解决方法:解决方法:边界象素:规定落在右上边界的象素
12、不予填充。边界象素:规定落在右上边界的象素不予填充。具体实现时,只要对扫描线与多边形的相交区间左闭右开具体实现时,只要对扫描线与多边形的相交区间左闭右开第34页/共93页353.3 多边形的生成规则规则3:扫描线与多边形的顶点相交时,交点的取舍,保证交点正扫描线与多边形的顶点相交时,交点的取舍,保证交点正确配对。确配对。解决方法:解决方法:检查两相邻边在扫描线的哪一侧。检查两相邻边在扫描线的哪一侧。只要检查顶点的两条边的另外两个端点的只要检查顶点的两条边的另外两个端点的Y值,两个值,两个Y值中大于交值中大于交点点Y值的个数是值的个数是0,1,2,来决定取,来决定取0,1,2个交点。个交点。第3
13、5页/共93页363.3 多边形的生成1)活性边活性边:与当前扫描线相交的边。按交点:与当前扫描线相交的边。按交点x的增量顺序的增量顺序存放在一个链表中;该链表称作存放在一个链表中;该链表称作活性边表(活性边表(AEL)。AEL 与ET的结点信息:lYmax:所交边的最高扫描线号lX:当前扫描线与边的交点的x坐标lX:边的斜率的倒数lNextage:下一条边的指针typedef struct int ymax;float x,deltax;Edge*nextEdge;Edge;第36页/共93页373.3 多边形的生成2)边的分类表)边的分类表(ET)按照边的下端点按照边的下端点y坐标对非水平
14、边进行分类的指针数组坐标对非水平边进行分类的指针数组,下端点下端点y坐标值等于坐标值等于i的边属于第的边属于第i类类typedef struct int ymax;float x,deltax;Edge*nextEdge;Edge;边的分类表的作用是避免盲目求交。当处理一条扫描线时,为了求出它与多边形边的所有交点,必须将它与所有的边进行求交测试。而实际上只有某几条边与该扫描线有交点。边的分类表正是用来排除不必要的求求交测试的。第37页/共93页383.3 多边形的生成第38页/共93页393.3 多边形的生成求补运算求补运算:假定:假定A为一个正整数,则为一个正整数,则M的补定义为的补定义为
15、A M,记为记为 。计算机中取。计算机中取A为为n位能表示的最大整位能表示的最大整数。即,数。即,A=0 xFFFFFFFF由来:由来:光栅图形中,如果某区域已着上值为光栅图形中,如果某区域已着上值为M的颜的颜色值做偶数次求补运算,该区域颜色不变;而做奇色值做偶数次求补运算,该区域颜色不变;而做奇数次求补运算,则该区域颜色变为值为的颜色。这数次求补运算,则该区域颜色变为值为的颜色。这一规律应用于多边形扫描转换,就为边缘填充算法一规律应用于多边形扫描转换,就为边缘填充算法。求补运算可用异或显示模式实现。求补运算可用异或显示模式实现。算法基本思想:算法基本思想:对于每条扫描线和每条多边形边的对于每
16、条扫描线和每条多边形边的交点,将该扫描线上交点右方的所有象素取补。交点,将该扫描线上交点右方的所有象素取补。边填充算法边填充算法第39页/共93页403.3 多边形的生成第40页/共93页413.3 多边形的生成 步步骤骤1 1 1 1:对多边形的所有边(水平边除外)用特殊颜色打标志,计算扫描线与边的交点,将交点置成特殊颜色。步步骤骤2 2 2 2:对于每条与多边形相交的扫描线,从左向右依次访问该扫描线上的每个像素,用一个布尔变量insideinside来表示当前像素是在多边形外部,还是在多边形内部。insideinside的初始值为falsefalse,在从左向右的访问过程中,每当遇到一个被
17、置成特殊颜色的像素,就将insideinside取反,如果访问的像素没有被置成特殊颜色,就保持insideinside不变。经过如上处理后,若insideinside为falsefalse,则当前像素置成背景色或保持原来颜色;若insideinside为truetrue,则当前像素置成指定的多边形颜色。边标志算法边标志算法第41页/共93页423.3 多边形的生成1.1.种子点(种子点(x,yx,y)入栈。)入栈。2.2.栈顶元素(栈顶元素(x,yx,y)出栈作为种子点。)出栈作为种子点。3.3.从从种种子子点点(x,yx,y)开开始始沿沿着着扫扫描描线线向向左左右右两两个个方方向向逐逐个个像
18、素进行填充,直到到达边界像素为止。像素进行填充,直到到达边界像素为止。4.4.将将上上述述填填充充区区段段的的左左右右端端点点的的横横坐坐标标分分别别记记为为x xleftleft和和x xrightright。5.5.在在与与当当前前扫扫描描线线相相邻邻的的上上下下两两条条扫扫描描线线的的xxleftleft,x xrightright 范范围围内内进进行行检检查查,看看看看是是否否全全部部为为边边界界像像素素或或已已填填充充像像素素,若若存存在在着着非非边边界界且且未未填填充充的的像像素素,那那么么将将该该区区段段的最右端像素作为种子点入栈。的最右端像素作为种子点入栈。种子填充算法种子填充
19、算法第42页/共93页433.3 多边形的生成v1.创建面域创建面域 v(1)执行方式执行方式v命令行:命令行:REGIONv菜单:绘图菜单:绘图面域面域v工具栏:绘图工具栏:绘图面域面域v(2)操作步骤操作步骤v命令:命令:REGION v选择对象:选择对象:v选择对象后,系统自动将所选择的对象转换成面域。选择对象后,系统自动将所选择的对象转换成面域。v2.面域的布尔运算面域的布尔运算v(1)执行方式执行方式v命令行:命令行:UNION(并集)或(并集)或INTERSECT(交集)或(交集)或SUBTRACT(差(差集)集)v菜单:修改菜单:修改实体编辑实体编辑并集(交集并集(交集、差集)、
20、差集)v工具栏:实体编辑工具栏:实体编辑并集并集 (交集(交集 、差集、差集 )AUTOCAD第43页/共93页443.3 多边形的生成v(2)操作步骤操作步骤v命令:命令:UNION(INTERSECT)v选择对象:选择对象:v选择对象后,系统对所选择的面域做并集(交集)计算。选择对象后,系统对所选择的面域做并集(交集)计算。v命令:命令:SUBTRACT v选择对象:(选择差集运算的主体对象)选择对象:(选择差集运算的主体对象)v选择对象:(右键单击结束)选择对象:(右键单击结束)v选择对象:(选择差集运算的参照体对象)选择对象:(选择差集运算的参照体对象)v选择对象:(右键单击结束)选择
21、对象:(右键单击结束)v选择对象后,系统对所选择的面域做差集计算。运算逻辑是主体对象选择对象后,系统对所选择的面域做差集计算。运算逻辑是主体对象减去与参照体对象重叠的部分。减去与参照体对象重叠的部分。(a)面域原图 (b)并集(c)交集(d)差集 布尔运算的结果 第44页/共93页45线宽控制重复像素法优点:实现简单用重复像素法绘制线段 用重复像素法绘制圆弧 线宽第45页/共93页46线宽控制缺点:线段两端要么为水平的,要么是竖直的折线顶点处有缺口线宽第46页/共93页47图元的宽度不均匀产生宽度为偶数像素的图元效果不好(a)(a)水平线段 (b)45(b)45线段 线宽第47页/共93页48
22、移动画笔 常用画笔的形状 线宽第48页/共93页49移动画笔用移动画笔法绘制线段 线宽第49页/共93页50移动画笔用移动画笔法绘制圆弧 线宽第50页/共93页51移动画笔(a)(a)水平线段 (b)45(b)45线段 线宽第51页/共93页52区域填充法 优点:生成的图形质量高缺点计算量大有些图形的等距线难以获得 可以根据线条的宽度,计算出线条的外轮廓,再用区域填充的方法,产生具有一定线宽的线条。线宽第52页/共93页53区域填充法 为了改善线条端点处的形状,可以在线条端点处加上线帽(line capline cap)。右图为三种常用的线帽。三种常用的线帽 粗线段的连接处需要特别考虑 三种常
23、用的粗线段的连接方式 线宽第53页/共93页54区域填充法 对于封闭曲线来说,可以先生成两条距离为线宽的曲线,再填充两条曲线之间的区域。线宽第54页/共93页55线型控制 四种常用的线型 线型第55页/共93页56线型控制1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 线型可以用0 0、1 1序列来表示,存放在数组中。例如,我们可以用包含8 8个元素的整数数组来表示线型(1111111111111111表示实线,1111000011110000表示长划线,1100110011001100表示短划线),此时线型以8 8为周期重复。绘制 if(if(线型i%8)write_
24、pixel(x,y)i%8)write_pixel(x,y);线型第56页/共93页573.4 线框图形属性v线宽和线型线宽和线型vAutoCAD图层图层第57页/共93页58AutoCAD图层v1.利用对话框设置图层利用对话框设置图层v(1)执行方式执行方式v命令行:命令行:LAYERv菜单:格式菜单:格式图层图层v工具栏:图层工具栏:图层图层特性管理器图层特性管理器v(2)操作步骤操作步骤v命令:命令:LAYER v系统打开系统打开“图层特性管理器图层特性管理器”v对话框,如图所示。对话框,如图所示。v可以按照需要设置。可以按照需要设置。“图层特性管理器”对话框 第58页/共93页59Au
25、toCAD图层v.利用工具栏设置图层利用工具栏设置图层vAutoCAD提供了一个提供了一个“特性特性”工具栏,如图所示。用户能够控制和使工具栏,如图所示。用户能够控制和使用工具栏上的工具图标快速地察看和改变所选对象的图层、颜色、线用工具栏上的工具图标快速地察看和改变所选对象的图层、颜色、线型和线宽等特性。在绘图屏幕上选择任何对象都将在工具栏上自动显型和线宽等特性。在绘图屏幕上选择任何对象都将在工具栏上自动显示它所在图层、颜色、线型等属性。示它所在图层、颜色、线型等属性。v“颜色控制颜色控制”下拉列表框:单击右侧的向下箭头,弹出一下拉列表,下拉列表框:单击右侧的向下箭头,弹出一下拉列表,用户可从
26、中选择使之成为当前颜色,如果选择用户可从中选择使之成为当前颜色,如果选择“选择颜色选择颜色”选项,选项,AutoCAD打开打开“选择颜色选择颜色”对话框以选择其他颜色。对话框以选择其他颜色。“特性”工具栏 第59页/共93页60AutoCAD图层v“线型控制线型控制”下拉列表框:单击右侧的向下箭头,弹出一下拉列表,下拉列表框:单击右侧的向下箭头,弹出一下拉列表,用户可从中选择某一线型使之成为当前线型。用户可从中选择某一线型使之成为当前线型。v“线宽线宽”下拉列表框:单击右侧的向下箭头,弹出一下拉列表,下拉列表框:单击右侧的向下箭头,弹出一下拉列表,用户可从中选择一个线宽使之成为当前线宽。用户可
27、从中选择一个线宽使之成为当前线宽。v“打印类型控制打印类型控制”下拉列表框:单击右侧的向下箭头,弹出一下下拉列表框:单击右侧的向下箭头,弹出一下拉列表,用户可从中选择一种打印样式使之成为当前打印样式。拉列表,用户可从中选择一种打印样式使之成为当前打印样式。第60页/共93页61AutoCAD图层vAutoCAD允许用户为图层设置颜色,为新建的图形对象设置当前颜色,允许用户为图层设置颜色,为新建的图形对象设置当前颜色,还可以改变已有图形对象的颜色。还可以改变已有图形对象的颜色。v1.执行方式执行方式v命令行:命令行:COLORv菜单:格式菜单:格式颜色颜色v2.操作步骤操作步骤v命令:命令:CO
28、LOR v单击相应的菜单项或在命令行输入单击相应的菜单项或在命令行输入vCOLOR命令后回车,命令后回车,AutoCAD打开打开v“选择颜色选择颜色”对话框。对话框。v其中:其中:“选择颜色”对话框 颜色设置第61页/共93页62AutoCAD图层v“索引颜色索引颜色”标签:打开此标签,可以在系统所提供的标签:打开此标签,可以在系统所提供的255色索引表中色索引表中选择所需要的颜色,如选择所需要的颜色,如“选择颜色选择颜色”对话框所示。对话框所示。v“真彩色真彩色”标签:标签:打开此标签,可以选择需要的任意颜色,可以拖动打开此标签,可以选择需要的任意颜色,可以拖动调色板中的颜色指示光标和调色板
29、中的颜色指示光标和“亮度亮度”滑块选择颜色及其亮度。也可以滑块选择颜色及其亮度。也可以通过通过“色调色调”、“饱和度饱和度”和和“亮度亮度”调节钮来选择需要的颜色。所调节钮来选择需要的颜色。所选择的颜色的红、绿、蓝值显示在下面的选择的颜色的红、绿、蓝值显示在下面的“颜色颜色”文本框中,也可以文本框中,也可以直接在该文本框中输入自己设定的红、绿、蓝值来选择颜色。直接在该文本框中输入自己设定的红、绿、蓝值来选择颜色。“真彩色”标签 颜色设置第62页/共93页63AutoCAD图层v“配色系统配色系统”标签标签 v打开此标签,可以从标准配色系统中选择预定义的颜色,可以在打开此标签,可以从标准配色系统
30、中选择预定义的颜色,可以在“配配色系统色系统”下拉列表框中选择需要的系统,然后拖动右边的滑块来选择下拉列表框中选择需要的系统,然后拖动右边的滑块来选择具体的颜色,所选择的颜色编号显示在下面的具体的颜色,所选择的颜色编号显示在下面的“颜色颜色”文本框中,也文本框中,也可以直接在该文本框中输入编号值来选择颜色。可以直接在该文本框中输入编号值来选择颜色。“配色系统”标签 颜色设置第63页/共93页64AutoCAD图层v1.在在“图层特性管理器图层特性管理器”中设置线型中设置线型v按照上节讲述方法,打开按照上节讲述方法,打开“图层特性管理器图层特性管理器”对话框,在图层列表的对话框,在图层列表的线型
31、项下单击线型名,系统打开线型项下单击线型名,系统打开“选择线型选择线型”对话框,如下页图所示。对话框,如下页图所示。其中:其中:v“已加载的线型已加载的线型”列表框:显示在当前绘图中加载的线型,可供用户列表框:显示在当前绘图中加载的线型,可供用户选用,其右侧显示出线型的形式。选用,其右侧显示出线型的形式。v“加载加载”按钮:单击此按钮,打开按钮:单击此按钮,打开“加载或重载线型加载或重载线型”对话框,如下对话框,如下页图所示,用户可通过此对话框加载线型并把它添加到线型列表中。页图所示,用户可通过此对话框加载线型并把它添加到线型列表中。图层线型设置第64页/共93页65AutoCAD图层“选择线
32、型”对话框“加载或重载线型”对话框 图层线型设置第65页/共93页66AutoCAD图层v2.直接设置线型直接设置线型v执行方式执行方式v命令行:命令行:LINETYPEv在命令行输入上述命令后,系统在命令行输入上述命令后,系统v打开打开“线型管理器线型管理器”对话框,如图对话框,如图v所示。该对话框与前面讲述的所示。该对话框与前面讲述的v相关知识相同。相关知识相同。“线型管理器”对话框 图层线型设置第66页/共93页673.4 反走样走样走样:用离散量用离散量(像素像素)表示连续的量表示连续的量(图形图形)而引起而引起 的失真,叫混淆或叫的失真,叫混淆或叫走样走样(aliasing)。光栅图
33、形的走样现象光栅图形的走样现象:阶梯状边界;阶梯状边界;图形细节失真;图形细节失真;狭小图形遗失:动画序列中时隐时现,狭小图形遗失:动画序列中时隐时现,产生闪烁。产生闪烁。第67页/共93页683.4 反走样v不光滑不光滑(阶梯状)的图形边界阶梯状)的图形边界第68页/共93页693.4 反走样v图形细节失真图形细节失真第69页/共93页703.4 反走样v狭小图形的遗失与狭小图形的遗失与 动态图形的闪烁动态图形的闪烁第70页/共93页713.4 反走样v什么是反走样什么是反走样在图形显示过程中,用于减少或消除走样现象的方法在图形显示过程中,用于减少或消除走样现象的方法 1)提高分辨率方法)提
34、高分辨率方法 2)非加权区域采样)非加权区域采样 3)加权区域采样)加权区域采样第71页/共93页72反走样方法过采样v提高分辨率的反走样方法提高分辨率的反走样方法 过采样过采样方法简单,但代价非常大。显示器的水平、竖直分辩率各提高一倍,则显示器的点距减少一倍,帧缓存容量则增加到原来的4倍,而扫描转换同样大小的图元却要花4倍时间。第72页/共93页73v方法由来方法由来两点假设两点假设1、象象素素是是数数学学上上抽抽象象的的点点,它它的的面面积积为为0,它它的的亮亮度度由由覆盖该点的图形的亮度所决定;覆盖该点的图形的亮度所决定;2、直线段是数学上抽象直线段,它的宽度为、直线段是数学上抽象直线段
35、,它的宽度为0。现实现实-像素的面积不为像素的面积不为0;-直线段的宽度至少为直线段的宽度至少为1个像素;个像素;假设与现实的矛盾是导致走样出现的原因之一假设与现实的矛盾是导致走样出现的原因之一反走样方法区域采样第73页/共93页74反走样方法区域采样解决方法:改变直线段模型,由此产生算法解决方法:改变直线段模型,由此产生算法方法步骤方法步骤:1、将直线段看作具有一定宽度的狭长矩形;2、当直线段与某象素有交时,求出两者相交区域的面积;3、根据相交区域的面积,确定该象素的亮度值 第74页/共93页75反走样方法区域采样方法性质:1)直线段对一个像素亮度的贡献与两者相交区域的面积成正比,从而和像素
36、中心点距直线段的距离成反比(像素中心点距直线段距离越远,相交区域的面积越小);2)当直线段和某个像素不相交时,它对该像素的亮度无影响;3)相同面积的相交区域对像素的亮度贡献相同,而与这个相交区域落在像素内什麽位置无关。关键:如何计算这个面积?第75页/共93页76反走样方法区域采样-计算相交区域的面积计算相交区域的面积像素实际显示的灰度值=所得面积*该像素的最大灰度值第76页/共93页77反走样方法区域采样立方体滤波器立方体滤波器第77页/共93页78反走样方法区域采样求相交区域的近似面积的离散计算方法求相交区域的近似面积的离散计算方法 1、将屏幕象素分割成n个更小的子象素;2、计算中心点落在
37、直线段内的子象素的个数,记为k,3、k/n为线段与象素相交区域面积的近似值 目的:简化计算n=16,k=3近似面积=3/16第78页/共93页79反走样方法区域采样改进改进非加权区域采样方法非加权区域采样方法的的第第3条性质条性质:相交区域对象素亮度的贡献依赖于该区域与象素中心的距离不足点:不足点:l无论相交区域与理论直线多远,相同面积都会产生相同灰度值,不能完全消除锯齿效应;l沿理想直线方向两个相邻像素可能会有较大的灰度值差异。第79页/共93页80反走样方法加权区域采样圆锥体滤波器圆锥体滤波器第80页/共93页813.5 图形剪裁线段的矩形窗口剪裁线段的矩形窗口剪裁第81页/共93页823
38、.5 图形剪裁第82页/共93页833.5 图形剪裁上上下下右右左左XXXX线段端点的编码为线段端点的编码为所在区域的编码。所在区域的编码。第83页/共93页843.5 图形剪裁 Cohen_SutherlandCohen_Sutherland算法算法需要求线段与窗口边界的交需要求线段与窗口边界的交点,而中点分割算法将上述直接求交点的过程用折半查点,而中点分割算法将上述直接求交点的过程用折半查找(即求中点)的方法来代替。中点分割算法也采用对找(即求中点)的方法来代替。中点分割算法也采用对线段端点进行编码的方式来判断完全可见和显然完全不线段端点进行编码的方式来判断完全可见和显然完全不可见的线段,
39、对于既不是完全可见也不是显然完全不可可见的线段,对于既不是完全可见也不是显然完全不可见的线段,中点分割算法分别求离两个端点最近的可见见的线段,中点分割算法分别求离两个端点最近的可见点,这两个最近的可见点(如果存在的话)之间的线段点,这两个最近的可见点(如果存在的话)之间的线段就是原线段的可见部分。就是原线段的可见部分。第84页/共93页853.5 图形剪裁 Cyrus-BeckCyrus-Beck算法算法(简称(简称CBCB算法)将线段算法)将线段表示成表示成参数方程参数方程的形式,求线段与窗口边界的的形式,求线段与窗口边界的交点的参数,确定了线段的可见部分之后再用交点的参数,确定了线段的可见
40、部分之后再用交点的参数计算交点的坐标,因此,交点的参数计算交点的坐标,因此,Cyrus-Cyrus-BeckBeck算法算法也称作也称作参数化裁剪算法参数化裁剪算法。Cyrus-BeckCyrus-Beck算法不仅适用于矩形裁剪窗算法不仅适用于矩形裁剪窗口,而且适用于凸多边形裁剪窗口,更加具有口,而且适用于凸多边形裁剪窗口,更加具有一般性。本节中的裁剪窗口指的是凸多边形裁一般性。本节中的裁剪窗口指的是凸多边形裁剪窗口。剪窗口。第85页/共93页863.5 图形剪裁 线段的参数方程线段的参数方程:当我们把线段当我们把线段P P0 0P P1 1看成起点为看成起点为P P0 0、终点为、终点为P
41、P1 1的向量的向量时,写成时,写成P P0 0P P1 1,它的参数方程为,它的参数方程为 P(t)=PP(t)=P0 0+tP+tP0 0P P1 1 (0t1)(0t1)t=0 t=0时,时,P(0)=PP(0)=P0 0;t=1t=1时,时,P(1)=PP(1)=P1 1;t0t1t1时时所表示的点在线段的延长线上。所表示的点在线段的延长线上。第86页/共93页873.5 图形剪裁第87页/共93页883.5 图形剪裁多边形的剪裁多边形的剪裁第88页/共93页893.5 图形剪裁第89页/共93页903.5 图形剪裁多边形依次相对于窗口的多边形依次相对于窗口的每一条边界每一条边界进行裁剪进行裁剪.第90页/共93页913.5 图形剪裁Sutherland-HodgmanSutherland-Hodgman算法算法第91页/共93页923.5 图形剪裁 缺点是需要生成并存储多边形相对于窗口的一条边缺点是需要生成并存储多边形相对于窗口的一条边界进行裁剪之后得到的中间多边形界进行裁剪之后得到的中间多边形.第92页/共93页93感谢您的观看。第93页/共93页
限制150内