React Native:如何根据陀螺仪传感器的输出计算x,y和z轴的旋转角度?

问题描述 投票:0回答:1

我能够使用x和y值在X轴上实现2D旋转,但想计算Y轴和Z轴的旋转角度。

下面是我用于计算xAngle旋转的公式。

var xAngle = Math.atan2(x, y)/(Math.PI/180)

其中x和y分别是陀螺仪传感器在x和y轴上提供的重力值。

有人可以通过共享一组类似的yAngle和zAngle计算公式来帮助我吗?

预先感谢!

javascript react-native rotation accelerometer gyroscope
1个回答
0
投票

作业

刚刚自己完成数学运算,您可能需要注意一些警告。

让我们先快速浏览一下轴并使用正确的名称。俯仰,滚动和偏航描述了围绕每个轴的旋转。有关更多信息,请参见https://sidvind.com/wiki/Yaw,_pitch,_roll_camera

而且,一切都是相对的。传感器可能与一种思维方式有关,而所需的思维方式可能与另一种思维方式有关。

我的解决方案

在我的情况下,相对的方面是数位板在横向(横向:左:逆时针旋转90°),然后平放在其背面(直立的俯仰角为90°)。

[我使用的加速度计读数是相对于人像直立的。

相对于重力,无法根据加速度计信息来计算绕y轴的旋转。这意味着:

  • 纵向和纵向时无法计算间距
  • 在桌子上放平时无法计算滚动量
  • 横向和直立时无法计算偏航
pitch = Math.atan2(-x, -z) * 180 / Math.PI;// In degrees
roll = Math.atan2(-y, -x) * 180 / Math.PI;// In degrees
yaw = Math.atan2(y, -z) * 180 / Math.PI;// In degrees

假设传感器和所需的思维方式匹配

  • 横向和竖直时无法计算间距
  • 在桌子上放平时无法计算滚动量
  • 纵向和纵向时无法计算偏航
pitch = Math.atan2(z, -y) * 180 / Math.PI;// In degrees
roll = Math.atan2(x, -y) * 180 / Math.PI;// In degrees
yaw = Math.atan2(-x, -z) * 180 / Math.PI;// In degrees

您的解决方案

您的x轴旋转与这两个方向上的螺距都不匹配(也不会靠近,不带符号),这表明您不是在计算绕x轴的旋转,而是计算x轴绕另一个(大部分)的旋转可能是z轴旋转(滚动)。

© www.soinside.com 2019 - 2024. All rights reserved.