1

我在 SO 上看到过类似的问题,但没有人回答......我想这是一个非常愚蠢的问题,或者可能是一个愚蠢的错误导致一个毫无意义的问题。我想这更像是一个与数学相关的问题,而不是一个编程问题。无论如何,我已经挣扎了两个星期,所以我希望你能帮助我!

我想使用 M=SensorManager.getRotationMatrix() 在设备系统中查找“静态”向量的坐标(坐标是世界系统中的常量)。当我在 opengl 中使用矩阵时,一切都很顺利,但是当我尝试自己编写一些代码时,我得到了一些我无法理解的值。

例如,我有一个从设备屏幕中心指向北方的向量。让我们称之为y。世界系统中 y 的坐标是 y(0,1,0) 并且它们不会改变。但是,如果我旋转设备,这些坐标值会在设备系统中发生变化,并变为 y'(y1,y2,y3)。我想知道 y1,y2 和 y3。

我尝试了 y' = M*y,但我无法弄清楚我得到的值是什么:它们与我在旋转设备时所期望的任何东西都不匹配。我认为它会旋转设备的 y 矢量(指向相机),使其与地球磁北对齐,并且我得到的坐标将在设备的系统中。这实际上是当我在 opengl.multmatrix 中使用矩阵时发生的情况......矢量旋转并始终指向北方。

我还尝试重新映射旋转矩阵,因为我使用了一个变压器垫,看起来它实际上是指向相机的 x 向量。但是 y' 值也不是我所期望的,我不需要用 opengl 来做。
那么如果我想手动完成opengl的工作,我在理论上缺少什么,而实际上 M*y 是什么?我应该使用 M 转置,因为我真正想要的是改变我表达向量的系统吗?(我也试过了,但又失败了)。欢迎任何详细的回答......谢谢。

4

0 回答 0