跳转至

线性代数

因为数学库有好多现成的,这里只是写着玩,方便理解。

1. dot product: 投影长度

$ \vec{\mathbf{a}} * \vec{\mathbf{b}} = |a| * |b| * \cos\theta = \sum\limits_{i=1}^n a_i*b_i = \vec{\mathbf{a}}^T \vec{\mathbf{b}} $

2. cross product: 有向面积, 右手定则

\(\vec{\mathbf{a}} \times \vec{\mathbf{b}}\) = |a||b| \(sin\theta*\hat{\mathbf{n}}\)

$ \vec{\mathbf{a}} \times \vec{\mathbf{b}} = \vec{\mathbf{c}}, \vec{\mathbf{a}} = (a_x, a_y, a_z)^T, \vec{\mathbf{b}} = ( b_x, b_y, b_z)^T $

, 则:

\(\vec{\mathbf{c}} = \begin{pmatrix} a_y * b_z - a_z * b_y \\\\ a_z * b_x - a_x * b_z \\\\ a_x * b_y - a_y * b_z \end{pmatrix}\)

3. 旋转矩阵

\([\vec{e_1}, \vec{e_2}, \vec{e_3}]\)定义一个坐标系,该旋转变为\([\vec{e_1}', \vec{e_2}', \vec{e_3}']\)。 则向量 \(\vec{a} = \begin{pmatrix}a_1 \\\\ a_2 \\\\ a_3 \end{pmatrix}\), 在新坐标系内的表示变为 \(\vec{a'} \= \begin{pmatrix}a_1' \\\\ a_2' \\\\ a_3' \end{pmatrix}\) (注意\(\vec{a'}\)并没有经这坐标变换),

则:

