计算机图形学基础教程(Visual C++版)第05章 二维图形变换与裁剪(清华大学出版社 孔令德)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

14
窗口和视区及窗视变换
在观察坐标系中定义的确定显示内容的区域称 为窗口(Window)
窗口内的图形是用户希望在屏幕上输出的,窗 口是裁剪图形的标准参照物 在设备坐标系中定义的输出图形的区域称为视 区(Viewport) 视区和窗口的大小形状可以不相同。
Y
wyt 窗口 wyb wxl wxr X vyb vxl vxr X vyt 视区
“取景器”=窗口
视区1 视区2 (viewport)
二维观察
变焦距效果
3
2
1
1 (b)与窗口对应 的视区1
2 (c)与窗口对应的 视区2
3 (d)与窗口对应 的视区3
(a) 原图及变化的窗口
变焦距效果(窗口变、视区不变)
20
二维观察
整体放缩效果
(d)视区3 (c) 视区2 (b) 视区1 (a) 原图及窗口
1 O
x O
1
y
规格化设备坐标系
设备坐标系
由于规格化设备坐标系能统一用户各种图形的 显示范围,故把用户图形变换成规格化设备坐 标系中的统一大小标准图形的过程叫作图形的 逻辑输出。 把规格化设备坐标系中的标准图形送到显示设 备上输出的过程叫作图形的物理输出。 有了规格化设备坐标系后,图形的输出可以在 抽象的显示设备上进行讨论,因而这种图形学 又称为与具体设备无关的图形学。
Y


图6-17
y观 察
用户坐标系中旋转的窗口
yNDC
X
y用户
窗口
1 视区
x观

