JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

矩阵就是变换

别再把矩阵看成一堆数字组成的格子,把它看成一个动词:一个一次性移动空间中每个点的函数,同时让网格线保持笔直、原点保持不动。秘密在于:各列只是记录了基向量落到哪里。

矩阵是动词,不是名词

矩阵 读作一个 线性变换:一个接收 向量 并把它送到新位置的函数。把它一次性作用到每一个点上,你就会看到整个空间发生平移、旋转、拉伸或压扁。*线性*这个词承诺两件事:网格线保持笔直、间距均匀,而且原点永远不动。

各列就是基向量的落点

关键的诀窍在这里。变换矩阵 是一列一列搭起来的:第一列是 (1,0) 的去向,第二列是 (0,1) 的去向。要变换任意向量,就用这个向量的坐标去缩放这两个落点再相加——这恰好就是矩阵乘向量。

A = [[2,1],[0,3]]
(1,0) lands at (2,0)  <- first column
(0,1) lands at (1,3)  <- second column
so A*(x,y) = x*(2,0) + y*(1,3) = (2x+y, 3y)
把各列读作落点,矩阵乘向量就一目了然。

一个小小的变换动物园

一旦你把各列读作落点,常见的变换一眼就能认出来。注意每一个不过是在描述 (1,0) 与 (0,1) 最终落在哪里。

  1. 缩放 [[2,0],[0,3]]:把 x 拉伸 2 倍、y 拉伸 3 倍——一次干净的拉伸,坐标轴仍是坐标轴。
  2. 旋转 90 度 [[0,-1],[1,0]]:(1,0) 转到 (0,1),(0,1) 转到 (-1,0)——整个平面都转了过来。
  3. 错切 [[1,1],[0,1]]:(1,0) 不动,但 (0,1) 滑到 (1,1)——正方形被斜成了平行四边形。