如果我做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