如果我做positionVector*worldMatrix
,那么这个职位就会转变为世界空间。
但是,如果我以3d空间的方式反过来(worldMatrix*positionVector
)会发生什么呢?
我注意到结果与第一个不同。我已经用谷歌搜索矩阵,数学他们解释了很多但不是这个,至少我找不到它。
答案 0 :(得分:10)
正如其他人所指出的那样 - 交换乘法的顺序相当于乘以转置。实际上,旋转矩阵是一种特殊类型的矩阵,称为orthogonal matrices,它可以为您提供许多简洁的属性。
最有趣的可能是矩阵的转置是逆的。对于你的世界变换,乘以逆相当于在世界空间中取一个位置并将其拉入与变换相关联的对象的局部坐标。
作为一个例子,考虑一个在世界上任意定位的盒子 - 乘以逆世界变换可以(当然完全依赖于应用程序:))将你放在一个轴对齐的空间中,如果你有兴趣看与其他对象进行碰撞,在框的局部空间中进行计算会使这更容易。
答案 1 :(得分:8)
在矩阵向量中,您的向量将被解释为列向量。在vector 矩阵中,它将被解释为行向量。 2x2例子:
/ a b \ / e \ / ae+bf \
| | * | | = | |
\ c d / \ f / \ ce+df /
/ a b \
( e f ) * | | = ( ea+fc eb+fd )
\ c d /
如您所见,结果不同。
顺便说一下,在转置矩阵之后,做一个就像做另一个一样。
就3D空间而言,如果你认为两个选项中的一个是线性变换,我不知道是否有另一个明智的解释。 This Wikipedia section说明了一些事情,但这超出了我对线性代数的理解。
答案 2 :(得分:2)
(矩阵*向量)等价于(向量*转置(矩阵))
答案 3 :(得分:1)
矩阵数学规则:
给定矩阵 A 和 B ,大小为MxN和OxP,
另一个重要的规则是矩阵乘法不是可交换的。 A * B != B * A
通常在计算机图形学中,位置向量是4x1矩阵,世界视图矩阵是正方形,4x4。因此,您应该期望将世界视图矩阵与位置向量预先相乘将是未定义的。将世界视图矩阵应用于位置矢量的正确方法是以另一个顺序,将位置矢量与世界视图矩阵预乘。 (我在数学上讲,这里)
有关矩阵数学的更多乐趣,请查看此tutorial。