Cross products encode sines
看这篇文章受到了启发。一般来说我们看到点积都能很快反应出它们和 cos 的关系,相较之下叉积和 sin 的关系经常被忽视。所以决定来推导并复习一下基础数学知识。
首先是定义:
$$\mathbf{a} \times \mathbf{b} = \lVert \mathbf{a} \rVert \lVert \mathbf{b} \rVert \sin{(\theta)} \mathbf{n}$$
问题就在于为什么它会 encode sine。为了节省输入公式的时间,我直接从维基百科偷来了公式代码:
$$\mathbf{a}\times\mathbf{b} = (a_2 b_3 – a_3 b_2)\mathbf{i} + (a_3 b_1 – a_1 b_3)\mathbf{j} + (a_1 b_2 – a_2 b_1)\mathbf{k}$$
这意味着右边的长度是 $\lVert \mathbf{a} \rVert \lVert \mathbf{b} \rVert \sin{(\theta)}$。
可以从两个角度来理解:
- 叉积的模代表了两个向量围成平行四边形的面积,而平行四边形的面积很显然是 $\lVert \mathbf{a} \rVert \lVert \mathbf{b} \rVert \sin{(\theta)}$。
- $\frac{\sqrt{(a_2 b_3 – a_3 b_2)^2 + (a_3 b_1 – a_1 b_3)^2 + (a_1 b_2 – a_2 b_1)^2}}{\lVert \mathbf{a} \rVert \lVert \mathbf{b} \rVert} = 1 – \frac{(a_1 b_1 + a_2 b_2 + a_3 b_3)^2}{(\lVert \mathbf{a} \rVert \lVert \mathbf{b} \rVert)^2} = 1 – \cos{(\theta)}^2$
我不是故意跳掉那么多步骤的,但输入公式实在太麻烦了。
最后,点积表示了两个向量的“平行程度”,而叉积代表它们的“垂直程度”。也许可以认为这两者都是某向量在对应空间里的长度投影,一如 sine 和 cosine 也是圆半径在两个坐标轴上的投影。