当前位置:文档之家› 计算机图形学之裁剪算法

计算机图形学之裁剪算法

把各个设备坐标系的数据经过变换转化为统一 的数据范围就得到规格化的设备坐标系。
对于具有多种图形设备的图形处理系统,采用 该坐标系是可以简化图形数据的处理。
2、几个基本概念
用户域----由用户定义的描述图形的整个自然空间。 窗口区----由用户指定的用户域中的某个矩形区域。
用户域是指用户在世界坐标系中定义的描述图形区域, 是连续无限的实数域;用户在用户域中指定的一个矩形范围 称为窗口区或窗口。窗口区小于或等于用户域。
窗口特别小的场合。
2、中点裁剪法
中点分割裁剪法是将Cohen-Sutherland 算法中求线段与窗口边界的交点的过程用折 半查找(即求中点)的方法来代替。仍然采 用对线段端点进行编码的方式判断完全可见 和显然完全不可见的线段,对于与窗口有交 点的线段,该算法分别求离两个端点最近 (或最远)的可见点。这两个可见点之间的 线段即是原线段的可见部分。
屏幕域----设备输出图形的最大区域。
视图区----设定的小于或等于屏幕域的矩形区域。
屏幕域是在设备坐标系中定义设备输出图形的最大区域, 是有限的整数域;用户在屏幕域中指定的一个矩形范围称为 视图区或视口。视口小于或等于屏幕域,是用设备坐标来定 义的。
视图区一般为矩形。在一个屏幕上,可以定 义多个视图区,作为不同的应用。如在交互式图 形系统中,屏幕分为几个区,可分别用于图形显 示、放置菜单、工具条、提示信息、备注等。
计算P1P2的最近可见点Pma和 Pmb : (一)直线段P1P2的一个端点可见, P1 另一个端点不可见。 只需解算不可见端点的最近的 可见点。 1)设P1不可见,计算P1P2的中点Pm1。
P1
pm
P2
P2
判断中点Pm1如果落在(接近)窗口边上,则 确定该中点为最近可见点。裁剪结束。否则,
2)判断Pm1是否可见: 如果Pm1可见,以Pm1取代P2 ,返回到 1)计算 P1Pm1的中点Pm2,判断Pm2 如果Pm1不可见,以Pm1取代P1 ,返回到 1)计 算Pm1P2的中点Pm2,判断Pm2
1000
1010
0001
0101
0000
0100
0010
0110
1001
1000 0000 0100
1010 0010 0110
裁剪步骤:
0001 0101
第一步 计算直线段两端点的编码C1、C2;
第二步 C1=C2=0000,线段可见,在窗口内;
第三步 C1ΛC2≠0000,线段不可见,在窗口外;
P’4 P4 P5 P6
P7
P’3 P2
P’1 P9
P’4
P4 P5
P’6
P8
P’7
P’8
P’7
(五)字符裁剪
基于字符串
基于字符

基于构成字符的最小元素

