我正在尝试使用加速度计来移动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);
但是在我使用这段代码之后,我的小图片就不再移动了。
所以我的问题是:你知道为什么它不再起作用了吗? 在浮动中昏迷后是否有正确的方法来删除数字?
非常感谢 佛瑞德。
答案 0 :(得分:2)
不要试图在逗号后删除小数,而应该更好地使用低通滤波器。低通滤波器只允许将变化传递给在某个截止频率以下发生的加速度。因此,它将保持加速度的稳定变化,但在非常高的频率下消除波动和抖动。
维基百科有一个good explanation简单的RC低通滤波器如何工作并显示可能的实现。 Apple在AccelerometerGraph sample代码中显示了类似的实现。