动态演示 2D 直角网格形变,直观透析矩阵作为“空间映射”的代数精髓
在线性代数中,向量不仅是一个数值列表,也代表空间中的一个箭头。而矩阵 (Matrix) 不仅是一个数表,它代表了一种空间线性变换。
一个 $2 \times 2$ 矩阵作用在二维向量 $\vec{v} = (x, y)^T$ 上,其乘法定义为:
几何本源:矩阵的每一列其实是基底向量变换后的新位置。设原始基底为 $\vec{i} = (1,0)^T, \; \vec{j} = (0,1)^T$,变换后它们移到了:
任何向量 $\vec{v} = x\vec{i} + y\vec{j}$ 在变换后都映射为 $x\vec{i}' + y\vec{j}'$。这完美解释了矩阵变换保留了原点且网格线保持平行等距的线性性质!
struct Vector2D { double x, y; };
struct Matrix2x2 { double a, b, c, d; }; // 行优先存储
// 矩阵乘向量:A * v
Vector2D transform(Matrix2x2 A, Vector2D v) {
Vector2D res;
res.x = A.a * v.x + A.b * v.y; // 行A[0]与向量v点积
res.y = A.c * v.x + A.d * v.y; // 行A[1]与向量v点积
return res;
}