2011-04-17 51 views
0

大家好我是法国人,所以我吓我一跳。所以我有一个问题。我正在做的是当我用加速度计将设备向左或向右转动时,图像在与设备旋转方向相反的方向旋转,它创建了一个很酷的效果,但是当我用加速度计旋转设备时,图像正在旋转但始终在颤抖,振动的运动并不平滑。我能做什么 ?这里是代码:iphone加速度计:问题旋转图像

#import "QuartzCore/QuartzCore.h" 

#define CONST_fps 100. 
#define CONST_map_shift 0.05 

@implementation MapViewRotationViewController 

- (void)viewDidLoad { 

[super viewDidLoad]; 

    // accelerometer settings 
    [[UIAccelerometer sharedAccelerometer] setDelegate:self]; 
    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0/CONST_fps)]; 
} 

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{ 

    static CGFloat ZZ = 0.; 

    CGFloat z = (atan2(acceleration.x, acceleration.y) + M_PI); 


    if (fabsf(ZZ - z) > CONST_map_shift) 

    { 

     viewToRotate.layer.transform = CATransform3DMakeRotation(ZZ=z, 0., 0., 10.); 

    } 

} 

@end 
+0

固定代码格式。 – Anne 2011-04-17 16:58:59

+0

vous devez vous rendreàchaque question que vous avezdéjàdemandéet cliquez sur la caseàcocher par laréponsela plusappareséeàl'acceptpter。 Aider les gensàobtenir la reconnaissance。 Si vous n'avez pas“accepter”lesréponsesen cochant les gens sont moins susceptibles d'aider。 Vous devez augmenter votre“accepter taux«aussi proche que possible de 100% – 2011-04-26 20:41:55

回答

1

你需要做一个叫做高通滤波器的技巧。它过滤颤抖,只有重大变化才会通过。

你可以谷歌它,或搜索StackOverflow。例如,这里:How do you implement a Highpass filter for the IPhone accelerometer?

+0

好的,但是我怎样才能在我的代码中实现高通滤波器呢? – 2011-04-18 10:46:09

+0

好的我很成功地非常感谢你 – 2011-04-18 12:07:59