加速度计检测左右移动 - 即时检测方向变化

时间:2010-01-17 02:10:50

标签: iphone uiaccelerometer uianimation

我有一个应用程序可以做一件事,如果你以一种方式摇动,而另一件事,如果你摇动另一个。

atm我的代码是。

if (acceleration.x > 1.5) {

//面向你时右手臂

    float duration = ([imageArray count]*0.04);

    //HUMAN EYE KEEPS IMAGES IN EYE For 40 MILLISECONDS//
    //NSLog(@"duration:%f", duration);
    [theFlash setAnimationImages:imageArray];
    [theFlash setAnimationRepeatCount:1];
    theFlash.animationDuration = duration;
    [theFlash startAnimating];
    NSLog(@"images flashed forward");   

}

if (acceleration.x < -1)
{
    //arm to the left when facing you

    float duration = ([imageArrayReversed count]*0.04);

    //HUMAN EYE KEEPS IMAGES IN EYE For 40 MILLISECONDS//
    NSLog(@"duration:%f", duration);
    [theFlash setAnimationImages:imageArrayReversed];
    [theFlash setAnimationRepeatCount:1];
    theFlash.animationDuration = duration;
    [theFlash startAnimating];
    NSLog(@"images flashed backward");  

}

1和-1值正在处理它不太敏感。

然而,这段代码并没有给我所需的结果。我喜欢一旦人开始以另一种方式移动设备时闪烁的图像(参见代码)。

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

嗯,你将不得不整合加速度以获得速度。不幸的是,加速度计有点嘈杂,并且不可避免地会漂移一点,因此您将不得不过滤掉那个积分。我认为 http://www.musicdsp.org/showone.php?id=92中描述的过滤器将满足您的需求,截止频率设置为采样频率的1/4左右。您需要band输出,并且您必须调整共振参数。