反转并乘以旋转矩阵android?如何

问题描述

我想使用从方法
getRotationMatrix()
提取的旋转矩阵进行以下演算:
SensorManager.getRotationMatrix(mRi,mI,mGData1,mMData2);

SensorManager.getRotationMatrix(mRi,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,mRi,0);
Matrix.multiplyMM(Rmult,Rinv,mR,0);
我该怎么做?     

解决方法

        旋转矩阵的逆矩阵(无平移/缩放/剪切)是矩阵的转置,即使用行作为列。请注意,这是一种特殊情况,任何矩阵的转置都不是逆函数,它仅适用于旋转矩阵。 这意味着转置矩阵中索引为0、1、2、3的元素将是索引为0、4、8、12的值,索引为4、5、6、7的值为索引1的值。 ,5、9、13等。 但是,如果您计划与转置进行后期乘法,则一开始根本不进行转置可能会更容易,因为直接与矩阵的转置相乘会更紧密地匹配内存布局,因此您可以进行并行乘法(如果您想进一步使用SIMD)。     ,        看来您正在使用opengl可能是因为您使用的矩阵是android.opengl.Matrix函数,对吧?可能是您的矩阵没有所需的4x4(即float [16])格式吗? 我绝不是专家。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...