2014-11-13 10 views
4

지구의 자기장에 상대적인 각도를 계산할 계획이었습니다. 이를 위해 Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR을 사용할 계획이었습니다. Geomagnetic Rotation Vector에서는 event.values이다 Rotation Vector 같이 지구의 자기장에 상대적인 전화기 각도를 어떻게 얻습니까?

  • Z * 죄

    • X * 죄 (θ/2)
    • 의 Y * 죄 (θ/2)와 동일한 값을 반환한다고 설명 (θ/2)
    • COS를 (θ/2)

    X, Y, 상기 주어진 값의 Z 값은 무엇인가? 이 값을 사용하여 휴대 전화의 X 축과 지구의 X 축, 휴대 전화의 Y 축과 지구의 Y 축, 휴대 전화의 Z 축과 지구의 Z 축 사이의 각도를 계산할 수 있습니까?

    PS : θ은 축 (X, Y, 또는 Z)

    Phone's X,Y and Z axisEarth's X,Y and Z axis

  • 답변

    1

    :

    x 값 전화기의 "피치"이다 : 0에서 지상 향하고, -1에서 1까지 직면한다. 이것은 위의 다이어그램에서 X 축을 중심으로 회전합니다.

    y 값은 휴대 전화의 "Yaw"입니다. yaw를 줄이면 시계 반대 방향으로 회전하고 y 축을 중심으로 시계 방향으로 회전합니다.

    z 값은 휴대 전화의 "롤"입니다. 롤을 늘리거나 줄이면 휴대 전화가 z 축을 중심으로 회전합니다.

    각 좌표는 삼각 함수이기 때문에 -1에서 1 사이의 값입니다. Android Documentation은 x, y, z 값이 단위 쿼터니언 (cos (θ/2), x sin (θ/2), y sin (θ/2), z * sin (θ/2)). 쿼터니언 사용법은 제 지식 범위를 벗어나지 만, 어떻게 작동하는지 배우고 싶다면 튜토리얼이 있습니다. http://3dgep.com/understanding-quaternions/

    나는 이러한 값을 이해하는 방법을 알아 낸 방법은 안드로이드 폰

    https://code.google.com/p/openintents/wiki/SensorSimulator에 움직임을 시뮬레이션이 API에 휴대 전화의 피치/요/롤 플레이에서 온

    예를 들어의 요와 전화 0, 0의 피치, 그리고 Roll of zero가 평면으로 보입니다. 화면 위쪽으로 (하늘쪽으로) 북쪽을 향하게합니다 (다시 SensorSimulator를 사용하면 더 쉽게 시각화 할 수 있습니다. 단어를 통해 설명하기가 정말 어렵습니다.

    지구 좌표계에 대한 참조를 쉽게 계산하려면 getRotationMatrix()를 호출하십시오. 당신의 SensorManager에 : https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java

    : 여기 Android doc

    는 프로그램의 데모 회전 벡터를 사용하여이다

    -3

    전화기에게 현재의 각도를 취득하고 비교의 각도 나 특성을 얻을 빼기 주위 θ의 각도로 설명 서로에게서. 회전 벡터의