浙江大学计算机学院 计算机图形学第六章 图形变换主要介绍
二维几何变换
窗口到视区的变换
三维几何变换浙江大学计算机学院 计算机图形学以下几方面的内容:
数学基础:矢量、矩阵及运算二维几何变换三维几何变换投影变换视窗变换内容浙江大学计算机学院 计算机图形学变换的数学基础
矢量
– 矢量和
z
y
x
u
u
u
U
z
y
x
v
v
v
V

zz
yy
xx
vu
vu
vu
VU
浙江大学计算机学院 计算机图形学变换的数学基础
– 矢量的数乘
– 矢量的点积
性质

z
y
x
ku
ku
ku
Uk
zzyyxx vuvuvuVU
UVVU
VUVU 0
00 UUU
浙江大学计算机学院 计算机图形学变换的数学基础
– 矢量的长度
单位矢量
矢量的夹角
– 矢量的叉积
222 zyx uuuUUU
VU
VU
c o s
zyx
zyx
vvv
uuu
kji
VU
浙江大学计算机学院 计算机图形学变换的数学基础
矩阵
– 阶矩阵
– n阶方阵
– 零矩阵
– 行向量与列向量
– 单位矩阵
– 矩阵的加法
– 矩阵的数乘
– 矩阵的乘法
– 矩阵的转置
– 矩阵的逆
m n?
浙江大学计算机学院 计算机图形学矩阵的含义矩阵:由 m× n个数按一定位置排列的一个整体,简称 m× n矩阵。
mnmm
n
n
aaa
aaa
aaa
,,,
.,,,,,,,,
,,,
,,,
21
22221
1 1211
A=
其中,aij称为矩阵 A的第 i行第 j列元素变换的数学基础浙江大学计算机学院 计算机图形学矩阵运算
加法设 A,B为两个具有相同行和列元素的矩阵
A+B =
数乘
kA = [ k*aij]|i=1...m,j=1,.,n


,,,b
.,,,,,,,,
,,,b
m2211
1112121111
mnmnmmm
nn
baaba
baaba
变换的数学基础浙江大学计算机学院 计算机图形学
乘法设 A为 3× 2矩阵,B为 2× 3矩阵
C = A ·B =
C=Cm× p = Am × n ·Bn× p cij = ∑ aik*bkj
单位矩阵在一矩阵中,其主对角线各元素 aii=1,其余皆为 0的矩阵称为单位矩阵。 n阶单位矩阵通常记作 In 。 Am × n = Am × n ·In




