文档介绍:第六章二维裁剪
直线段裁剪
多边形裁剪
字符裁剪
1
北大计算机系多媒体与人机交互
直线段裁剪(1/18)
裁剪的目的
判断图形元素是否落在裁剪窗口之内并找出其位于内部的部分
裁剪的处理的基础
图元关于窗口内外关系的判别
图元与窗口的求交
假定条件
矩形裁剪窗口:[xmin,xmax]X[ymin,ymax]
待裁剪线段:
2
北大计算机系多媒体与人机交互
直线段裁剪(2/18)
待裁剪线段和窗口的关系
线段完全可见
显然不可见
线段至少有一端点在窗口之外,但非显然不可见
3
北大计算机系多媒体与人机交互
直线段裁剪(3/18)
点裁剪
点(x, y)在窗口内的充分必要条件是:
直接求交算法
4
北大计算机系多媒体与人机交互
直线段裁剪(4/18)
5
北大计算机系多媒体与人机交互
直线段裁剪(5/18)
Cohen_Sutherland 算法
步骤:
第一步判别线面两端点是否都落在窗口内,如果是,
则线段完全可见;否则进入第二步;
第二步判别线段是否为显然不可见,如果是,则裁
剪结束;否则进行第三步;
第三步求线段与窗口边延长线的交点,这个交点将
线段分为两段,其中一段显然不可见,丢弃。
对余下的另一段重新进行第一步,第二步判断,
直至结束
6
北大计算机系多媒体与人机交互
直线段裁剪(6/18)
特点:对显然不可见线段的快速判别
编码方法
区域编码:用窗口四边所在的直线将整个平面分成9个区域,每个区域赋于一个四位的编码
7
北大计算机系多媒体与人机交互
直线段裁剪(7/18)
端点编码:定义为它所在区域的编码
结论:当线段的两个端点的编码的逻辑“与”非零时,线段为显然不可见的
8
北大计算机系多媒体与人机交互
直线段裁剪(8/18)
例子
9
北大计算机系多媒体与人机交互
直线段裁剪(9/18)
程序:page110
适用场合:大窗口与小窗口
问题:裁剪一条直线段需要多次求交
Nicholl-Lee-Nicholl算法
目标:通过对二维平面的更详细划分,消除Cohen_Sutherland算法中线段在被裁剪时需多次求交的情况。
10
北大计算机系多媒体与人机交互