2012-09-12 187 views
0

我已經使用下面的代碼來計算設備從一個地方移動到另一個地方的距離。它是否正確請看我的代碼。UIA加速度計距離計算

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{ 
    NSDate *now = [NSDate date]; 
    NSTimeInterval intervalDate = [now timeIntervalSinceDate:now_prev]; 

    sx = acceleration.x * kFilteringFactor + sx * (1.0 - kFilteringFactor); 
    sy = acceleration.y * kFilteringFactor + sy * (1.0 - kFilteringFactor); 
    sz = acceleration.z * kFilteringFactor + sz * (1.0 - kFilteringFactor); 

    [xLabel setText:[NSString stringWithFormat:@"%.2f",sx]]; 
    [yLabel setText:[NSString stringWithFormat:@"%.2f",sy]]; 
    [zLabel setText:[NSString stringWithFormat:@"%.2f",sz]]; 

    float aValue = sqrtf(sx*sx+sy*sy+sz*sz); 
    [gLabel setText:[NSString stringWithFormat:@"%.2f g",aValue]]; 

    velX += (sx * intervalDate); 
    distX += (velX * intervalDate); 

    velY += (sy * intervalDate); 
    distY += (velY * intervalDate); 

    velZ += (sz * intervalDate); 
    distZ += (velZ * intervalDate); 

    float distance = sqrtf(distX*distX+distY*distY+distZ*distZ); 
    [distanceLabel setText:[NSString stringWithFormat:@"%.2f",distance*0.0006213f]]; 

    now_prev = [now retain]; 

} 
+0

你會遇到問題的任何一種方式。 這種'死亡重構'是非常不準確的,更不用說你不處理手機的減速。 –

+0

我沒有得到你。你能告訴我一些事情來計算從UIAccelerationValues距離? – SRI

+1

我不知道爲什麼一些人downvote這個問題。如果有什麼不對的地方,然後回答我的問題?Downvote是好的,如果有任何錯誤也正確 – SRI

回答

0

有很多原因試圖從加速器數據獲得距離將非常低效。 爲了跟蹤您的初始位置,您需要持續將所有加速度值集成到一個向量中,並且最好以非常高的採樣率(計算中的大差距將導致不準確)

該方法本身不是很難弄清楚(或谷歌的事); This question explains how to do the maths and pseudocode for such an integration approach

+0

我的評論關於不準確的地方,這將是一個o.k.儘管「搖動姿態」識別的起點。 –