加速与设备方向无关

Acceleration regardless of device orientation

此 javascript 代码测量 x 轴上的水平加速度。目的是测量设备在平行于地球 "horizontal" 表面的直线上移动时的加速度,而不管设备方向如何。
这可以通过陀螺仪数据在给定的加速周期内完成吗? 5秒?如何?谢谢

let xAxis = '';

function handleMotionEvent(event) {
  let x = event.accelerationIncludingGravity.x;
  if (!xAxis) {
    xAxis = x;
  } else {
    if (Math.abs(x - xAxis) > 0.4) {
      console.log(x);
    }
  }
}

if (window.DeviceMotionEvent) {
  window.addEventListener("devicemotion", handleMotionEvent, true);
}

基于this documentation,accelerationIncludingGravity 属性是一个对象,提供有关三轴加速度的信息。每个轴都用自己的 属性:

表示
  • x:x 轴加速度(从西到东)
  • y:y轴加速度(从南到北)
  • z:z 轴加速度(从下到上)

因此,从数学角度来看,为了获得总水平加速度,我们可以使用 r^2 = x^2 + y^2 公式组合 x 和 y 分量。

...
a = Math.sqrt(x*x + y*y); //horizontal acceleration
...