Расчет расстояния UIAccelerometer

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

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
    NSDate *now = [NSDate date];
    NSTimeInterval intervalDate = [now timeIntervalSinceDate:now_prev];

    sx = acceleration.x * kFilteringFactor + sx * (1.0 - kFilteringFactor);
    sy = acceleration.y * kFilteringFactor + sy * (1.0 - kFilteringFactor);
    sz = acceleration.z * kFilteringFactor + sz * (1.0 - kFilteringFactor);

    [xLabel setText:[NSString stringWithFormat:@"%.2f",sx]];
    [yLabel setText:[NSString stringWithFormat:@"%.2f",sy]];
    [zLabel setText:[NSString stringWithFormat:@"%.2f",sz]];

    float aValue = sqrtf(sx*sx+sy*sy+sz*sz);
    [gLabel setText:[NSString stringWithFormat:@"%.2f g",aValue]];

    velX += (sx * intervalDate);
    distX += (velX * intervalDate);

    velY += (sy * intervalDate);
    distY += (velY * intervalDate);

    velZ += (sz * intervalDate);
    distZ += (velZ * intervalDate);

    float distance = sqrtf(distX*distX+distY*distY+distZ*distZ);
    [distanceLabel setText:[NSString stringWithFormat:@"%.2f",distance*0.0006213f]];

    now_prev = [now retain];

}

person SRI    schedule 12.09.2012    source источник
comment
Вы столкнетесь с проблемами в любом случае. Этот тип «мертвой разведки» ужасно неточен, не говоря уже о том, что вы также не обрабатываете замедление телефона.   -  person Timothy Groote    schedule 12.09.2012
comment
Я вас не понял. Можете ли вы сказать мне что-нибудь, чтобы рассчитать расстояние от UIAccelerationValues?   -  person SRI    schedule 12.09.2012
comment
Я не знаю, почему некоторые люди голосуют против вопроса. Если что-то не так, то ответьте на мой вопрос?   -  person SRI    schedule 12.09.2012


Ответы (1)


Есть много причин, по которым попытки получить данные от ускорителей будут ужасно неэффективными. Чтобы отслеживать ваше начальное местоположение, вам необходимо непрерывно интегрировать все значения ускорения в вектор и желательно с очень высокой частотой дискретизации (большие пробелы в ваших вычислениях приведут к неточностям).

Сам метод не так уж сложно понять (или погуглить, если уж на то пошло); Этот вопрос объясняет, как выполнять математические вычисления и псевдокод для такого подхода к интеграции< /а>

person Timothy Groote    schedule 12.09.2012
comment
Мой комментарий о неточностях в стороне, это было бы хорошо. хотя отправная точка для распознавания жестов встряхивания. - person Timothy Groote; 12.09.2012