使用Core Motion准确跟踪用户围绕对象旋转的度数

时间:2017-05-15 09:20:29

标签: ios iphone swift core-motion

我目前正在尝试准确跟踪用户围绕像汽车这样的物体的度数移动。

当用户在汽车周围移动时,用户将横向移动iPhone。我想拍摄用户在汽车周围旋转的每个度数的照片。

我目前正在使用CoreMotion来尝试确定Yaw

let queue = OperationQueue.main
motionManager.deviceMotionUpdateInterval = 1 / 30
motionManager.startDeviceMotionUpdates(using: .xArbitraryZVertical, to: queue) { (motion, error) in
  if let deviceMotion = motion {
    let quat = deviceMotion.attitude.quaternion

    let ysqr = quat.y * quat.y
    let t3 = 2.0 * (quat.w * quat.z + quat.x * quat.y)
    let t4 = 1.0 - 2.0 * (ysqr + quat.z * quat.z)
    let yaw = atan2(t3, t4)

    print(round(self.degrees(yaw)))
  }
}

我注意到,当我在设备YawPitch发生变化时,Roll受到影响时,我会移动该对象。

无论如何,我可以准确地跟踪物体周围360度旋转的Yaw吗?

1 个答案:

答案 0 :(得分:1)

您可能希望看到的是使用CoreLocation(具体为CLLocationManagerstartUpdatingHeading)来获取设备的标题。

获取设备的当前标题并快速更新更加可靠。