Преобразование постоянно меняющегося скалярного значения на изменяющийся интервал или частоту
-
26-09-2019 - |
Вопрос
Хотя я кодирую в цели C, это больше вопроса общего программирования.
Какой лучший способ преобразовать постоянно меняющееся скалярное значение на изменяющийся интервал или частоту?
Прямо сейчас каждый раз, когда скалярные изменения значения, я уничтожаю Nsinterval
т.е.
[self.myTimer invalidate];
self.myTimer = nil;
И создание нового, но это кажется очень дорогим способом достижения моей цели, поскольку изменяющаяся скалярное значение в моем случае представляет горизонтальную скорость промедления.
Для грубой аналогии, подумайте о скорости промедления, отраженной в визуальном метрономе, тем быстрее вы проводили, тем выше (более короткий интервал) частота метроном.
Решение
Во-первых, поймите, что это проблема «измерения». Чтобы решить эту проблему, изолируйте минимальные атрибуты, необходимые для решения проблемы и вытекают остальные.
Перемещенное расстояние и время, необходимое для перемещения расстояния, являются полученными атрибутами каждого измерения, в этом случае измерение называется «Swipe». В гоночной аналогии измерение называется кругом. «Скорость» теперь может быть рассчитана. Это будет «скорость», которая просто расстояние / время.
То distance
Может быть рассчитан с учетом начальных и конечных точек промедления. Чтобы получить значение времени, создайте startTime
случай NSDate
в touchesBegan:withEvents:
И в touchesEnded:withEvents:
рассчитать elapsedTimeInterval
с использованием [startTime timeIntervalSinceNow];
В зависимости от ваших потребностей, вам может понадобиться Measurement
Класс со свойствами для StartPosition, AndPosition, Starttime и EndTime, чтобы вы могли отслеживать «быструю» скорость и т. Д.
Взгляни на Шаблоны анализа по Мартин Фаулен. Отказ Я считаю это очень полезным при попытке отображения проблем доменных программных решений.