簡體   English   中英

Android OpenGL:如何繞世界軸旋轉?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM