Преобразовать ускорение с гравитацией в чистое ускорение?

Используя event.accelerationIncludingGravity на Android, он возвращает значение

x: -0.2
y: +0.1
z: +9.1

при отдыхе на ровной поверхности. Однако я хочу получить ускорение без гравитации, но event.acceleration не поддерживается. Есть ли способ преобразовать его по математике? В HTML5Rocks есть пример удаления фактора гравитации, но это не работает.

  // Convert the value from acceleration to degrees acceleration.x|y is the 
  // acceleration according to gravity, we'll assume we're on Earth and divide 
  // by 9.81 (earth gravity) to get a percentage value, and then multiply that 
  // by 90 to convert to degrees.                                
  var tiltLR = Math.round(((acceleration.x) / 9.81) * -90);
  var tiltFB = Math.round(((acceleration.y + 9.81) / 9.81) * 90 * facingUp);

Пример скрипта, отображающий значения ускорения (не из HTML5Rocks)


person Derek 朕會功夫    schedule 30.04.2013    source источник


Ответы (1)


Я понимаю. Вы получили числа для осей x и y, которые по существу равны 0, продолжайте измерять устройство, лежащее на плоской поверхности, и усредняйте все ваши значения x и y соответственно, и вы получите свою степень ошибки в каждом направлении. Ускорение измеряется в м/с^2. (метры в секунду в квадрате). Гравитационное ускорение на поверхности Земли составляет 9,86 м/с^2. В идеальной физической задаче все, что вам нужно сделать, это вычесть это число, и вы получите ответ. Если бы вы пытались вычислить скорость, то это была бы более сложная задача, но гравитационное ускорение Земли не ускоряет. У вас есть большая степень ошибки по оси Z, но не в том случае, если вы вычисляете степень ошибки в процентах от фактического значения. Или вы около 300 км над уровнем моря.

person Four_lo    schedule 30.04.2013
comment
Я только что проверил, что 9.86 - e.acceleration.z работает нормально, когда устройство обращено вверх. Но как только я его наклоняю, гравитационный фактор начинает влиять и на другую ось. Этот сценарий я считаю полезным, поскольку он учитывает гравитацию , но я действительно не знаю, как его использовать. (и это написано на Java) - person Derek 朕會功夫; 01.05.2013
comment
Да, встроенная функциональность для аппаратного обеспечения, похоже, на данный момент превосходит мобильную разработку. - person Four_lo; 01.05.2013