1 2
a [0 0] = [0 0] a'
0 1
1 2
b [1 0] = [1 2] b'
0 1
1 2
c [1 1] = [1 3] c'
0 1
1 2
d [0 1] = [0 1] d'
0 1
4. 旋转变换 设图形上一点P(x,y)绕原点逆时针旋转θ角后成为新的图形上一点P'(x',y'),则由解析几何方法可得
x' = xcosθ + ysinθ
y' = -xsinθ + ycosθ
用矩阵表示为
cosθ -sinθ
[x' y'] = [x y] = [x y] * T
sinθ cosθ
cosθ -sinθ
这里 T = 为绕原点逆时针变换矩阵。若顺时针旋转时,θ角为负值。
sinθ cosθ
5. 平移变换 若图形上一点P(x,y)沿x轴平移 l距离,沿y轴平移m距离后成为新的图形上一点P'(x',y'),则有
x' = x + l
y' = y + m
式中l,m不全为零,这称为平移变换。但此变换无法用组成图形的点向量和2×2阶变换矩阵相乘来实现。
用二维点向量和2×2阶矩阵相乘不能表示图形的平移变换,那么自然会想到用三维点向量和3×3阶矩阵相乘来实现图形的平移变换。因此对图形上二个坐标的点向量需要添加一个坐标,使之成为三维点向量以便与三阶矩阵相乘,进而实现用矩阵表示平移变换。实际上就是对上面的二个坐标变换式添加第三个坐标变换式,即成为
x' = x + l
y' = y + m
k = k
这第三个坐标变换式(即k=k)必须是恒等式,因为不需作变换 ,本质上是为了进行矩阵运算而引入的。
将此三个变换式(仍然是图形的平移变换,不妨将k = k取成1=1)写成矩阵得
1 0 0
[x' y' l] = [x y l] 0 1 0 = [x y 1] * T
l m 1
1 0 0
显然 T = 0 1 0 为图形的平移变换矩阵。
l m 1
这里通过对原图形上二维点向量引进第三个坐标成为三维点向量,从而使原图形的平移变换 能用矩阵表示。同样其它基本变换也可以如此用矩阵表示。因此图形的基本变换都可以在这样的三维点向量下统一、整洁用矩阵表示。这样的三维点向量称为齐次点向量,也叫三维齐次坐标点,简称三维齐次坐标。只有在三维齐次坐标下,二维几何变换才都可以用矩阵表示。下面再进一步讨论一下齐次坐标的优点。
引用齐次坐标后,可将上面各种基本变换矩阵统一在一个三阶矩阵中。即
a b 0
T = c d 0
l m 1
式中左上角二阶矩阵实现比例、对称、错切、旋转等变换,左下角1×2阶矩阵实现平移变换,其中a,b,c,d,l,m只要赋以相应的值,并建立图形上点的齐次坐标(即在图形上点的坐标后引入第三个坐标1),这样就可以用图形上点的三维齐次坐标与此三阶矩阵相乘来表示三维图形的基本几何变换了。而变换后,不用考虑第三个坐标1,前面两个坐标就反映了图形的整个变换情况。
用齐次坐标表示一个图形上的点,可以有多种表示,如(6,8,1)、(12,16,2)、(30,40,5)等均表示图形上同一个点(6,8)。这样,齐次坐标可以表示计算机无法容纳的数。例如当计算机的字长为16位时,它能表示的最大整数为2
16-1=32767。若点坐标为(80 000,40 000),则计算机无法表示。但用齐次坐标可表示为(20 000,10 000,1/4),经过处理后再用第三个坐标支除前面两个坐标,从而得到原来通常的坐标。
齐次坐标优点很多,在计算机绘图中都采用这种表示来处理图形。下面介绍的图形复合几何变换就是如此。
二、复合变换 图形的复合几何变换是指图形作一次以上的基本几何变换,变换结果是每次基本变换矩阵的乘积。图殂的复合几何变换简称复合变换。
1. 复合平移 若对图形首先作平移变换 T1,然后再作平移变换T2,相应的平移变换矩阵分别为
1 0 0
T1 = 0 1 0
l1 m1 1
1 0 0
T2 = 0 1 0
l2 m2 1
则变换结果为复合平移变换T,其复合平移变换矩阵为
T = T1 * T2
1 0 0 1 0 0
= 0 1 0 * 0 1 0
l1 m1 1 l2 m2 1
1 0 0
= 0 1 0
l1+l2 m1|m2 1
2. 复合比例 设比例变换T1矩阵为
a1 0 0
T1 = 0 d1 0
0 0 1
比例变换 T2矩阵为
a2 0 0
T2 = 0 d2 0
0 0 1
则复合比例变换T矩阵为
a1 0 0 a2 0 0 a1*a2 0 0
T = T1 * T2 = 0 d1 0 * 0 d2 0 = 0 d1*d2 0
0 0 1 0 0 1 0 0 1
3. 复合旋转 设旋转变换T1矩阵为
cosθ
1 -sinθ
1 0
T1 = sinθ
1 cosθ
1 0
0 0 1
cosθ
2 -sinθ
2 0
T2 = sinθ
2 cosθ
2 0
0 0 1
则复合旋转变换T矩阵为
T = T1 * T2
cosθ1 -sinθ1 0 cosθ2 -sinθ2 0
= sinθ1 cosθ1 0 * sinθ2 cosθ2 0
0 0 1 0 0 1
cos(θ1+θ2) -sin(θ1+θ2) 0
= sin(θ1+θ2) cos(θ1+θ2) 0
0 0 1
旋转变换和比例变换翥与参考点有关,上面的旋转变换和比例变换均是相对原点的。假如相对某一参考点(xo,yo)作比例、旋转变换,则其变换过程是先把坐标系原点平移至(xo,yo),再在新的坐标系下作比例、旋转变换,然后将坐标原点平移回去,这实际上是复合变换。
4. 相对点(xo,yo)的比例变换 1 0 0 a 0 0 1 0 0
T = 0 1 0 0 d 0 0 1 0
-xo -yo 1 0 0 1 xo yo 1
a 0 0
= 0 d 0
(1-a)*xo (1-d)*yo 1
5. 相对点(xo,yo)的旋转变换 1 0 0 cosθ -sinθ 0 1 0 0
T = 0 1 0 sinθ cosθ 0 0 1 0
-xo -yo 1 0 0 1 xo yo 1
cosθ -sinθ 0
= sinθ cosθ 0
(1-cosθ)*xo+yo*sinθ (1-cosθ)*yo+xo*sinθ 1
解决复合变换问题,要害是将其分解为一定顺序的基本变换,然后逐一进行这些基本变换,从而复合变换问题得到解决;或者求出这些基本变换矩阵连乘积,即得复合变换矩阵,进而由矩阵作复合变换使得问题被解决。
例 3: 设三角形abc其顶点坐标 a=(6,4),b=(9,4),c=(6,6),绕点(5,3)逆时针旋转60度,试求变换后的图形。
解: 此变换可分解成下面顺序的基本变换来实现:
1) 将三角形abc连同点(5,3)与原点重合,即沿x轴平移-5,沿y轴平移-3;
2)平移后的三解形绕原点逆时针旋转60度;
3)再将旋转后的三角形连同原点平移回点(5,3)。
这三步具体变换过程计算如下:
由前面复合变换中的计算公式并代入 cosθ = cos60
o = 0.5,sinθ = sin60
o = 0.866 便得