html5 - Obtener rotación de orientación del dispositivo en coordenadas relativas
Estoy tratando de obtener el cambio de orientación entre dosdeviceorientation
eventos a lo largo del eje izquierdo-derecho y el eje superior-inferior, esos ejes generalmente se definen como el teléfonox
yy
eje (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Orientation_and_motion_data_explained)
es decir, entre instantest1
yt2
de dónde se mueven esos ejes telefónicos(x1, y1)
a(x2, y2)
Me gustaría conseguir(angle(x2-x1), angle(y1-y2))
.
Cuando el dispositivo está en modo vertical (en oposición al modo horizontal), esos ejes parecen corresponder albeta
ygamma
. Sin embargo, cuando el teléfono está vertical (la parte inferior mirando hacia el suelo), elgamma
el valor se vuelve extremadamente inestable y salta de 90 a -90 grados (en la misma ocasión, el alfa salta 180 grados) Puede ver fácilmente queaquí en tu teléfono
Me gustaría evitar eso, y también obtener valores en el rango de 360. Esto es lo que tengo hasta ahora:
// assuming portrait mode
var beta0, gamma0;
window.addEventListener('deviceorientation', function(orientation) {
if (typeof beta0 === 'undefined') {
beta0 = beta;
gamma0 = gamma;
}
console.log('user has moved to the left by', gamma - gamma0, ' and to the top by', beta - beta0);
});
Eso funciona bien cuando el dispositivo es mayormente horizontal, y nada cuando está vertical