Sensor.TYPE_ORIENTATION에서 얻은 데이터 중에서 회전 벡터를 계산해야합니다.Sensor.TYPE_ORIENTATION 데이터에서 회전 벡터를 계산해야합니다.
센서 데이터는 다음과 같이 정의된다 :
- 값이 정확한 3 차원 위치되기 위해 계산 될 수있다 : 값 [0] : 방위각 주위 자북 방향 및 Y 축 사이의 각도, Z 축 (0 ~ 359). 0 = 북쪽, 90 = 동쪽, 180 = 남쪽, 270 = 서쪽
- 값 : 피치, X 축을 중심으로 한 회전 (-180 ~ 180), z 축이 y 축 방향으로 움직일 때 양의 값을 가짐.
- 값 [2] : X 축이, Z 축으로부터 멀어 양수 롤, Y 축 (-90 ~ 90) 주위의 회전
I는 Z와 같은 세 개의 값이 필요 축 값 (0 ~ 360도). 나는 많은 시도했지만이 수행하는 방법을 알아낼 질수 :/
(편집 : 당신이 볼 수있는 코드를 작업의 아이디어를 뒤에 참조 거기 DroidAR framework의 클래스 ActionWithSensorProcessing을 살펴하는 방법에 여러 가지 이벤트 유형이 할 수있는)
또한이 3D 벡터를 직접 계산하려면 Sensor.TYPE_ACCELEROMETER 및 Sensor.TYPE_MAGNETIC_FIELD를 사용하려고했습니다. 코드는 다음과 같습니다.
그러나 이것은 효과가 없었고 복잡하다고 생각합니다. 그래서 간단한 솔루션을 어떻게 ensor.TYPE_ORIENTATION 값을 다시 recalc 수 있도록 그들에게 3 차원 회전 벡터,하지만 난 그냥 어떻게 해야할지 모르겠다. 대답을 안다면 나에게 말해줘.
편집 : 나는이 같은 축에 정렬의 OpenGL에이 값을 전달하려는 추가해야합니다 :
gl.glRotatef(values[1], 1, 0, 0);
gl.glRotatef(values[2], 0, 1, 0);
gl.glRotatef(values[0], 0, 0, 1);
하지만 때문에 분명 캔트 이렇게 이상한 값 범위의
. 마찬가지로 에서 SensorManager.getOrientation의 값은 지평선을 지나칠 때 뒤집어지기 때문입니다.다른 해결책은 inR 행렬을 사용하여 각도를 계산하는 것이지만 더 쉬운 해결책이 될 것이라고 생각합니까?)
Sensor.TYPE_ORIENTATION 데이터로이 작업을 수행하는 방법을 알고 싶습니다. 감사. – jakeoung
왜 작동합니까? – jakeoung