2016-08-24 7 views
1

加速度計の動きを適切な値に変換して、SceneKitオブジェクトを回転させる必要があります。ラジアンに生X、Y、Z値を変換するための私のコードは次のとおり加速度を3D回転で変換する

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度の角度にこれを変換するために苦しみました。

助けが必要ですか?

あなたはX、Y、Zのオイラー角を直接使用することができますSceneKitで
+0

を? 360度の角度が必要な場合は、何を周りにしたいですか?現実世界では、3Dで360度から180度までです。 –

+0

こんにちは、私の数学と物理学は非常に古いので、私の説明はちょっとだけかもしれません。私は、X軸とY軸に加速度計の位置(BLEで受け取ったデータ)に相対的に回転させたいSceneKitオブジェクトを持っています。 Scenekitオブジェクトの中心質量に比例します。だから、私はxとyに360度の完全な角度が必要だと仮定します。 – user5308141

答えて

1

:あなたが実際に何をしたいですか

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

iOSの内蔵加速度計を使用しています。私はBLEでアクセスする別の加速度計を使用しています。投稿した方程式は四元数とどのように等しくなりますか? – user5308141

+0

さて、オイラーx、y、z角を使うように変更しました。 – Palle

+0

洞察に感謝します。私はオイラー角の計算が正しいと私の100%自信がありませんが、私のモデルは同じ方向性を持っています。 – user5308141