家庭作业
我自己刚刚完成了这方面的数学计算,您可能需要注意一些注意事项。
让我们先快速浏览一下轴并使用正确的名称。俯仰、滚动和偏航描述了围绕每个轴的旋转。请参阅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 轴旋转(滚动)。