Espacios de nombres
Variantes
Acciones

std::lerp

De cppreference.com
< cpp‎ | numeric
 
 
 
Definido en el archivo de encabezado <cmath>
constexpr float       lerp( float a, float b, float t ) noexcept;
(1) (desde C++20)
constexpr double      lerp( double a, double b, double t ) noexcept;
(2) (desde C++20)
constexpr long double lerp( long double a, long double b, long double t ) noexcept;
(3) (desde C++20)
constexpr Promoted    lerp( Arithmetic1 a, Arithmetic2 b, Arithmetic3 t ) noexcept;
(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.

Contenido

[editar] Parámetros

a, b, t - Valores de punto flotante o tipos enteros.

[editar] Valor de retorno

a+t(b−a)

Cuando isfinite(a) && isfinite(b), se garantizan las siguientes propiedades:

  • Si t == 0, el resultado es igual a a.
  • Si t == 1, el resultado es igual a b.
  • Si t >= 0 && t <= 1, el resultado es finito.
  • Si isfinite(t) && a == b, el resultado es igual a a.
  • Si isfinite(t) || (!isnan(t) && b-a != 0), el resultado no es NaN.

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).

[editar] 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

[editar] Véase también

(C++20)
Punto medio entre dos números o punteros
(plantilla de función) [editar]