背景
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对象。
欢迎所有人查看该应用程序。