Math 与向量*矩阵相比,矩阵*向量意味着什么
如果我执行Math 与向量*矩阵相比,矩阵*向量意味着什么,math,3d,directx,matrix,xna,Math,3d,Directx,Matrix,Xna,如果我执行positionVector*worldMatrix操作,位置将转换为世界空间。 但是如果我用另一种方式(worldMatrix*positionVector)在3d空间中做,会发生什么呢 我注意到结果与第一个不同。我已经在谷歌上搜索了矩阵,数学,他们解释了很多,但不是这一个,至少我找不到它。在matrixvector中,你的向量将被解释为列向量。在vectormatrix中,它将被解释为行向量。2x2个示例: / a b \ / e \ / ae+bf \ | | *
positionVector*worldMatrix
操作,位置将转换为世界空间。
但是如果我用另一种方式(worldMatrix*positionVector
)在3d空间中做,会发生什么呢
我注意到结果与第一个不同。我已经在谷歌上搜索了矩阵,数学,他们解释了很多,但不是这一个,至少我找不到它。在matrixvector中,你的向量将被解释为列向量。在vectormatrix中,它将被解释为行向量。2x2个示例:
/ a b \ / e \ / ae+bf \
| | * | | = | |
\ c d / \ f / \ ce+df /
/ a b \
( e f ) * | | = ( ea+fc eb+fd )
\ c d /
正如你所看到的,结果是不同的
顺便说一句,在转置矩阵后执行一个与执行另一个相同
在3D空间中,如果你认为这两个选项中的一个是线性变换,我不知道是否有另一个有意义的解释。说了一些关于它的事情,但它超出了我对线性代数的理解。(矩阵*向量)等同于(向量*转置(矩阵))矩阵数学规则:
给定矩阵A和B,大小为MxN和OxP
- 矩阵积A*B仅在N=O时定义
- 结果将是一个大小为MxP的矩阵
要获得矩阵数学的更多乐趣,请查看此项。正如其他人所指出的那样-交换乘法顺序相当于乘以转置。碰巧,旋转矩阵是一种特殊类型的矩阵,我们称之为旋转矩阵,它为您提供了许多简洁的属性 最有趣的可能是矩阵的转置是它的逆矩阵。对于您的世界变换,将变换乘以逆相当于在世界空间中获取一个位置,并将其拉入与变换关联的对象的局部坐标中
作为一个例子,考虑一个在世界上任意定向的盒子——乘以逆世界变换(可以完全依赖于:当然)将你放在一个轴对齐的空间中,如果您对寻找与其他对象的碰撞感兴趣,在长方体的局部空间中进行计算会更容易。
您是说反转(mat)与转置(mat)相同吗?我找不到任何证据证明这一点,因为这与我的学校知识相矛盾。一般来说,转置与反转不同。这是正交矩阵的一个特定属性(请查看我回复中的链接了解更多详细信息),所有旋转和反射矩阵都是正交矩阵。感谢链接,但在HLSL(着色器语言)中,有一个函数mul(mat,vec)和mul(vec,mat)。在一种情况下,vec被解释为列向量,而在另一种情况下,它被解释为行向量。是的,任何好的图形库/语言都应该有一个函数来为您实现这一点,但了解该函数中的内容非常有用。