1 xNDC (b)规格化设备坐标系
x用户 (a)观察坐标系
“窗口”
在计算机图形学术语中,窗口最初是指要观察 的图形区域。 但是随着Windows的出现,窗口概念已广泛用于 图形系统中,泛指任何可以移动,改变大小、 激活或变为无效的屏幕上的矩形区域。 在本章中,窗口回归到其的原始定义,是在观 察坐标系中确定输出图形范围的矩形区域。
30
裁剪——点的裁剪
点是构成图形的基本元素 点的裁剪:
wxl x wxr, 且wyb y wyt
把图形全部打散成点进行裁剪?
31
二维直线段的裁剪
直线的裁剪是二维图形裁剪的基础 裁剪的实质是判断直线是否与窗口相交,如相 交则进一步确定位于窗口内的部分
直接求交算法;
编码原理
为了快速判断线段与窗口的关系,采用编码方法 延长窗口四条边,形成9个区域,每个区域赋予 一个四位二进制代码,称为区域编码(Region Code,RC),用来标识直线端点的位置
1001
wyt 窗口 0000 wyb
1000 0000 0100
1010 0010 0110
39
0001 0101
wyt (xw,yw) 0000 wyb
vyt (xv,yv) 0000 vyb
wxl
wxr
vxl
已知窗口内的一点P的坐标(xw,yw),求视区中 对应点P’的坐标(xv,yv) 这属于相对于任一参考点的二维几何变换
vxr
变换步骤为:
1.将窗口左下角点(wxl,wyb)平移到观察坐标系 原点
Y
窗口和视区及窗视变换
图形输出需要进行从窗口到视区的变换,只有 窗口内的图形才能在视区中输出,并且输出的 形状要根据视区的大小进行调整,这称为窗视 变换(Window Viewport Transformation, WVT)。 在二维图形观察中,可以这样理解,窗口相当 于一扇窗户,窗口内的图形是希望看到的,就 在视区中输出,窗口外的图形不希望看到,不 在视区中输出,因此需要对窗口中输出的二维 图形进行裁剪。
整体放缩效果(窗口不变、视区变)
21
二维观察流程
引入了观察坐标系和规格化设备坐标系后,图 形输出的步骤:
应用 窗口到视 用户坐 观察坐 视图区从 程序 区(规范 标系到 标系下 规范化坐 在图形 VC 到图 WC VC 化设备坐 NDC DC 观察坐 对窗口 标系到设 设备上 形的 标系中定 标系间 进行裁 备坐标系 输出 用户 义)的变 的变换 剪 的变换 坐标 换
区域编码
1001 0001 0101
1000 0000 0100
1010 0010 0110
Cohen-Sutherland算法
裁剪一条线段时,先求出直线段端点p1和p2的编 码code1和code2,然后判断: ① 若code1|code2=0,两个端点的区域编码都为 零,说明直线两端点都在窗口内,“简取”
跨入计算机殿堂的入门篇
计算机图形学 施智平
shizhiping@gmail.com
二维图形扫描转换作业
试写出图示多边形的边表和扫描线y=4的 有效边表。
y 7 6 5 4 3 2 1
P5 P3 P4 P0 P6 P1 P2
1 2 3 4 5 6 7 8 x
O
图4-33 多边形
二维图形变换作业
如图所示,求A(4,1)、B(7,3)、 C(7,7)、D(1,4)构成的四边形绕 P(5, 4)逆时针旋转45°的变换矩阵和变换后图形的 顶点坐标。
34
直接求交算法
求交点: p6 把边界坐标代入 直线方程 对端点和交点进行 内外判断
y wyt
p1 p3
窗口
p4
wyb o wxl
p5
p2
wxr x
实交点:直线段与窗口矩形边界的交点 虚交点:处于直线段延长线或窗口边界延长线 上的交点。
直接求交算法
特点 每条相交的线段需要计算4个交点 内外判断:4个交点+2个端点
窗视变换公式和矩阵为:
[ xv yv 1] [ xw yw
Sx 0 0 1] 0 Sy 0 vxl wxl S x vyb wyb S y 1
vxr vxl a S x wxr wxl b vxl wxl a c S y vyt vyb wyt wyb d vyb wyb c
36
Cohen-Sutherland直线裁剪算法
编码原理 裁剪步骤
交点计算公式
Cohen-Sutherland算法原理
Cohen-Sutherland直线裁剪算法是最早流行的 编码算法
思想:线段P1P2分为三种情况:
若整条线段都在窗口内,应“简取”之 若整条线段都在窗口外,应“简弃”之 若与窗口相交,求交点,把线段分为两段,其中一 段完全在窗口外,可弃之;另一段重复上述处理
y
8 7 6 5 4 3 2 1
C
D P B A 4
o
1
2
3
5
6
7
8
x
图形裁剪
4
图形裁剪
5
计算机内部存储的图形可以非常大,而屏幕显 示的可以只是图形的一部分 在放大显示图形的一部分区域时,必须确定图 形中哪些部分落在显示区内,哪些部分落在显 示区外,以便显示落在显示区的部分图形。这 个选择过程称为裁剪。 在进行裁剪时,画面中对应于屏幕显示的那部 分区域称为窗口
x O
y
5-19 设备坐标系
图形学中常用的坐标系
规格化设备坐标系(Normalized Device Coordinate,NDC) 将设备坐标系规格化到(0.0,0.0)到(1.0,1.0)的 范围内而定义的坐标系。 规格化设备坐标系独立于具体输出设备。 一旦图形变换到规格化设备坐标系中,只要作一个简 单的乘法运算即可映射到具体的设备坐标系中。
Cohen-Sutherland算法(重点)
中点算法
二维直线段的裁剪
已知条件: (1)窗口边界wxl,wxr,wyb,wyt的坐标值 (2)直线段端点p1p2的坐标值x1,y1,x2,y2
y wyt 窗口 wyb o wxl wxr x
33
二维直线段的裁剪
对于矩形窗口,任何直线至多有一段处于窗口 之内 直线与窗口的关系 线段完全在窗口内,端点在内部 线段完全在窗口外,端点交点都在外部 线段部分在窗口内,部分在窗口外,端点和 交点部分在内部,部分在外部
T平移 0 0 1 0 1 0 wxl wyb 1
2. 对原点进行比例变换,使窗口的大小和视区大小 相等,将窗口变换为视区
T比例 S x 0 0 0 Sy 0 0 0 1
其中
vxr vxl S x wxr wxl vyt vyb S y wyt wyb
Y
(xv,yv) 视区
wyb
vxr (b)视区中的点
X
图6-23
窗口到视区的变换
24
窗口到视区的变换
窗口内的点(xw,yw)映射到相对应的 视区内的点(xv,yv)需进行以下步骤:
① 将窗口左下角点移至观察坐标系的坐标原点 ② 针对原点进行比例变换 ③ 进行反平移
25
窗视变换矩阵
窗口和视区的边界定义如图所示
wxl
wxr
编码原理
为保证窗口内直线端点的编码为零,四位二进制代码编码 规则定义如下:
第1位:端点在窗口左侧,即x<wxl, 则RC1=1,否则RC1=0。 1000 1010 1001 第2位:端点在窗口右侧,即x>wxr, wyt 1000 1010 1001 窗口 则RC2=1,否则RC2=0。 0000 0001 0010 第3位:端点在窗口下侧,即y<wyb, 0001 0000 0010 wyb 则RC3=1,否则RC3=0。 0101 0100 0110 第4位:端点在窗口上侧,即y>wyt, 0101 wxl 0100 wxr 0110 则RC4=1,否则RC4=0。
二维观察流程
22
用户坐标系到观察坐标系的变换
用户坐标系到观察坐标系的变换由两个变换步 骤合成: 将观察坐标系原点移动到用户坐标系原点; 绕原点旋转使两坐标系重合
y观察 y用户
窗口 x用户
x观 察
y用户
y观 察
窗口 x观察 x用户
(b)
旋转变换
23
窗口到视区的变换
Y
wyt
vyt (xw,yw) 窗口 vyb wxl wxr (a)窗口中的点 X vxl
写成方程为:
xv S x xw vxl wxl S x yv S y yw vyb wyb S y
则窗视变换的展开式为:

