@@ -1386,16 +1386,19 @@ test "zmath.lerpInverse" {
1386
1386
// Reference: https://www.gamedeveloper.com/programming/improved-lerp-smoothing-
1387
1387
pub inline fn lerpOverTime (v0 : anytype , v1 : anytype , rate : anytype , dt : anytype ) @TypeOf (v0 , v1 ) {
1388
1388
const t = std .math .exp2 (- rate * dt );
1389
- return lerp (v0 , v1 , t );
1389
+ return lerp (v1 , v0 , t );
1390
1390
}
1391
1391
1392
1392
pub inline fn lerpVOverTime (v0 : anytype , v1 : anytype , rate : anytype , dt : anytype ) @TypeOf (v0 , v1 , rate , dt ) {
1393
1393
const t = std .math .exp2 (- rate * dt );
1394
- return lerpV (v0 , v1 , t );
1394
+ return lerpV (v1 , v0 , t );
1395
1395
}
1396
+
1396
1397
test "zmath.lerpOverTime" {
1397
1398
try expect (math .approxEqAbs (f32 , lerpVOverTime (0.0 , 1.0 , 1.0 , 1.0 ), 0.5 , 0.0005 ));
1398
1399
try expect (math .approxEqAbs (f32 , lerpVOverTime (0.5 , 1.0 , 1.0 , 1.0 ), 0.75 , 0.0005 ));
1400
+ try expect (math .approxEqAbs (f32 , lerpVOverTime (0.0 , 1.0 , 1.0 , 0.0 ), 0.0 , 0.0005 ));
1401
+ try expect (math .approxEqAbs (f32 , lerpVOverTime (0.0 , 1.0 , 1.0 , std .math .inf (f32 )), 1.0 , 0.0005 ));
1399
1402
try expectVecApproxEqAbs (lerpOverTime (f32x4 (0 , 0 , 10 , 10 ), f32x4 (100 , 200 , 100 , 100 ), 1.0 , 1.0 ), f32x4 (50 , 100 , 55 , 55 ), 0.0005 );
1400
1403
}
1401
1404
0 commit comments