0

加速度計を使用して UIImage を移動しようとしています。私はうまく動作しますが、私の問題は私のコードで

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

私の写真は、acceleration.x 値の精度により、安定した表面でも動きます。そこで、値を掛けて INT にキャストし、それを除算して float にキャストするという回避策を使用することにしました (つまり、coma の後のいくつかの数値を削除するだけです)。

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

しかし、このコードを使用した後、私の小さな絵は動かなくなりました。

だから私の質問は:なぜそれがもう動かないのか知っていますか?float のコマの後の数字を削除する適切な方法はありますか?

どうもありがとうフレッド。

4

1 に答える 1

2

コンマの後の小数を削除しようとする代わりに、ローパス フィルターを使用することをお勧めします。ローパス フィルターは、特定のカットオフ周波数以下で発生する加速度の変化のみを通過させます。したがって、加速度の安定した変化を維持しながら、非常に高い周波数の変動とジッターを取り除きます。

ウィキペディアには、単純な RC ローパス フィルターがどのように機能するかがよく説明されており、可能な実装が示されています。Apple は、AccelerometerGraph サンプルコードで同様の実装を示しています。

于 2010-05-26T09:26:08.820 に答える