android - 反转和乘法旋转矩阵android?如何

标签 android matrix

我想使用从方法 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/

相关文章:

c++ - 如何继承矩阵类?

Java更好的方法来通过特定值存储int矩阵中的值

java - Android 蓝牙套接字卡住应用程序

android - TextInputEditText 没有 'setStartIconDrawable' 功能,为什么?

android - Microsoft Cortana API SDK 适用于 iOS 和 Android 吗?

android - 警告更新 Kotlin : File extension '*.klib' was reassigned to 'ARCHIVE'

c# - 最长公共(public)子序列

c - 在 5*5 螺旋阶矩阵中求 [R, C]

list - 如何在序言中转置矩阵

android - MapView 在 NestedScrollView 内部时变小