Javascript 在给定(x,y,z)陀螺仪的情况下,如何检测设备旋转360度?

Javascript 在给定(x,y,z)陀螺仪的情况下,如何检测设备旋转360度?,javascript,react-native,react-native-sensors,Javascript,React Native,React Native Sensors,我正在使用从传感器获取原始数据 setUpdateIntervalForType(SensorTypes.gyroscope, 100) gyroscope.subscribe(({ x, y, z, timestamp }) => { let pitch = Math.atan2(-x, -z) * 180 / Math.PI;// In degrees let roll = Math.atan2(-y, -x) * 180 / Math.PI;// In degrees

我正在使用从传感器获取原始数据

setUpdateIntervalForType(SensorTypes.gyroscope, 100)

gyroscope.subscribe(({ x, y, z, timestamp }) => {
  let pitch = Math.atan2(-x, -z) * 180 / Math.PI;// In degrees
  let roll = Math.atan2(-y, -x) * 180 / Math.PI;// In degrees
  let yaw = Math.atan2(y, -z) * 180 / Math.PI;// In degrees
  
  this.setState({pitch: pitch, roll: roll, yaw: yaw})
})
我怎么知道这个设备是360度安装的呢 一般来说,陀螺仪测量旋转运动。我们手机中的大多数传感器都会专门测量角速度。这意味着在大多数情况下,输出将描述手机随时间旋转的程度,通常以每秒度数(
°/s
)表示

有3个轴可以绕着旋转:x、y和z。MATLAB文档中有一幅很好的图片:

还有3个重要的概念(您在代码片段中使用过):俯仰、滚动和偏航(或方位角)。再一次,它派上了用场。他们在“更多关于”一节中对此进行了很好的描述,但我建议阅读整篇文章

亲力亲为 据我所知,库每秒将精确返回度。这意味着,使用提供的时间戳,您可以尝试计算手机在任意时间增量内绕任意轴旋转的次数。您只需保存值和时间戳,进行一些转换,就可以得到结果。然而,这需要额外的时间和内存

有一个更简单的方法,你可能已经意识到后,阅读附加的文章。根据要旋转的轴,使用俯仰、滚动或偏航

此外,如果使用库来获取陀螺仪数据,您可能需要考虑。这仍然是一个实验性的特性,但在大多数现代浏览器中都可以使用