我想将iPhone的偏航,俯仰和滚动从车身框架转换为世界框架,即方位角,俯仰和滚动。在Android上,这很容易用 SensorManager.remapCoordinateSystem(),SensorManager.getOrientation方法详见此处:http://blog.mysticlakesoftware.com/2009/07/sensor-accelerometer-magnetics.html
类似的方法是否可用于iPhone,或者有人能指出我正确的方向如何进行此转换?
由于
答案 0 :(得分:1)
加速度计足以在设备坐标系中获得重力方向矢量。这是在设备平静的情况下。
完整设备定位的下一步是使用CLLocationManager
并在设备坐标系中获取真北向量。
使用标准化的真北矢量和重力矢量,您可以使用点和交叉矢量乘积轻松获得所有其他方向。
答案 1 :(得分:0)
加速度计(UIAccelerometer
)将直接向设备的加速度计芯片提供矢量。如果您可以假设设备保持相当稳定(即,您没有从实际移动中读取加速度),那么您可以使用简单的trig(acos(),asin())来确定设备的方向。
如果您担心设备可能正在移动,您可以等待连续几个加速度计读数几乎相同。您还可以从1.0
过滤出长度为±TOLERANCE(如您所定义)的任何向量更一般地说,除了“感觉重力”之外,设备无法知道其方向,这是通过加速度计完成的。您将面临的挑战是加速度计感受到所有加速度这一事实,其中重力只是一种可能的来源。
答案 2 :(得分:0)
如果您的目标是使用陀螺仪(写作时为iPhone 4),CoreMotion框架的CMMotionManager
可以为您提供CMDeviceMotion
更新。该框架可以很好地处理原始传感器数据并为您分离gravity
和userAcceleration
。你对重力矢量感兴趣,它可以用一点触发定义俯仰和滚动。要添加偏航(设备围绕重力矢量旋转),您还需要使用CoreLocation框架的CLLocationManager来获取罗盘标题更新。