第 7 章 图形变换
DESCRIPTION
第 7 章 图形变换. 7.1 图形变换的数学基础 7.2 窗口视图变换 7.3 图形几何变换 二维几何变换 三维几何变换 7.4 投影变换 7.5 视向变换. 第 7 章 图形变换. 本节要求 : 本节的 教学目标 :弄懂图形变换的原理,尝试图形变换的应用。 本节的 教学效果 :你可以让一个五角星在计算机屏幕上放大缩小并旋转起来。参考例题,可以独立编写图形变换的 C 程序。 本节的 教学要求 :理解教材(孙家广)第 366 页几何变换矩阵的四个子矩阵的作用。陈传波教材的 P146 公式 6 - 1. - PowerPoint PPT PresentationTRANSCRIPT
1
第 7 章 图形变换
7.1 图形变换的数学基础7.2 窗口视图变换7.3 图形几何变换 二维几何变换 三维几何变换7.4 投影变换7.5 视向变换
2
第 7 章 图形变换 本节要求:1. 本节的教学目标:弄懂图形变换的原理,
尝试图形变换的应用。2. 本节的教学效果:你可以让一个五角星在
计算机屏幕上放大缩小并旋转起来。参考例题,可以独立编写图形变换的 C 程序。
3. 本节的教学要求:理解教材(孙家广)第366 页几何变换矩阵的四个子矩阵的作用。陈传波教材的 P146 公式 6 - 1
3
第 7 章 图形变换 思考:• 是什么? (What) 图形变换是计算机图形学的重
要内容,它讨论图形的放大、缩小、旋转、错切等变换。图形变换主要讨论变换矩阵。
• 为什么? (Why) 为什么要讨论变换矩阵,因为当对图形进行各种变换时,图形中的点会发生变化,而点对应的矩阵也会发生变化。反过来,当矩阵发生变化时,它所代表的点和图形也发生变化。所以变换了矩阵就变换了图形。
• 如何做? (How) 图形变换的方法是使用矩阵变换。所以本节的重点是讨论使用什么样的变换矩阵和如何进行变换矩阵的运算。
4
第 7 章 图形变换 思考:• Photoshop 中的滤镜是如何实现图形变换的?
“滤镜 \ 扭曲 \ 切变”功能可以使得图形任意变形,它使用了图形学的“图形变换”算法
• Word 中的 3D 图形、旋转是如何实现的? 它使用了图形学的投影变换、旋转变换算法• 我们学习图形变换有什么用? ( 1 )自己开发应用软件时利用图形学图形变换算
法实现新功能。 ( 2 )更有效地使用和发挥 Photoshop 等应用软件
的功能。 ( 3 )讲授课程时易懂有深度,所谓知其然,知其
所以然。
5
几何变换 平移旋转 缩放错切
变换的分类
6
投影变换
正投影(三视图)
轴测投影透视投影
变换的分类
7
点的表示:二维图形中的点可以用坐标( x,y )来表示,也可以用矢量 [x,y] 来表示。
二维 行矢量 [x,y] 三维 行矢量 [x,y,z]二维 列矢量 三维 列矢量
图形的表示 用 nx2 或 nx3 矩阵来表示二维或三维图形上所有 n 个点。
二维空间上 三维空间上 的所有点 的所有点
图形与矢量
y
x
z
y
x
nn y
y
y
x
x
x
2
1
2
1
nnn z
z
z
y
y
y
x
x
x
2
1
2
1
2
1
8
为什么要用矩阵变换?因为: 当对图形进行各种变换时,图形中的点会发生变化,而点对应的矩阵也会发生变化。反过来,当矩阵发生变化时,它所代表的点和图形也发生变化。所以: 不容易实现的图形变换可以通过容易实现的矩阵运算来进行,通常将矩阵 P 乘以一个相应的变换矩阵 T ,从而得到新矩阵 P’ ,它代表变换后新图形上的各个点的坐标。
图形的变换
图形 矩阵 P
新矩阵 P’新图形
P× 变换矩阵 T (容易)图形变换(困难)
9
图形模式(固定坐标系模式)(讨论)变换前后点的坐标发生变化,但都是在同一坐标系中。
空间模式(活动坐标系模式)改变参照系,变换前后是相对不同坐标系的
变换方式
10
设有两个矢量
矢量和
z
y
x
v
v
v
V
数学基础 1/4
z
y
x
u
u
u
U
zz
yy
xx
vu
vu
vu
VU
11
数学基础 (2/4)
矢量的数乘
矢量的点积
性质
z
y
x
uk
uk
uk
Uk
zzyyxx vuvuvuVU
UVVU VUVU 0
00 UUU
12
矢量的长度
单位矢量:长度为 1 的矢量 矢量的夹角
矢量的叉积
数学基础 (3/4)222zyx uuuUUU
VU
VU
cos
zyx
zyx
vvv
uuu
kji
VU
13
数学基础 (4/4)矩阵
阶矩阵n 阶方阵零矩阵行向量与列向量单位矩阵矩阵的加法 矩阵的数乘 矩阵的乘法 矩阵的转置 矩阵的逆
m n
14
变换矩阵点 :变换矩阵 :
变换 :
变换后的点:
新矩阵 :
注意: x’ 项中有 x 和 y 分量, y’ 项中也有 x 和 y分量, 这意味着 x , y 共同 对新矩阵 P’ 产生作用。
TPP
dybxy
cyaxx
P=[x,y]
dc
baT
dybxcyaxdc
bayx
''' yxP
15
单位矩阵
单位矩阵:
由上式可见变换前后的坐标不变, 因此图形也不变,这是恒等变换。图形变换子程序中有: []×T ,当 T 改变时,则变换的结果也发生改变。绘图软件中常把变换矩阵的初始值设为单位矢量。提示:
注意变换矩阵的各个元素的作用。下课时总结出规律。
10
01
''10
01yxyxyx
16
比例变换 1/2比例变换:
则:
a 为 x 方向的比例因子, d 为 y 方向的比例因子。当 a=d 时, x,y 方向按相同比例放大(如红线)当 a≠d 时, x,y 方向按不同比例放大 ( 如绿线)。
dyy
axx
d0
0aT
''0
0yxdyax
d
ayx
17
比例变换 2/2
比例变换
以坐标原点为放缩参照点不仅改变了物体的大小和形状,也改变了它离原点的距离
TPP
y
x
b
aT
0
0
18
对 X 轴对称变换变换矩阵:
则:
图形对 x 轴进行对称变换
yy
xx
1-0
01T
''10
01yxyxyx
19
对 Y 轴对称变换对称变换:
则:
图形对 y 轴进行对称变换
yy
xx
10
01-T
''10
01yxyxyx
20
对原点对称变换对称变换:
则:
图形对坐标原点进行对称变换
yy
xx
1-0
01-T
''10
01yxyxyx
21
旋转变换 1/2旋转变换公式的推导X’= R cos ( α+θ ) = R cos α cos θ-R sin α sin θ = Xcos θ-YsinθY’= R sin (α+θ) = R cos α sin θ+R sin α cos θ = X sinθ +Y cos θ
绕坐标原点旋转 θ 角的变换矩阵为:
cos
sin
sinθ-
cosθR
cossinθ-
sincosθyx
22
旋转变换 2/2
旋转变换绕坐标原点旋转角度 编程时注意:逆时针 θ 为正,顺时针 θ 为负。见手稿 P3.3
PRP
cossin
sincosR
23
错切变换 1/4
错切变换也称为“剪切”, “错位”,“错移”变换。
错切变换使图形沿 x 轴,或沿 y 轴错位,直观效果位图形产生 x 或 y 方向的倾斜。错切变换:
1
1
c
bT
ybxy
cyxx
ybxcyxc
byxyx
1
1''
24
错切变换 2/4
1 。 x 方向错切 ( b=0, c≠0 )
分析:1 )图形各点的 y 坐标不变。(高度不变)2 ) x’ 为 x 和 y 的函数。3 ) c>0 ,则图形沿 +x 方向错切, c<0 ,则图形沿 -x 方向错
切见手稿 P3.4 的例子。见教材 P368 图 732 错切。
ycyxc
yxyx
1
01''
yy
cyxx
25
错切变换 3/4
2 。 y 方向错切 ( b ≠ 0, c = 0 )
分析:1 )图形各点的 x 坐标不变。(宽度不变)2 ) y’ 为 x 和 y 的函数。3 ) b>0 ,则图形沿 +y 方向错切, b<0 ,则图形沿 -y 方向错
切见手稿 P3.6 的例子。
ybxxb
yxyx
10
1''
ybxy
xx
26
错切变换 4/4
2 。 X , y 方向错切 ( b ≠ 0, c ≠ 0 )
分析:1 )图形同时向 xy 两个方向错切。2 ) x’ 为 x 和 y 的函数, y’ 为 x 和 y 的函数。3 ) b 与 c 均不为 0 ,见手稿 P3.7 的例子。
ybxcyxc
byxyx
1
1''
ybxy
cyxx
27
平移变换
平移变换例如:从 A 平移到 A’·
得到结果:
即:
平移变换 :
A
A’
l
m
myy
lxx
mlyxyx ''
TPP
28
平移变换的问题
发现问题:平移变换 : 的运算为加法,比例变换 : 的运算为乘法 .旋转变换 : 的运算为乘法 .复合变换: T=T1·T2 ·T3 ·T4 ·T5 的运算为乘法 .
分析问题:不同的变换使用了乘法和加法等不同算法,不利于程序的统一调用。如果能够将多种算法统一成一种算法,则编程变得方便。解决问题:采用齐次坐标技术可以使所有变换全都使用乘法,即如下的形式:
TPP T ·PP R ·PP
TPP
29
齐次坐标技术
齐次坐标表示法由 n+1 维向量表示一个 n 维向量采用了齐次坐标技术,图形变换才可以转换为表示图形的点集矩阵与某一变换矩阵相乘这一单一问题。从而可以借助计算机高速计算功能,快速得到变换后的图形。为高度动态的计算机图形显示提供了可能性。
齐次坐标表示法的优点便于变换合成便于硬件实现
30
齐次坐标表示的实现
给二维点增加一维,给变换矩阵增加一列。变换后的点也增加一列。
结果:平移变换也可以使用矩阵乘法来进行计算。
推广:二维 三维
1
1
0
0
1 mdybxlcyax
ml
dc
ba
yx
TPP
1yx
1zyx
31
齐次坐标的正常化 1/2
讨论:点没有唯一的齐次坐标表示齐次坐标的一般形式:
H=1 时,为:H=2 时,为:它们都表示二维空间点见右图中的红点。
z
y
x12
0
HHH YX
32
1yx
222 yx
32
齐次坐标表示的物理含义
只要 和 对应的元素成比例,
则它们对应于二维空间的同一个点。该点对应的齐次坐标为三维空间的一条直线。
该直线上的每一个点都对应于一个二维坐标点( x,y )。
111 hyx 222 hyx
2
1
2
1
2
1
hh
yy
xx
zhz
yhyxhx
h
h
h
33
齐次坐标表示的物理含义
齐次坐标表示法用 n+1 维表示 n 维图形的物理含义是:
x
z
y
1Z=1 平面
34
齐次坐标的正常化
小结: 只有 H=1 时,点的齐次坐标 x,y才与二维坐标的 x,y值相等。所以应当进行齐次坐标的正常化:
HHy
HHx
y
x
/
/
35
组合变换:一个复杂的变换可以转化为多个基本变换,这种方法叫做组合变换。
齐次坐标统一了图形变换的表示形式,为组合变换提供
了基础。
组合变换(级联)( 1/6 )
36
复合变换及变换的模式( 1/6 )
关于任意参照点 的旋转变换 θ
T=T1·T2 ·T3 (位移,旋转, - 位移)
P x yr r r( , )
1
010
001
00
1
yx
T
100
0cossin
0sincos
2 θθ
θθ
T
1
010
001
00
3
yx
T
37
复合变换及变换的模式( 2/6 )
关于任意参照点 的放缩变换
位移,缩放, - 位移
P x yr r r( , )
38
关于任意轴的对称变换 1/2关于任意轴的对称变换(平移 A1 ,旋转 A2 ,对称A3 , - 旋转 A4 , - 平移 A5 )
39
关于任意轴的对称变换 2/2
分析:步骤为:平移 l,m,旋转 θ ,对 x 轴的对称变换(这是目的),旋转 -θ ,平移 -l,-m,运算为: T=T1·T2·T3·T4·T5
解释:为了对称变换 T3必须先旋转变换 T2 ,为了旋转变换必须先平移变换 T1 。进行了对称变换后还应返回原始状态,故原路返回逆向旋转 T4 ,并逆向平移T5
注意:变换顺序影响结果先平移后旋转≠先旋转后平移。见手稿 P4.3
40
二维变换小结
陈传波教材 P147 有公式 6- 1 ,变换矩阵中共有 4 个子矩阵。abcd对图形作缩放、旋转、对称、错切变换,lm对图形作平移变换,qp对图形作投影变换,s 对图形作整体变换。acl对 x’起作用, bdm对 y’起作用, qps 对整体起作用。
sml
pdc
qba
yxyx 11''
41
三维几何变换
三维几何变换三维几何变换是二维几何变换的推广。三维几何变换在齐次坐标空间中可以用 4×4 的变换矩阵表示, (x,y,z) 点对应的齐次坐标为: (x,y,z,h) ,其中 h是不等于 0 的任意常数。变换矩阵:( P42 )(孙教材 P369)
snml
rjih
qfed
pcba
42
三维齐次坐标
三维齐次坐标(x,y,z) 点对应的齐次坐标为
标准齐次坐标 (x,y,z,1)右手坐标系
旋转轴 正的旋转方向x y->zy z->xz x->y
),,,( hzyx hhh
0,,, hhzzhyyhxx hhh
x
y
z
43
比例变换
比例变换
若 a =e =j 则: xyz 方向的 缩放比例相同,如图 1 。若 a≠e≠j 则:立体产生类似变形,如图 2 。
1000
000
000
000
j
e
a
T
z
yx
z
yx
44
全比例变换
全比例变换矩阵:
变换结果:
需要进行齐次坐标正常化
s
T
000
0100
0010
0001
szyx
s
zyx
000
0100
0010
0001
1
1'''1 zyxsz
sy
sx
45
对 xoy 平面的对称变换
变换矩阵:
立体对 xoy 平面对称时, x,y 坐标不变, z坐标变化。
1000
0100
0010
0001
T
z
yx
zz
yyxx
'
''
o
46
对 xoz平面的对称变换
变换矩阵:
立体对 xoz平面对称时, x,z坐标不变, y 坐标变化。
1000
0100
0010
0001
T
z
yx
zz
yyxx
'
''
o
47
对 yoz平面的对称变换
对 yoz平面的对称变换:
立体对 yoz平面对称时, y , z坐标不变, x坐标变化。
1000
0100
0010
0001
T
zz
yyxx
'
''
yx
z
o
48
绕 x 轴旋转变换
旋转变换绕 x 轴
1000
0cossin0
0sincos0
0001
)(
x
R
z
yx
z
yx
绕 x 轴旋转
49
绕 y 轴旋转变换
旋转变换绕 y 轴
z
yx
z
y
x
绕 y 轴旋转
1000
0cossin
0010
0sin0cos
)(
y
R
50
绕 z轴旋转变换
旋转变换绕 z轴
z
yx
z
y
x
绕 z 轴旋转
1000
0100
00cossin
00sincos
)(
z
R
51
平移变换
平移变换
l,m,n 分别为 x,y,z 方向的平移量。
1
0100
0010
0001
),,(
nml
nmlT
z
yx
52
错切变换
错切变换错切变换是指立体沿 x,y,z三个方向产生错切变形,错切变换是斜轴测投影变换的基础。主对角线元素全为 1 ,第 4 行,第 4 列的其余元素全为 0 。 b,c,d,f,h,I中至少有一个不为 0 。分为 6种形式:1 沿 x 方向含 y 分量错切, 2 沿 x 方向含 z分量错切3 沿 y 方向含 x 分量错切, 4 沿 y 方向含 z分量错切5 沿 z方向含 x 分量错切, 6 沿 z方向含 y 分量错切
1000
01
01
01
1ih
fd
cb
zyx
zfycxz
izybxyhzdyxx
'
53
沿 x含 y 错切
沿 x含 y 错切
x 的值随着 y 的增大而增大。
1000
0100
001
0001
dT
zz
yydyxx
'
z
y
x
54
沿 x含 z 错切
沿 x含 z 错切
x 的值随着 z的增大而增大。
1000
010
0010
0001
hT
zz
yyhzxx
'
z
yx
55
沿 y含 x 错切
沿 y含 x 错切
y 的值随着 x 的增大而增大。
1000
0100
0010
001 b
T
zz
bxyyxx
'
z
yx
56
沿 y含 z 错切
沿 y含 z 错切
y 的值随着 z的增大而增大。
1000
010
0010
0001
iT
zz
izyyxx
'
z
yx
57
沿 z 含 x 错切
沿 z 含 x 错切
z的值随着 x 的增大而增大。
1000
0100
0010
001 c
T
cxzz
yyxx
'
z
yx
58
沿 z 含 y 错切
沿 z 含 y 错切
z的值随着 y 的增大而增大。
1000
0100
010
0001
fT
fyzz
yyxx
'
z
yx
59
组合变换
对立体顺序进行多个基本变换,可以完成三维组合变换。要求:使立体绕 J轴旋转 θ 角思路:将 J轴重合 Z轴之后,使立体旋转 θ 角,然后返回。
z
y
x
J
J2
J1
60
组合变换步骤:
1 。 J轴绕 Z轴转φ,成为 J1 。2 。 J1 轴绕 X 轴转 γ,成为 J2 。3 。立体绕 J2 轴转 θ ,达到目的。4 。从 J2返回 J1 。5 。从 J1返回 J。
z
yx
J1Jz
y
x
J1
J2z
y
x
J1
J2
61
上机习题
内容:实验指导书“实验二 _二维图形几何变换”。
实验要求:按实验指导书要求。
62
上机心得
心得:1 用新名字复制源程序,源程序不变。2 不用 C, D盘。3 使用注释删节不要的部分。4每次只改动一点,出问题可以立即返回。5 使用在线帮助。6 问同学,问老师。7跟踪 F7 ,观察watch,等8 不要开太多的窗口, F6 切换。9使用块操作10 同学之间多交流。
63
题外话
寻根求源的必要性文 盲: 不知其然(无知识,无法应用)中学生:知其然(记忆知识,可以简单应用)大学生:知其所以然(掌握知识,可以灵活应用)研究生:探索所以然(研究知识和方法,可以发展)
本课程的要求和希望:掌握计算机图形显示的原理和方法。我能在什么地方使用某个原理和方法。如何得到一个新算法,我能发明一个新算法吗。