ФОН
https://lettvin.com/newBBK/orientation.html
Я написал это мобильное браузерное приложение HTML5, чтобы сообщать об альфа/бета/гамме и угле портрета/пейзажа. Он также обеспечивает визуальное отображение углов в портретном режиме. Нет проблем с этим. Не стесняйтесь «просматривать исходный код» в моем приложении. Он был написан в удобном для разработчиков стиле. Я рекомендую нажать на кнопку «развернуть», чтобы перейти в полноэкранный режим и избежать вмешательства строки адреса в дисплей.
Моя цель — отображать 3D-объекты, в которых вращение устройства должно вращать объект, чтобы его можно было увидеть под разными углами.
Проблема в том, что при определенных важных углах значения углов могут внезапно стать нестабильными и резко и непредсказуемо измениться. Некоторые из этих ракурсов являются обычными положениями устройства, например, вертикально вверх или горизонтально на спине. Эта проблема, по-видимому, присуща событию ориентации устройства.
Я видел приложения, которые поддерживают стабильные углы для 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);
}
}