1 / 38

第二章 光栅图形学

第二章 光栅图形学. 2.1 直线段的扫描转换算法 2.2圆弧的扫描转换算法 2.3多边形的扫描转换与区域填充 2.4字符 2.5裁剪 2.6反走样 2.7 消隐. 2.5 裁剪. 裁剪: 确定图形中哪些部分落在显示区之内,哪些落在显示区之外 , 以便只显示落在显示区内的那部分图形。这个选择过程称为 裁剪 。 在使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的只是图的一部分。. 问:为什么要裁减,直接处理呢?即:在绘制(写帧缓存时)再处理?.

petra-frost
Download Presentation

第二章 光栅图形学

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 光栅图形学 2.1直线段的扫描转换算法 2.2圆弧的扫描转换算法 2.3多边形的扫描转换与区域填充 2.4字符 2.5裁剪 2.6反走样 2.7消隐 清华大学 计算机图形学

  2. 2.5 裁剪 • 裁剪:确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。这个选择过程称为裁剪。 在使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的只是图的一部分。 清华大学 计算机图形学

  3. 问:为什么要裁减,直接处理呢?即:在绘制(写帧缓存时)再处理?问:为什么要裁减,直接处理呢?即:在绘制(写帧缓存时)再处理? 清华大学 计算机图形学

  4. 最简单的裁剪方法是把各种图形扫描转换为点之后,再判断各点是否在窗内。但那样太费时,一般不可取。这是因为有些图形组成部分全部在窗口外,可以完全排除,不必进行扫描转换。所以一般采用先裁剪再扫描转换的方法。最简单的裁剪方法是把各种图形扫描转换为点之后,再判断各点是否在窗内。但那样太费时,一般不可取。这是因为有些图形组成部分全部在窗口外,可以完全排除,不必进行扫描转换。所以一般采用先裁剪再扫描转换的方法。 清华大学 计算机图形学

  5. 2.5.1直线段裁剪 • 直线段裁剪算法是复杂图元裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为直线段的裁剪问题。 2.5.1.1Cohen-Sutherland 2.5.1.2中点分割算法 2.5.1.3梁友栋-barskey算法。 清华大学 计算机图形学

  6. P1 P1 1 2 P1 P2 P2 3 P2 2.5.1.1 Cohen-Sutherland裁剪 • 基本思想:对于每条线段P1P2分为三种情况处理分为三种情况处理: (1)若P1P2完全在窗口内,则显示该线段P1P2简称“取”之。 (2)若P1P2明显在窗口外,则丢弃该线段,简称“弃”之。 (3)若线段不满足“取”或 “弃”的条件,则在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。 清华大学 计算机图形学

  7. 线段裁剪 编码 • 为快速判断,采用如下编码方法: • 每个区域赋予4位编码 清华大学 计算机图形学

  8. P1 P1 1 2 P1 P2 P2 3 P2 线段裁剪 编码 • 若P1P2完全在窗口内code1=0,且code2=0,则“取” • 若P1P2明显在窗口外code1&code2≠0,则“弃” • 在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。 清华大学 计算机图形学

  9. 计算线段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);} 示例 清华大学 计算机图形学

  10. 2.5.1.2 中点分割裁剪算法 • 基本思想: 与前一种Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段与窗口的关系分为三种情况: • 全在、完全不在和线段和窗口有交。对前两种情况,进行一样的处理。 • 对于第三种情况,用中点分割的方法求出线段与窗口的交点。 清华大学 计算机图形学

  11. 求线段与窗口的交点 A、B分别为距P0、P1最近的可见点,Pm为P0P1中点 清华大学 计算机图形学

  12. 从 出发找最近可见点的方法 • 先求出 的中点 • 若 不是显然不可见的,并且 在窗口中有可见部分,则距 最近的可见点一定落在 上,所以用 代替 ; 清华大学 计算机图形学

  13. 否则取 代替 • 再对新的 求中点 。重复上述过程,直到 长度小于给定的控制常数为止,此时 收敛于交点。 • 从 出发找最近可见点采用上面类似方法。 清华大学 计算机图形学

  14. B P4 P3 ymax U S A P1 P2 ymin T R L xmax xmin AS是一维窗口TS中的可见部分 2.5.1.3梁友栋-Barsky算法 • 基本思想: • 把二维裁剪化为一维裁剪问题,并向x(或y)方向投影以决定可见线段。 • 直线L与区域的交: • 当Q为空集时,线段AB不可能在窗口中有可见线段。 • 当Q不为空集时,Q可看成是一个一维窗口 清华大学 计算机图形学

  15. 左端点 右端点 B P4 P3 ymax U S A P1 P2 ymin T R L xmax xmin AS是一维窗口TS中的可见部分 2.5.1.3梁友栋-Barsky算法 • 存在可见线段的充要条件 • 不为空集 • 向x轴投影,就得到可见线段上点的坐标的变化范围为 清华大学 计算机图形学

  16. 2.5.1.3梁友栋-Barsky算法 • AB有可见部分的充分必要条件也可表示为 清华大学 计算机图形学

  17. 2.5.2 多边形裁剪 • 基本思想是一次用窗口的一条边裁剪多边形。 • 考虑窗口的一条边以及延长线构成的裁剪线 该线把平面分成两个部分:可见一侧;不可见一侧 清华大学 计算机图形学

  18. 多边形的各条边的两端点S、P。它们与裁剪线的位置关系只有四种多边形的各条边的两端点S、P。它们与裁剪线的位置关系只有四种 清华大学 计算机图形学

  19. 每条线段端点与S,P与裁剪线比较之后,可输出0~2顶点每条线段端点与S,P与裁剪线比较之后,可输出0~2顶点 • 对于 • 情况(1)仅输出顶点P; • 情况(2)输出0个顶点; • 情况(3)输出线段SP与裁剪线的交点I; • 情况(4)输出线段SP与裁剪线的交点I和终点P 清华大学 计算机图形学

  20. 上述算法仅用一条裁剪边对多边形进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入。上述算法仅用一条裁剪边对多边形进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入。 • 对于每一条裁剪边,只是判断点在窗口哪一侧以及求线段SP与裁剪边的交点算法应随之改变。 清华大学 计算机图形学

  21. 示意图(5之1) 清华大学 计算机图形学

  22. 示意图(5之2) 清华大学 计算机图形学

  23. 示意图(5之3) 清华大学 计算机图形学

  24. 示意图(5之4) 清华大学 计算机图形学

  25. 示意图(5之5) 清华大学 计算机图形学

  26. 其他窗口的裁剪 • 圆域窗口裁剪:潜望镜、... • 任意(凸)多边形裁剪:个性化电脑显示器定制, 清华大学 计算机图形学

  27. 2.5.3 字符裁剪 • 字符裁剪可按三个精度来进行裁剪 • 串精度:将包围字串的外接矩形对窗口作裁剪 • 字符精度:将包围字的外接矩形对窗口作裁剪 • 以及笔画\像素精度:将笔划分解成直线段对窗口作裁剪 待裁剪字符串 串精度裁剪 字符精度裁剪 像素精度裁剪 清华大学 计算机图形学

  28. 2.6 走样与反走样2.6.1 走样 • 用离散量表示连续量引起的失真现象称之为走样(aliasing) • 走样类别 • 阶梯形走样 • 亮度走样 • 细节走样 • 狭小图形走样 清华大学 计算机图形学

  29. 用于减少或消除这种效果的技术称为反走样(antialiasing)用于减少或消除这种效果的技术称为反走样(antialiasing) 2.6.2 提高分辨率 2.6.3 区域采样 2.6.4 加权区域取样 清华大学 计算机图形学

  30. 2.6.2 提高分辨率 • 把显示器分辨率提高一倍, • 直线经过两倍的像素,锯齿也增加一倍, • 但同时每个阶梯的宽度也减小了一倍, • 所以显示出的直线段看起来就平直光滑了一些。 • 增加分辨率虽然简单,但是不经济的方法,有物理上的困难 • 而且它也只能减轻而不能消除锯齿问题 清华大学 计算机图形学

  31. 2.6.3 区域采样 • 基本思想: • 每个像素是一个具有一定面积的小区域,将直线段看作具有一定宽度的狭长矩形。当直线段与像素有交时,求出两者相交区域的面积,然后根据相交区域面积的大小确定该像素的亮度值。 清华大学 计算机图形学

  32. 有宽度的线条轮廓 像素相交的五种情况及用于计算面积的量 清华大学 计算机图形学

  33. 面积计算 • 情况⑴(5)阴影面积为:D2/2m; • 情况⑵(4)阴影面积为:D - m/2; • 情况⑶阴影面积为:1 - D2/m • 结果是0~1之间的正数,用它乘以像素的最大灰度值,再取整即可得到像素的显示灰度值 清华大学 计算机图形学

  34. 为了简化计算可以采用离散的方法 n=9,k=3近似面积为1/3 • 首先将屏幕像素均分成n个子像素, • 然后计算中心点落在直线段内的子像素的个数k。 • 将屏幕该像素的亮度置为相交区域面积的近似值可k/n。 清华大学 计算机图形学

  35. 非加权区域采样方法有两个缺点: • 像素的亮度与相交区域的面积成正比,而与相交区域落在像素内的位置无关,这仍然会导致锯齿效应。 • 直线条上沿理想直线方向的相邻两个像素有时会有较大的灰度差。 清华大学 计算机图形学

  36. 2.6.4 加权区域取样 • 基本思想: • 使相交区域对像素亮度的贡献依赖于该区域与像素中心的距离 • 当直线经过该像素时,该像素的亮度F是在两者相交区域A’上对滤波器(函数w)进行积分的积分值。 清华大学 计算机图形学

  37. 可采用离散计算方法 • 如:我们将屏幕划分为n=3×3个子像素,加权表可以取作: • 权函数w(x,y)为微面元dA与像素中心距离d的函数 清华大学 计算机图形学

  38. 然后求出所有中心落于直线段内的子像素。 • 最后计算所有这些子像素对原像素亮度贡献之和 乘以像素的最大灰度值作为该像素的显示灰度值。 清华大学 计算机图形学

More Related