矩阵知识总结
--------------------------
矩阵乘法特点:
1) MI = IM = M //矩阵乘以单位矩阵 等于 单位矩阵乘以矩阵
2) AB ≠ BA //矩阵不满足交换律
3) (AB)C = A(BC) //矩阵满足结合律
4) (kA)B = k(AB) = A(kB) //矩阵满足线性运算律
5) (vA)B = v(AB) //满足向量运算的结合律
6) (AB)^T = B^T A^T // 矩阵AB的转置 等于 矩阵B的转置乘以矩阵A的转置
7) (M_1 M_2 ... M_n)^T = (M_n)^T (M_(n-1))^T ... (M_1)^T
==========================================================
向量与矩阵相乘
1) 行向量只能左乘矩阵 //适用于DX
2) 列向量只能右乘矩阵 //适用于OpenGL
==========================================================
矩阵旋转
二维旋转矩阵
┌ p' ┐ ┌ Cosθ Sinθ ┐
R(θ) = └ q' ┘ └ -Sinθ Cosθ ┘
三维旋转矩阵
X轴旋转
┌ p' ┐ ┌ 1 0 0 ┐
R(θ) = │ q' │ │ 0 Cosθ Sinθ │
└ r' ┘ └ 0 -Sinθ Cosθ ┘
Y轴旋转
┌ p' ┐ ┌ Cosθ 0 -Sinθ ┐
R(θ) = │ q' │ │ 0 1 0 │
└ r' ┘ └ Sinθ 0 Cosθ ┘
Z轴旋转
┌ p' ┐ ┌ Cosθ Sinθ 0 ┐
R(θ) = │ q' │ │ -Sinθ Cosθ 0 │
└ r' ┘ └ 0 0 1 ┘
任意n轴旋转矩阵
┌ p' ┐ ┌ (n_x)^2(1-Cosθ)+Cosθ n_xn_y(1-Cosθ)-n_zSinθ n_xn_z(1-Cosθ)+n_ySinθ ┐
R(n,θ) = │ q' │ = │ n_xn_y(1-Cosθ)+n_zSinθ (n_y)^2(1-Cosθ)+Cosθ n_yn_z(1-Cosθ)-n_xSinθ │
└ r' ┘ └ n_xn_z(1-Cosθ)-n_ySinθ n_yn_z(1-Cosθ)+n_xSinθ (n_z)^2(1-Cosθ)+Cosθ ┘
==========================================================
矩阵缩放
二维沿轴缩放矩阵
┌ k_x 0 ┐
S(k_x, k_y) = └ 0 k_y ┘
三维沿轴缩放矩阵
┌ k_x 0 0 ┐
S(k_x, k_y, k_z) = │ 0 k_y 0 │
└ 0 0 k_z ┘
二维沿任意方向缩放矩阵
┌ p' ┐ ┌ 1 + (k-1)(n_x)^2 (k-1)n_xn_y ┐
S(n,k) = └ q' ┘ = └ (k-1)n_xn_y 1 + (k-1)(n_y)^2 ┘
note:缩放系数k,缩放轴n;
三维沿任意方向缩放矩阵
┌ p' ┐ ┌ 1 + (k-1)(n_x)^2 (k-1)n_xn_y (k-1)n_xn_z ┐
S(n,k) = │ q' │ = │ (k-1)n_xn_y 1 + (k-1)(n_y)^2 (k-1)n_yn_z │
└ r' ┘ └ (k-1)n_xn_z (k-1)n_zn_y 1 + (k-1)(n_z)^2 ┘
==========================================================
正交投影
二维
向X轴投影
┌ 1 0 ┐
p_x = S([ 0, 1 ], 0) =└ 0 0 ┘
向Y轴投影
┌ 0 0 ┐
p_y = S([ 1, 0 ], 0) =└ 0 1 ┘
向任意直线投影的2D矩阵
┌ 1 - (n_x)^2 -n_x n_y ┐
p(n) = S(n,0) = └ -n_x n_y 1 - (n_y)^2 ┘
三维
向XY平面投影
┌ 1 0 0 ┐
p_xy = S([0, 0, 1], 0) =│ 0 1 0 │
└ 0 0 0 ┘
向XZ平面投影
┌ 1 0 0 ┐
p_xz = S([0, 1, 0], 0) =│ 0 0 0 │
└ 0 0 1 ┘
向YZ平面投影
┌ 0 0 0 ┐
p_yz = S([1, 0, 0], 0) =│ 0 1 0 │
└ 0 0 1 ┘
向任意平面投影的3D矩阵
┌ 1 - (n_x)^2 -n_x n_y -n_x n_z ┐
p(n) = S(n,0) = │ -n_x n_y 1 - (n_y)^2 -n_y n_z │
└ -n_x n_z -n_z n_y 1- (n_z)^2 ┘
==========================================================
切变
2D切变矩阵
┌ 1 0 ┐
H_x(s) = └ s 1 ┘
┌ 1 s ┐
H_y(s) = └ 0 1 ┘
3D切变矩阵
┌ 1 0 0 ┐
H_(xy)(s,t) = │ 0 1 0 │
└ s t 1 ┘
┌ 1 0 0 ┐
H_(xz)(s,t) = │ s 1 t │
└ 0 0 1 ┘
┌ 1 s t ┐
H_(yz)(s,t) = │ 0 1 0 │
└ 0 0 1 ┘
==========================================================
行列式
e.g.
| m_11 m_12 |
|M| = | m_21 m_22 | = m_11m_22 - m_12m_21
e.g.2
| m_11 m_12 m_13 |
|M| = | m_21 m_22 m_23 |
| m_31 m_32 m_33 |
|M| = m_11m_22m33 +m_12m_23m_32 + m_13m_21m_32 - m_13m_22m_31 - m_32m_23m_11 - m_21m_12m_33 ;