在 3D 旋转中转换加速度计
Convert Accelerometer in 3D Rotation
我需要将加速度计的运动转换为适当的值,以便旋转 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))
我需要将加速度计的运动转换为适当的值,以便旋转 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))