2012-05-19 3 views
4

나는 (피치, 요, 롤) 좌표계가 수학적으로 결점이 있음을 안다. 그러나 나는 정말로 대신이 좌표에서 파생 된 것이 아니면 대안이 될 수 있기를 바랍니다.CMDeviceMotion을 사용할 때 장치가 똑바로 올라가면 (피치 = 90) 정말 불안정합니다. 어쨌든이 문제를 해결하려면?

내가하려는 것은 실제 세계에서 장치를 움직이는 것입니다 (아이폰이라고 가정 해 봅시다). 사용자의 눈과 관련하여 요와 피치를 계산하려고합니다. 따라서, 요의 범위는 (-180, 180)이어야하고 피치의 범위는 (-90, 90)이어야합니다. CMDeviceMotion은 iphone (항상 나를 마주하게)을 움직일 때 0부터 90까지의 피치 변경을 제공하며 아이폰을 앞에서 맨 위로 움직일 때 CMDeviceMotion은 90부터 피치 변경을 제공합니다. 이것들은 좋으며 나는 피치 데이터에 대해 매우 만족하고 있습니다.

그러나 피치가 90에 가까울수록 요는 매우 흔들리고 불안정합니다. 윌은 피치가 약 90 일 때 yaw의 변화를 무시할 수 있기 때문에 이것은 문제가되지 않습니다. 그러나 실제 문제는 피치가 증가하고 피치가 감소하기 전에 요의 값이 크게 변경된다는 것입니다. 나는 그것이 흔들릴뿐만 아니라 평균 변화라는 것을 의미합니다! 180 (Pi)와 같은 것을 변경합니다. 나는 좌표가 완전히 바뀌기 때문이라고 생각합니다. 그러나 나는 지금 좌표 이동에서 길을 잃는다.

답변

2

방금 ​​설명한이 지저분한 해결 방법은 롤, 피치 및 요를 사용해서는 안되는 이유입니다.

당신은이 길을 더 가면서 더 큰 것을 만들거나 use rotation matrices or quaternions합니다.

+0

답해 주셔서 감사합니다. 나는 쿼터니언을 시도했지만, 결국에는 롤을 돌려서 피치와 요를 다시 옮겨야합니다 ... 적어도 이제는 더 안정되었습니다. – user1386058

+0

OK, 행운을 빈다. – Ali