2016-08-24 8 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도 각도를 원한다면 무엇을 주변에 놓고 싶습니까? 현실 세계에서는 360도에서 180도까지 3D로 볼 수 있습니다. –

+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를 통해 액세스되는 별도의 가속도계를 사용하고 있습니다. 내가 올린 방정식이 Quaternion과 어떻게 같습니까? – user5308141

+0

좋아, 오일러 x, y, z 각을 사용하도록 바 꾸었습니다. – Palle

+0

통찰력에 감사드립니다. 오일러 각도 계산이 정확하고 모델의 방향이 동일하다고 100 % 확신하지는 않지만 작동합니다. – user5308141