二维图形的裁剪优秀课件

合集下载

二维图形裁剪

二维图形裁剪

te ∈[0,1]
P ( x0 , y0 ) P ( x1 , y1 ) 和矩形窗口下边的交点满足方程组 0 1 x0 + tl ( x1 - x0 ) = xmin + te ( xmax - xmin ) tl ∈[0,1] te ∈[0,1] y0 + tl ( y1 - y0 ) = ymin
P0在窗口内?

Y
P1在窗口内? N 求交点I, P0I既为 可见部分 Exit
Y

如何判断线段是 否显然不可见? 直线与窗口边如 何求交?
N P1在窗口内? Y P=P0 P0=P1 P1=P N P0P1显然不可见? Y N
P0P1完 全可见 Exit
N
P0P1与窗口有交? Y 求交点I0、I1, I0I1既为可见部分 Exit
18
2. Cohen-SutherLand算法-原理

如何判定应该与窗口的哪条边求交呢?

编码中对应位为1的边。
1000
1001
1010
0001
0000
0010
0101
0100
0110
19
2. Cohen-SutherLand算法-原理

按照左、右、下、上的顺序计算线段 P1(x1,y1)P2(x2,y2)与窗口边界的交点:
20
else if(BOTTOM&code !=0)
else if(TOP & code !=0)
2. Cohen-SutherLand算法-描述
BOOL done,draw; /*done: 完成;draw: 可见;*/ Unsigned char code1,code2; /*端点1,端点2的编码*/ While (!done) { if (判断code1,code2,若为第一种情况) { done = TRUE; draw = TRUE; } else if (为第二种情况) { done = TRUE; draw = FALSE; } else if (检查code1 ,若在窗口内) { 交换端点及端点的编码;以左,右,下,上的次序对端 点1进行判断及求交;将交点的值赋给端点1 } }/*End of while*/

计算机图形学-二维图形变换与裁剪ppt课件

计算机图形学-二维图形变换与裁剪ppt课件
18
基本几何变换——比例变换
比例变换是指对P点相对于坐标原点沿x方向放 缩Sx倍,沿y方向放缩Sy倍。 其中Sx和Sy称为比例系数。
Y
P'(4,3) P(2,1)
X
比例变换(Sx=2,Sy=3)
以坐标原点为缩放参照点 不仅改变了物体的大小和形状,也改变了位置(离原点的距离 )
19
基本几何变换——比例变换
21
基本几何变换——旋转变换
二维旋转是指将p点绕坐标原点转动某个角度 (逆时针为正,顺时针为负)得到新的点p’ 的重定位过程。
P' r θ r
α
图 旋转变换
22
Y
P X
基本几何变换——旋转变换
ቤተ መጻሕፍቲ ባይዱ
P' r P X
推导: α x r cos y r sin 极坐标: 逆时针旋转θ 角
P P T
27
规范化齐次坐标——平移变换矩阵
平移:
x 'y ' x y T xT y

1 0 0 x' y' 1x y 1 0 1 0 T T 1 x y
28
规范化齐次坐标——比例变换矩阵
比例:
S 0 x x ' y ' x y 0 S y
16
基本几何变换——平移变换
平移 将P点从一个坐标位置 移到另一个坐标位置的 重定位过程。
T P Tx
P' Ty
Y
X
图 平移变换
17
基本几何变换——平移变换
推导:
x' x Tx y ' y Ty

CG11-二维图形裁剪

CG11-二维图形裁剪

