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个重要的概念(您在代码片段中使用过):俯仰、滚动和偏航(或方位角)。再一次,它派上了用场。他们在“更多关于”一节中对此进行了很好的描述,但我建议阅读整篇文章
亲力亲为
据我所知,库每秒将精确返回度。这意味着,使用提供的时间戳,您可以尝试计算手机在任意时间增量内绕任意轴旋转的次数。您只需保存值和时间戳,进行一些转换,就可以得到结果。然而,这需要额外的时间和内存
有一个更简单的方法,你可能已经意识到后,阅读附加的文章。根据要旋转的轴,使用俯仰、滚动或偏航
此外,如果使用库来获取陀螺仪数据,您可能需要考虑。这仍然是一个实验性的特性,但在大多数现代浏览器中都可以使用