std::lerp
提供: cppreference.com
ヘッダ <cmath> で定義
|
||
float lerp( float a, float b, float t ); |
(1) | (C++20以上) |
double lerp( double a, double b, double t ); |
(2) | (C++20以上) |
long double lerp( long double a, long double b, long double t ); |
(3) | (C++20以上) |
Promoted lerp( Arithmetic1 a, Arithmetic2 b, Arithmetic3 t ); |
(4) | (C++20以上) |
a+t*(b−a)、すなわち、引数 t
に対する a
と b
の間の線形補間 (または、 t
が範囲 [0,1]
の外側のときは外挿) を計算します。
isfinite(a) && isfinite(b)
のとき、以下の性質が保証されます。
-
t == 0
の場合、結果はa
と等しい。 -
t == 1
の場合、結果はb
と等しい。 -
t >= 0 && t <= 1
の場合、結果は有限である。 -
isfinite(t) && a == b
の場合、結果はa
と等しい。 -
isfinite(t) || (!isnan(t) && b-a != 0)
の場合、結果はNaN
でない。 -
CMP(x,y)
を、x > y
であれば1
、x < y
であれば-1
、そうでなければ0
としたとき、任意のt1
およびt2
について、CMP(lerp(a, b, t2), lerp(a, b, t1))
、CMP(t2, t1)
、およびCMP(b, a)
の積が非負である (つまり、lerp
は単調である)。
4) 1-3) でカバーされない算術型の引数の全ての組み合わせに対するオーバーロード集合または関数テンプレート。 いずれかの引数が整数型の場合、それは double にキャストされます。 他のいずれかの引数が long double の場合、結果の型は long double であり、そうでなければ結果は double です。
引数
a, b, t | - | 浮動小数点または整数型の値 |
戻り値
a+t*(b−a)。
例
This section is incomplete Reason: no example |