Я пытаюсь сопоставить свои движения с устройством 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
T2 - это продолжительность времени движения (время между различными образцами акселерометра). Для целей тестирования я использую константу, но даже используя реальные значения, дает те же результаты. – fabiopedrosa
Подумайте больше о вашем коде, чтобы понять проблему. Проверяли, что вы не возвышаете значение и теряете знак? – stealthcopter