线性代数之平移、缩放、旋转矩阵
线性代数中的平移、缩放和旋转矩阵
平移矩阵 Translate Matrix
缩放矩阵 Scale Matrix
旋转矩阵 Rotate Matrix
绕(1,0,0)旋转\theta角度
绕(0,1,0)旋转\theta角度
绕(0,0,1)旋转\theta角度
绕任意轴旋转\theta角度
设旋转轴为
为了求出
- 将
分解为 , 指的是 与 平行的部分, 指的是 与 垂直的部分。 - 分解为两部分后,可以分别对这两个部分做旋转,然后再合并,所以有: $\vec v’ = \vec v’{\perp }+\vec v’{\parallel }$
- 让
绕旋转轴 旋转 角度,它依然保持不变,因为它和 是同方向的向量,所以有 - 根据上一点,可以得到: $\vec v’ = \vec v’{\perp }+\vec v{\parallel }
\vec v’{\perp }和\vec v{\parallel }$ - 分析
,可以发现它相当于是 在 上的投影,根据向量的点积公式:
代入
- 上一步已经解决了
,剩下的就是求$\vec v’{\perp } \vec v’{\perp } \vec v_{\perp } \vec v_{\perp } = v - \vec v_{\parallel}$ - 接着,需要计算一个新的向量
, (注意叉乘的顺序不能错),所以 是一个垂直于 、 所构成平面的向量。 - 把
、 分别当做是 、 平面的x、y轴(2D坐标系),那么$\vec v’{\perp } \vec v{\perp } \theta$度。从而得到等式:
$\vec v’{\perp } = cos\theta \vec v{\perp } + sin\theta \vec w$
好了,所有变量都得到了,总结下最终的公式:
$\vec v’{\perp } = cos\theta \vec v{\perp } + sin\theta \vec w= cos\theta (v - (\vec v\cdot \vec n) \vec n) + sin\theta (\vec n \times \vec v)$
$\vec v’ = \vec v’{\perp } + \vec v{\parallel }= cos\theta (v - (\vec v\cdot \vec n) \vec n) + sin\theta (\vec n \times \vec v) + (\vec v\cdot \vec n) \vec n$
加粗并居中:
这就是绕任意轴的旋转公式了。
接下来是把这个公式转换成矩阵的形式。方法是,把
最终的旋转矩阵为:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ZYMIN!