4.变换


  1. 旋转

    1. 2D旋转

      \[ 2d构造矩阵: R(\theta) = \begin{bmatrix} p^` \\q^` \end{bmatrix} = \begin{bmatrix} \cos\theta & \sin\theta\\-\sin\theta &\cos\theta \end{bmatrix}, p 为x轴旋转, q为y轴旋转。 \]

    2. 3D旋转,绕轴旋转

      1. 区分旋转方向, 左手法则,手握旋转轴,拇指朝向正方向,四指绕向为正

        左手坐标系 右手坐标系
        从哪边看 正方向|负方向 正方向| 负方向
        从负端向正端看 逆时针|顺时针 顺时针|逆时针
        从正端向负端看 顺时针|逆时针 逆时针|顺时针
      2. 绕着x轴旋转,(此时等于旋转 yz 组成的2d笛卡尔坐标系,而x轴不变,因此构造矩阵如下:)

        \[ 绕x旋转的构造矩阵: R(\theta) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} 1&0&0\\0&\cos\theta & \sin\theta\\0&-\sin\theta &\cos\theta \end{bmatrix}, p 为x轴旋转, q为y轴旋转,r为z轴旋转。 \]

      3. 绕y旋转类似,(此时等于旋转 xz 组成的2d笛卡尔坐标系,而y轴不变,因此构造矩阵如下:) \[ 绕y旋转的构造矩阵: R(\theta) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} \cos\theta&0&-\sin\theta\\ 0& 1&0 \\ \sin\theta &0&\cos\theta \end{bmatrix}, p 为x轴旋转, q为y轴旋转,r为z轴旋转。 \]

      4. 绕z旋转类似,(此时等于旋转 xy 组成的2d笛卡尔坐标系,而z轴不变,因此构造矩阵如下:) \[ 绕y旋转的构造矩阵: R(\theta) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} \cos\theta&\sin\theta&0\\ -\sin\theta &\cos\theta &0 \\ 0& 0& 1 \end{bmatrix}, p 为x轴旋转, q为y轴旋转,r为z轴旋转。 \]

      5. 任意方向,不依赖旋转轴旋转,原理类似,忽略推到,公式如下: \[ R(n, \theta),代表 绕n方向旋转 \theta. \]
        \[ R(n,\theta) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} n_x^2(1-\cos\theta)+ \cos\theta& n_xn_y(1-\cos\theta)+n_z\sin\theta&n_xn_z(1-\cos\theta)-n_y\sin\theta\\ n_xn_y(1-\cos\theta)-n_x\sin\theta& n_y^2 (1-\cos\theta)+ \cos\theta&n_yn_z(1-\cos\theta)-n_x\sin\theta\\ n_xn_z(1-\cos\theta)+n_y\sin\theta& n_yn_z(1-\cos\theta)-n_x\sin\theta&n_z^2 (1-\cos\theta)+ \cos\theta\\ \end{bmatrix} \]

  2. 缩放

    1. 沿坐标轴缩放 \[ S(k_x, k_y, k_z) = \begin{bmatrix} k_x & 0 &0\\ 0&k_y&0\\ 0&0&k_z \end{bmatrix} \]

    2. 沿任意方向,不依赖旋转轴缩放 \[ R(n, k),代表 绕n方向缩放 k. \]

      \[ S(n,k) = \begin{bmatrix} p^`\\q^` \\r^` \end{bmatrix} = \begin{bmatrix} 1+(k-1)n_x^2& (k-1)n_xn_y& (k-1)n_xn_z\\ (k-1)n_xn_y& 1+(k-1)n_y^2& (k-1)n_yn_z\\ (k-1)n_xn_z& (k-1)n_zn_y& 1+(k-1)n_z^2 \end{bmatrix} \]

  3. 正交投影 > 一般来说投影意味着降维操作,例如3d赋值给2d,抛弃z。(正交、平行、透视投影)

    1. 向x轴投影,保留x为1, 舍弃部分置0 \[ P_x = S(\begin{bmatrix}0&1\end{bmatrix} ,0) = \begin{bmatrix} 1&0\\0&0 \end{bmatrix} \]
    2. 同理y轴投影 \[ P_y = S(\begin{bmatrix}1&0\end{bmatrix} ,0) = \begin{bmatrix} 0&0\\0&1 \end{bmatrix} \]
    3. 向xy投影 \[ P_{xy} = S(\begin{bmatrix}0&0&1\end{bmatrix} ,0) = \begin{bmatrix} 1&0&0\\0&1&0\\0&0&0 \end{bmatrix} \]
    4. 向xz投影 \[ P_{xz} = S(\begin{bmatrix}0&1&0\end{bmatrix} ,0) = \begin{bmatrix} 1&0&0\\0&0&0\\0&0&1\end{bmatrix} \]
    5. 向yz投影 \[ P_{yz} = S(\begin{bmatrix}1&0&0\end{bmatrix} ,0) = \begin{bmatrix} 0&0&0\\0&1&0\\0&0&1\end{bmatrix} \]
    6. 向任意平面投影 \[ P(n) = S(n, 0), n代表任意直线/平面 \]
      \[ P(n) = S(n,0) = \begin{bmatrix} 1+(0-1)n_x^2& (0-1)n_xn_y& (0-1)n_xn_z\\ (0-1)n_xn_y& 1+(0-1)n_y^2& (0-1)n_yn_z\\ (0-1)n_xn_z& (0-1)n_zn_y& 1+(0-1)n_z^2 \end{bmatrix} \]
  4. 镜像 翻折

    1. 2D \[ P(n) = S(n,-1) = \begin{bmatrix} 1+(-1-1)n_x^2& (-1-1)n_xn_y\\ (-1-1)n_xn_y& 1+(-1-1)n_y^2\\ (-1-1)n_xn_z& (-1-1)n_zn_y \end{bmatrix} \]
    2. 3D \[ P(n) = S(n,-1) = \begin{bmatrix} 1+(-1-1)n_x^2& (-1-1)n_xn_y& (-1-1)n_xn_z\\ (-1-1)n_xn_y& 1+(-1-1)n_y^2& (-1-1)n_yn_z\\ (-1-1)n_xn_z& (-1-1)n_zn_y& 1+(-1-1)n_z^2 \end{bmatrix} = \begin{bmatrix} 1-2n_x^2& -2n_xn_y&-2n_xn_z\\ -2n_xn_y& -2n_y^2&-2n_yn_z\\ -2n_xn_z& -2n_zn_y&-2n_z^2\\ \end{bmatrix} \]
  5. 切变,(非均匀地拉伸它,角度发生变化,面积和体积不变)
    \[ x^` = x + sy, s为变化因子。 H_x(s) =\begin{bmatrix}1&0\\s&1\end{bmatrix}, x 随着y被切变,s控制方向和量 \]

    \[ 另一种变换 H_y。 H_y(s) =\begin{bmatrix}1&s\\0&1\end{bmatrix}, x 随着y被切变,s控制方向和量 \]

  6. 3D切变

    3d中的切变是取出一个坐标乘以不同的因子,再加到其他坐标上,H_{xy} 意义是 xy坐标被z改变,

    \[ H_{xy}(s) =\begin{bmatrix}1&0&0\\0&1&0\\s&t&1\end{bmatrix} \]

    \[ H_{xz}(s) =\begin{bmatrix}1&0&0\\s&1&t\\0&0&1\end{bmatrix} \]

    \[ H_{yz}(s) =\begin{bmatrix}1&s&t\\0&1&0\\0&0&1\end{bmatrix} \]

  7. 组合变换

    1. 坐标系组合变换 \[ P_{世界} = P_{物体}M_{物体\rightarrow世界} \]

      \[ P_{相机} = P_{世界}M_{世界\rightarrow相机} = (P_{物体}M_{物体\rightarrow世界})M_{世界\rightarrow相机} = P_{物体}(M_{物体\rightarrow世界}M_{世界\rightarrow相机}) \]

      \[ M_{物体\rightarrow相机} = M_{物体\rightarrow世界}M_{世界\rightarrow相机} \]

      \[ P_{相机} =P_{物体}M_{物体\rightarrow相机} \]

  8. 变换分类

    1. 线性变换
    2. 仿射变换(线性变换超集)
    3. 可逆变换 (奇异矩阵不可逆,行列式不为0)
    4. 等角变换 (夹角大小方向不变,所有等角变换都是可逆,仿射变换)
    5. 正交变换 (垂直变换,切不缩放)
    6. 刚体变换
  9. 4x4齐次矩阵

  10. 矩阵形式的优缺点

    1. 优点
      1. 可立即变换
      2. 被图形api使用
      3. 多个角位移连接
      4. 矩阵的逆
    2. 缺点
      1. 占用更多内存
      2. 使用难度
      3. 可能多余数据的累赘

文章作者: lyg
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 lyg !
  目录