矩阵乘以向量与向量乘以矩阵有何不同?

3
如果我执行positionVector*worldMatrix,位置将转换为世界空间。 但是如果我以相反的方式执行(worldMatrix*positionVector),在3D空间方面会发生什么?
我注意到结果与第一个不同。我已经在Google上搜索了矩阵和数学,他们解释了很多,但没有这个问题的答案,至少我找不到。
4个回答

10

正如其他人所指出的那样,交换乘法的顺序等同于乘以转置矩阵。恰好,旋转矩阵是一种称为正交矩阵的特殊矩阵类型,这可以获得许多有趣的性质。

其中最有趣的可能是矩阵的转置就是它的逆矩阵。对于你的世界变换,乘以逆矩阵相当于将世界空间中的一个位置拉入与该变换关联的对象的局部坐标系中。

例如,考虑一个在世界中任意定向的盒子-乘以逆世界变换可能(完全取决于应用程序:))使您处于轴对齐的空间中,并且如果您有兴趣查找与其他对象的碰撞,则在盒子的局部空间中进行计算会更容易。


你是在说求逆矩阵(inverse(mat))和矩阵转置(transpose(mat))是一样的吗? 我无法找到任何证据,因为这与我在学校所学的知识相矛盾。 - codymanix
2
通常转置矩阵并不等同于逆矩阵。这是正交矩阵的一个特殊属性(请查看我回答中的链接以获取更多细节),所有旋转和反射矩阵都属于正交矩阵。 - Andrew Khosravian

8

在矩阵向量中,你的向量将被解释为列向量。在向量矩阵中,它将被解释为行向量。以下是2x2的示例:

/ a b \   / e \   / ae+bf \
|     | * |   | = |       |
\ c d /   \ f /   \ ce+df /

          / a b \
( e f ) * |     | = ( ea+fc eb+fd )
          \ c d /

从结果可以看出,它们是不同的。

顺便提一下,在转置矩阵后,做一个与另一个相同的操作。

在三维空间中,如果你认为其中一个选项是线性变换,我不知道另一个选项是否有任何合理的解释。 这个维基百科部分 说了一些关于它的事情,但超出了我的线性代数理解范围。


2

(矩阵 * 向量) 等价于 (向量 * 转置(矩阵))


1

矩阵数学规则:

给定大小为MxN和OxP的矩阵AB

  • 只有当N=O时,矩阵乘积A * B 才有定义。
  • 结果将是一个大小为MxP的矩阵。

另一个重要规则是矩阵乘法不满足交换律。 A * B != B * A

在计算机图形学中,位置向量通常是一个4x1的矩阵,而世界视图矩阵是一个方阵,大小为4x4。因此,预乘世界视图矩阵与位置向量的操作是未定义的。将世界视图矩阵应用于位置向量的正确方式是反过来,即将位置向量预乘以世界视图矩阵。(我在这里说的是数学上的)

想要更多有关矩阵数学的乐趣,请查看这个tutorial


谢谢提供链接,但在HLSL(一种着色器语言)中有一个名为mul(mat, vec)的函数,还有一个名为mul(vec, mat)的函数。在其中一个函数中,vec被解释为列向量,在另一个函数中,它被解释为行向量。 - codymanix
是的,任何好的图形库/语言都应该有一个函数来为您完成此操作,但知道该函数内部的内容也很有用。 - Scottie T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接