std::lerp - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(1) | (desde C++20) |
|
|
(2) | (desde C++20) |
|
|
(3) | (desde C++20) |
|
|
(4) | (desde C++20) |
1-3) Calcula a+t(b−a), es decir, la interpolación lineal entre a y b para el parámetro t (o extrapolación, cuando t está fuera del rango [0,1]).
4) Un conjuntos de sobrecargas o una plantilla de función para todas las combinaciones de argumentos de tipo aritmético que no se cubren por 1-3). Si cualquiera de los argumentos tiene tipo entero, se convierte a double. Si cualquier otro argumento es long double, entonces el tipo de retorno es long double; de lo contrario, es double.
Parámetros
Valor de retorno
a+t(b−a)
Cuando isfinite(a) && isfinite(b), se garantizan las siguientes propiedades:
- Si
t == 0, el resultado es igual aa. - Si
t == 1, el resultado es igual ab. - Si
t >= 0 && t <= 1, el resultado es finito. - Si
isfinite(t) && a == b, el resultado es igual aa. - Si
isfinite(t) || (!isnan(t) && b-a != 0), el resultado no esNaN.
Dejemos que CMP(x,y) sea 1 si x > y, -1 si x < y, y 0 de lo contrario. Para cualquier t1 y t2, el producto de CMP(lerp(a, b, t2), lerp(a, b, t1)), CMP(t2, t1), y CMP(b, a) es no-negativo (es decir, lerp es monotónico).
Ejemplos
#include <iostream> #include <cmath> int main() { float a=10.0f, b=20.0f; std::cout << "a=" << a << '\n' << "b=" << b << '\n' << "punto medio=" << std::lerp(a,b,0.5f) << '\n' << std::boolalpha << (a == std::lerp(a,b,0.0f)) << '\n'; }
Salida:
a=10 b=20 punto medio=15 true
Véase también
| Punto medio entre dos números o punteros (plantilla de función) [editar] |