Android 旋转矩阵的求逆和乘法?如何

Android 旋转矩阵的求逆和乘法?如何,android,matrix,Android,Matrix,我想使用从方法getRotationMatrix()中提取的旋转矩阵进行以下演算: 怎么做?旋转矩阵的逆矩阵(没有平移/缩放/剪切)是矩阵的转置,即使用行作为列。请注意,这是一种特殊情况,任何矩阵的转置都不是逆矩阵,它只适用于旋转矩阵 这意味着在转置矩阵中,指数为0、1、2、3的元素将是指数为0、4、8、12的值,指数为4、5、6、7的值将是指数为1、5、9、13的值,依此类推 不过,如果您计划使用转置进行后期乘法,那么一开始就不使用转置可能会更容易,因为直接使用矩阵的转置进行乘法与内存布局更匹

我想使用从方法
getRotationMatrix()
中提取的旋转矩阵进行以下演算:


怎么做?

旋转矩阵的逆矩阵(没有平移/缩放/剪切)是矩阵的转置,即使用行作为列。请注意,这是一种特殊情况,任何矩阵的转置都不是逆矩阵,它只适用于旋转矩阵

这意味着在转置矩阵中,指数为0、1、2、3的元素将是指数为0、4、8、12的值,指数为4、5、6、7的值将是指数为1、5、9、13的值,依此类推


不过,如果您计划使用转置进行后期乘法,那么一开始就不使用转置可能会更容易,因为直接使用矩阵的转置进行乘法与内存布局更匹配,因此可以进行并行乘法(如果您想使用SIMD).

看来您使用opengl可能是因为您使用的矩阵是android.opengl.Matrix函数,对吗?是否您的矩阵没有所需的4x4(即浮点[16])格式


我绝对不是专家。

你为什么要这样做?结果是什么?你如何使用它?
SensorManager.getRotationMatrix(mRi, mI, mGData1, mMData2);

SensorManager.getRotationMatrix(mRi, mI, mGData, mMData);

//invert(mRi) and multiply it by mR, mRi and mR are float[] with length 16, is this the right way? I'm not getting any result. Rmult returns 0.         

Matrix.invertM(Rinv,0,mRi,0);
Matrix.multiplyMM(Rmult, 0, Rinv, 0, mR, 0);