一會兒,我們可以從乘法矩陣退後一步,看看我們如何乘以向量。有兩種普遍適用的矢量產品:內部產品(也稱爲標量產品)和外部產品。 (然後是隻適用於某些向量的交叉產品)。
現在讓我們看看只有內部產品。讓的內積被定義爲第i列(_
)與每個矢量的第i行(^
)的總和,如果第一操作數是一個行向量
<a,b> = ∑ a_i b^i
或I第一行,第i列,如果第一操作數是通過翻轉它們的順序
<a,b> = ∑ b_i a^i
對於實數的順序相反的可能看起來任意的列矢量,但是如果從非看元素的向量-commutative組(和矩陣就是這樣)。
這當然要求一個向量具有與其他向量具有行數一樣多的列。因此,可以說,我們有兩個行向量一個和b
a = (a1, a2, …, an)
b = (b1, b2, …, bn)
顯然,我們不能繁殖那些在內產品。但讓我們轉換其中之一,製作一個有效的列T(b)= b_。
<a,b_> = a1 b1 + a2 b2 + … + an bn
到目前爲止好。
現在我們來看看矩陣乘法。如果你看一個矩陣,你可以看到它作爲一列行向量
(11, 12, …, 1n)
(21, 22, …, 2n)
(…1, …2, …, …n)
(m1, m2, …, mn)
但是,這只是一個行載體的列矢量!
/ (11, 12, …, 1n) \
| (21, 22, …, 2n) |
| (…1, …2, …, …n) |
\ (m1, m2, …, mn)/
,或者你可以把它看成列的行向量
/11\ /12\ /1…\ /1n\
|21| |22| |2…| |2n|
|…1| |…2| |……| |…n|
\m1/ \m2/ \m…/ \mn/
,當然這僅僅是列向量的行向量
/ /11\ /12\ /1…\ /1n\ \
| |21| |22| |2…| |2n| |
| |…1| |…2| |……| |…n| |
\ \m1/ \m2/ \m…/ \mn//
那麼你嘗試發生通過內部產品放置兩個mattes? <A,B> = ?
。那麼事實證明,如果A的行數與B的列數一樣多,B的行數與A的列數一樣多,那麼如果將A看作行向量的列,將B看作一列列向量。然後你是如何取A的第i行,並將其內積與B的每個(第j)列相結合,將結果寫在結果矩陣的ij位置。
<A,B>_ij = <A^i,B_j>
如果你需要處理opengl的矩陣,爲什麼不使用[glm](http://glm.g-truc.net/0.9.5/index.html)? – Borgleader
是的,你乘以第四行和第四列,取總和,總和成爲相應的佔位符。我不確定我瞭解其餘的。 –
我使用「Eigen」,glm,但我想學習和自己做這個。 – Ivan