我有一個程序,利用Windows Phone 7中的加速度計,我需要檢測設備的旋轉是什麼。我有X,Y,Z加速度,需要以某種方式找出基於此的手機方向。這如何實現? (旋轉值應該是度數)如何將3D加速轉換爲旋轉?
回答
雖然我在iPhone上工作,但它應該基本上是同一個問題。你的硬件需要一個陀螺儀傳感器來描述旋轉,尤其是那些與重力平行的旋轉(我們稱之爲z,x是正確的,y是上升的)。如果設備平放在桌面上,並圍繞此z軸旋轉,則只有離心力導致的微小加速度測量。所以,你可以得到關於旋轉的一些信息,但你是有限的:
1)用戶必須保持設備在特定的方式爲您檢測旋轉正確
2)即使你得到了最好的情況下,與地面成45度角,很難全部獲得3個維度。如果您只能限制在2個旋轉方向上的檢測,那麼您的狀況會好一些。 3)你僅限於旋轉或平移,但同時檢測旋轉和線性運動相當困難。結論:對於使用賽車遊戲的玩家來說,將玩具固定在一定的角度上,限制方向盤的Z軸旋轉和其他方向的旋轉。電源幻燈片或其他。
軸的使用可能相當混亂。我保持水平軸(左和右)的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軸的旋轉。
如果你想在你的手中(即在同一平面內旋轉)舉行的電話比方說,面對你的胸部舉行的旋轉角度......
ATAN2(Y加速度,X加速度)
你會得到旋轉值:)它很可能是緊張的,所以你可能會想要在一個樣本期間平均結果來平滑它。
- 1. 將2D視口轉換轉換爲3D旋轉
- 2. 以3D旋轉方式轉換加速度計
- 3. 如何將three.js旋轉轉換爲混合器旋轉?
- 4. 如何將負向旋轉值轉換爲正向旋轉值?
- 5. 3D,AS3,Flex - 將旋轉度轉換爲可見高度
- 6. 在Matlab上將2D圖像轉換爲旋轉的3D圖像
- 7. 將3D轉換轉換爲2D
- 8. 如何在XNA中正確加速旋轉的3D模型?
- 9. 如何將2D轉換爲3D餅圖?
- 10. 如何將文本轉換爲3d
- 11. 根據「分鐘」(Unity 3D)轉換旋轉
- 12. 加速和旋轉
- 13. s:以恆定的旋轉速度旋轉3D
- 14. 將3D點轉換爲2D
- 15. Starling 3D旋轉
- 16. Tetrehedra旋轉爲3d Tessellation
- 17. 將3D陣列轉換爲3D模型
- 18. 將3D數組轉換爲3D std :: vector
- 19. 有沒有將旋轉矩陣轉換爲加速度矢量的matlab函數?
- 20. 如何(快速)將float轉換爲Byte?
- 21. 將matrix_float3x3旋轉轉換爲SceneKit
- 22. 加速將RTF轉換爲純文本
- 23. AS3:3D軸旋轉
- 24. Android ViewGroup 3D旋轉
- 25. 3D中的旋轉
- 26. 模擬3D旋轉
- 27. 3D旋轉困境
- 28. WPF 3D旋轉點
- 29. JavaFX的3D旋轉
- 30. javafx 3d Meshview旋轉
我想要X,Y和Z旋轉值。在3D場景中旋轉(類似於賽車遊戲)。 – IDWMaster 2011-02-05 20:46:47
您是否在嘗試在用戶旋轉手機時執行操作?或者你是否試圖找到一種方法來編程更新3D場景中的用戶「視圖」? – Dave 2011-02-05 21:24:01