3

我一直在尝试理解这两行代码

SensorManager.getRotationMatrix(RTmp, I, grav, mag); 
SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_X,SensorManager.AXIS_MINUS_Z, Rot);

我阅读了 的文档remapCoordinateSystem(),但是我迷路了。

谁能向我解释到底是做什么getRotationMatrixremapCoordinateSystem?特别是SensorManager.AXIS_XSensorManager.AXIS_MINUS_Z

4

3 回答 3

3

我相信返回一个将设备坐标转换为世界坐标getRotationMatrix()的旋转矩阵,如android文档中所述,而不是“世界”到“设备”。

计算倾斜矩阵 I 以及旋转矩阵 R,将向量从设备坐标系转换为定义为直接正交基的 世界坐标系,其中

于 2011-07-25T19:46:29.587 回答
1

我认为getRotationMatrix()@Noname 清楚地解释了的功能。我正在尝试回答您的第二个和第三个问题,考虑remapCoordinateSystem()SensorManager.AXIS_X, SensorManager.AXIS_MINUS_Z。 实际上是改变 CoordinateSystem,设置新的 X、Y、Z-AXIS 其中

,是手机的坐标系。从您的代码中,我相信您正在纵向进行增强现实。这就是您将 Y 轴设置为 FYI 的原因。如果你想在横向上做同样的事情,你将设置坐标系如下:remapCoordinateSystem()SensorManager.AXIS_XSensorManager.AXIS_MINUS_ZSensorManager.AXIS_MINUS_Z

SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, Rot);

我希望这有帮助。

于 2012-11-14T14:37:18.560 回答
0

完全脱离上下文提出这样的问题通常很难回答。您还应该熟悉格式(例如:4 个空格表示代码):

SensorManager.getRotationMatrix(RTmp, I, grav, mag);
SensorManager.remapCoordinateSystem(RTmp, SensorManager.AXIS_X,SensorManager.AXIS_MINUS_Z, Rot);

然而:

我会说您使用文档走在正确的轨道上。如您所见,getRotationMatrix 提取将“世界坐标系”转换为当前设备坐标系所需的当前旋转矩阵。此外 remapcoordinateSystem 将给定的坐标系相应地转换为给定的旋转矩阵。但如上所述 - 断章取义,很难告诉你为什么有人这样做。

于 2011-02-28T14:04:15.803 回答