看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1460306915.A.913.html
Bencrie: matlab 不熟。OpenGL 是一堆矩陣乘完以後最後才乘頂點 04/11 01:12
Bencrie: 效果就會是你執行順序的反向 04/11 01:13
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...
Schottky: 如果搞不清方向,怎麼不用 glRotatef() 方便多了 04/11 02:04
我知道這是一個四元數的表達方式, 但我還要逆推旋轉矩陣的四元數,豈不是多此一舉嗎?
Bencrie: 所以我說是 column major 啊 XD 04/11 13:11
longlongint: 自己用其他library算完座標再畫出來 04/11 13:14
longlongint: 然後左右手座標系注意一下 04/11 13:15
其實我也只有一個旋轉矩陣而已XDDDD
taies: glMultTransposeMatrix? 04/12 02:58
因為我是使用已經編譯好的 glut,沒有用到完整的, 所以這個涵式似乎沒有在這個精簡版裡面。 QAQ ※ 編輯: qscgy4 (123.195.32.108), 04/12/2016 23:08:05
taies: GLee裡有定義那函式 看看要不要用 04/12 23:38
qscgy4: GLEE的網頁掛啦...根本連不進去XD 04/13 01:23
Bencrie: 那個函數不是 glut 的 04/13 01:40
chehsunliu: 我都用glm@@ 04/14 01:26
ronin728: 我不知道Matlab用什麼表示法,但是OpenGL與DirectX是不 04/17 13:56
ronin728: 同的,網路上能找到轉換公式,可以參考,舉一反三 04/17 13:56