变换矩阵是数学
线性代数中的一个概念。在线性代数中,
线性变换能够用
矩阵表示。如果T是一个把Rn映射到Rm的线性变换,且x是一个具有n个元素的
列向量 ,那么我们把m×n的矩阵A,称为T的变换矩阵。
应用领域
任意线性变换都可以用矩阵表示为易于计算的一致形式,并且多个变换也可以很容易地通过矩阵的相乘连接在一起。
线性变换不是唯一可以用矩阵表示的变换。R维的
仿射变换与透视投影都可以用
齐次坐标表示为RP维(即n+1 维的真实投影空间)的线性变换。因此,在三维计算机图形学中大量使用着 4x4 的
矩阵变换。
计算方法
寻找变换矩阵A的方法
如果有一个函数形式的线性变换T(x),那么通过T对x的每个标准基进行变换,并将变换结果依次插入矩阵的列,这样就可以确定变换矩阵A,如:
例如,函数T(x) = 5x是
线性变换,通过上面的过程得到(假设n= 2 )
应用实例
最为常用的几何变换都是线性变换,这包括旋转、缩放、切变、反射以及正投影。在
二维空间中,线性变换可以用 2×2 的变换矩阵表示。
旋转:绕原点逆时针旋转 θ 度角的变换公式是x' =xcosθ -ysinθ 与y' =xsinθ +ycosθ,用矩阵表示为:
缩放:缩放公式用矩阵表示为:
切变:切变有两种可能的形式,平行于x轴的切变为x' =x+ky与y' =y,矩阵表示为:
平行于y轴的
切变为x' =x与y' =y+kx,矩阵表示为:
反射:为了沿经过原点的直线反射向量,假设 (ux,uy) 为直线方向的
单位向量。变换矩阵为:
按照不经过原点的直线的反射是仿射变换,而不是线性变换。
正投影:为了将向量正投影到一条经过原点的直线,假设 (ux,uy) 是直线方向的单位向量,变换矩阵为:
同反射一样,
正投影到一条不经过原点的直线的变换是仿射变换,而不是线性变换。
平行投影也是线性变换,也可以用矩阵表示。但是透视投影不是线性变换,必须用
齐次坐标表示。
变换性质
用矩阵表示线性变换的一个主要动力就是可以很容易地进行组合变换以及逆变换。
组合变换:组合可以通过
矩阵乘法来完成。如果A与B是两个线性变换,那么对
向量x先进行A变换,然后进行B变换的过程为:
换句话说,先A'后B变换的组合等同于两个矩阵乘积的变换。需要注意的是先A后B表示为BA而不是AB。
逆变换:能够通过两个矩阵相乘将两个变换组合在一起这样的能力就使得可以通过
逆矩阵进行变换的逆变换。A表示A的逆变换。变换矩阵并不都是可逆的,但通常都可以进行直观的解释。在特殊的情况下,几乎所有的变换都是可逆的。只要sx与sy都不为零,那么缩放变换也是可逆的。另外,
正投影永远是不可逆的。
仿射变换:为了表示仿射变换,需要使用齐次坐标,即用三向量 (x,y, 1) 表示二向量,对于高维来说也是如此。按照这种方法,就可以用
矩阵乘法表示变换。规定:x' =x+tx;y' =y+ty。在矩阵中增加一列与一行,除右下角的元素为 1 外其它部分填充为 0,通过这种方法,所有的线性变换都可以转换为仿射变换。通过这种方法,使用与前面一样的矩阵乘积可以将各种变换无缝地集成到一起。当使用仿射变换时,其次坐标
向量w从来不变,这样可以把它当作为 1。但是,透视投影中并不是这样。
透视投影:三维计算机图形学中另外一种重要的变换是透视投影。与
平行投影沿着
平行线将物体投影到图像平面上不同,透视投影按照从投影中心这一点发出的直线将物体投影到图像平面。这就意味着距离投影中心越远投影越小,距离越近投影越大。最简单的透视投影将投影中心作为坐标原点,z= 1 作为图像平面,这样
投影变换为x' =x/z;y' =y/z。这个乘法的计算结果是 (xc,yc,zc,wc) = (x,y,z,z)。在进行乘法计算之后,通常
齐次元素wc并不为 1,所以为了映射回真实平面需要进行齐次
除法,即每个元素都除以wc:
更加复杂的透视投影可以是与旋转、缩放、
平移、切变等组合在一起对图像进行变换。