Функция lerp
Функция lerp выполняет линейную интерполяцию
между двумя значениями. В первый параметр мы передаём
начальное значение, во второй - конечное значение,
а в третий - коэффициент интерполяции от 0.0
до 1.0. Если коэффициент равен 0.0,
функция вернёт начальное значение, если 1.0 -
конечное, а при промежуточных значениях - пропорционально
смешанный результат. Функция доступна в заголовочном
файле <cmath> начиная со стандарта C++20.
Синтаксис
lerp(start, end, t)
Также существует перегрузка с явным указанием типа результата:
lerp(start, end, t)
Пример
Давайте найдём значение, находящееся ровно посередине
между 0.0 и 10.0:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double res = lerp(0.0, 10.0, 0.5);
cout << res << endl;
return 0;
}
Результат выполнения кода:
5
Пример
Давайте получим значение, смещённое на четверть от начального к конечному:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double res = lerp(0.0, 8.0, 0.25);
cout << res << endl;
return 0;
}
Результат выполнения кода:
2
Пример
Если коэффициент интерполяции равен 0.0,
функция вернёт начальное значение, а если 1.0 -
конечное:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << lerp(3.0, 7.0, 0.0) << endl;
cout << lerp(3.0, 7.0, 1.0) << endl;
return 0;
}
Результат выполнения кода:
3
7