线性变换
文章目录
- 线性变换
- 1. 矩阵与向量相乘的两重含义
- 2. 线性变换的分类
- 3. 线性变换矩阵的求解
- 4. 满射与单射
- 5. 线性变换与计算机图形学
- 5.1 旋转、伸缩、剪切变换
- 5.2 平移变换
- 5.2.1 齐次坐标系
- 5.2.2 二维的平移变换
- 5.2.3 三维的平移变换
- 5.3 透视投影
- 5.4 绕某点旋转
1. 矩阵与向量相乘的两重含义
1.1 重新线性组合
??对于矩阵与向量的乘法AX=b而言,从矩阵角度考虑,向量X的系数作为权值,让矩阵A中的各个列向量进行叠加,最后得到了一个重新线性组合的向量b
1.2 线性变换
??从向量角度来考虑,矩阵A对向量具有变换作用,通过矩阵A能够实现向量X的放缩、旋转、镜像等变换,这是矩阵乘法的线性变换含义。
2. 线性变换的分类
??剪切变换就是通过矩阵使得图形沿着某个方向滑动,一般是所有向量都加上了其中某一个向量的倍数,也就向着这个方向进行滑动
??旋转变换就是绕着原点顺时针或者逆时针转动一定角度
??伸缩变换是所有向量整体增大或者减少一定倍数
??沿着某条轴做镜像对称得到新向量
3. 线性变换矩阵的求解
??线性变换满足数乘和加法的封闭,也就是
T(cX)=c?T(X)
T(X+Y)=T(X)+T(Y)
T(C1?X+C2?Y)=C1?T(X)+C2?T(Y)
所以,我们只要知道基向量的变换情况,就可以通过基向量的组合得到任意向量的线性变换。比如
v=c1??v1?+c2??v2?+c3??v3?
T(v)=c1??T(v1?)+c2??T(v2?)+c3??T(v3?)
??我们以旋转为例进行说明
??假设向量旋转了90°,那么基向量必然也旋转了90°
??开始时候的基向量为
v1={10?}
v2={01?}
而旋转之后的基向量为
v1′={01?}
v2′={?10?}
??所以变换矩阵为
A={01??10?}
线性变换的操作为
v′=A?v
4. 满射与单射
- 满射就是,通过现有的向量组合得到目标线性变换所需要的向量,至少有一种实现方式。相当于AX=b有1个或无穷多个解
- 单射就是,通过现有的向量组合得到目标线性变换所需要的向量,最多有一种实现方式。相当于AX=b有0或1个解
5. 线性变换与计算机图形学
5.1 旋转、伸缩、剪切变换
??水平剪切
{10?m1?}
??垂直剪切
{1m?01?}
- 伸缩变换
{m0?01?}
{10?0m?}
- 旋转变换
{cosθsinθ??sinθcosθ?}
- 复合变换
A1??A2??.....?An?
5.2 平移变换
5.2.1 齐次坐标系
??平移变换并不属于线性变换,因此,如果想要实现n维度空间的平移,必须构建n+1维度的空间,才能实现平移的线性变换,构造的n+1维度空间叫做齐次坐标系
5.2.2 二维的平移变换
??假设对v1实行平移变换
v1={xy?}
增加一个维度,让R2中的每个点(x,y),都变成对应的(x,y,1),放到R3中去,xy平面的上面一个单位上去。
w1=????xy1?????
让(x,y)->(x+h,y+w)的变换可以写做
????100?010?wh1??????????xy1?????=????x+wy+h1?????
5.2.3 三维的平移变换
??三维平移变换也类似,构建四维齐次坐标系进行
????????1000?0100?0010?whs1??????????????????xyz1?????????=????????x+wy+hz+s1?????????
一般来说(x,y,z,1)是(x,y,z)对应的齐次坐标,若最后一个数字不为1,应该通过除法使其变成1
(X,Y,Z,H)
x=HX?
y=HY?
z=HZ?
5.3 透视投影
??透视投影就是,假设某个点(x,y,z),某个点望去,投影到某个平面上的时候,获得了投影点坐标。比如点(x,y,z),从(0,0,d)位置望去,投影在xy平面上的点是多少
根据三角形相似关系,可以得到
x′x?=dd?z?
可得x和y的投影坐标为
x′=1?z/dx?
y′=1?z/dy?
??所以(x,y,z,1)投影结果为(x’,y’,0,1),让向量乘以1-z/d,变成(x,y,0,1-z/d)
????????1000?0100?000?d1??0001??????????????????xyz1?????????=????????xy01?z/d?????????
在齐次坐标系中,把最后一个坐标除为1,就得到了在三维空间中的透视投影点坐标了。
5.4 绕某点旋转
??假设有一个图形,想要绕着点p进行旋转一定角度,具体步骤为
- 图形平移-p到原点
- 绕原点进行旋转
- 旋转后的图形平移p到原位置