$[\vec{e_1}, \vec{e_2}, \vec{e_3}] \begin{pmatrix} a_1 \\ a_2 \\ a_3 \end{pmatrix} = [\vec{e_1}', \vec{e_2}', \vec{e_3}'] \begin{pmatrix} a_1' \\ a_2' \\ a_3' \end{pmatrix} $

则:

$ \begin{pmatrix} a_1 \ a_2 \ a_3 \end{pmatrix} = \begin{pmatrix} e_1^T e_1' & e_1^Te_2' & e_1^T e_3' \\ e_2^T e_1' & e_2^Te_2' & e_2^T e_3' \\ e_3^T e_1' & e_3^Te_2' & e_3^T e_3' \end{pmatrix} \begin{pmatrix} a_1' \\ a_2' \\ a_3' \end{pmatrix} = \vec{R}\vec{a}' $

SO(3)特殊正交群,(Special Othogonal Group), 正交矩阵(行列式为1):

SO(n) = { \(\vec{R} \in R^{n \times n}\) | $ \vec{R} \vec{R}^T $ = \(\vec{I}, det( \vec{R} )\) = 1 }

\[ \{\vec{R} \in R^{n \times n} | \vec{R}\vec{R}^T= \vec{I}, det(\vec{R}) = 1 \} \]

4. 欧氏变换

欧氏变换 = 旋转 + 平移

\(\vec{a}' = \vec{R} \vec{a} + \vec{t}\)

5. 齐次坐标

\(\begin{pmatrix} \vec{a} ' \\\\ 1 \end{pmatrix}\) = \(\begin{pmatrix} \vec{R} & \vec{t} \\\\ \vec{0}^T & 1 \end{pmatrix}\) \(\begin{pmatrix} \vec{a} \\\\ 1 \end{pmatrix}\) = \(\vec{T} \begin{pmatrix} \vec{a} \\\\ 1 \end{pmatrix}\)

T属于特殊欧氏群(Special Euclidean Group), SE(n)

SE(3) = $ { \vec{T} = \begin{pmatrix} \vec{R} & \vec{t} \\ \vec{0}^T & 1\end{pmatrix} \in R^{4 \times 4} | \vec{R} \in SO(3), t \in R^3 } $

6. 表


变换名称 归类 矩阵形式 自由度 不变性质 备注
欧氏变换 线性变换,刚性变换 \(\begin{pmatrix} \vec{R} & \vec{t} \\\\ \vec{0}^T &1 \end{pmatrix}\) 6 长度、夹角、体积 旋转+平移 自由度:旋转3, 平移3
相似变换 线性变换 \(\begin{pmatrix} \vec{sR} & \vec{t} \\\\ \vec{0}^T &1 \end{pmatrix}\) 7 体积比 旋转+平移+缩放自由度:旋转3, 平移3, 均匀缩放1
仿射变换(正交投影) 线性变换 \(\begin{pmatrix} \vec{A} & \vec{t} \\\\ \vec{0}^T &1 \end{pmatrix}\) 12 平行性,体积比 \(\vec{A}\)只要求可逆,不要求正交自由度:旋转3, 平移3, 缩放1
射影变换 线性变换 \(\begin{pmatrix} \vec{A} & \vec{t} \\\\ \vec{a}^T & v \end{pmatrix}\) 15 接触平面的相交和相切 自由度:旋转3, 平移3, 缩放1

**7. 图形学中常见变换

符号(Notation) 名字(Name) 特性
\(\vec{T}(t)\) 平移矩阵 Affine
\(\vec{R_x}(\rho)\) 旋转矩阵 线x轴旋转\(\rho\)弧度。Orthogonal & Affine
\(\vec{R}\) 旋转矩阵 Orthogonal & Affine
\(\vec{S}(s)\) 缩放矩阵 x, y, z同时均匀缩放s。Affine
\(\vec{H}_{ij}(s)\) 错切矩阵(shear matrix) 使用系统s来相对于分量j错切(推移)分量i,\(i,j \in \{ x, y, x\}\)
\(\vec{E}(h,p,r)\) 欧拉变换(Euler Transform) yaw, pitch, roll Orthogonal & affine
\(\vec{P}_o(s)\) 正交投影(orthogonal projection) Affine
\(\vec{P}_p(s)\) 透视投影(perspection projection) ..
$slerp(\hat{q}, \hat{r}, t) $ 线性插值变换(slerp transform) 对四元数\(\hat(q), \hat(r)\)用参数t插值得到的新四元数
符号(Notation) 名字(Name) 特性 表示
\(\vec{T}(t)\) 平移矩阵 Affine \(\begin{pmatrix} I^3 & \vec{t} \\\\ 0^t & 1 \end{pmatrix}\)
\(\vec{R_x}(\rho)\) 旋转矩阵 线x轴旋转\(\rho\)弧度。Orthogonal & Affine \(\vec{R}_x(\phi) = \begin{pmatrix} 1 & 0 & 0 & 0 \\\\ 0 & cos\phi & -sin\phi & 0 \\\\ 0 & sin\phi & cos\phi & 0 \\\\ 0 & 0 & 0 & 1 \end{pmatrix}\) \(\vec{R}_y(\phi) = \begin{pmatrix} cos\phi & 0 & sin\phi & 0 \\\\ 0 & 1 & 0 & 0 \\\\ -sin\phi & 0 & cos\phi & 0 \\\\ 0 & 0 & 0 & 1 \end{pmatrix}\) \(\vec{R}_z(\phi) = \begin{pmatrix} cos\phi & -sin\phi & 0 & 0 \\\\ sin\phi & cos\phi & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \end{pmatrix}\)
\(\vec{R}\) 旋转矩阵 Orthogonal & Affine
\(\vec{S}(s)\) 缩放矩阵 x, y, z同时均匀缩放s。Affine \(\vec{S}(\vec{s}) = \begin{pmatrix} s_x & 0 & 0 & 0 \\\\ 0 & s_y & 0 & 0 \\\\ 0 & 0 & s_z & 0 \\\\ 0 & 0 & 0 & 1\end{pmatrix}\)
\(\vec{H}_{ij}(s)\) 错切矩阵(shear matrix) 使用系统s来相对于分量j错切(推移)分量i,\(i,j \in \{ x, y, x\}\) \(\vec{H}_{xz}(s) = \begin{pmatrix} 1 & 0 & s & 0 \\\\ 0 & 1 & 0 & 0 \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \end{pmatrix}\)
\(\vec{E}(h,p,r)\) 欧拉变换(Euler Transform) yaw, pitch, roll Orthogonal & affine
\(\vec{P}_o(s)\) 正交投影(orthogonal projection) Affine
\(\vec{P}_p(s)\) 透视投影(perspection projection) ..
$slerp(\hat{q}, \hat{r}, t) $ 线性插值变换(slerp transform) 对四元数\(\hat(q), \hat(r)\)用参数t插值得到的新四元数