2013-10-10 2 views
2

Как определить, что iPhone упал на землю, используя UIAccelerometer? Я использую следующий делегат для расчета обнаружения падения, но он работает неправильно.программно обнаруживает, упал ли iPhone на землю

Правильно ли это вычисление?
Просьба предложить любой другой тип обнаружения.

Расчет: currentDeviceAcceleration = SQRT (9,81 * х * х + 9,81 * у * у + 9,81 * г * г)

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{ 

    float x = acceleration.x; 
    float y = acceleration.y; 
    float z = acceleration.z; 

    float currentDeviceAcceleration = sqrt(9.81*x*x + 9.81*y*y + 9.81*z*z); 
     if (currentDeviceAcceleration > 8.5) { 
      //Device felt on ground 
     } 

} 

ответ

0

Я полагаю, переменные х к г МАГАЗИНУ ускорения в м/с².

Таким образом, полное ускорение в m/s² устройства составляет sqrt (x * x + y * y + z * z).

Заключение, однако, что устройство упало на землю, является ложным. любое ускорение может достичь этого значения.

У меня есть 2 идеи, как решить эту конкретную проблему

1) ускорение должен быть постоянным (в пределах диапазона) в течение определенного времени (например, время падения с руки на землю, которая была бы около 0,35 секунды.)

2) после свободного падения ускорение идет безумно вверх, в зависимости от поверхности, на которую устройство приземляется. Может быть, ты поймешь это. :)

+0

Пожалуйста, можете ли вы размещать какие-либо коды или алгоритмы для теоретических концепций? – Mani

+0

Мне очень жаль, я не могу. Я учитель математики, но с точки зрения программирования я - кровавый начинающий :) – ksu

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