当前位置: 代码迷 >> 综合 >> 【线性代数及其应用】04 -线性变换
  详细解决方案

【线性代数及其应用】04 -线性变换

热度:41   发布时间:2024-02-02 18:26:30.0

线性变换

文章目录

  • 线性变换
    • 1. 矩阵与向量相乘的两重含义
      • 1.1 重新线性组合
      • 1.2 线性变换
    • 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 ( c X ) = c ? T ( X ) T(cX) = c*T(X)

T ( X + Y ) = T ( X ) + T ( Y ) T(X+Y)=T(X)+T(Y)

T ( C 1 ? X + C 2 ? Y ) = C 1 ? T ( X ) + C 2 ? T ( Y ) T(C1*X+C2*Y)=C1*T(X)+C2*T(Y)
所以,我们只要知道基向量的变换情况,就可以通过基向量的组合得到任意向量的线性变换。比如
v = c 1 ? v 1 + c 2 ? v 2 + c 3 ? v 3 v = c_1*v_1+c_2*v_2+c_3*v_3

T ( v ) = c 1 ? T ( v 1 ) + c 2 ? T ( v 2 ) + c 3 ? T ( v 3 ) T(v)=c_1*T(v_1)+c_2*T(v_2)+c_3*T(v_3)

??我们以旋转为例进行说明
在这里插入图片描述

??假设向量旋转了90°,那么基向量必然也旋转了90°

??开始时候的基向量为
v 1 = { 1 0 } v1 = \left\{\begin{matrix}1\\0\end{matrix}\right\}

v 2 = { 0 1 } v2 = \left\{\begin{matrix}0\\1\end{matrix}\right\}
而旋转之后的基向量为

v 1 = { 0 1 } v1' = \left\{\begin{matrix}0\\1\end{matrix}\right\}

v 2 = { ? 1 0 } v2' = \left\{\begin{matrix}-1\\0\end{matrix}\right\}

??所以变换矩阵为
A = { 0 ? 1 1 0 } A = \left\{\begin{matrix}0 &-1\\1 &0\end{matrix}\right\}
线性变换的操作为
v = A ? v v' = A*v

4. 满射与单射

  • 满射就是,通过现有的向量组合得到目标线性变换所需要的向量,至少有一种实现方式。相当于AX=b有1个或无穷多个解
  • 单射就是,通过现有的向量组合得到目标线性变换所需要的向量,最多有一种实现方式。相当于AX=b有0或1个解

5. 线性变换与计算机图形学

5.1 旋转、伸缩、剪切变换

  • 剪切变换矩阵

??水平剪切
{ 1 m 0 1 } \left\{\begin{matrix}1 &m\\0 &1\end{matrix}\right\}

??垂直剪切
{ 1 0 m 1 } \left\{\begin{matrix}1 &0\\m &1\end{matrix}\right\}

  • 伸缩变换
    { m 0 0 1 } \left\{\begin{matrix}m &0\\0 &1\end{matrix}\right\}
    { 1 0 0 m } \left\{\begin{matrix}1 &0\\0 &m\end{matrix}\right\}
  • 旋转变换

{ c o s θ ? s i n θ s i n θ c o s θ } \left\{\begin{matrix}cosθ & -sinθ\\sinθ &cosθ\end{matrix}\right\}

  • 复合变换
    A 1 ? A 2 ? . . . . . ? A n A_1*A_2*.....*A_n

5.2 平移变换

5.2.1 齐次坐标系

??平移变换并不属于线性变换,因此,如果想要实现n维度空间的平移,必须构建n+1维度的空间,才能实现平移的线性变换,构造的n+1维度空间叫做齐次坐标系

5.2.2 二维的平移变换

??假设对v1实行平移变换
v 1 = { x y } v1=\left\{\begin{matrix}x\\y\end{matrix}\right\}
增加一个维度,让R2中的每个点(x,y),都变成对应的(x,y,1),放到R3中去,xy平面的上面一个单位上去。
w 1 = { x y 1 } w1=\left\{\begin{matrix}x\\y\\1\end{matrix}\right\}
让(x,y)->(x+h,y+w)的变换可以写做

{ 1 0 w 0 1 h 0 0 1 } ? { x y 1 } = { x + w y + h 1 } \left\{\begin{matrix}1&0&w\\0&1&h\\0&0&1\end{matrix}\right\}*\left\{\begin{matrix}x\\y\\1\end{matrix}\right\}=\left\{\begin{matrix}x+w\\y+h\\1\end{matrix}\right\}

5.2.3 三维的平移变换

??三维平移变换也类似,构建四维齐次坐标系进行
{ 1 0 0 w 0 1 0 h 0 0 1 s 0 0 0 1 } ? { x y z 1 } = { x + w y + h z + s 1 } \left\{\begin{matrix}1&0&0&w\\0&1&0&h\\0&0&1&s\\0&0&0&1\end{matrix}\right\}*\left\{\begin{matrix}x\\y\\z\\1\end{matrix}\right\}=\left\{\begin{matrix}x+w\\y+h\\z+s\\1\end{matrix}\right\}
一般来说(x,y,z,1)是(x,y,z)对应的齐次坐标,若最后一个数字不为1,应该通过除法使其变成1
( X , Y , Z , H ) (X,Y,Z,H)

x = X H x = \frac{X}{H}

y = Y H y = \frac{Y}{H}

z = Z H z = \frac{Z}{H}

5.3 透视投影

??透视投影就是,假设某个点(x,y,z),某个点望去,投影到某个平面上的时候,获得了投影点坐标。比如点(x,y,z),从(0,0,d)位置望去,投影在xy平面上的点是多少
根据三角形相似关系,可以得到
在这里插入图片描述

x x = d ? z d \frac{x}{x'}=\frac{d-z}{d}
可得x和y的投影坐标为
x = x 1 ? z / d x' = \frac{x}{1-z/d}

y = y 1 ? z / d y' = \frac{y}{1-z/d}

??所以(x,y,z,1)投影结果为(x’,y’,0,1),让向量乘以1-z/d,变成(x,y,0,1-z/d)
{ 1 0 0 0 0 1 0 0 0 0 0 0 0 0 ? 1 d 1 } ? { x y z 1 } = { x y 0 1 ? z / d } \left\{\begin{matrix}1&0&0&0\\0&1&0&0\\0&0&0&0\\0&0&-\frac{1}{d}&1\end{matrix}\right\}*\left\{\begin{matrix}x\\y\\z\\1\end{matrix}\right\}=\left\{\begin{matrix}x\\y\\0\\1-z/d\end{matrix}\right\}
在齐次坐标系中,把最后一个坐标除为1,就得到了在三维空间中的透视投影点坐标了。

5.4 绕某点旋转

??假设有一个图形,想要绕着点p进行旋转一定角度,具体步骤为

  • 图形平移-p到原点
  • 绕原点进行旋转
  • 旋转后的图形平移p到原位置
  相关解决方案