logo@krutoo/utils

lerp

A
B
lerp(A, B, 0.5)

"Holy grail" of transitions in gamedev

Linear interpolation. This function has three arguments:

  • start - number that means start of some range
  • end - number that means end of some range
  • factor - number from 0 to 1

and interpolates factor on range.

import { lerp } from '@krutoo/utils';

lerp(0, 10, 0.5); // 5
lerp(0, 10, 0.2); // 2

lerp(2, 12, 0.5); // 7
lerp(2, 12, 1); // 12

It is useful for example when you need to do something based on timeline.

If you want to move object from A to B in one second and you have render loop you can just:

// loop is called for every frame (60fps = 60 calls per second)
function loop(currentTime: number) {
  const finishTime = 1000;

  bullet.x = lerp(bullet.x, enemy.x, finishTime - currentTime);
  bullet.y = lerp(bullet.x, enemy.y, finishTime - currentTime);
}