babab abababa
babababababa
322322221221312321221121
321322121211311321121111
k=1,n
变换的数学基础浙江大学计算机学院 计算机图形学
逆矩阵若矩阵 A存在 A·A-1=A-1·A=I,则称 A-1为 A的逆矩阵
矩阵的转置把矩阵 A=(aij)m× n的行和列互换而得到的
n× m矩阵称为 A的转置矩阵,记作 AT 。
(AT) T = A
(A+B)T = AT + BT
(aA)T = aAT
(A·B)T = BT ·AT
当 A为 n阶矩阵,且 A=AT,则 A是对称矩阵。
变换的数学基础浙江大学计算机学院 计算机图形学矩阵运算的基本性质
交换律与结合律师
A+B=B+A;
A+(B+C)=(A+B)+C
数乘的分配律及结合律
a(A+B) = aA+aB;
a(A ·B) = (aA) ·B=A ·(aB)
(a+b)A = aA + bA
a(bA) = (ab)A
变换的数学基础浙江大学计算机学院 计算机图形学
矩阵乘法的结合律及分配律
A(B ·C) = (A ·B)C
(A+B) ·C = A ·C+ B ·C
C ·(A+B) = C ·A + C ·B
矩阵的乘法不适合交换律变换的数学基础浙江大学计算机学院 计算机图形学所谓齐次坐标表示法就是由 n+1维向量表示一个 n维向量 。 如 n维向量 (P1,P2,…,Pn)表示为 ( hP1,hP2,? hPn,h),其中 h称为哑坐标 。
1,h可以取不同的值,所以同一点的齐次坐标不是唯一的 。
如普通坐标系下的点 ( 2,3) 变换为齐次坐标可以是 (1,1.5,0.5)(4,6,2)(6,9,3)等等 。
2,普通坐标与齐次坐标的关系为,一对多,
由普通坐标?h→ 齐次坐标由齐次坐标 ÷ h→ 普通坐标
3,当 h=1时产生的齐次坐标称为,规格化坐标,,因为前 n个坐标就是普通坐标系下的 n维坐标 。
齐次坐标浙江大学计算机学院 计算机图形学齐次坐标
(x,y)点对应的齐次坐标为
(x,y)点对应的齐次坐标为三维空间的一条直线
(,,)x y hh h
0,, hhyyhxx hh
hz
hyy
hxx
h
h
h
浙江大学计算机学院 计算机图形学
1,将各种变换用阶数统一的矩阵来表示。提供了用矩阵运算把二维、三维甚至高维空间上的一个点从一个坐标系变换到另一坐标系的有效方法。
2,便于表示无穷远点。
例如:( x? h,y? h,h),令 h等于 0
3,齐次坐标变换矩阵形式把直线变换成直线段,平面变换成平面,多边形变换成多边形,多面体变换成多面体。
4,变换具有统一表示形式的优点
– 便于变换合成
– 便于硬件实现齐次坐标的作用浙江大学计算机学院 计算机图形学窗口视图变换
用户域和窗口区
1,用户域:程序员用来定义草图的整个自然空间 (WD)
a 人们所要描述的图形均在用户域中定义 。
b 用户域是一个实数域,理论上是连续无限的 。
2,窗口区:用户指定的任一区域 (W)
a 窗口区 W小于或等于用户域 WD
b 小于用户域的窗口区 W叫做用户域的子域 。
c 窗口可以有多种类型,矩形窗口,圆形窗口,多边形窗口等等
d 窗口可以嵌套,即在第一层窗口中可再定义第二层窗口,在第 I层窗口中可再定义第 I+1层窗口等等 。
浙江大学计算机学院 计算机图形学窗口视图变换
1,屏幕域 (DC):设备输出图形的最大区域,是有限的整数域 。 如 图 形 显 示 器 分 辨 率 为
1024?768→ DC[0..1023]?[0..767]
2,视图区:任何小于或等于屏幕域的区域
a 视图区用设备坐标定义在屏幕域中
b 窗口区显示在视图区,需做窗口区到视图区的坐标转换 。
c 视图区可以有多种类型:圆形,矩形,多边形等 。
d 视图区也可以嵌套。
浙江大学计算机学院 计算机图形学窗口区和视图区的坐标变换设窗口的四条边界 WXL,WXR,WYB,WYT
视图的四条边界 VXL,VXR,VYB,VYT
则用户坐标系下的点 ( 即窗口内的一点 )
(Xw,Yw)对应屏幕视图区中的点 ( Xs,Ys),
其变换公式为





