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

Respuestas a la pregunta(1)

Su respuesta a la pregunta