2016-02-29 269 views
1

我在XYZ中以90度步進旋轉對象(rX rY rZ)。角度的限制在0-360度和我使用下列命令的矩陣旋轉:在XYZ旋轉後計算對象XYZ方向

Matrix.rotateM(mModelMatrix, 0, rX, 1.0f, 0.0f, 0.0f); 
Matrix.rotateM(mModelMatrix, 0, rY, 0.0f, 1.0f, 0.0f); 
Matrix.rotateM(mModelMatrix, 0, rZ, 0.0f, 0.0f, 1.0f); 

如果對象的XYZ - 前旋轉 - 是(X +),(Y + )和up(Z +);在任意旋轉後如何輕鬆計算正確,離開和上漲的內容?

我沒有其他資料,但RXRYRZ旋轉變量。

+1

使用相同的旋轉旋轉不同的3D單位矢量。然後對結果進行查找。 – flakes

+0

有趣而簡單的方法,謝謝! – Plarsen

回答

1

當有一個矩陣時,將基矢量與相同矩陣相乘以得到變換後的矢量可能是最有意義的。例如,如果您正在尋找一個面向對象(0,0,1)的矢量,並且尊重其內部座標系,則首先將該矩陣的原點(0,0,0)轉換爲新的中心點,然後轉換目標向量(0,0,1)使用相同的過程。結果是target-origin。該程序適用於任何系統和任何你需要的組合,但你需要注意你所乘的矩陣,因爲在大多數情況下不應該包含投影。

針對您的特定情況的另一個有趣的解決方案可能只是查看矩陣基向量。矩陣的左上方3x3部分實際上代表x,yz的3軸。所以身份是x=(1,0,0),y=(0,1,0),z=(0,0,1)。一旦旋轉或縮放,這些值將會改變,並可以直接從矩陣中訪問。

+0

謝謝,你的最後一個建議是從矩陣的3x3部分做到了!我做了簡單的測試,如下所示:if(mRotationMatrix [0] + mRotationMatrix [1] + mRotationMatrix [2] <0.0f) gridx = 15-gridx;所有三個軸都可以決定是否應該反轉一個數組。完善! – Plarsen