Как рассчитать движения мыши с помощью 3-осевого акселерометра - PullRequest
4 голосов
/ 13 сентября 2009

У меня есть 3-осевой акселерометр (любой мобильный телефон), но я не могу найти хорошие формулы для интерпретации поступающих с него данных. Независимо от того, что я делаю, движения отрывочны / нечувствительны. Я читал, что мне также нужен угол Эйлера или Матрица вращения?

Буду признателен за любые хорошие материалы для чтения ...

Ответы [ 2 ]

4 голосов
/ 20 сентября 2009

Для чего стоит, некоторые образцы акселерометров от Apple:

  • AccelerometerGraph Пример приложения отображает движение устройства. Он демонстрирует, как использовать класс UIAccelerometer и как использовать Quartz2D и Core Animation для обеспечения высокопроизводительного представления графика. Он также демонстрирует фильтр нижних частот, который можно использовать для изоляции эффектов гравитации, и фильтр верхних частот, который можно использовать для устранения эффектов гравитации.
  • GLGravity Пример приложения демонстрирует, как использовать класс UIAccelerometer в сочетании с рендерингом OpenGL. В нем показано, как извлечь вектор гравитации из значений акселерометра, используя базовый фильтр нижних частот, и как построить из него матрицу преобразования OpenGL.

И если вы стремитесь к чему-то вроде управления наклоном от Wolfenstein 3D, вы можете прочитать исходный код для этого ....: -)

3 голосов
/ 13 сентября 2009

Вы пытаетесь создать программу для 3D мыши для iPhone? (Их уже несколько.) Можете ли вы точно описать, какому движению пользователя вы хотите соответствовать какому действию?

Самое простое, что можно сделать, это получить высоту тона устройства, взяв арккосинус точечного произведения вектора ускорения с (0, 0, 1000).

Если вы пытаетесь реализовать устройство, в котором скольжение iPhone вперед и назад через пространство перемещает указатель назад и вперед по экрану, это будет трудно, потому что это потребует относительно жестких движений рук для создания больших ускорений по сравнению гравитационному ускорению. МЭМС-акселерометры, такие как тот, что в iPhone, хороши для измерения направления гравитации, но довольно слабы для измерения фактического ускорения самого устройства.

Если вы немного опишите ваше заявление, я мог бы дать вам более конкретные указания.

Существует несколько различных способов представления пространственных вращений, но кватернионы очень популярны в сообществе программистов игр. Поиск Google дает вам несколько ссылок на некоторые учебники. GamaSutra one - хорошее место для начала.

http://www.gamasutra.com/features/19980703/quaternions_01.htm
http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
http://www.flipcode.com/documents/matrfaq.html
...