ቤተ መጻሕፍቲ ባይዱ
点阵字符:点
矢量字符:线、多边形
P2
两种线段裁剪算法的比较
Cohen-Sutherland算法是最早的、使用最广泛的线
段裁剪算法之一。在裁剪窗口很大,大部分线段完全
可见,或裁剪窗口很小,大部分线段完全不可见的情 况下,该算法特别有效;在一般情况下,该算法有时 要做不必要的求交运算,因而效率不是太高.
中点分割裁剪算法是Cohen-Sutherland算法的硬
关键: 根据多边形的边表,逐 次对每一段边与裁剪线 (窗口边直线)比较,判 别输入顶点的个数和坐 标,并联结成封闭多边 形。
不可见侧
2
多边形边与裁剪线相对位置的四种
情况与处理方法: (1) 位于可见一侧:输出终点作 为新多边形顶点 (2) 位于不可见一侧:不输出 (3) 由可见到不可见:输出与裁剪
第四步 否则,计算线段与窗口边线的交点(求交),
将其分为两段,分别重复第一、二、三、四
步重新判别,直至结束 。
求交:
通过判断直线段端点的编码值(ClCtCrCb), 确定与之相交的是哪条窗口边所在直线?
计算交点。
特点:
1)用编码可快速判断线段--完全可见和显然不可见。 2)特别适用两种场合:大窗口场合;
计算P1P2的最近可见点Pma和 Pmb :
P1
(二)直线段P1P2的两个端点都不可见。 1)计算P1P2的中点Pm。 2)判断Pm是否可见:
P1
pm
P2
如果Pm可见,将P1P2分为两段:P1Pm和Pm P2, 分别按(一)中的方法解算出各自的最近可见 点。 如果Pm不可见,判断线段P1Pm 和PmP2是否为显 然不可见。 Yes, 则P1P2为不可见线段,结束。 No, 将两线段中为非显然不可见的线段取代 P1P2,并返回到 1)重新判别计算。
xw
视口坐标 Viewport
xv
图形裁剪的概念
图形裁剪:
确定并提取出在指定区域(裁剪窗口)内 部的图形对象(裁剪对象)的过程。
即从数据集合中抽取部分数据(子集)的 过程。
裁剪过程:
判断图形对象与裁剪窗口之间的关系并 找出其位于窗口内部(或外部)的部分。
裁剪窗口:
1、矩形窗口: 由上(Top)、下(Bottom)、 左(Left)、右(Right)四条 边界围成。 用其左下角点(XL,YB)和右上 角点(XR,YT)来定义 。
计算机图形坐标系统建立了图形与数据之 间的对应联系。
1、常用坐标系 世界坐标系(用户坐标系)
(World Coordinate System--WC) 世界坐标系通常为直角坐标系,一般由用 户选定,与机器设备无关。用户在使用图形系 统创建或定义图形时,都用自己熟悉的坐标系, 即用户坐标系来描述图形数据。 如常用的图幅坐标系、大地坐标系等。
件版本。该算法只需要做加法和移位,不要做乘 除法,用硬件实现既简单又有效。
(四)多边形的裁剪
平面多边形是由若干直线段围成的平面封 闭图形。裁剪的结果,应仍是封闭的图形。
平面多边形和窗口之间的位置关系:
逐边裁剪算法(Sutherland-Hodgman )
依次用窗口的四条边框所在的直线对多边形进 行分步裁剪。 (1) 将多边形表示为顶点表,即{P1,P2,… … Pn-1,Pn }, 并生成边表P1P2, P2P3, … … Pn-1Pn, PnP1。 (2) 用窗口边裁剪原多边形,生成中间多边形 (3) 对中间多边形重复步骤 (2), 直至被窗口所 有边裁剪完为止
1
1、主菜单区
3
4
2
2、工具条
3、图形显示区
4、提示信息区
3、窗口到视口的变换 变换公式:
yw
Lv x v x v 1 ( x w x w1 ) Lw Hv y v y v1 ( y w y w1 ) Hw
Lw HW
yv
LV HV
(xw1,yw1)
窗口坐标 Window
(xv1,yv1)
直线段与窗口的位置关系:
完全可见
完全不可见
部分可见
通过对线段端点的判别,确定线段与窗口的位 置关系,并找出线段在窗口内(或外)的部分。
裁剪方法:
编码裁剪法 中点裁剪法
矢量裁剪法
1、编码裁剪法(Cohen-Sutherland) 区域编码:(四位代码)
从左到右各位依次表示上、下 、右、左。
1001
第三章 基本图形生成算法原理 (四)
本章内容
一、点、直线段生成 二、曲线的生成 三、区域填充算法 四、线宽与线型的处理 五、字符及汉字生成 六、二维图形裁剪
六、二维图形裁剪
图形坐标系统 点的裁剪 直线线段的裁剪
多边形的裁剪
字符的裁剪
(一)图形坐标系统
几何物体具有很多重要的性质,如大小、 形状、位置、方向以及相互之间的空间关系等。 为了描述、度量、分析上述特性,需要定义一 个参考框架,该参考框架称为坐标系统。
可见侧
1
线的交点 (4) 由不可见到可见:输出与裁剪
3
线的交点及终点
4
P3 P4 P2 P1 P8 P7 P5 P6
P3 P4 P2 P’1 P9 P8 P7 P5 P6
P3 P4 P2 P1 P8 P’3 P2 P’1 P9 P’4 P4 P5 P’6 P7 P5 P6
P’3 P2 P’1 P9 P8
设备坐标系
(Device coordinate system--DC) 与图形设备相关联的坐标系叫设备坐标系。
局部坐标系
(Local Coordinates System--LC)
局部坐标系又称为符号坐标系,是在定义图形 时,采用相对于物体的坐标系,使图形描述简单。
规格化设备坐标系
(Normal Device Coordinates System--NDC)
x , y
r t
x , y
l b
2、多边形窗口:
由窗口多边形的顶点坐标串来定 义 。即 ( xi , yi ) i 0,1, , n 1
(二)点的裁剪
判断点P(x,y)在裁剪窗口(矩形)内(可见)、 或在窗口外(不可见)。
判别式:
xl yb

x
y

xr


yt
(三)直线线段的裁剪
相关主题