我如何感知可靠的移动设备角度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何感知可靠的移动设备角度?相关的知识,希望对你有一定的参考价值。

背景

https://lettvin.com/newBBK/orientation.html

我写了这个html5移动浏览器应用程序来报告alpha / beta / gamma和纵向/横向角度。它还强制执行角度的纵向模式视觉显示。没问题。随意在我的应用程序上“查看源代码”。它以开发人员友好的风格编写。我建议单击“展开”按钮以全屏显示,避免位置条干扰显示屏。

我的目标是显示3D对象,旋转设备应旋转对象,以便从各个角度看到它。

问题在于,在某些重要角度,角度值会突然变得不稳定并且变化剧烈且不可预测。这些角度中的一些是常见的设备位置,例如笔直纵向或背面平坦。这个问题似乎是deviceorientation事件的固有特征。

我见过的应用程序可以保持3D显示器的稳定角度,而不受这些不稳定因素的影响:

https://richtr.github.io/Marine-Compass/

我已经浏览了一个多星期,试图找到一个相当简单的javascript解决方案,但发现没有什么简单的适应。

我如何获得稳定的角度,例如Marine Compass应用程序,因此我可以在任何角度扭曲设备而不会出现不稳定性。我不要求可靠的北方向;只有可靠的移动设备扭转角度。

代码:(不是真的相关,但要求)

function deviceOrientationListener(event) {
    if (typeof event.alpha === "number") {
        var angles = {
            alpha : parseInt(event.alpha),
            beta  : parseInt(event.beta ),
            gamma : parseInt(event.gamma),
            screen: screen.orientation.angle,
        };
        turnPortrait(angles);
        fillTabular (angles);
        drawGraphics(angles);
    }
}
答案

我决定限制视角以避免不稳定。

我将使用10 <= beta <= 80和-45 <= gamma <= 45来支持翻译-90 <= b <= 90和-90 <= c <= 90其中b和c将用于旋转a 3D对象。

欢迎所有人查看该应用程序。

以上是关于我如何感知可靠的移动设备角度?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取Android设备用户移动的速度? Location.getSpeed 可靠吗?

从客户端的角度来看移动端IM即时通讯的消息可靠性和送达机制

这些角度电子邮件指令代码片段如何连接

添加两个窗格的平板电脑布局会导致在移动设备中找不到视图(小于w600dp)

浅析基于边缘计算的移动AR实现(下)

Spring Mobile移动端访问后台服务设备类型检测网站偏好及分辨率感知