Мышь последователь ослабления в / из - PullRequest
0 голосов
/ 14 декабря 2011

Существует множество обучающих программ для мышиных последователей. Большинство из них имеют простую формулу для облегчения движения:

x += (tx - x) / interp;
y += (ty - y) / interp;

(tx = целевая позиция, x = фактическая позиция, interp> 1)

Это заставляет последователя двигаться очень быстро в начале, а затем медленно замедляться к целевой позиции.

Как мне изменить формуляр, чтобы я мог определить пользовательское ускорение, пользовательское замедление и максимальную скорость для движения между ними? Для самого начала я был бы рад дополнительному ускорению.

Спасибо!

Hans

1 Ответ

0 голосов
/ 14 декабря 2011

Ускорение - это изменение скорости во времени. Таким образом, в 1D, чтобы применить постоянную скорость, вы должны сделать:

v += a * dt;
x += v * dt;

где:

  • a - ускорение (постоянная)
  • v - это скорость
  • x - это позиция x
  • dt - временной шаг, то есть время между обновлениями

Вы бы сделали нечто подобное для замедления, за исключением того, что a теперь будет отрицательным.

Чтобы установить максимальную скорость, вам просто нужно выполнить условную проверку на v, возможно:

v = MIN(v_max, v);

где v_max - максимально допустимая скорость (постоянная).

В 2D необходимо учитывать направление движения:

x += v * cos(theta);
y += v * sin(theta);

Я оставлю это вам для расчета theta ...

...