将不断变化的标量值转换为不断变化的间隔或频率

时间:2010-06-11 01:50:33

标签: objective-c velocity scalar nstimeinterval

虽然我在Objective C中编码,但这更像是一个普通的编程问题。
将不断变化的标量值转换为变化的间隔或频率的最佳方法是什么?

现在每次标量值改变时我都在破坏NSInterval

   [self.myTimer invalidate];
    self.myTimer = nil;

并创建一个新的,但这似乎是实现我的目标的一种非常昂贵的方式,因为在我的情况下标记值的变化表示滑动的水平速度。

粗略地比喻一下,想一下在视觉节拍器中反映的滑动速度,你刷的速度越快,节拍器的频率越高(间隔越短)。

1 个答案:

答案 0 :(得分:1)

首先,要了解这是一个“测量”问题。要解决此问题,请隔离解决问题所需的最小属性,然后得出其余的属性。

移动的距离和移动距离所花费的时间是每次测量的导出属性,在这种情况下,测量被称为“滑动”。在赛车类比中,测量被称为一圈。 现在可以计算“速度”。这将是“速度”,它只是距离/时间。

可以根据滑动的起点和终点计算distance。 要获取时间值,请使用startTime NSDatetouchesBegan:withEvents:计算touchesEnded:withEvents:中创建elapsedTimeInterval [startTime timeIntervalSinceNow];实例{/ 1}}

根据您的需要,您可能需要一个Measurement类,其中包含startPosition,endPosition,startTime和endTime属性,因此您可以跟踪“最快”的速度等。

Analysis Patterns查看Martin Fowler。我发现在尝试将域问题映射到软件解决方案时非常有用。