二维裁剪:线段裁剪 线段裁剪处理的基础有两个方面:
● 对象裁剪方法 ● 其它裁剪方法
– 尤其是对不能确定的线段,要计算 它与裁剪边界的交点,再通过对线 段的端点进行“内 - 外检测”来处 理线段。
裁剪
裁剪后
线段裁剪举例
☆二维裁剪定义 线段P1P2 ☆点的裁剪 由下端点 P1 开始,依次按左、右、 P2 ☆线段裁剪 上、下边界对 P1 检查,发现端点位 ● 线段裁剪举例 P2’ ◘ 算法举例 于裁剪窗口下。
裁剪窗口
二维裁剪时机选择
☆二维裁剪定义
◘ 二维裁剪时机
裁剪算法可用于世界坐标系中, 世界坐标系下的裁剪只有窗口内的部分映射到设备 空间中,而将落在窗口外的图形部分删除。
☆点的裁剪 ☆线段裁剪 ● 线段裁剪举例 ● 线段编码裁剪 ● 梁 -Barsky 裁 剪 ● NLN直线裁剪 ● 非矩形窗口裁
基本认识:裁剪窗口是二维对象;线段是一维对 象,两个对象维数不同不便比较。 解决思路:将待裁剪线段及裁剪矩形窗口均看作 点集,那么,裁剪结果即为两点集的交集。
解决办法:
设:P1P2所在直线为L; 记:该直线(或其延长线)与裁剪窗口的两交点 为Q1Q2,称为Q1Q2诱导窗口,它是一维的。 P1P2 关于矩形窗口的裁剪结果与 P1P2 关于诱 导窗口的裁剪结果是一致的
◘ 区域码生成 ◘ 内外点判断 ◘ 算法举例 ◘ 算法举例(续)
– 根据线段端点的区域码,可快速判断线段是否完全在裁 剪窗口内或外:
完全在窗口边界内的线段两个端点的区域码均为0000;
两个端点区域码同样位置都为 1的线段完全在裁剪矩形外。
– 测试线段更好的方法是对两个端点的区域码进行逻辑与 操作:

7、二维裁剪li

7、二维裁剪li

要点:每一条线段各5分,其中,线段两端点编码正 确1分,严格按照裁剪算法步骤进行裁剪4分。
中点分割法(1)---近似求解

用两个端点的坐标与窗口参数x 、 x 、 y 、 y 的关 系判断线段是否完全不可见,(类似前节首先编码)。
L R T B
p0
p0
p0
A
pm B p1 pm
p1
p1

1.
从p0出发寻找最近可见点p 若p0可见,不用找了p = p0 若p0不可见,取中点pm=(p0+p1)/2

某种作物
行政区划
Weiler-Atherton算法

主多边形为A,裁剪多边形为B。约定多边 形外部边界的顶点顺序取逆时针方向,内 部边界的顶点顺序取顺时针方向。保持多 边形区域位于有向边左侧。
P4 P0 P’1 P’0 P1 P’2 P’3 P3
P2
Weiler-Atherton算法
Q0
主多边形A为: P0P1P2…P0; 裁剪多 边形B 为:Q0Q1Q2…Q0。 建立主多边形和裁剪 多边形顶点表,分别 依次排列主多边形和 裁剪多边形顶点。
内侧 S 外侧 内侧 外侧 内侧 外侧 P S 内侧 P i 外侧 S
P
S
i
P
输出后点
输出交点
不输出
输出交点和后点
Weiler-Atherton算法
该算法用于多边形裁剪多边形 被裁剪多边形称为主多边形,裁剪窗口称 为裁剪多边形 多边形裁剪多边形在地理信息系统中应用 广泛。如统计某行政区某种作物面积
0000
0010
0110
Cohen-Sutherland算法(3)

第五章 二维图形的裁剪

第五章 二维图形的裁剪
2010-7-21 计算机图形学 8
5.2.3 Cohen-Sutherland线段裁剪 线段裁剪
它的大概步骤如下所述. 它的大概步骤如下所述. 步骤1 判断线段的两个端点是否都在窗口内,如果是, 步骤 判断线段的两个端点是否都在窗口内,如果是, 则线段完全可见,显示该线段,裁剪结束; 则线段完全可见,显示该线段,裁剪结束;否则进入步 骤2 . 步骤2 判断线段是否为显然不可见,即线段的两个端 判断线段是否为显然不可见, 步骤 点均落在窗口某边所在直线的外侧,如果是, 点均落在窗口某边所在直线的外侧,如果是,删除该线 裁剪结束;否则进入步骤3. 段,裁剪结束;否则进入步骤 . 步骤3 求线段与窗口边所在直线的交点, 步骤 求线段与窗口边所在直线的交点,这个交点将待 裁剪的线段分成两部分,其中一部分显然不可见, 裁剪的线段分成两部分,其中一部分显然不可见,删除 对余下的另一部分线段重复步骤1, ,直至结束. 之;对余下的另一部分线段重复步骤 ,2,直至结束.
(d) 关于窗口右边裁剪
2010-7-21
(e) 关于窗口下边裁剪
16
计算机图形学
5.3.2 Weiler-Atherton算法 算法
在实际应用中,不仅待裁剪多边形是任意的,而且 在实际应用中,不仅待裁剪多边形是任意的, 要求裁剪窗口也需要是任意的,如图5.13所示. 所示. 要求裁剪窗口也需要是任意的,如图 所示
P5 P4 P3
P 1
P2
(a) 待裁剪多边形
(b) 关于窗口左边裁剪
(c) 关于窗口上边裁剪
2010-7-21
计算机图形学
15
5.3.1 Sutherland-Hodgman算法 算法
经窗口的右边裁剪后, 经窗口的右边裁剪后,得到多边形 PPPPPPPP P ,如图 0 1 2 3 4 5 6 7 0 5.12(d)所示;经窗口的下边裁剪后,得到最终的结果多边形 所示; 所示 经窗口的下边裁剪后, P PP P P P P P P ,如图 如图5.12(e)所示. 所示. (e)所示 0 1 2 3 4 5 6 8 0

