Цель C: Размах камеры от пальца пользователя - PullRequest
0 голосов
/ 31 декабря 2011

Мой вопрос заключается в том, какой алгоритм или математику следует использовать, чтобы сохранить импульс прокрутки экрана, чтобы сохранить прокрутку, если пользователь делает быстрое перелистывание.

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

Я могу понять, когда пользователь коснулсяэкран и точка, откуда пользователь продолжал смахивать и поднимать палец, есть идеи?

У меня есть метод, который вызывается 60 раз в секунду, так что идеи?

1 Ответ

1 голос
/ 01 января 2012

Как правило, вам нужна начальная скорость (например, измеряется в точках в секунду) и скорость замедления (измеряется в точках / секунду ^ 2). Если вы используете распознаватель жестов для обнаружения удара, он даст вам скорость бесплатно. В противном случае вам придется рассчитывать его самостоятельно по позициям и временным меткам различных этапов прокрутки.

Теперь, в вашем методе обновления, продвигайте ваш взгляд в соответствии со скоростью:

distance travelled = velocity * time

И используйте скорость замедления, чтобы обновить скорость для следующего кадра:

delta_v = deceleration rate * time // should give a negative value
new velocity = velocity + delta_v

Как только скорость упадет до порога, близкого к 0, остановите движение.

Эти формулы предназначены для линейных движений, но даже если вы делаете круговые движения, я бы попробовал поэкспериментировать с ними. Или вы можете сделать те же вычисления с угловыми скоростями. В Википедии, вероятно, есть формулы, которые вам нужно знать.

...