Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android将设备坐标系转换为;“用户”;坐标系_Android_Orientation_Sensors_Android Sensors_Rotational Matrices - Fatal编程技术网

Android将设备坐标系转换为;“用户”;坐标系

Android将设备坐标系转换为;“用户”;坐标系,android,orientation,sensors,android-sensors,rotational-matrices,Android,Orientation,Sensors,Android Sensors,Rotational Matrices,我的问题类似于 我希望能够在不考虑设备方向的情况下相互比较用户的移动。因此,当用户以纵向方向伸出手机并弯曲手臂时,加速度读数与他以横向方向伸出手机然后以相同方向弯曲手臂时的加速度读数相同 这就是我所说的“用户”坐标系。它与世界坐标系不同,因为它不应与用户面对的风向无关。它与设备坐标不同,因为用户如何握住设备并不重要 在我的应用程序中,可以在每次移动之前执行校准步骤,以便确定基准/静止方向矩阵。这可能只是将第一个运动的矩阵乘以第二个运动的逆矩阵(然后乘以新值)的问题吗 上述问题的答案似乎是正确的,

我的问题类似于

我希望能够在不考虑设备方向的情况下相互比较用户的移动。因此,当用户以纵向方向伸出手机并弯曲手臂时,加速度读数与他以横向方向伸出手机然后以相同方向弯曲手臂时的加速度读数相同

这就是我所说的“用户”坐标系。它与世界坐标系不同,因为它不应与用户面对的风向无关。它与设备坐标不同,因为用户如何握住设备并不重要

在我的应用程序中,可以在每次移动之前执行校准步骤,以便确定基准/静止方向矩阵。这可能只是将第一个运动的矩阵乘以第二个运动的逆矩阵(然后乘以新值)的问题吗

上述问题的答案似乎是正确的,但我需要一个更具体的解释,实际的代码示例将是理想的


注意:remapCoordination系统不够,它只接受直角。我需要能够处理小偏差,因为设备绑在手腕上,手腕可能并不总是与手臂成直角。

我目前正在处理这个问题,我认为这可能会有帮助:

我们可以假设,在大多数情况下,人们站着或走路或坐着使用手机,这意味着用户坐标系共享相同的z轴(重力),y轴(用户坐标,用户脸部前方)和y轴(世界坐标,北向)之间的度数差是固定的。程度的差异可通过以下方式获得:。这样我们就可以从世界坐标转换到用户坐标

用户躺在床上使用手机的情况如何?我认为在这种情况下,需要通过定义用户坐标的y轴来进行预校准,就像告诉手机哪个方向是用户脸的前方一样