Линейная интерполяция более линейная

Мне интересно, есть ли способ сделать эту функцию:

float linearInterpolation(float startPoint, float endPoint, float time)
{
return startPoint + ((endPoint - startPoint) * time);
}

Более линейный, так как сейчас, когда начальная точка приближается к своей конечной точке, она идет медленнее, я просто хочу, чтобы она двигалась с одинаковой скоростью на всем протяжении без замедления / ускорения. Если мне нужно реализовать другую переменную или что-то, что может быть сделано. Другая функция, которая будет принимать те же переменные и выводить следующее значение, также будет приемлемой.

1

Решение

Это похоже на правильную реализацию lerp для меня. Не видя код, с которым вы его вызываете, я буду догадываться, что причина его замедления в том, что вы вызываете его с другой точкой запуска (вызов с предыдущим результатом вызова linearInterpolation вызовет это) каждый время (кадр?), которое может привести к его замедлению, поскольку расстояние для интерполяции уменьшается при каждом вызове.

Убедитесь, что переменные startPoint и endPoint одинаковы для каждого вызова в течение срока жизни интерполяции, и увеличивается только переменная времени.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]