我正在构建一个小型全景照片查看器,其中有一个选项可以使用陀螺仪浏览场景。我正在从deviceOrientation事件中获取数据,并将欧拉角转换为旋转矩阵,然后通过一些变换最终移动一个带有3dMatrix转换的CSS立方体。
我的问题是,在不同设备上的不同浏览器中,从deviceOrientation事件中获得的数据非常不同,而且我不明白为什么会出现这种情况。
在我尝试过的几乎所有iPhone上,使用safari mobile和Chrome都能很好地工作。值的出现是有意义的,整个体验非常流畅。
在Samsung Galaxy S3上,使用Chrome,我的数据完全不稳定。alpha值似乎并不代表绕z轴的旋转,而且值之间存在巨大的跳跃,例如beta在只有微小运动的情况下从50度跳到130度。
在Galaxy Tab S 8.4英寸的Chrome浏览器中,我仍然得到一些不稳定的值,存在一些来回颤抖,但至少得到了逼近所需行为的东西。
在Nexus 7第二代上,使用Chrome,体验非常连贯而且有意义。与iPhone相比,它的渲染有些卡顿,但是它正在正确地旋转一切,并且值是合理的。
有人知道我如何能够解决这些问题,或者我应该如何解决这些问题吗?它们可能是Samsung Android的一个问题,或者在操作系统最新版本的Android本身中存在问题。
你有什么想法?建议?我的确迷失了方向。
谢谢!