#c #linear-interpolation
#c #линейная интерполяция
Вопрос:
Мне любопытно, есть ли способ сделать эту функцию:
float linearInterpolation(float startPoint, float endPoint, float time)
{
return startPoint ((endPoint - startPoint) * time);
}
Более линейно, так как прямо сейчас, когда начальная точка приближается к своей конечной точке, она идет медленнее, я просто хочу, чтобы она шла с одинаковой скоростью на всем пути без замедления / ускорения. Если мне нужно реализовать другую переменную или что-то, что можно сделать. Другая функция, которая будет принимать те же переменные и выводить следующее значение, также будет приемлемой.
Комментарии:
1. Вы делаете скорость пропорциональной расстоянию, поэтому для завершения поездки всегда требуется ровно одна единица времени. Если вам нужна фиксированная скорость, так и скажите:
startPoint velocity*time
Ответ №1:
Для меня это выглядит как правильная реализация lerp. Не видя кода, с которым вы его вызываете, я предполагаю, что причина его замедления заключается в том, что вы вызываете его с другой начальной точкой (вызов с предыдущим результатом вызова linearInterpolation приведет к этому) каждый раз (кадр?) что приведет к его замедлению, поскольку расстояние до интерполяции уменьшается при каждом вызове.
Убедитесь, что переменные начальной точки и конечной точки одинаковы для каждого вызова в течение срока службы интерполяции, и увеличивается только переменная времени.
Комментарии:
1. Вы поняли! Большое вам спасибо!!