акселерометр iPhone изменяет чувствительность - PullRequest
0 голосов
/ 26 мая 2010

Я пытаюсь использовать акселерометр для перемещения UIImage. Я хорошо работаю, но моя проблема в том, что с моим кодом

self.character.center = CGPointMake(160+acceleration.x*175, 230-acceleration.y*175);

моя картинка движется даже на устойчивой поверхности из-за точности значения acceleration.x. Поэтому я решил использовать обходной путь, умножив его на значение, приведя к INT, а затем разделив и приведя к плавающей запятой (т.е. я просто удаляю некоторые числа после запятой)

self.character.center = CGPointMake(160+(float)((int)((acceleration.x*100000))/100000)*175, 230-(float)((int)((acceleration.y*100000))/100000)*175);

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

Итак, мой вопрос: знаете ли вы, почему это больше не работает? Есть ли правильный способ удаления чисел после запятой в поплавке?

Большое спасибо Фред.

1 Ответ

2 голосов
/ 26 мая 2010

Вместо того, чтобы пытаться удалять десятичные дроби после запятой, вам лучше использовать фильтр нижних частот. Фильтр нижних частот пропустит только те изменения ускорения, которые происходят ниже определенной частоты среза. Следовательно, он будет сохранять постоянные изменения ускорения, но устранять колебания и джиттер с очень высокими частотами.

В Википедии есть хорошее объяснение , как работает простой фильтр низких частот RC и показывает возможную реализацию. Apple демонстрирует аналогичную реализацию в коде AccelerometerGraph код.

...