所以我正在學習OpenGL作爲擁有「紅皮書」的主要資源。我正在閱讀矩陣代數,旋轉/縮放/變換矩陣,一切都很好,但我只是沒有得到一個簡單的東西。我們說glLoadIdentity()函數。它設置4x4的默認矩陣。因此它設置3個頂點和1個點:(1,0,0)(0,1,0)(0,0,1)頂點,(0,0,0)點。但我的問題是,這些對應的是什麼?一般來說,OpenGL中矩陣對應的是什麼?我知道這些是軸子的方向。但是什麼的軸心?相機?OpenGL中的矩陣
0
A
回答
5
OpenGL矩陣只對應於一個變換,將一個座標空間中定義的對象,矢量和點移動到另一個座標空間。如果在一個座標空間中有一個矩陣M(m11 - m44,如下所示)和一個矢量V(v1 - v4),那麼乘以M將轉換您的V矢量(可以描述運動矢量,物體位置或物體頂點)到W(W1-W4)在不同的座標空間:
| m11 m12 m13 m14 | | v1 | | w1 |
| m21 m22 m23 m24 | | v2 | | w2 |
| m31 m32 m33 m34 | X | v3 | = | w3 |
| m41 m42 m43 m44 | | v4 | | w4 |
其中:
w1 = m11 * v1 + m12 * v2 + m13 * v3 + m14 * v4
w2 = m21 * v1 + m22 * v2 + m23 * v3 + m24 * v4
w3 = m31 * v1 + m32 * v2 + m33 * v3 + m34 * v4
w4 = m41 * v1 + m42 * v2 + m43 * v3 + m44 * v4
因此,如果我們認爲V1的 - V3作爲老X,Y和Z座標,並設置V4到1,那麼我們可以將w1 - w3看作新的x,y和z座標,我們可以看到幾件事情:
m11是舊x座標到新座標的乘數因此它在比例變換用(以及類似地對於M22和M33)
M14乘以1並添加到新的x座標,以便它被用於轉換(並且類似地對於M24和M34)
旋轉是有點困難進行概念化,但通過將其他矩陣值設置爲適當的值來完成。你可以在這裏閱讀更多:http://gpwiki.org/index.php/Matrix_math
0
默認矩陣僅僅是單位矩陣:
/1 0 0 0\
|0 1 0 0|
|0 0 1 0|
\0 0 0 1/
在更一般的情況下(不考慮角度和其他可能的異國變換)...
/a d g j\
|b e h k|
|c f i l|
\0 0 0 1/
...轉換後的座標系的組成如下:
/a\
X-axis = |b|
\c/
/d\
Y-axis = |e|
\f/
/g\
Z-axis = |h|
\i/
/j\
Origin = |k|
\l/
如果您將這些關聯到單位矩陣,您可以看到「3個頂點和1個點」來自哪裏。
除了單位矩陣,這適用於任何變換 - 旋轉,平移等 - 保持底行在(0 0 0 1),並提供了一種簡單的方法來可視化這種變換。簡單地將上面的四個分量看作代表軸(1 0 0),(0 1 0),(0 0 1)和原點(0 0 0)在由矩陣轉換後最終結束的四個分量(記住軸不是絕對的,而是相對於原點)。
相關問題
- 1. OpenGL的矩陣VS DirectX的矩陣
- 2. OpenGL正常矩陣
- 3. OpenGL投影矩陣
- 4. 瞭解OpenGL矩陣
- 5. OpenGL顏色矩陣
- 6. OpenGL中的投影矩陣真的是「投影矩陣」嗎?
- 7. 矩陣堆棧的openGL
- 8. Opengl的載荷矩陣
- 9. OpenGL的矩陣乘法
- 10. OpenGL ES 2.0的矩陣
- 11. OpenGL的矩陣堆棧
- 12. OpenGL中的矩陣堆棧棄用?
- 13. OpenGL中的矩陣圖像處理CE
- 14. OpenGL中的透視投影矩陣
- 15. 堆棧中的push和pop矩陣(openGL)
- 16. OpenGL中矩陣乘法的順序
- 17. OpenGL獲取投影矩陣
- 18. OpenGL:反射矩陣問題
- 19. OpenGL和XNA矩陣差異
- 20. OpenGL 3.0+:正投影矩陣
- 21. OpenGL旋轉矩陣和ArcBall
- 22. 包裝OpenGL矩陣翻譯
- 23. 旋轉和OpenGL矩陣
- 24. 關於OpenGL矩陣乘法
- 25. openGL - 正交投影矩陣
- 26. 模型lookAt矩陣 - C++,OpenGL
- 27. OpenGL glut glTranslate glRotate glScale矩陣
- 28. OpenGL ES Android矩陣轉換
- 29. 矩陣不能在openGL中工作
- 30. 的OpenGL:矩陣堆棧的功能
哦,所以通過調用glLoadIdentity()我們只是將矩陣重置爲一個(單位矩陣),這與矢量的多重性將導致相同的向量?換句話說,不會以任何方式影響對象?我們這樣做是因爲draw函數使用當前加載的矩陣繪製對象?我理解它嗎? – Asido 2011-01-27 09:59:45