V Y BW Y BY
W Y BW Y T
V Y BV Y T
Y
V X LW X LX
W X LW X R
V X LV X R
X
ws
ws
浙江大学计算机学院 计算机图形学窗口区和视图区的坐标变换
简化为:
1) 当 a?c时,即 x 方向的变化与 y方向的变化不同时,视图中的图形会有伸缩变化,图形变形 。
2) 当 a=c=1,b=d=0则 Xs=Xw,Ys=Yw,图形完全相同 。
思考:前面讲的窗口 → 视图变换时,假设窗口的边和坐标轴平行,如果窗口的边不和坐标轴平行呢?
式)1(?


dYcY
bXaX
ws
ws
浙江大学计算机学院 计算机图形学窗口区和视图区的坐标变换
A,先让窗口 FGHI转 -α角,使它和 FG'H'I'重合 。
B,用 (1)式进行计算。
浙江大学计算机学院 计算机图形学图形变换是计算机图形学基础内容之一。
几何变换,投影变换,视窗变换线性变换,属性不变,拓扑关系不变。
作用:
把用户坐标系与设备坐标系联系起来;
可由简单图形生成复杂图形;
可用二维图形表示三维形体;
动态显示。
图形变换浙江大学计算机学院 计算机图形学二维图形的显示流程图浙江大学计算机学院 计算机图形学图形的几何变换
图形变换:对图形的几何信息经过几何变换后产生新的图形 。
图形变换的两种形式:
1.图形不变,坐标系改变;
2.图形改变,坐标系不变 。
我们所讨论的是针对坐标系的改变而讲的。
浙江大学计算机学院 计算机图形学二维图形的几何变换
设二维图形变换前坐标为 (x,y,1),变换后为
(x*,y*,1)
1,二维变换矩阵
注意,T2D可看作三个行向量,其中
[1 0 0]:表示 x 轴上的无穷远点
[0 1 0]:表示 y 轴上的无穷远点
[0 0 1]:表示原点
ifc
heb
gda
T D2
浙江大学计算机学院 计算机图形学二维图形的几何变换
从变换功能上可把 T2D分为四个子矩阵



体放大。则总体缩小;否则,总若变换。:对整体图形进行伸缩处产生一个灭点。:在处产生一个灭点。:在
:对图形做投影变换。
。:对图形进行平移变换
。转、对称、错切等变换:对图形进行缩放、旋
,1
00
010
001
11**
1
1

i
i
yxyx
i
h
xh
g
xg
h
g
fc
eb
da
浙江大学计算机学院 计算机图形学二维基本变换 -平移变换
平移变换
平移变换只改变图形的位置,不改变图形的大小和形状
1
1
010
001
11** yx
yx
TyTx
TT
yxyx
浙江大学计算机学院 计算机图形学二维基本变换 -比例变换
– 以坐标原点为放缩参照点
– 当 Sx=Sy=1时:恒等比例变换
– 当 Sx=Sy>1时:沿 x,y方向等比例放大 。
– 当 Sx=Sy<1时:沿 x,y方向等比例缩小
– 当 Sx?Sy时:沿 x,y方向作非均匀的比例变换,
图形变形。
1
100
00
00
11** ySxSS
S
yxyx yxy
x

浙江大学计算机学院 计算机图形学二维基本变换 -对称变换
当 b=d=0,a=-1,e=1时,(x* y* 1)=(-x y 1):与 y轴对称的反射变换。
当 b=d=0,a=1,e=-1时,(x* y* 1)=( x -y 1):与 x轴对称的反射变换 。
当 b=d=0,a=e=-1时,(x* y* 1)=(-x -y 1):与原点对称的反射变换 。
当 b=d=1,a=e=0时,(x* y* 1)=(y x 1):与 y=x对称的反射变换 。
当 b=d=-1,a=e=0时,(x* y* 1)=(-y -x 1):与 y=-x对称的反射变换 。
1
100
0
0
11** eydxbyaxeb
da
yxyx
浙江大学计算机学院 计算机图形学二维基本变换 -旋转变换
注意; θ 是逆时针旋转角度 。
c os
s i n
x
y




' c o s ( ) c o s c o s s i n s i n c o s s i n
' s i n ( ) s i n c o s c o s s i n s i n c o s
x x y
y x y




1c o ss i ns i nc o s
100
0c o ss i n
0s i nc o s
11**

yxyxyxyx

α
θρ (x,y)
(x′,y′)
浙江大学计算机学院 计算机图形学二维基本变换 -错切变换
1) 当 d=0时,(x* y* 1)=(x+by y 1):图形的 y坐标不变;
当 b>0:图形沿 +x方向作错切位移 。 ABCD→A 1B1C1D1
当 b<0:图形沿 -x方向作错切位移 。 ABCD→ A2B2C2D2
1
100
01
01
11** ydxbyxb
d
yxyx
浙江大学计算机学院 计算机图形学二维基本变换 -错切变换
2)当 b=0时,(x* y* 1)=(x dx+y 1)图形的 x坐标不变;
当 d>0:图形沿 +y方向作错切位移 。 ABCD→ A1B1C1D1
当 d<0:图形沿 -y方向作错切位移 。 ABCD→ A2B2C2D2
浙江大学计算机学院 计算机图形学二维基本变换 -错切变换
3) 当 b?0且 d?0时,
(x* y* 1)=(x+by dx+y 1),图形沿 x,y两个方向作错切位移 。
∴ 错切变换引起图形角度关系的改变,
甚至导致图形发生变形 。
浙江大学计算机学院 计算机图形学复合变换
复合变换又称级联变换,指对图形做一次以上的几何变换 。
注意:任何一个线性变换都可以分解为上述几类变换。
浙江大学计算机学院 计算机图形学例 1:复合平移
求点 P(x,y)经第一次平移变换 ( Tx1,Ty1),第二次平移变换 ( Tx2,Ty2) 后的坐标 P*( x*,y*)
解:设点 P(x,y,1)经第一次平移变换后的坐标为 P?(x? y?
1),则
经第二次平移变换后的坐标为 P*(x* y* 1)
∴ 变换矩阵为 Tt=Tt1?Tt2
1
11
1
1
010
001
11''' t
yx
Tyx
TT
yxyxP?


21
2211
22
1
1
010
001
1
010
001
1
1
010
001
1''1***
tt
yxyx
yx
TTyx
TTTT
yx
TT
yxyxP
浙江大学计算机学院 计算机图形学例 2:多种复合组合
例,对一线段先放大 2倍 (即 Sx=Sy=2),再平移 Tx=10,Ty=0。
解,设点 (x,y)为线段上的任意一点,
点 (x′,y′)为点 (x,y)放大后的坐标则,
设点 (x′′,y′′)为点 (x′,y′)经平移后的坐标为:
[x′′,y′′,1]= [x′,y′,1]T2(10,0) 则:
[x′′,y′′,1]= [x′,y′,1]T2(10,0)=[x,y,1]S2(2,2)T2(10,0)
令,M=S2(2,2)T2(10,0),则 M即为组合变换
y
x
(x,y)
y
x
(x′,y′) y
x
(x′′,y′′)
Tx
浙江大学计算机学院 计算机图形学例 3:旋转变换
对参考点 F(xf,yf)做旋转变换 。
解:
1,把旋转中心 F(xf,yf)平移至坐标原点,即坐标系平移
( -xf,-yf),则
2,进行旋转变换
ff
ff
yxTyx
yx
yxyx

1
1
010
001
1111


Tyxyxyx 1
100
0c o ss i n
0s i nc o s
11 221122?

浙江大学计算机学院 计算机图形学例 3:旋转变换
将坐标系平移回原来的原点
因此
ff
ff
yxTyx
yx
yxyx 1
1
010
001
11** 2222?
ff
ff
yxTyx
yx
yxyx 1
1
010
001
11** 2222?
浙江大学计算机学院 计算机图形学例 4:任意的反射轴的反射变换
任一图形关于任意的反射轴 y=a+bx的反射变换
解,1,将坐标原点平移到 (0,a)处
10
010
001
1
a
T
浙江大学计算机学院 计算机图形学例 4:任意的反射轴的反射变换
2.将反射轴(已平移后的直线)按顺时针方向旋转 θ 角,使之与 x轴重合
3.图形关于 x轴的反射变换
4.将反射轴逆时针旋转 θ 角



100
0c o ss i n
0s i nc o s


R


100
0c o ss i n
0s i nc o s


R

100
010
001
2T
浙江大学计算机学院 计算机图形学例 4:任意的反射轴的反射变换
5.恢复反射轴的原始位置
因此
10
010
001
3
a
T
321 TRTRTT
浙江大学计算机学院 计算机图形学
– 平移物体使固定点与坐标原点重合
– 对于坐标原点缩放
– 用步骤 1的反向平移将物体移回原始位置例 5:通用固定点缩放浙江大学计算机学院 计算机图形学例 6( 通用定向缩放 )
比例变换中的比例因子 Sx,Sy只能在 x轴方向或 y
轴方向起作用 。 实际图形变换中,不仅是在 x,y
方向变换,往往要求在任意方向进行比例变换 。
通过旋转变换和比例变换的组合,可以实现任意方向的比例变换 。
解:定义比例因子 S1和 S2。
1,使 S1和 S2旋转 θ角后分别与 x轴和 y轴重合 。
2,进行比例变换 。
3.使 S1和 S2旋转 -θ 角,返回原始位置。
浙江大学计算机学院 计算机图形学通用定向缩放
如:图 (a)为一单位正方形,对由 (0,0)和
(1,1)两点构成的对角线方向实施比例变换 ( 1,2)
浙江大学计算机学院 计算机图形学三维几何变换
三维其次坐标
(x,y,z)点对应的齐次坐标为
标准齐次坐标 (x,y,z,1)
右手坐标系
),,,( hzyx hhh
0,,, hhzzhyyhxx hhh
浙江大学计算机学院 计算机图形学三维几何变换
变换矩阵
平移变换
比例变换


44434241
34333231
24232221
14131211
3
aaaa
aaaa
aaaa
aaaa
T D
1
0100
0010
0001
zyx TTT
1000
000
000
000
z
y
x
S
S
S
浙江大学计算机学院 计算机图形学三维变换矩阵 -对称变换在二维变换下,对称变换是以线和点为基准,在三维变换下,对称变换则是以面、线、点为基准的。
– 对称于 XOY平面
[x' y' z' 1] = [x y -z 1]=[x y z 1]
– 对称于 YOZ平面
[x' y' z' 1] = [-x y z 1]=[x y z 1]
– 对称于 XOZ平面
[x' y' z' 1] = [x -y z 1]=[x y z 1]
1 0 0 0
0 1- 0 0
0 0 1 0
0 0 0 1

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
0 0 1- 0
0 0 0 1
浙江大学计算机学院 计算机图形学三维变换矩阵 -旋转变换
– 绕 X轴变换空间上的立体绕 X轴旋转时,立体上各点的 X坐标不变,只是 Y,Z坐标发生相应的变化。
x' = x
y' = ρ cos(α +θ ) = y*cosθ - z*sinθ
z' = ρ sin(α +θ ) = y*sinθ +z*cosθ
X Y
Z
(y,z)
(y' z')
θ
θ
Y
Z
α
OO
(y' z')
(y,z)
Z
浙江大学计算机学院 计算机图形学三维变换矩阵 -旋转变换
矩阵表示为:
遵循右手法则,即若 θ >0,大拇指指向轴的方向,其它手指指的方向为旋转方向 。

1 0 0 0
0 c o s s i n- 0
0 s i n c o s 0
0 0 0 1
1 zy x 1 z' y' '


x
浙江大学计算机学院 计算机图形学三维变换矩阵 -旋转变换
– 绕 Y轴旋转此时,Y坐标不变,X,Z坐标相应变化 。
x' = ρ sin(α +θ ) = x*cosθ + z*sinθ
y' = y
z' = ρ cos(α +θ ) = z*cosθ - x*sinθ
X Y
Z
(x,z)
(x' z')
θ
X
Z
α
O
O
Z
浙江大学计算机学院 计算机图形学三维变换矩阵 -旋转变换
矩阵表示为

1 0 0 0
0 c o s 0 s i n
0 0 1 0
0 s i n- 0 c o s
1 zy x 1 z' y' '


x
浙江大学计算机学院 计算机图形学三维变换矩阵 -旋转变换
– 绕 Z轴旋转此时,Z坐标不变,X,Y坐标相应变化 。
x' = ρ cos(α +θ ) = x*cosθ - y*sinθ
y' = ρ sin (α +θ ) = x*sinθ + y*cosθ
z' = z
X Y
Z
(x,y) (x' y')
θ
X
Y
αO
O
浙江大学计算机学院 计算机图形学三维变换矩阵 -旋转变换
矩阵表示为:

1 0 0 0
0 1 0 0
0 0 c o s s i n-
0 0 s i n c o s
1 zy x 1 z' y' '


x
浙江大学计算机学院 计算机图形学绕任意轴的旋转变换 -方法 1
a) 绕过原点的任意轴的旋转变换
空间点 P(x,y,z) 绕过原点的任意轴 ON逆时针旋转 θ角的旋转变换 。
基本思想,因 ON轴不是坐标轴,应设法旋转该轴,使之与某一坐标轴重合,然后进行旋转 θ角的变换,最后按逆过程,
恢复该轴的原始位置 。
浙江大学计算机学院 计算机图形学绕任意轴的旋转变换 -方法 1
解:令 ON为单位长度,其方向余弦为:
α,β,γ为 ON轴与各坐标轴的夹角 。
变换过程如下:
1) 让 ON轴绕 z轴旋转 -α',使之在 XOZ平面上 。 其中
222;c o s;c o s;c o s zyxrrzcrybrxa
22
's in
ba
b
22'c o s
ba
a

浙江大学计算机学院 计算机图形学绕任意轴的旋转变换 -方法 1
因此
2) 让 在 XOZ平面上的 ON绕 y轴旋转 -γ ',
使之与 z轴重合 。 其中
因此





1000
0100
00'c o s's in
00's in'c o s
'


zR
22's i n ba c?'c o s?


1000
0'c o s0's in
0010
0's in0'c o s
'


y
R
浙江大学计算机学院 计算机图形学绕任意轴的旋转变换 -方法 1
3) P点绕 ON轴(即 z轴)逆时针旋转 θ 角
4) ON轴绕 y轴旋转 γ'
5) ON轴绕 z轴旋转 α'
因此
b) 绕任意轴的旋转变换
上面的 ON 轴若 不过原 点,而是 过任意 点
(x0,y0,z0),变换如何呢?
zR?
yR '?
zR '?
zyzyz RRRRRT ''''
浙江大学计算机学院 计算机图形学绕任意轴的旋转变换 -方法 2
组合变换:空间一点绕空间任一轴线的旋转变换。要通过将几个基本的变换组合在一起,得到该组合变换。
假定空间任一直线的方向矢量分别为:
(l,m,n)并经过原点
(l,m,n)
(x,y,z)
(x',y',z')
X
Y
Z
α
β
γ
O
N
浙江大学计算机学院 计算机图形学绕任意轴的旋转变换 -方法 2
能否转换成绕 X,Y或 Z轴旋转的变换?
ON绕 Z轴旋转 θ 2 到 XOZ平面上,然后再绕 Y轴旋转 θ 1,即可与 Z轴重合。
O
Nθ2
θ1
Y
Z
X
浙江大学计算机学院 计算机图形学绕任意轴的旋转变换 -方法 2
这样,可得空间上任一点绕 ON轴旋转的变换过程如下:
1)首先通过两次旋转,使 ON轴与 Z轴重合;
2)然后使点绕 Z轴旋转 θ 角;
3)最后通过与 1)相反的旋转,使 ON轴回到原来的位置。
假设,绕 Z轴的旋转 -θ 2矩阵为 T1
绕 Y轴的旋转 -θ 1矩阵为 T2
绕 Z轴的旋转 θ 矩阵为 T3
绕 Y轴的旋转 θ 1矩阵为 T4
绕 Z轴的旋转 θ 2矩阵为 T5
浙江大学计算机学院 计算机图形学绕任意轴的旋转变换 -方法 2
则总体变换矩阵为:
T = T1 T2 T3 T4 T5
由上推导可看出,只要能求出 θ 1,θ 2的值,
即可通过上式获得绕 ON轴的变换矩阵。
由于矢量 ( 0 0 1)绕 Y轴旋转 θ 1,再绕 Z轴旋转 θ 2 即可与 ON轴重合。即:

1 0 0 0
0 1 0 0
0 0 c o s s i n-
0 0 s i n c o s
1 0 0 0
0 c o s 0 s i n
0 0 1 0
0 s i n- 0 c o s
1] 1 0 0[1n m l
22
22
11
11




浙江大学计算机学院 计算机图形学
[l m n 1] = [sinθ 1cosθ 2,sinθ 1sinθ 2,cosθ 1,1]
l = sinθ 1cosθ 2
m= sinθ 1sinθ 2
n = cosθ 1
从而通过上式即可得到 θ 1,θ 2 的值。
问题:当任一轴线的端点不在原点时,此时应如何计算变换矩阵?
绕任意轴的旋转变换 -方法 2