第四章 图元的属性 讲 授:董兰芳 研究方向:科学计算可视化 图形、图像处理 模式识别 Telephone:0551-3603484 第四章 图元的属性 讲 授:董兰芳 研究方向:科学计算可视化 图形、图像处理 模式识别 Telephone:0551-3603484 Email:lfdong@ustc.edu.cn Homepage: http://staff.ustc.edu.cn/~lfdong/research.html 中国科学技术大学 视觉计算与可视化实验室
第四章 图元的属性 任何影响图元显示方法的参数一般称为属性参数。 将属性选择加入图形软件包的方法: 为每个输出图元功能扩充相关的参数表。 第四章 图元的属性 任何影响图元显示方法的参数一般称为属性参数。 将属性选择加入图形软件包的方法: 为每个输出图元功能扩充相关的参数表。 提供一张系统的当前属性值表。 维护属性和其他参数当前值表的图形系统称为状态系统。 输出图元的属性和其他参数当前值表的图形系统称为状 态系统。
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样
4.1 颜色和查找表 颜色是所有图元的一个基本 属性.用户可以选择多种颜色, 依赖于特定系统的能力和设计 目标.颜色可用数值指定,也可 以从菜单或显示的标尺中选择.
4.1 颜色和查找表 4.1.1 RGB颜色分量 在彩色光栅系统中,可选用的颜色数量依赖于帧缓存 中提供的存储容量。颜色信息有两种存储方法: 存储颜色码。 4.1.2 颜色表:提供了“合理”数量的可同时显示的 颜色而不要求大容量的帧缓存。
4.1 颜色和查找表 4.1.3 灰度 当RGB函数中指定相同量的红色、绿色和蓝色时,结果是某种程度的灰色。 4.1.4 其他颜色参数 4.1.3 灰度 当RGB函数中指定相同量的红色、绿色和蓝色时,结果是某种程度的灰色。 4.1.4 其他颜色参数 CMY和CMYK模型针对彩色打印机。 HSI彩色模型更符合人描述和解释颜色的方式。
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样 4.12 OpenGL学习(2)
4.2 点的属性 颜 色 用RGB值或指向颜色表的索引值设定。 大 小 像素的整数倍。
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.7 凸多边形的扫描线填充 4.4 曲线属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样 4.12 OpenGL学习(2)
4.3 线的属性 线宽 重复像素法 优点: 实现简单 用重复像素法绘制线段 用重复像素法绘制圆弧
4.3 线的属性 线宽 缺点: 线段两端要么为水平的,要么是竖直的。 折线顶点处有缺口
4.3 线的属性 线宽 图元的宽度不均匀 产生宽度为偶数像素的图元效果不好 (a)水平线段 (b)45°线段
4.3 线的属性 线型 四种常用的线型
4.3 线的属性 线型 线型可以用0、1序列来表示,存放在数组中。 4.3 线的属性 线型 线型可以用0、1序列来表示,存放在数组中。 例:可以用包含8个元素的整数数组来表示线型(11111111表示实线,11110000表示长划线,11001100表示短划线),此时线型以8为周期重复。 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 绘制 if ( 线型[i%8] ) write_pixel(x, y);
4.3 线的属性 画笔和画刷
4.3 线的属性 画笔和画刷 用移动画笔法绘制线段
4.3 线的属性 画笔和画刷 用移动画笔法绘制圆弧
4.3 线的属性 画笔和画刷 (a)水平线段 (b)45°线段
4.3 线的属性 区域填充 可以根据线条的宽度,计算出线条的外轮廓,再用区域填充的方法,产生具有一定线宽的线条。 优点 生成的图形质量高 4.3 线的属性 区域填充 优点 生成的图形质量高 缺点 计算量大 有些图形的等距线难以获得 可以根据线条的宽度,计算出线条的外轮廓,再用区域填充的方法,产生具有一定线宽的线条。
4.3 线的属性 区域填充 为了改善线条端点处的形状,可以在线条端点处加上线帽(line cap)。 粗线段的连接处需要特别考虑 4.3 线的属性 区域填充 为了改善线条端点处的形状,可以在线条端点处加上线帽(line cap)。 粗线段的连接处需要特别考虑 三种常用的线帽 三种常用的粗线段的连接方式
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.7 凸多边形的扫描线填充 4.4 曲线属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样 4.12 OpenGL学习(2)
4.4 曲线的属性 区域填充 对于封闭曲线来说,可以先生成两条距离为线宽的曲线,再填充两条曲线之间的区域。
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.7 凸多边形的扫描线填充 4.4 曲线属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样 4.12 OpenGL学习(2)
4.5 填充区属性 4.5.1 填充模式 4.5.2 颜色调和填充区域
4.5.1 填充模式 填充方法 基本问题
4.5.1 填充模式 填充方法 均匀着色方法:将图元内部像素置成同一颜色 位图不透明:若像素对应的位图单元为1,则以前景色显示该像素;若为0,则以背景色显示该像素; 位图透明:若像素对应的位图单元为1,则以前景色显示该像素;若为0,则不做任何处理。 像素图填充:以像素对应的像素图单元的颜色值显示该像素。
4.5.1 填充模式 建立区域与图像间的对应关系
4.5.1 填充模式
4.5.1 填充模式 以数组形式存储在处理器内存里的二维图像称为纹理。 此时数组元素称为纹素(texel),可以由应用程序生成, 也可以将照片扫描输入。 把离散数组看成一个连续的二维矩形区域纹理图案 T(s,t),独立变量s和t是纹理坐标一般把纹理坐标缩放到 [0,1]区间。
4.5.1 填充模式 把图像映射到曲面上是一个非常复杂的任务。
4.5.1 填充模式 涉及到的坐标系 参数坐标系可以用来建立曲线、曲面。 纹理坐标系用来识别要被映射的图像上的点。 世界坐标系从概念上说,就是映射发生的地方。 屏幕坐标系最终图像生成的地方。
4.5.1 填充模式 映射函数 考虑从纹理坐标到曲面上一点的映射。 直观地看,需要如下函数 x=x(s,t) y=y(s,t) z=z(s,t) w=w(s,t) 实际采用的是间接方法。
4.5.1 填充模式 逆映射 给定对象上的一个点,我们想知道它对应 于纹理中的哪个点。 此时需要如下形式的映射 s = s(x,y,z,w) t = t(x,y,z,w) 这样的函数一般是很难求出来的。
4.5.1 填充模式 实际困难 假设要计算中心在(xs, ys)的一个矩形像素的颜色。 中心点对应于对象上的点(x,y,z) 。 如果对象是弯曲的,那么矩形像素的原像是一个曲 边四边形。 这个曲边四边形在纹理上的原像才是对当前矩形像 素的颜色有贡献的纹理元素。
4.5.1 填充模式 纹理坐标到屏幕坐标的映射 xs=xs(s,t) ys=ys(s,t) (xs,ys)表示颜色缓存中的某个位置。
4.5 填充区属性 4.5.1 填充模式 4.5.2 颜色调和填充区域
4.5.2 颜色调和填充区域 线性软填充算法是这类填充的一个例子,该算法在将前景色F与单一背景色B(F<>B)合并后绘制的区域上重新绘制。 假如F和B的值为已知,那么通过检测帧缓冲器中当前的颜色内容,就可确定这些颜色原来是怎样组合的。 区域内将要重新填充酌每个像素的当前颜色P,则是F和B的线性组合: P=tF十(1-t)B
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.7 凸多边形的扫描线填充 4.4 曲线属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样 4.12 OpenGL学习(2)
4.6 通用扫描线填充算法 4.6.1 扫描线算法 4.6.2 有序边表算法
4.6.1 扫描线算法 边的连贯性:某条边与当前扫描线相交,也可能 与下一条扫描线相交; 扫描线的连贯性:当前扫描线与各边的交点顺序 4.6.1 扫描线算法 边的连贯性:某条边与当前扫描线相交,也可能 与下一条扫描线相交; 扫描线的连贯性:当前扫描线与各边的交点顺序 与下一条扫描线与各边的交点顺序 可能相同或类似; 区间连贯性:同一区间上的像素取同一颜色属性
4.6.1 扫描线算法 扫描线算法 目标:利用相邻像素之间的连贯性,提高算法效率 处理对象:非自交多边形 (边与边之间除了顶点外无其它交点)
4.6 通用扫描线填充算法 4.6.1 扫描线算法 4.6.2 有序边表算法
4.6.2 有序边表算法 基本原理 一条扫描线与多边形的边有偶数个交点 步骤(对于每一条扫描线): 求交点 交点排序 交点配对,填充区段
4.6.2 有序边表算法 边的连贯性 第一类交点:新出现的边与扫描线的交点 第二类交点:位于同一条边上的后继交点
4.6.2 有序边表算法 交点的取整规则 要求:使生成的像素全部位于多边形之内 4.6.2 有序边表算法 交点的取整规则 要求:使生成的像素全部位于多边形之内 用于线画图元生成的四舍五入原则导致部分像素位于多边形之外,从而不可用 假定非水平边与扫描线y=e相交,交点的横坐标为x.
4.6.2 有序边表算法 规则1 X为小数,即交点落于扫描线上两个相邻像素之间 (a)交点位于左边之上,向右取整 4.6.2 有序边表算法 规则1 X为小数,即交点落于扫描线上两个相邻像素之间 (a)交点位于左边之上,向右取整 (b)交点位于右边之上,向左取整
4.6.2 有序边表算法 规则2 边界上象素的取舍问题,避免填充扩大化。 解决方法: 4.6.2 有序边表算法 规则2 边界上象素的取舍问题,避免填充扩大化。 解决方法: 边界象素:规定落在右边界的象素不予填充。具体实现时,只要对扫描线与多边形的相交区间左闭右开。
4.6.2 有序边表算法 算法所涉及的数据结构: 活性边:与当前扫描线相交的边。按交点x的增量顺序存放在一个链表中;该链表称作活性边表(AEL)。 AEL 的结点信息(p75): Ymax: 所交边的最高扫描线号 X:当前扫描线与边的交点的 x坐标 △X:边的斜率的倒数 Nextage: 下一条边的指针 typedef struct {int ymax; float x,deltax; Edge *nextEdge; }Edge;
4.6.2 有序边表算法 边的分类表(ET) 按照边的下端点y坐标对非水平边进行分类的指针数组,下端点y坐标值等于i的边属于第i类。 4.6.2 有序边表算法 边的分类表(ET) 按照边的下端点y坐标对非水平边进行分类的指针数组,下端点y坐标值等于i的边属于第i类。 typedef struct {int ymax; float x,deltax; Edge *nextEdge; }Edge; 边的分类表的作用是避免盲目求交。 当处理一条扫描线时,为了求出它与多 边形边的所有交点,必须将它与所有的 边进行求交测试。而实际上只有某几条 边与该扫描线有交点。边的分类表正是 用来排除不必要的求求交测试的。
4.6.2 有序边表算法 建立ET; 将扫描线纵坐标y的初值置为ET中非空元素的最小序号,如在上图中, y=1; 置AEL为空; 4.6.2 有序边表算法 建立ET; 将扫描线纵坐标y的初值置为ET中非空元素的最小序号,如在上图中, y=1; 置AEL为空; 执行下列步骤直至ET和AEL都为空. 如ET中的第y类非空,则将其中的所有边取出并插入AEL中; 如果有新边插入AEL,则对AEL中各边排序; 对AEL中的边两两配对,(1和2为一对,3和4为一对,…),将每对边中x坐标按规则取整,获得有效的填充区段,再填充. 将当前扫描线纵坐标y值递值1; 将AEL中满足y=ymax边删去(!每条边被看作下闭上开的); 对AEL中剩下的每一条边的x递增deltax,即x = x+deltax.
4.6 通用扫描线填充算法 4.6.1 扫描线算法 4.6.2 有序边表算法
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样
4.8 曲线边界区域扫描线填充 扇形区域的描述: 原理:同多边形 问题:如何确定扫描线与直线段和圆弧段的相交顺序 方法:分类
4.8 曲线边界区域扫描线填充 假设 点落在第一象限 ,扇形区域的图元生成 分四种情况 在第一象限
4.8 曲线边界区域扫描线填充 落在第二象限,此时又分为两种情况 当 时
4.8 曲线边界区域扫描线填充 落在第三象限 落在第四象限
4.8 曲线边界区域扫描线填充 遗留问题:当 落在其它区域时? 还有什么方法?
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样
4.9 不规则边界区域填充方法 内部定义区域,是指区域内部的所有像素都具有相同的颜色(old_color),而区域边界上的像素具有不是old_color的任意其它颜色。 填充内部定义区域,将该区域中的所有像素都设置为填充颜色(fill_color)的算法,称为洪水填充算法(flood-fill algorithm)。 边界定义区域,是指区域边界上的所有像素都具有相同的颜色(boundary_color),而区域内部的像素具有不是boundary_color的任意其它颜色。 填充边界定义区域,将该区域中的所有像素都设置为填充颜色的算法,称为边界填充算法(boundary-fill algorithm)。
4.9 不规则边界区域填充方法 内部定义区域示意图 边界定义区域示意图
4.9 不规则边界区域填充方法 4.9.1 简单递归 4.9.2 扫描线算法
4.9 不规则边界区域填充方法 区域内部的所有像素都具有颜色old_color,从区域 内部某一像素(x,y)开始对区域进行填充(该像素称为 4.9 不规则边界区域填充方法 区域内部的所有像素都具有颜色old_color,从区域 内部某一像素(x,y)开始对区域进行填充(该像素称为 种子点),将区域内部的所有像素都设置为填充颜色 fill_color。 基本方法是:测试像素(x,y)是否在区域内尚未被 填充的部分,即测试像素(x,y)的颜色,若该像素的颜 色等于old_color且不等于fill_color,则设置该像素的 颜色为fill_color,并对与该像素相邻的像素作同样处理 (递归调用);否则说明该像素在区域外或已被填充过, 不再进行处理。
4.9 不规则边界区域填充方法 适用于四连通内部定义区域的边界填充算法为: 4.9 不规则边界区域填充方法 适用于四连通内部定义区域的边界填充算法为: void flood_fill_4(int x, y, old_color, fill_color) { int current; current = read_pixel(x, y); if ( current==old_color && current!=fill_color ) write_pixel(x, y, fill_color); flood_fill_4(x, y+1, old_color, fill_color); /* 上 */ flood_fill_4(x, y-1, old_color, fill_color); /* 下 */ flood_fill_4(x-1, y, old_color, fill_color); /* 左 */ flood_fill_4(x+1, y, old_color, fill_color); /* 右 */ }
4.9 不规则边界区域填充方法 适用于四连通边界定义区域的边界填充算法为: 4.9 不规则边界区域填充方法 适用于四连通边界定义区域的边界填充算法为: void boundary_fill_4(int x, y, boundary_color, fill_color) { int current; current = read_pixel(x, y); if ( current!=boundary_color && current!=fill_color ) write_pixel(x, y, fill_color); boundary_fill_4(x, y+1, boundary_color, fill_color); /* 上 */ boundary_fill_4(x, y-1, boundary_color, fill_color); /* 下 */ boundary_fill_4(x-1, y, boundary_color, fill_color); /* 左 */ boundary_fill_4(x+1, y, boundary_color, fill_color); /* 右 */ }
4.9 不规则边界区域填充方法 当区域内部某些像素的颜色为fill_color时,上述边界填充算法可能无法正确工作。 4.9 不规则边界区域填充方法 当区域内部某些像素的颜色为fill_color时,上述边界填充算法可能无法正确工作。 解决方法:首先建立一个与帧缓冲区对应的临时缓冲区,帧缓冲区中颜色为boundary_color的像素在临时缓冲区中用0来表示,颜色不为boundary_color的像素在临时缓冲区中用1来表示,再用上述算法在临时缓冲区中用2进行填充,最后在帧缓冲区中将对应于临时缓冲区中为2的像素填充为fill_color。
4.9 不规则边界区域填充方法 4.9.1 简单递归 4.9.2 扫描线算法
4.9 不规则边界区域填充方法 种子点(x,y)入栈。 栈顶元素(x,y)出栈作为种子点。 4.9 不规则边界区域填充方法 种子点(x,y)入栈。 栈顶元素(x,y)出栈作为种子点。 从种子点(x,y)开始沿着扫描线向左右两个方向逐个 像素进行填充,直到到达边界像素为止。 将上述填充区段的左右端点的横坐标分别记为xleft和 xright。 在与当前扫描线相邻的上下两条扫描线的[xleft,xright]范围内进行检查,看看是否全部为边界像素或已填充像素,若存在着非边界且未填充的像素,那么将该区段的最右端像素作为种子点入栈。
4.9 不规则边界区域填充方法 区域填充的扫描线算法的执行过程
4.9 不规则边界区域填充方法
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样
4.10 字符属性 表示字符形状的方法: 位 图:点阵表示 轮廓线:用直线或曲线来描述字符的轮廓。 需要采用扫描转换算法对轮廓线 4.10 字符属性 表示字符形状的方法: 位 图:点阵表示 轮廓线:用直线或曲线来描述字符的轮廓。 需要采用扫描转换算法对轮廓线 内部进行填充。 如True Type 、PostScript。 两种方法的比较 位图表示: 显示速度快 占用大量的存储空间 效果不能令人满意 轮 廓 线:节省空间 扫描转换需要更长的处理时间
4.10 字符属性 英文字符体
4.10 字符属性 字符对齐
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样
4.11 反走样 走样: 用离散量(像素)表示连续的量(图形)而引起 的失真,叫混淆或叫走样(aliasing)。 光栅图形的走样现象: 阶梯状边界; 图形细节失真; 狭小图形遗失:动画序列中时隐时现,产生闪烁。
4.11 反走样 不光滑(阶梯状)的图形边界 走样现象
4.11 反走样 图形细节失真 走样现象
4.11 反走样 狭小图形的遗失与 动态图形的闪烁 走样现象
4.11 反走样 什么是反走样 在图形显示过程中,用于减少或消除走样现象的方法。 提高分辨率方法 非加权区域采样 加权区域采样
4.11 反走样 提高分辨率的反走样方法 –过采样 方法简单,但代价非常大! 显示器的水平、竖直分辩率各提高一倍,则显示器 的点距减少一倍,帧缓存容量则增加到原来的4倍,而 扫描转换同样大小的图元却要花4倍时间。
4.11 反走样 走样原因 两点假设 象素是数学上抽象的点,它的面积为0, 它的亮度由覆盖该点的图形的亮度所决定; 直线段是数学上抽象直线段,它的宽度为0。 现实 像素的面积不为0; 直线段的宽度至少为1个像素; 假设与现实的矛盾是导致走样出现的原因之一
4.11 反走样 解决方法:改变直线段模型,由此产生区域采样算法步 骤: 将直线段看作具有一定宽度的狭长矩形; 当直线段与某象素有交时,求出两者相交区域的面积; 根据相交区域的面积,确定该象素的亮度值
4.11 反走样 区域采样 直线段对一个像素亮度的贡献与两者相交区域的面积 成正比; 当直线段和某个像素不相交时,它对该像素的亮度无 影响; 相同面积的相交区域对像素的亮度贡献相同,而与这 个相交区域落在像素内什麽位置无关。 关键:如何计算这个面积?
4.11 反走样 计算相交区域的面积 加权区域采样 保真多边形边界
4.11 反走样 求相交区域的近似面积 将屏幕象素分割成n个更小的子象素; 计算中心点落在直线段内的子象素的个数,记为k, k/n为线段与象素相交区域面积的近似值 目的:简化计算 左图:n = 16, k = 3 近似面积 = 3/16
4.11 反走样 加权区域采样 改进非加权区域采样方法 相交区域对象素亮度的贡献 依赖于该区域与象素中心的距离
4.11 反走样 反走样技术实例 立方体滤波器 圆锥体滤波器 保真多边形边界
4.11 反走样 1.立方体滤波器
4.11 反走样 2.圆锥体滤波器
4.11 反走样 3.保真多边形边界 -- 计算相交区域的面积 像素实际显示的灰度值 = 相交面积*该像素的最大灰度值
第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.7 凸多边形的扫描线填充 4.4 曲线属性 第四章 图元的属性 4.1 颜色和查找表 4.2 点的属性 4.3 线的属性 4.4 曲线属性 4.5 填充区属性 4.6 通用扫描线填充算法 4.7 凸多边形的扫描线填充 4.8 曲线边界区域扫描线填充 4.9 不规则边界区域填充方法 4.10 字符属性 4.11 反走样
计算机图形学 谢谢 欢迎交流! 更多信息请参见 http://staff.ustc.edu.cn/~lfdong/research.html