作者qscgy4 (有點厲害)
看板C_and_CPP
標題[問題] OpenGL glmultmatrixf 方向?
時間Mon Apr 11 00:48:32 2016
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Win7
VC2010
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
GLUT 3.7 beta
問題(Question):
我在 opengl 中使用了 glmultmatrixf() 函式,來旋轉我的圖形。
可是轉起來怎麼方向是相反的....!?
同樣的旋轉矩陣在 Matlab 是對的,在這裡怎麼反過來了..
我有google了一下,似乎跟是opengl矩陣左/右乘跟別人不一樣!?
請問我要怎麼設定,才能讓opengl的計算跟一般數學計算一樣呢?
還是我只能手動自己轉置旋轉矩陣..。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.32.108
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1460306915.A.913.html
1F:推 Bencrie: matlab 不熟。OpenGL 是一堆矩陣乘完以後最後才乘頂點 04/11 01:12
2F:→ Bencrie: 效果就會是你執行順序的反向 04/11 01:13
3F:→ Bencrie: 然後矩陣是 column major 04/11 01:15
我知道矩陣是相乘後才乘頂點,我也知道 V_i = A_ij * U_j,的幾何意義。
現在是 opengl 的旋轉矩陣乘的順序跟別人相反,
例如我輸入一個 A_ij,實際上他算出來的是 A_ji,
所以我必須手動轉置 A_ij->A_ji 然後讓 opengl 畫出 A_ij...
4F:→ Schottky: 如果搞不清方向,怎麼不用 glRotatef() 方便多了 04/11 02:04
我知道這是一個四元數的表達方式,
但我還要逆推旋轉矩陣的四元數,豈不是多此一舉嗎?
5F:推 Bencrie: 所以我說是 column major 啊 XD 04/11 13:11
6F:推 longlongint: 自己用其他library算完座標再畫出來 04/11 13:14
7F:→ longlongint: 然後左右手座標系注意一下 04/11 13:15
其實我也只有一個旋轉矩陣而已XDDDD
8F:推 taies: glMultTransposeMatrix? 04/12 02:58
因為我是使用已經編譯好的 glut,沒有用到完整的,
所以這個涵式似乎沒有在這個精簡版裡面。 QAQ
※ 編輯: qscgy4 (123.195.32.108), 04/12/2016 23:08:05
9F:→ taies: GLee裡有定義那函式 看看要不要用 04/12 23:38
10F:→ qscgy4: GLEE的網頁掛啦...根本連不進去XD 04/13 01:23
11F:推 Bencrie: 那個函數不是 glut 的 04/13 01:40
12F:推 chehsunliu: 我都用glm@@ 04/14 01:26
13F:推 ronin728: 我不知道Matlab用什麼表示法,但是OpenGL與DirectX是不 04/17 13:56
14F:→ ronin728: 同的,網路上能找到轉換公式,可以參考,舉一反三 04/17 13:56