第五章二维图形裁剪 计算机内部存储的图形数据 量往往比较大,而屏幕显示 的只是图的局部部分。因此 需要确定图形中哪些部分落 在显示区之内,哪些落在显 示区之外,以便只显示落在 显示区内的那部分图形。这 个选择过程称为裁剪。一般 因为有些图形组成部分全部 在窗口外,可以完全排除, 不必进行扫描转换。所以 采用先裁剪再扫描转 换的方法
第五章 二维图形裁剪 计算机内部存储的图形数据 量往往比较大,而屏幕显示 的只是图的局部部分。因此 需要确定图形中哪些部分落 在显示区之内,哪些落在显 示区之外,以便只显示落在 显示区内的那部分图形。这 个选择过程称为裁剪。一般, 因为有些图形组成部分全部 在窗口外,可以完全排除, 不必进行扫描转换。所以 采用先裁剪再扫描转 换的方法
主要内容 直线段的 Cohen- Sutherland算法 Nicho-Lee- Nicho算法、中点分割算法 梁友栋- Barkey算法,裁剪多边形的 Sutherland-Hodgman算法、 Weiler- Atherton算法,字符裁剪
主要内容 直线段的Cohen-Sutherland算法、 Nicholl-Lee-Nicholl算法、中点分割算法、 梁友栋-Barskey算法,裁剪多边形的 Sutherland-Hodgman算法、Weiler- Atherton算法,字符裁剪
5.1直线段裁剪 直线段裁剪算法比较简单,但非常重要, 是复杂图元裁剪的基础。因为复杂的曲 线可以通过折线段来近似,从而裁剪问 题也可以化为直线段的裁剪问题。 常用的线段裁剪方法 Cohen-Sutherland ●中点分割算法 ●梁友栋一 barkey算法
5.1 直线段裁剪 直线段裁剪算法比较简单,但非常重要, 是复杂图元裁剪的基础。因为复杂的曲 线可以通过折线段来近似,从而裁剪问 题也可以化为直线段的裁剪问题。 常用的线段裁剪方法 l Cohen-Sutherland、 l 中点分割算法 l 梁友栋-barskey算法
直线段裁剪前提和假设 n裁剪的目的判断图形元素是否落在裁剪窗口 之内并找出其位于内部的部分 裁剪处理的基础 ●图元关于窗口内外关系的判别 ●图元与窗口的求交 假定条件:(1)矩形裁剪窗口- [Xmin, xmax Xlymin,ymax] (2)待裁剪线段--P(x)P(x2) 待裁剪线段和窗口的关系:(1)线段完全可见;(2 显然不可见;(3)线段至少有一端点在窗口之外, 但非显然不可见
直线段裁剪前提和假设 n裁剪的目的:判断图形元素是否落在裁剪窗口 之内并找出其位于内部的部分 裁剪处理的基础: l 图元关于窗口内外关系的判别 l 图元与窗口的求交 假定条件: (1)矩形裁剪窗口---- [xmin,xmax]X[ymin,ymax] (2)待裁剪线段---- 待裁剪线段和窗口的关系:(1)线段完全可见; (2) 显然不可见; (3)线段至少有一端点在窗口之外, 但非显然不可见
例子 线段 AB CDEF GH,J等 --ym ax 丑H 简单的点 E 裁剪:点 A (x,y)在窗 INliNe 口内的充 G 分必要条 件是 XInin x min <x< xmax ymnsy≤ymax
例子 线段AB,CD,EF, GH, IJ等 简单的点 裁剪: 点 (x, y)在窗 口内的充 分必要条 件是:
51.1直线裁剪的直接求交算法 在窗口内部>Y,<在育口内含亮全 至高] P=2 在窗口内部? 求交点工 es⊥t 为可见部分 显然不可见 exit 品2不可见 cent 8 与窗口有交 2不可见 求交点/、l1 exit n即为可见部分 f P又1t
5.1.1 直线裁剪的直接求交算法
F在窗口内部? R1在窗口内部? 完全可见 P=2 在窗口内部? 马= 求交京工 色t 为可见部分 显然不可见? exit h不可见 P csit <R与窗口有交个 H不可见 求交点a、l1, exit ln即为可见部分 e又1t
5.1.2直线段的 Cohen- Sutherland裁 剪算法 该算法的思想是:对于每条线段 P1P2分为三种情况处理 (1)若两端点P1P2完全在窗口 内,则完全可见该线段P1P2。否 则进入下一步; °(2)若线段PP2明显在窗口外, 即显然不可见,则丢弃该线段,否 则进入下一步; °(3)若线段既不满足(1)的条 囫 件,也不满足(2)的条件,则在 交点处把线段分为两段。其中一段 完全在窗口外,可弃之。然后对另 段重复上述处理
5.1.2 直线段的Cohen-Sutherland裁 剪算法 该算法的思想是:对于每条线段 P1P2分为三种情况处理。 l (1)若两端点P1P2完全在窗口 内,则完全可见该线段P1P2。否 则进入下一步; l (2)若线段P1P2明显在窗口外, 即显然不可见,则丢弃该线段,否 则进入下一步; l (3)若线段既不满足(1)的条 件,也不满足(2)的条件,则在 交点处把线段分为两段。其中一段 完全在窗口外,可弃之。然后对另 一段重复上述处理
算法实现 为使计算机能够快速判断一条直线段与 窗口属何种关系,采用如下编码方法。 延长窗口的边,将二维平面分成九个区 域。每个区域赋予4位编码 CtcbcrCl.其 中各位编码的定义如下:
算法实现 为使计算机能够快速判断一条直线段与 窗口属何种关系,采用如下编码方法。 延长窗口的边,将二维平面分成九个区 域。每个区域赋予4位编码CtCbCrCl.其 中各位编码的定义如下:
y>yna iy e5 other ym ax 10011100011010 YII aLi E 00010000 0010 ymin yimin 01011010010110 Xm if xmax x z增n <max 九个区