如果我这样做,positionVector*worldMatrix
这个位置就变成了世界空间.但是,如果我worldMatrix*positionVector
以三维空间的方式()执行相反的方式会发生什么?
我注意到结果与第一个不同.我已经用谷歌搜索矩阵,数学他们解释了很多但不是这个,至少我找不到它.
正如其他人所指出的那样 - 交换乘法的顺序相当于乘以转置.实际上,旋转矩阵是一种特殊类型的矩阵,称为正交矩阵,它可以为您提供许多简洁的属性.
最有趣的可能是矩阵的转置是逆的.对于你的世界变换,乘以逆相当于在世界空间中占据一个位置并将其拉入与变换相关联的对象的局部坐标.
作为一个例子,考虑一个在世界上任意定向的盒子 - 乘以逆世界变换可以(当然完全取决于应用程序:))将你放在一个轴对齐的空间,如果你有兴趣寻找与在框的本地空间中进行计算的其他对象将使这更容易.
在矩阵向量中,您的向量将被解释为列向量.在向量矩阵中,它将被解释为行向量.2x2例子:
/ a b \ / e \ / ae+bf \ | | * | | = | | \ c d / \ f / \ ce+df / / a b \ ( e f ) * | | = ( ea+fc eb+fd ) \ c d /
如您所见,结果是不同的.
顺便提一下,在转置矩阵之后,做一个与做另一个相同.
就3D空间而言,如果你认为两个选项中的一个是线性变换,我不知道是否有另一个明智的解释.这个维基百科的部分说明了它,但它超出了我对线性代数的理解.