2011-02-05 57 views
1

我有一個程序,利用Windows Phone 7中的加速度計,我需要檢測設備的旋轉是什麼。我有X,Y,Z加速度,需要以某種方式找出基於此的手機方向。這如何實現? (旋轉值應該是度數)如何將3D加速轉換爲旋轉?

+0

我想要X,Y和Z旋轉值。在3D場景中旋轉(類似於賽車遊戲)。 – IDWMaster 2011-02-05 20:46:47

+0

您是否在嘗試在用戶旋轉手機時執行操作?或者你是否試圖找到一種方法來編程更新3D場景中的用戶「視圖」? – Dave 2011-02-05 21:24:01

回答

1

雖然我在iPhone上工作,但它應該基本上是同一個問題。你的硬件需要一個陀螺儀傳感器來描述旋轉,尤其是那些與重力平行的旋轉(我們稱之爲z,x是正確的,y是上升的)。如果設備平放在桌面上,並圍繞此z軸旋轉,則只有離心力導致的微小加速度測量。所以,你可以得到關於旋轉的一些信息,但你是有限的:

1)用戶必須保持設備在特定的方式爲您檢測旋轉正確

2)即使你得到了最好的情況下,與地面成45度角,很難全部獲得3個維度。如果您只能限制在2個旋轉方向上的檢測,那麼您的狀況會好一些。 3)你僅限於旋轉或平移,但同時檢測旋轉和線性運動相當困難。結論:對於使用賽車遊戲的玩家來說,將玩具固定在一定的角度上,限制方向盤的Z軸旋轉和其他方向的旋轉。電源幻燈片或其他。

1

軸的使用可能相當混亂。我保持水平軸(左和右)的X的方向,垂直軸的Y(上和下)以及Z軸的深度(遠和近)。

使用加速度計,您只能檢測圍繞X軸和Z軸的旋轉,而不是Y軸。

假設你的手機是平坦的地方,在靜止位置,重力會導致在Y加速度約爲-9.8,和X和Z加速將圍繞0

假設手機保持平坦在這個位置。當您繞Y軸旋轉手機時(假設手機沒有平移或旋轉時手機的位置發生變化),X,Y和Z加速度的值沒有明顯變化。因此,您無法檢測到有關Y軸的任何旋轉。當你繞X軸和Z軸旋轉時(假設手機在旋轉時沒有位置變化),所有3個加速度值都會改變,但矢量的特徵是x^2 + y^2 + z^2 = 9.8^2。

您可以使用簡單的三角公式來確定繞Z軸和Z軸的旋轉。如Kay所指出的,您仍然需要陀螺儀輸出圍繞每個軸的旋轉角速度來計算圍繞Y軸的旋轉。

1

如果你想在你的手中(即在同一平面內旋轉)舉行的電話比方說,面對你的胸部舉行的旋轉角度......

ATAN2(Y加速度,X加速度)

你會得到旋轉值:)它很可能是緊張的,所以你可能會想要在一個樣本期間平均結果來平滑它。