Я реализую прокрутку в сенсорном интерфейсе, но в данный момент я слишком устал, чтобы обернуться вокруг какой-то тривиальной математики:
y (distance/velocity)
|********
| ******
| ****
| ***
| ***
| **
| **
| *
| *
-------------------------------- x (time)
е (х) ->
Предполагается, что пользовательский интерфейс позволяет пользователю перетаскивать и «бросать» представление в любом направлении и удерживать его в течение некоторого времени, даже после того, как он отпустит палец с экрана. Это своего рода импульс, который зависит от того, насколько быстро пользователь перетаскивал, прежде чем убрать палец.
Итак, у меня есть начальная скорость (v0), и каждые 20 мс я прокручиваю на величину, относящуюся к текущей скорости. С каждой итерацией прокрутки я немного понижаю скорость, пока она не падает ниже порогового значения, когда я ее останавливаю. Это просто не выглядит правильно, когда я уменьшаю его на фиксированную величину (линейную), поэтому мне нужно смоделировать отрицательное ускорение, но не могу найти приличную простую формулу, как рассчитать величину, на которую мне нужно снизить скорость в каждой итерации.
Обновление:
Спасибо за ваши ответы, но мне все еще не удалось получить удовлетворительную функцию из обратной связи. Я, вероятно, не описал желаемое решение достаточно хорошо, поэтому я попытаюсь привести пример из реальной жизни, который должен проиллюстрировать, какой вид расчета я хотел бы сделать:
Предположим, что на определенной улице едет определенная машина, и водитель нажимает на тормоза до максимума, пока машина не останавливается. Водитель делает это с одним и тем же автомобилем на одной и той же улице несколько раз, но начинает тормозить с разными скоростями. Пока машина замедляется, я хочу иметь возможность рассчитать скорость, которую она будет иметь ровно через одну секунду, основываясь только на текущей скорости. Для этого расчета не должно иметь значения, на какой скорости ехал автомобиль, когда водитель начал тормозить, поскольку все факторы окружающей среды остаются неизменными. Конечно, в формуле будут некоторые константы, но когда автомобиль опускается до 30 м / с, он будет проходить то же расстояние в следующую секунду, независимо от того, проезжал ли он 100 или 50 м / с, когда водитель начал тормозить , Таким образом, время, прошедшее с момента появления перерывов, также не будет параметром функции. Замедление при определенной скорости всегда будет одинаковым.
Как вы вычисляете скорость на одну секунду позже в такой ситуации, принимая некоторые произвольные константы для замедления, массы, трения или чего-либо еще и игнорируя такие усложняющие воздействия, как сопротивление воздуха? Я только после кинетической энергии и ее рассеивания из-за трения от поломки машины.
Обновление 2
Теперь я вижу, что ускорение автомобиля будет в течение одного года, и это на самом деле не то, что я искал. Я уберу это и попробую новые предложения завтра. Спасибо за ваш вклад.