我需要将加速度计的运动转换为适当的值,以便旋转SceneKit对象。我将原始x,y,z值转换为弧度的代码是:

    let theta   : Float = atan2(x, sqrtf(powf(y, 2)+powf(z, 2)))
    let psi     : Float = atan2(y, sqrtf(powf(x, 2)+powf(z, 2)))
    let phi     : Float = atan2(sqrtf(powf(x, 2)+powf(y, 2)), z)

我正在努力将其转换为完整的360度角以旋转对象。

有什么帮助吗?

最佳答案

在SceneKit中,您可以直接使用x,y,z欧拉角:

let object:SCNNode = ...
object.eulerAngles = SCNVector3(x: CGFloat(x), y: CGFloat(y), z: CGFloat(z))

关于ios - 以3D旋转方式转换加速度计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39131187/

10-12 01:24