2014-03-02 23 views
0

我正在嘗試使用智能手機作爲鼠標在平面(例如桌子)上移動的Android應用程序。由於我想模擬鼠標,我忽略了Z軸,並且認爲利用加速度計數據的最佳方法是構建一個二維矢量,然後可以縮放到屏幕大小。來自加速度計的二維矢量

我讀過其他答案,我發現整合方法有一個大的錯誤,因爲t增加,但我不確定這個錯誤是否是一個考慮到鼠標移動的持續時間和位置變化的因素平均鼠標移動的時間有多長?我假設不到2秒)。

我將如何去設計一個滿足我需求的算法?基於集成的算法是否足夠?

回答

0
  • 是的,一個加速度計數據有很高的錯誤,如果我們嘗試從它們中獲得絕對座標,會產生很大的錯誤。但鼠標不需要絕對座標。相對的是絕對夠的。使用你的整合,毫無疑問。

  • 「隨着t的增加,整合方法有很大的誤差」 - 正確,但用戶只對最後一次運動真正感興趣。所以,它會像鼠標一樣工作,並且會感覺它是一隻普通的鼠標。鼠標的性能如何,取決於具體的設備和任務。例如,對於嚴肅的遊戲,我一點也不確定。你將不得不做你自己的調查。但它會做一個非常糟糕的平板/筆模擬器。

  • 要小心忽略Z軸,注意,即使在地圖上放置一個點,GPS也會使用所有三個座標 - 以獲得更好的精度。通常動作不會將Z變化等於0.並且簡單地忽略其中一個座標,而不是將它們中的所有三個都記錄爲兩個真正需要的座標,將會導致更大的錯誤。我不確定你可以允許。而且你根本不需要 - 它不是一個沉重的算法,吞噬很多時間和電池。而對於用戶來說,將設備移動到空中的可能性會帶來很多便利 - 不是每個人都想把他的設備劃傷桌子。所以,COUNT兩個座標來自三個源座標,但不是簡單地取兩個源座標,而忽略第三座標。

  • 問題將出現在別處。當你使用鼠標和收集到的錯誤時,你可以將鼠標擡起並移動到另一個點並重新開始。你也應該意識到類似的東西,因爲你的設備也會及時收集錯誤。

+0

所以我仍然可以使用距離算法來計算距離的變化?就座標而言,我敢肯定Android默認會收集所有三個數據,但我無法使用它,所以我拉動三維數據,只使用前兩個維度。 – ahjohnston25

+0

我不明白:您是否在使用原始ΔX,ΔY,ΔZ並將它們自己整合,並考慮到設備方向的所有變化,或者您使用由某些Android算法計算和提供的X,Y,Z?如果最後一個是真的,那沒問題,但是我知道你正在整合你自己? – Gangnus

+0

前者,我拉動原始加速度計數據,然後想整合自己。至於設備方向,我想附加特殊的(即非鼠標)功能,以橫向,所以我不會因此。 – ahjohnston25