我正在构建一个应用程序来检测手机是否已旋转360度。这种旋转很可能在35秒内完成。如何准确地检测到这一点?我已经阅读了一些关于“集成”和短期使用陀螺仪以及加速度计来补偿陀螺仪的文章。实现这一目标的最佳方法是什么,以及如何从陀螺仪获得旋转值?
我并不真正理解RotationMatrix乘以倒数CMAttitude。即使我不使用手机,CMAttitude.yaw也会给我不同的价值。我也见过茶壶的例子。我的代码大致相同,除了我需要自己处理RotationMatrix的数据,因为我没有使用OpenGL为我做这个。
提前致谢, Hidde
答案 0 :(得分:1)
调查核心动作API似乎最好的办法是监控旋转速度。具体来说,通过CMDeviceMotion接口声明了一个rotationRate属性,并进行了讨论:
宣布您的兴趣来监控事件CMRotationRate结构包含指定设备速率的数据 围绕三个轴旋转。该属性的值包含a 测量其偏置已被Core消除的陀螺仪数据 运动算法。 CMGyroData的相同名称属性,在 另一方面,从陀螺仪中提供原始数据。结构类型 在CMGyroData.h中声明。
- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame toQueue:(NSOperationQueue *)queue withHandler:(CMDeviceMotionHandler)handler
然后你需要做一些数学运算来计算一个旋转应该以给定的速率发生的时间,以构成一个完整的360度旋转。