目录
前言一 、位移矩阵二、移动矩阵三、旋转矩阵四、矩阵的组合前言
矩阵就是基底一般列向量都是有一个"单位基底"矩阵:缩放/位移/旋转-矩阵4.上一章学习了单位矩阵列向量
列 向 量 = [ x y z w − 齐 次 坐 标 ] 列向量=\left[ \begin{matrix} x\\ y \\ z \\ w-齐次坐标 \end{matrix} \right] 列向量=⎣⎢⎢⎡xyzw−齐次坐标⎦⎥⎥⎤
单 位 矩 阵 = [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 ] 单位矩阵=\left[ \begin{matrix} 1 & 0 & 0 & 0 \\ 0& 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right] 单位矩阵=⎣⎢⎢⎡1000010000100001⎦⎥⎥⎤
单位矩阵可以理解为基底,所有的向量都具有一个前置的单位矩阵的基底
重要公式一:
v = 单位矩阵× v
v = 单位基底× v
一 、位移矩阵
基底改变后,向量v就改变了
S=Scaling Factor
S c a l e = [ S x 0 0 0 0 S y 0 0 0 0 S z 0 0 0 0 1 ] Scale=\left[ \begin{matrix} Sx & 0 & 0 & 0 \\ 0& Sy & 0 & 0 \\ 0 & 0 & Sz & 0 \\ 0 & 0 & 0 & 1 \end{matrix} \right] Scale=⎣⎢⎢⎡Sx0000Sy0000Sz00001⎦⎥⎥⎤
Sx Sy Sz 可以单独改变 x y z三个值,因为这三个值 (SxX,SyY, Sz*Z,1)T
二、移动矩阵
1.本来移动每个坐标仅仅需要加法, 但是为了统一还是用乘法
2.齐次坐标 (列向量的最后一个),可以辅助用乘法解决移动.
3.如果齐次坐标w=0,那么这个向量不可以移动
4.齐次坐标决定是否可以移动.取值只要 0 1
T=Translation
位 移 矩 阵 = [ 1 0 0 T x 0 1 0 T y 0 0 1 T z 0 0 0 1 ] 位移矩阵=\left[ \begin{matrix} 1 & 0 & 0 & Tx \\ 0& 1 & 0 & Ty \\ 0 & 0 & 1 & Tz \\ 0 & 0 & 0 & 1 \end{matrix} \right] 位移矩阵=⎣⎢⎢⎡100001000010TxTyTz1⎦⎥⎥⎤
三、旋转矩阵
1.理解:把矩阵拆成三行
矩 阵 = [ S x 0 0 T x 0 S y 0 T y 0 0 S z T z 0 0 0 1 ] 矩阵=\left[ \begin{matrix} Sx & 0 & 0 & Tx \\ 0& Sy & 0 & Ty \\ 0 & 0 & Sz & Tz \\ 0 & 0 & 0 & 1 \end{matrix} \right] 矩阵=⎣⎢⎢⎡Sx0000Sy0000Sz0TxTyTz1⎦⎥⎥⎤
这样就发现了,不影响的因素=行
影 响 x [ 第 一 行 ] = [ S x 0 0 T x ] 影响x[第一行]=\left[ \begin{matrix} Sx & 0 & 0 & Tx \end{matrix} \right] 影响x[第一行]=[Sx00Tx]
影 响 y [ 第 二 行 ] = [ 0 S y 0 T y ] 影响y[第二行]=\left[ \begin{matrix} 0 & Sy & 0 & Ty \end{matrix} \right] 影响y[第二行]=[0Sy0Ty]
影 响 z [ 第 三 行 ] = [ 0 0 S z T z ] 影响z[第三行]=\left[ \begin{matrix} 0 & 0 & Sz & Tz \end{matrix} \right] 影响z[第三行]=[00SzTz]
理解旋转
重要公式 二:
绕着X轴旋转,则X值不能发生变化
也就是影响第一行的数字一定是
影 响 x [ 第 一 行 ] = [ 1 ( S x ) 0 0 0 ( T x ) ] 影响x[第一行]=\left[ \begin{matrix} 1(Sx) & 0 & 0 & 0(Tx) \end{matrix} \right] 影响x[第一行]=[1(Sx)000(Tx)]
所有旋转公式
推导公式
4.1 旋转矩阵就是改变了标准向量的基底
4.2 旋转矩阵描述的变幻 = 改变后的值,在原有的坐标系是多少
影响旋转的因素=列
cosθ, 表示新的长度 = 原有长度的cosθ
sinθ,表示新的长度 = 原有长度的sinθ
四、矩阵的组合
顺序:先Scale 再Trans
以后应用:就是先scalc 再Trans