我想使用从方法 getRotationMatrix()
中提取的旋转矩阵进行以下微积分:
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);
我该怎么做?
最佳答案
旋转矩阵的逆(没有平移/缩放/剪切)是矩阵的转置,即使用行作为列。请注意,这是一种特殊情况,任何 矩阵的转置不是逆矩阵,它仅适用于旋转矩阵。
这意味着转置矩阵中索引为 0、1、2、3 的元素将是索引为 0、4、8、12 的值,索引为 4、5、6、7 的值将是值索引为 1、5、9、13 等。
但是,如果您计划与转置进行后乘,那么一开始就不进行转置可能会更容易,因为直接与矩阵的转置相乘会更紧密匹配内存布局,因此可以进行并行乘法(如果您想使用 SIMD)。
关于android - 反转和乘法旋转矩阵android?如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155412/