Конвертировать акселерометр в 3D вращение

Мне нужно преобразовать движение от акселерометра в соответствующие значения, чтобы повернуть объект 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 градусов, чтобы повернуть объект.

Любая помощь?

1 ответ

Решение

В SceneKit вы можете напрямую использовать углы x,y,z Эйлера:

let object:SCNNode = ...
object.eulerAngles = SCNVector3(x: CGFloat(x), y: CGFloat(y), z: CGFloat(z))
Другие вопросы по тегам