2014-11-13 130 views
4

我打算計算手機相對於地球磁場的角度。爲此,我計劃使用Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR。在Geomagnetic Rotation Vector,它解釋了event.values返回相同的值作爲Rotation Vector其是,如何獲取手機相對於地球磁場的角度?

  • X * SIN(θ/ 2),
  • Y * SIN(θ/ 2),
  • Z *罪(θ/ 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值是手機的「偏航」:減小偏航沿逆時針方向旋轉,增加它繞y軸順時針旋轉。

z值是手機的「滾動」:增加或減少滾動可使手機圍繞z軸旋轉。

每個座標都是從-1到1的值,因爲它們是三角函數。 Android Documentation指出它們的x,y,z值等於單位四元數的最後三個分量(cos(θ/ 2),x sin(θ/ 2),ysin(θ/ 2),z * SIN(θ/ 2))。使用四元數不在我的知識範圍內,但如果您想了解它們的工作方式,請參閱本教程。 http://3dgep.com/understanding-quaternions/

我想通了,如何理解這些值的方式,從與手機的俯仰/偏航/滾動播放此API在Android手機上https://code.google.com/p/openintents/wiki/SensorSimulator

模擬運動來例如與偏航電話0,音高爲0,零卷平躺,屏幕朝上(朝天空),手機頂部指向北方(再次使用SensorSimulator進行播放,您可以更好地將其視覺化,這真的很難通過單詞解釋)

如果你想有一個簡單的方法來計算對地球座標系的調用getRotationMatrix()您的SensorManager: Android doc

下面是使用旋轉矢量程序的演示:https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java

-3

獲取手機當前的角度,然後得到比較的角度或屬性和減法描述爲角度θ他們從彼此。

相關問題