关于z轴旋转时的iOS陀螺仪错误

时间:2015-04-07 01:01:08

标签: javascript ios orientation calibration

我无法解决我遇到的一个奇怪的错误,并且想知道是否有其他人遇到类似的问题或者可以提供解决方案。

我正在使用javascript访问陀螺仪iOS设备,我对围绕z轴旋转感兴趣;当设备平躺在桌子上时,我想要旋转角度。

然而,对于每360度旋转,陀螺似乎偏离约20度。如果我将设备与桌面上的东西对齐,那么旋转设备360deg,将其返回到它的起始点,角度读数为~340deg而不是360或0.这是复合,因此在1080度旋转后,角度偏离~60deg ,如果我然后反向旋转它会反转错误(在这种情况下,在-1080deg旋转后它将返回0deg)。

我已经在Ipad 2,3和iPhone 4上对它进行了测试,并且它在所有这些问题上都遇到了类似的问题 - 尽管iPhone更像是每个360度的8deg。我也尝试使用像gyro.js这样的库,但是会出现同样的结果。

我已经整理了一个简短的codepen示例来演示。 http://codepen.io/CharlesSmart/pen/ZYNXEJ?editors=101

window.addEventListener('deviceorientation', orientationHandler, false);
function orientationHandler(e)
{
var alpha = e.alpha
var div = document.getElementById('text');
div.innerHTML = alpha;
}

我是否以某种方式滥用了方向api?这可能是我正在使用的设备的问题吗?

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

我敢打赌,你得到的是加速度计数据,而不是陀螺仪数据。

你可能想要“devicemotion”而不是“deviceorientation”。