2010-05-26 9 views
0

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

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);

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

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

Большое спасибо Fred.

ответ

2

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

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

+0

Спасибо, я использовал его, и у меня был успех! Я минимизировал частоту среза, чтобы сделать ее еще менее чувствительной! спасибо! –

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