计算机图形学 第三章 二维图形的裁剪概述

计算机图形学 第三章 二维图形的裁剪概述

3.2.3 梁友栋-Barsky裁剪算法
式中,Δx=x2-x1,Δy=y2-y1,参数u在0~1 之间取值,P(x,y)代表了该线段上的一个 点,其值由参数u确定,由公式可知,当u=0 时,该点为P1(x1,y1),当u=1时,该点 为P2(x2,y2)。如果点P(x,y)位于由 坐标(xwmin,ywmin)和(xwmax,ywmax)所 确定的窗口内,那么下式成立: xwmin≤x1+ u· Δx≤xwmax ywmin≤y1+ u· Δy≤ywmax(3-10)
3.2.1 Cohen-Sutherland算法
► Code(int ►{
x,int y,int *c)
*c=0; if(y>ymax) /*(xmin,ymin)和(xmax,ymax) 为窗口左下角、右上角坐标。*/ *c=*c|0x08; else if(y<ymin) *c=*c|0x04; if(x>xmax) *c=*c|0x02; else if(x<xmin) *c=*c|0x01; }
► 根据直线两点式方程:

2)
(3-
3.2 线段的裁剪
► 整理后得通用交点公式: ►
(3-3)
► ►
1、与上边界的求交公式: (3-4)
3.2 线段的裁剪
► ►
2、与下边界的求交公式:
(3-5)

► ►
3、与右边界的求交公式:
(3-6) 4、与左边界的求交公式:

(3-7)
3.2.1 Cohen-Sutherla2、判别 根据C1和C2的具体值,可以有三种情况: (1)C1=C2=0,表明两端点全在窗口内,因而 整个线段也在窗内,应予保留。 (2)C1&C2≠0(两端点代码按位作逻辑乘不为 0),即C1和C2至少有某一位同时为1,表明两端点 必定处于某一边界的同一外侧,因而整个线段全在 窗外,应予舍弃。 (3)不属于上面两种情况,均需要求交点。

计算机图形学 第6章 二维裁剪PPT课件

计算机图形学 第6章 二维裁剪PPT课件

若(x1,y1)在5区,且ys>yt ,则线段与窗口无交点,无 输出线段,过程就此结束。
若(x1,y1) 在3区.且ys<yb ,则线段与窗口无交点,无 输出线段,过程就此结束。
28.11.2020
华东交大信息学院软件教研室
11
A
A
A A
28.11.2020
华东交大信息学院软件教研室
12
若ys<yb (在5区),则:
如果线段不能通过上述两种测试判
断为保留或舍弃,则必须求出线段与窗 1001 1000 1010
口边界线的交点,即分割线段,舍弃在
窗口外同侧的部分线段,对留下的线段
窗口
重复进行上述对留下的线段重复进行上 0001 0000 0010
述两种情况的判断,直到留下的线段符
合上述两种情况之一为止。
0101 0100 0110
28.11.2020
华东交大信息学院软件教研室
8
我们以图的线段AB为例来说明,该裁剪算法的步骤 如下:
①排斥性测试。 若线段满足下述的四个条件之一,即:
– max(x1, x2)≤xL; – min(x1, x2)≥xr; – max(y1, y2)≤yb; – min(yl, y2) ≥yt;
则线段必定完全位于窗口之外,无输出线段,过程就 此结束。
第6章 裁剪
6.1 直线段的裁减算法 6.2 多边形裁剪 6.3 字符裁剪
28.11.2020
华东交大信息学院软件教研室
1
6.1 直线段的裁减算法
二维裁剪及裁剪处理工作:
• 窗口内外的判断;

计算图形元素与窗口边界的交点; 判断图形元素在窗口内外的原则:

图形学之二维裁剪37页PPT

图形学之二维裁剪37页PPT
Ni·(p(t)-Ai)>=0, i=0,…,k, 0≤t ≤1. 即:
Ni·(P1-Ai)+ Ni·(P2-P1) t>=0可得:ti=… 线段可见的交点参数:
t1=max{0,max{ti: Ni·(P2-P1) >0}} t2=min{1,min{ti: Ni·(P2-P1)<0}} 若 t1<=t2, [t1,t2]是可见线段的交点参数
Graphics Lab.PKU
14
5.1.6 Liang-Barsky算法
看作点集之间的交集,即为裁剪结果。 Q0Q1为诱导窗口,一维窗口,二维裁剪
简化成一维裁剪。
2020/5/26
Graphics Lab.PKU
15
一维裁剪问题 P0P1至少部分可见的
充要条件是
Max(0,t0)<=min(1,t1) 且可见部分的参数区
2020/5/26
Graphics Lab.PKU
4
线段端点编码,区域的编码值,端 点在窗口内部,只要编码值为0。
两个端点的编码的逻辑“与”非0时, 落在窗口某边外侧。
窗口与线段求交,验证两端点各位 编码值,相异则求交。
2020/5/26
Graphics Lab.PKU
5
最坏情形,线段求交四次。 求次测试顺序固定, 由交点编码可判断线段的可见性。
3.用斜率判P1所在区域 4.求交点,确定线段可见部分。
特点:效率较高,但仅适合二维矩形窗口。
2020/5/26
Graphics Lab.PKU
10
2020/5/26
Graphics Lab.PKU
11
5.1.5中点分割法
想法:从P0点出发找出距P0最近的可见 点,从P1点出发找出距P1最近的可见点。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为提高效率,算法设计时应考虑: (一)快速判断情形(1)(2); (二) 设法减少情形(3)求交次数和每次求交时所需的计 算量。
2020/10/18
计算机科学与技术学院
8
➢ 实交点是直线段与窗口矩形边界的交点。 ➢ 虚交点则是直线段与窗口矩形边界延长线或直线
段的延长线与窗口矩形边界的交点。
A
实交点
(xmax,ymax )
xm in xxmax
yminyymax
➢ 裁剪窗口(Xmin,Xmax,Ymin,Ymax)
是世界坐标系的窗口边界或视区边界
➢ 应用举例
(xmin,ymin )
➢ 爆炸场景或海面泡沫的显示
➢ 问题:对于任何多边形窗口,如何判别?
2020/10/18
计算机科学与技术学院
4
直线段裁剪
➢ 包含性测试
若线段满足:xl≤x1≤ xr, yb≤y1≤ yt,则线段的始点在0 区,也即线段可见段的起点为:
xs = x1 , ys= y1
2020/10/18
计算机科学与技术学院
13
➢求交点,并判断 I. 若x1<xl,则:
线段的起点坐标可能 位于3区、4区、5区。
3
4 (x1,y1)
而新起点的坐标可能在 直线y= yb和线段的交点上 直线y= yt和线段的交点上 直线x= xl和线段的交点上
➢ 待裁剪线段:18
计算机科学与技术学院
5
直线段裁剪
➢ 待裁剪线段和窗口的关系
(1)完全落在窗口内,线段完全可见 (2)完全落在窗口外,显然不可见 (3)与窗口边界相交,线段至少有一端点在窗口之外,但非
显然不可见
2020/10/18
计算机科学与技术学院
5 xl
2020/10/18
计算机科学与技术学院
1
6
yt
(x2,y2)
0
7
yb
2
8
xr
14
第一种情况:
xsx 1(yby1)x (2x 1)/( y2y1) ysyb
此时,若xl≤xs≤ xr 则(xs ys)为有效新起点。
第二种情况:
xsx1(yt y1)x (2x1)/( y2y1) ysyt
10
直接求交算法
直线与窗口边 都写成参数形 式,求参数值。
2020/10/18
计算机科学与技术学院
11
矢量裁剪法
➢ 算法思想
先从线段的一个端点出发进行判断或进行求交运算,所得交点 坐标保存在(xs,ys)中,然后再从线段的另一个端点出 发用前面的判断及其求交运算求得交点坐标(x,y),最后 只输出两个交点间的线段。
位于6区、7区、8区。
4
而新起点的坐标可能在 直线y= yb和线段的交点上 直线y= yt和线段的交点上 直线x= xr和线段的交点上
5 xl
1
6
yt
0
7 (x1,y1)
yb
2
8
xr
2020/10/18
计算机科学与技术学院
16
第一种情况: x ys s x y1 b(yby1)x (2x1)/(y2y1) 此时,若xl≤xs≤ xr 则(xs ys)为有效新起点。
6
要确定一条直线段上位于窗口内的可见段,只 须求出它的两个位于窗口内的可见端点即可。 ➢ 算法的基本思想
把所有的直线按照它和窗口的关系分类,不同 的直线使用不同的处理方法确定其可见部分。
2020/10/18
计算机科学与技术学院
7
直线裁剪算法的主要步骤: 首先将不需要裁剪的直线挑出,并删去其中在窗外的 直线; 其次,对其余直线,逐条与窗框求交点,并将窗外部 分删去
二维图形的裁剪优秀课件
二维裁剪
➢ 识别图形在指定区域内和区域外的部分的过程称为裁剪算法, 简称裁剪(clipping)
➢ 二维窗口是投影平面上的一个矩形。一般来说,这个矩形的边 和投影平面上的坐标轴平行,图形在窗口内的部分被显示出来, 窗口外的部分被裁剪掉了。平面上的图形受该矩形的裁剪称为 二维裁剪。
第二种情况: x ys s x y1 t (yt y1)x (2x1)/(y2y1) 此时,若xl≤xs≤ xr 则(xs ys)为有效新起点。
实交点 H
I 虚交点
G
F
窗口
虚交点 JD
实交点
E
B
虚交点
C
图6-25 实交点与虚交点
2020/10/18
计算机科学与技术学院
9
直线的剪裁算法
直接求交算法
矢量裁剪法
Cohen-Sutherland算法
中点分割算法
梁友栋-Barsky算法
2020/10/18
Nicholl-Lee-Nicholl算法
计算机科学与技术学院
➢ 用窗口的四条边界的直线将窗口分为9个区。
3
1
6
yt
(x2,y2)
4
0
7
(x1,y1)
yb
5
2
8
2020/10/18
x x 计算机科学与技术学院
l
r
12
➢ 排斥性测试
若线段满足下述四个条件之一时:
max(x1,x2)≤xl min(x1,x2)≥xr max(y1,y2)≤yb min(y1,y2)≥yt 则线段必定位于窗口之外,无输出线段。
此时,若xl≤xs≤ xr 则(xs ys)为有效新起点。
第三种情况:xxl
yyl (y1y0)x (l x0)/x (1x0)
此时,若yb≤ys≤ yt 则(xs ys)为有效新起点。
三种情况都不满足,则此线段不在窗口区内。
2020/10/18
计算机科学与技术学院
15
II. 若x1>xr
3
线段的起点坐标可能
2020/10/18
计算机科学与技术学院
2
➢ 裁剪的应用
➢ 从定义的场景中抽取用于观察的部分
➢ 在三维视图中识别出可见面
➢ 防止线段或对象的边界混淆
➢ 用实体造型来创建对象
➢ 显示多窗口的环境
➢ 允许选择图形的一部分来进行拷贝、移动或删除等绘图操作
➢ 裁剪算法类型
➢ 图形裁剪与窗口——视图变换的先后
➢ 窗口边界裁剪 ➢ 视区边界裁剪
➢ 图形生成与裁剪先后
➢ 先生成后裁剪
➢ 先裁剪后生成
2020/10/18
计算机科学与技术学院
3
点的裁剪
➢ 图形裁剪中的最基本的问题。
➢ 假设裁剪窗口为一个在标准位置的矩形,即边与坐标轴平行的
矩形,由上(y=ymin)、下(y=ymax)、左(x=xmin)、右
(x=xmax)四条边描述。 ➢ 点(x, y)在窗口内的充分必要条件是:
➢ 直线段裁剪算法是复杂图形裁剪的基础。复杂的曲线可以通过 折线段来近似,从而裁剪问题也可以化为直线段的裁剪问题。
➢ 裁剪的目的
判断图形元素是否落在裁剪窗口之内并找出其位于内部的部分
➢ 裁剪处理的基础
➢ 图元关于窗口内外关系的判别 ➢ 图元与窗口的求交
➢ 假定条件
➢ 矩形裁剪窗口:[xmin,xmax]X[ymin,ymax]
相关文档
最新文档