Проще говоря: учитывая две точки A и B, найдите точку между ними.
Например, если я хочу переместить что-то вдоль линии от позиции x = 1 до x = 4 за один шаг:
1-----------------------4
Первый шаг в местоположении 1,Второй шаг находится в точке 4, поэтому объект мгновенно перемещается из одного места в другое.Однако, если я хочу, чтобы объект занимал определенное количество времени или количество кадров для перехода, мне нужно уточнить это, найдя промежуточные точки, которые расположены равномерно.
Если я хочу, чтобы объектчтобы сделать два шага (или кадра), чтобы перейти от 1 к 4,
1-----------X-----------4
Мне нужно вычислить, что такое новая точка (X), чтобы я мог нарисовать там объект в соответствующее время.В этом случае точка X будет
(max-min)
location = min + (current_step) * --------
steps
location
- это то, что мы пытаемся найти.min
= 1, max
= 4, и в этом примере steps
= 2, поскольку мы хотим разделить диапазон на два шага:
step: location:
0 1
1 2.5
2 4
1------------(2.5)-----------4
Если мы хотим выполнить 4 шага:
step: location:
0 1
1 1.75
2 2.5
3 3.25
4 4
1---(1.75)---(2.5)---(3.25)---4
и так далее.За четыре шага объект перемещается на 25% от общего расстояния на кадр.Для 10 шагов, 10% и т. Д. До тошноты.
Для нескольких измерений (когда объект имеет 2- или 3-мерную траекторию), просто примените это к каждой оси X, Y, Z независимо.
Это линейная интерполяция.Есть и другие виды.Как всегда, Google может помочь вам .
Другие приложения включают в себя наложение текстур, сглаживание, сглаживание и масштабирование изображений и т. Д., И, конечно, многие другие применения, помимо игр и графики..
Примечание: многие фреймворки уже предоставляют это.В XNA, например, это Matrix.Lerp .