Преобразование постоянно меняющегося скалярного значения в изменяющийся интервал или частоту - PullRequest
0 голосов
/ 11 июня 2010

Хотя я и пишу код в Objective C, это скорее общий вопрос программирования.
Каков наилучший способ преобразования постоянно меняющегося скалярного значения в изменяющийся интервал или частоту?

Прямо сейчас каждый раз, когда меняется скалярное значение, я уничтожаю NSInterval
, т.е.*

и создание нового, но это кажется ОЧЕНЬ дорогим способом достижения моей цели, поскольку меняющееся скалярное значение в моем случае представляет собой горизонтальную скорость пролистывания.

Для грубой аналогииПодумайте о скорости отражения, отображаемого в визуальном метрономе: чем быстрее вы проводите, тем выше (более короткий интервал) частота метронома.

1 Ответ

1 голос
/ 22 июня 2010

Во-первых, поймите, что это проблема «измерения». Чтобы решить эту проблему, выделите минимальные атрибуты, необходимые для решения проблемы, и выведите остальные.

Расстояние перемещения и время, необходимое для перемещения расстояния, являются производными атрибутами каждого измерения, в этом случае измерение называется «проведением». В гоночной аналогии измерение называется кругом. «Скорость» теперь может быть рассчитана. Это будет «скорость», то есть просто расстояние / время.

Значение distance может быть рассчитано с учетом начальной и конечной точек свайпа. Чтобы получить значение времени, создайте startTime экземпляр NSDate в touchesBegan:withEvents: и в touchesEnded:withEvents: вычислите elapsedTimeInterval, используя [startTime timeIntervalSinceNow];

В зависимости от ваших потребностей, вам может понадобиться класс Measurement со свойствами для startPosition, endPosition, startTime и endTime, чтобы вы могли отслеживать «самую высокую» скорость и т. Д.

Взгляните на Аналитические паттерны от Martin Fowler . Я нахожу это очень полезным при попытке сопоставить проблемы домена с программными решениями.

...