[英]Android OpenGL: How to rotate around the world axes?
我有一個 touchRotationMatrix,我執行以下操作:
Matrix.setIdentityM(identity, 0);
Matrix.rotateM(identity, 0, x, 0,1,0);
Matrix.multiplyMV(v, 0, identity, 0, v, 0)
Matrix.rotateM(identity, 0, y, 1,0,0);
Matrix.rotateM(identity, 0, y, v[0],v[1],v[2]);
Matrix.multiplyMM(touchRotationMatrix, 0, identity, 0, touchRotationMatrix, 0);
X 和 Y 是標准化的旋轉增量。
這適用於我的 model 矩陣,如下所示:
Matrix.multiplyMM(mModelMatrix, 0, mModelMatrix, 0,touchRotationMatrix,0);
這里的問題是我所做的任何旋轉都是在它自己的軸上。
讓我說明為什么我不想要這個:
如果我從左到右旋轉,就像轉動你的頭,這很好。 如果我先向上旋轉,然后從左向右旋轉,我最終會看到地板或天花板。 這是有道理的,因為它在其軸上旋轉。
我的問題是,如何使 x 旋轉不在它自己的軸上發生?
我希望我很清楚,任何指導或幫助將不勝感激! 謝謝!
PS 我不是 OpenGL 和線性代數方面的專家。
不太清楚,但要么
Matrix.setRotateM(identity, 0, y, 1,0,0);
Matrix.multiplyMM(touchRotationMatrix, 0, identity, 0, touchRotationMatrix, 0);
Matrix.rotateM(touchRotationMatrix, 0, x, 0,1,0);
或者
Matrix.setRotateM(identity, 0, x, 0,1,0);
Matrix.multiplyMM(touchRotationMatrix, 0, identity, 0, touchRotationMatrix, 0);
Matrix.rotateM(touchRotationMatrix, 0, y, 1,0,0);
可能會按您的預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.