2010-04-23 4 views
2

Я пытаюсь сопоставить свои движения с устройством Android в сцене OpenGL.Акселерометр Значения от устройства Android/iPhone

Я записал значения акселерометра для простого перемещения: Перемещение телефона (лежит на столе) 10 см вперед (+ x), а затем 10 см назад (-x).

Проблема в том, что эти значения при использовании для расчета скорости и положения делают только куб opengl вперед. Похоже, что записанное отрицательное ускорение было недостаточно для снижения скорости и инвертирования ее движения.

В чем может быть проблема?

Это моя функция, которая обновляет скорость и положение каждый раз, когда новые данные поступают в:

void updatePosition(double T2) { 
    double T = 0.005; 
    Vec3 old_pos = position.clone(), old_vel = velocity.clone(); 

    velocity = old_vel.plus(acceleration.times(T)); 
    position = old_pos.plus(old_vel.times(T).plus(acceleration.times(0.5 * Math.pow(T, 2)))); 

} 

Это X, Y, значения Z акселерометра над всем захваченным временем:

alt text http://img25.imageshack.us/img25/7528/forces.jpg

ответ

1

Ваша функция принимает параметр T2, который я принимаю, является ли вход ускорителя? но вы используете T, который вы объявили двойным T = 0,005; поэтому ваша функция будет всегда идти вперед со статической скоростью.

+0

T2 - это продолжительность времени движения (время между различными образцами акселерометра). Для целей тестирования я использую константу, но даже используя реальные значения, дает те же результаты. – fabiopedrosa

+0

Подумайте больше о вашем коде, чтобы понять проблему. Проверяли, что вы не возвышаете значение и теряете знак? – stealthcopter

Смежные вопросы