加速与设备方向无关
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
...
此 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
...