【问题标题】:React Native: How to compute x, y and z axis rotation angles based on gyroscope sensor outputs?React Native:如何根据陀螺仪传感器输出计算 x、y 和 z 轴旋转角度?
【发布时间】:2019-10-23 11:08:20
【问题描述】:

我能够使用 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】:

    家庭作业

    我自己刚刚完成了这方面的数学计算,您可能需要注意一些注意事项。

    让我们先快速浏览一下轴并使用正确的名称。俯仰、滚动和偏航描述了围绕每个轴的旋转。请参阅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 轴旋转(滚动)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多