如果我做positionVector*worldMatrix
该位置被转换为世界空间。 但是,如果我以相反的方式(worldMatrix*positionVector
)在三维空间方面做了什么呢?矩阵*向量与向量*矩阵相比意味着什么
我注意到结果与第一个不同。我已经使用了矩阵,数学他们解释了很多,但不是这个,至少我找不到它。
如果我做positionVector*worldMatrix
该位置被转换为世界空间。 但是,如果我以相反的方式(worldMatrix*positionVector
)在三维空间方面做了什么呢?矩阵*向量与向量*矩阵相比意味着什么
我注意到结果与第一个不同。我已经使用了矩阵,数学他们解释了很多,但不是这个,至少我找不到它。
正如其他人所指出的 - 对换乘法的顺序等同于转置相乘。正如它发生的那样,旋转矩阵是一种称为orthogonal matrices的特殊类型的矩阵,它可以为您提供许多整洁的属性。
最有趣的可能是矩阵的转置是它的逆转。对于你的世界而言,变换乘以倒数相当于在世界空间中占据一个位置并将其拉入与变换相关联的对象的局部坐标中。
作为一个例子,考虑一个世界上任意取向的盒子 - 乘以逆世界变换可以(完全取决于应用程序当然:))把你放在一个轴对齐的空间中,如果你对寻找与其他物体的碰撞,在盒子的本地空间进行计算会使这更容易。
在矩阵矢量,你的载体将被解释为一个列向量。在向量矩阵中,它将被解释为行向量。 2x2的例子:
/ a b \ /e \ /ae+bf \
| | * | | = | |
\ c d/ \ f/ \ ce+df/
/a b \
(e f) * | | = (ea+fc eb+fd)
\ c d/
正如你所看到的,结果是不同的。
顺便说一下,这样做的一个是相同的转置矩阵后做另一个。
在三维空间而言,如果你考虑的两个选项一个是线性变换,我不知道是否有对其他任何一个明智的解读。 This Wikipedia section说了一些事情,但它超出了我对线性代数的理解。
(矩阵*向量)等效于(矢量*的转置(矩阵))
矩阵数学规则:
鉴于矩阵甲和乙,具有大小为M×N和OXP,
另一个重要的规则是,矩阵乘法是不可交换的。 甲 * 乙!= 乙 * 在计算机图形学甲
典型地,该位置矢量是一个4×1矩阵,和世界视图矩阵是正方形,4×4。因此,您应该期望将世界视图矩阵与位置矢量预乘以不确定。将世界视图矩阵应用到位置矢量的正确方法是以另一种顺序,将位置矢量与世界视图矩阵预乘。 (我讲数学,这里)
对于矩阵数学更多的乐趣,看看这个tutorial。
感谢您的链接,但在HLSL(着色器语言)中,有一个函数mul(mat,vec)以及mul(vec,mat)。在一个vec被解释为列向量,另一个被解释为行向量。 – codymanix 2009-02-25 14:25:05
是的,任何好的图形库/语言都应该有一个功能可以为你做这件事,但知道该功能的内容是有用的。 – 2009-02-25 14:41:23