xv a x w b yv c y w d
裁剪
图形变换到观察坐标系下,需要按照窗口进行 裁剪,即只保留窗口内的那部分图形,去掉窗 口外的图形 假设窗口是标准矩形,即边与坐标轴平行的矩 形,由 上(y=wyt)、 下(y=wyb)、 左(x=wxl)、 右(x=wxr) 四条边描述
y
z
O
x
O x
y
图形学中常用的坐标系
观察坐标系(View Coordinate ,VC) 依据观察窗口的方向和形状在用户坐标系中定 义的坐标系称为观察坐标系
y
y
x
O
x
பைடு நூலகம்
图形学中常用的坐标系
设备坐标系 (Device Coordinate ,DC) 显示器等图形输出设备自身都有一个坐标系称 为设备坐标系,也称为屏幕坐标系。 设备坐标系是二维坐标系,原点位于屏幕左上 角,x轴垂直向右,y轴垂直向下,基本单位为 像素。
3. 进行反平移,将视区的左下角点平移到设备坐标 系的(vxl,vyb)点
T反平移
0 0 1 0 1 0 vxl vyb 1
0 Sy 0 0 1 0 0 0 0 1 0 1 vxl vyb 1
因此,窗视变换矩阵为:
T T平移 T比例 T反平移 0 0 S x 1 0 1 0 0 wxl wyb 1 0
6
本节主要内容
二维观察 线段裁剪
直接求交算法; Cohen-Sutherland算法(重点,算法实现) 中点算法
多边形裁剪
Sutlerland_Hodgman算法(难点,算法实现) Weiler-Athenton算法
二维观察
图形学中常用的坐标系 窗口和视区及窗视变换 窗视变换矩阵
计算机图形学中常用的坐标系
用户坐标系 观察坐标系 设备坐标系 规格化设备坐标系
9
图形学中常用的坐标系
用户坐标系(User Coordinate ,UC) 用户定义原始图形所采用的坐标系称为用户坐 标系。 根据应用的需要可以选择直角坐标系、圆柱坐 标系、球坐标系以及极坐标系等等。
相关文档
最新文档