У меня есть вектор скорости, где находится мой клиент и куда он движется, и у меня есть тот же вектор, который исходит от сервера, сообщающего, где должен быть клиент. Иногда это немного отличается, поэтому я хочу интерполировать мою текущую позицию на правильную позицию сервера.
Черная стрелка - вектор скорости клиента, красная стрелка - вектор скорости клиента на сервере, а синяя стрелка - это та, которую я хочу вычислить и интерполировать.
Как рассчитать синий вектор? Тогда как я могу линейно интерполировать между ними?
источник
Принимая эту картину:
AB - красный вектор от A до B.
Скажем, P составляет 25% пути от A до B. Основной способ добраться до P от источника
Так 3/4 А и 1/4 Б.
Другой способ найти это - сказать, что вы хотите, чтобы вектор на 75% был «близок» к A, и на 25% «закрывался» к B. (Вектор, который на 100% «близок» к A, - это просто вектор A.)
Таким образом, вы также можете найти P как:
С t = 0,75 (скажем, 75% «близко» к A)
Таким образом, простая функция LERP в C для класса Vector3f будет выглядеть так:
источник