当javascript中触发“devicemotion”事件时,我很难完全理解从移动设备返回的信息。我以为我会回来的东西与我所看到的不相符,甚至我所看到的似乎也不一致。
所以我知道设备情感事件有一个X,Y和Z成分,它记录手机的轴向运动。我的假设是,这些数字将是设备向一个方向移动的寄存器,较大的移动会返回更大的数字。举个例子,如果相机向左移动,我会得到一个负的X值,右边会给我一个正的。
很快就明白了,这不是真的。我现在假设(根据我记录的控制台数字),这个事件只测量沿轴的速度变化。所以不知道向左或向右移动,我只知道设备是沿着x轴移动的,而且自从上次触发以来,速度已经改变了返回的数量。所以,我所看到的积极和消极因素实际上与速度的积极或消极变化有关。
这是正确的理解吗?如果是这样的话,这是否意味着没有办法收集方向信息,过去仅仅知道变化发生在一个轴或另一个轴上?
谢谢。
发布于 2014-03-27 18:52:34
DeviceMotionEvent返回m/s^2中的加速度(除其他外)。如果你加速向一个方向移动,它将返回一个正值。如果你以相同的方向以恒定的速度移动,加速度将返回0 (注意,由于加速度计的灵敏度,这实际上是不可能的,你总是会看到0附近的值,永远不会是0)。如果你沿着同样的方向减速,但仍然在移动,你会从加速中得到一个负值。让事情变得更复杂的是,如果你向相反的方向移动,如果你加速,你会得到负值,如果你减速,你会得到正值。这允许您区分设备向上(=正加速度,沿Y轴)或向下(沿Y轴方向为负加速度)和右侧(沿X轴方向为正加速度)或左侧(沿X轴为负加速度)。
如果你想知道设备向哪个方向移动,你就必须在一段时间内捕捉所有的加速度测量值,并据此计算出方向,例如,如果Y加速度开始为正,则设备必须向上移动,直到你检测到沿Y方向的负加速度完全抵消了初始加速度。
https://stackoverflow.com/questions/19627392
复制相似问题