第4章图形变换
y
xy
x' y'
A
A 10 26 2 0 0 20 13 1 A '
B
10
10
0
0 .5
0
=
20
5
1
B
'
C 20 10 0 0 1
40 5 1 C '
20
A’
10 B
C
B’
C’ x
图4.2 不等比例变换
10 20 30 40
2. 对称变换
对称变换可分为对坐标轴、±45°线和原点的对称变换。
1. 比例变换
比例变换是让点的x,y坐标各乘以一个比例因子,其变换 公式为:
x' = ax
y' = dy
因此,可令比例变换矩阵Ts为:
Ts=
a
0
0
0 b 0
0
0
,则:[X
1
Y
a
1]
0
0
0 b 0
0
0
= [ax dy 1] =
[X'
1
Y'
1]
其中a,d分别为x,y方向上的比例因子(a,d>0)。讨论:
xy
x” y”
A 10 26 1 1 2 0
10 46 1 A "
B 10
10
1
0
1
0
=
10
30
1
B"
C 20 10 1 0 0 1
20 50 1 C "
变换后的图见图4.6。
变换的结果是X坐标不变,而Y坐标产生一增量bx,使原 来平行于X轴的线倾斜θ角且tgθ= x/bx = 1/b。当b>0时,没+Y 向错切;b<0时沿–Y向错切。
2. 对任意直线的对称变换
设任意直线的方程为AX+BY+C=0,直线在X轴和Y轴上
的截距分别为–C/A和–C/B,直线与X轴的夹角为α,α
=arctg(–A/B)。对任意直线的对称变换由以下几个步骤来完 成:①平移直线,使其通过原点(可以沿X轴平移,也可以 没Y轴平移,这里以沿X轴平移为例),变换矩阵为:
上述的五种变换可用统一的变换矩阵形式来实现,我 们把它们叫做基本变换。但是,有些变换仅用一种基本变 换是不能实现的,必须由两种或多种基本变换组合才能实 现。这种由多种基本变换组合而成的变换称之为组合变换, 相应的变换矩阵叫做组合变换矩阵。
1. 绕任意点旋转变换
平面图形绕任意点P(Xp,Yp)旋转α角,需要通过以下几 个步骤来实现:
法实现平移变换。为此,我们把2×2矩阵扩充为3×2矩阵,
即令:
a b
T
=
c
d
k m
但这样又带来新的问题,二维图形的点集矩阵是n×2 阶的,而变换矩阵是3×2阶的,根据矩阵乘法规则,它们 是无法相乘的。为此,我们把点向量也作扩充,将[X Y] 扩充为[X Y 1],即把点集矩阵扩充为n×3阶矩阵。这样,
0 0 1
对三角形ABC进行旋转变换(θ= 60°):
xy
A 10
B
10
C 20
26 1 cos60 sin 60 0
10
1
sin 60
cos60
0
10 1 0
0 1
=
x' y'
17.516 21.66 1 A'
3.66
13.66 1 B'
1.34 22.32 1 C'
旋转变换的结 果见图4.7所示。
但2×2的变换矩阵T不适合于平移变换,因为平移变 换必须满足下面的关系:
x' = x + △x
y' = y + △y
这里△x,△y是平移量,应为常数,但是应用上述2×2变换 矩阵对点集进行变换:
[x
y]
a
c
b
d
= [ax+cy
bx+dy] = [x' y']
而这里的cy ,bx均非常量,因此用2×2的变换矩阵无
矩阵运算
图形旧点集 × 变换矩阵
图形新点集
4.1 几何变换
4.1.1 几何变换的齐次坐标法
对于二维图形,点集矩阵为n×2。由矩阵乘法运算
可知,一个n×2的点集矩阵[X,Y]和一个2×2的变换矩阵
T=
a
c
b
d
相乘,则有:
[X Y]
a
c
b
d
= [ax+cy
bx+dy] = [X' Y']
这里,[X' Y']为变换后的坐标。变换矩阵中a,b,c,d 可取不同的值,可以实现旋转、对称、错切、缩放等变换, 从而达到对图形进行变换的目的。
yA
A’
C’
20
B’ 600
10 B
C
图4.7 旋转60°的结果
x
-20 -10 0 10 20
5. 平移变换
平移变换矩阵为:
1 0 0
1 0 0
Tt =
0
1
0
,则 [x
y
1]
0
1
0
=
[x+k
y+m
1] = [x'
y'
1]
k m 1
k m 1
例如,令k = 10,m = 10,对图4.1中的三角形ABC作
点集矩阵与变换矩阵即可进行乘法运算。
[x y 1]
a b
c
d
=
[ax+cy+k
bx+dy+m]
k m
令变换矩阵中的b,c = 0,a,d = 1,就得到平移变
1
换矩阵:
Tt
=
0
k
0
1
,则有:
m
1 0
[x y 1]
0
1
= [x+k y+m] = [x' y']
k m
这里k,m分别为X,Y方向的平移量。
(1)对坐标轴的对称变换
点对X轴对称应有:X'=X,Y' = –Y,则变换矩阵为:
1 0 0
1 0 0
Tmx
=
0
1
0
, 即 [X
Y
1]
0
1
0
= [X –Y 1] = [X' Y' 1]
0 0 1
0 0 1
点对Y轴对称应有:X' = –X,Y' = Y,则变换矩阵为:
1 0 0
1 0 0
yA
30
对+45°和–45°的对称 变换的图形见图4.5所示。
20 B C 10
10 20 x
图4.5 对+45°和–45°的对称变换图 形
3. 错切变换
错切变换的变换矩阵为:
1 b 0
1 b 0
Tsh
=
c
1
0
, 则: [X
Y
1]
c
1
0
0 0 1
0 0 1
= [x + cy bx + y 1
0
0
1
,即 [X
Y
1]
0
1
0
1 0 0
0
0
=
[Y
X
1] = [X'
Y'
1]
1
对–45°线的对称变换,应有X' = –Y,Y' = –X,变换矩
阵为: 0 1 0
0 1 0
T m,-45 =
1
0
0
,
即
[X
Y
1] 1
0
0
= [–Y
–X
1] = [X'
Y'
1]
0 0 1
0 0 1
为使二维变换矩阵具有更多的功能,可将3×2变换矩 阵进一步扩充为3×3阶矩阵,即:
a b p
T=
c
d
q
k m s
其中,a、b、c、d 四项用于图形的比 例、对称、错切、旋转等基本变换;k、 m用于图形的平移变换;p、q 用于图形 的透视变换;s用于图形的全比例变换。
4.1.2 二维基本变换
第4章 图形变换
在实际绘图应用中,经常要对图形进行各种变换,如 几何变换、投影变换、窗口视区变换和视向变换等。这些 变换的实质是改变图形的坐标位置。一个图形的最基本要 素是点,点构成线,线构成面,而体是由若干面构成的, 因此,只要改变了图形的各点坐标位置,整个图形也就完 成了变换。
在二维空间中,可用(x,y)表示平面上的一点,在 三维空间中则用(x,y,z)表示空间一点。因此,可以 用点的集合(简称点集)来表示一个平面图形或三维立体, 写成矩阵的形式为:
x1 y1
x1 y1 z1
x
2
y
2
x
2
y2
z
2
x 3 y 3
x3 y 3 z3
..
..
...
...
...
x n y n , x n y n z n
这样便建立了平面图形和空间立体的数学模型。 由于图形的点集可用矩阵的方式来表达,因此对图形的 变换可以通过相应的矩阵运算来实现,即:
1 0 0
1 0 0
Tmo=
0
1
0
,即
[X
Y
1]
0
1
0
=
[–X