Dokunma hareketinin hızını tespit etmeye çalışıyorum ve her zaman beklediğim sonuçları alamıyorum. (Eklendi: Hız çok fazla artıyor) Bir şey yaparken ya da bunu yapmanın daha iyi bir yolunu önerdiğimi kimse fark edebilir mi?UITouch hareket hızı algılama
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
self.previousTimestamp = event.timestamp;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:self.view];
CGPoint prevLocation = [touch previousLocationInView:self.view];
CGFloat distanceFromPrevious = distanceBetweenPoints(location,prevLocation);
NSTimeInterval timeSincePrevious = event.timestamp - self.previousTimestamp;
CGFloat speed = distanceFromPrevious/timeSincePrevious;
self.previousTimestamp = event.timestamp;
NSLog(@"dist %f | time %f | speed %f",distanceFromPrevious, timeSincePrevious, speed);
}
Hey ... Bunu uygulamakta zorlanıyorum. Lambda fonksiyonu objektif-c'nin bir parçası mı? Bunu uygulamak için neye ihtiyacım var? tia – dizy
Hayır ... Kendinizi belirlediğiniz bir sabit. 1'e yaklaştıkça, en yeni değere daha fazla ağırlık verirsiniz. N değerlerinin aritmetik ortalamasıyla karşılaştırın. Her yeni değer 1/n'lik bir ağırlık alır. Üstel için, lambda = 2/(n + 1) değerini ayarlayın; burada n, eşdeğer aritmetik değerdir. Böylece yeni değer 1/n yerine 2/(n + 1) ağırlığındadır ve daha sonra mevcut hareketli ortalama (1-lambda) = (n-1)/(n + 1) tarafından ölçeklendirilir ve ikisi de katma. Netleştirici? – Jim