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

问题描述 投票:0回答:1

背景

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);
    }
}
javascript mobile gps device-orientation magnetometer
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.