Skip to content

Instantly share code, notes, and snippets.

@haolly
Forked from shaunlebron/angleLerp.js
Created October 6, 2021 02:57
Show Gist options
  • Save haolly/7dd3d0bdba1cea6e99899d8d0bc0688e to your computer and use it in GitHub Desktop.
Save haolly/7dd3d0bdba1cea6e99899d8d0bc0688e to your computer and use it in GitHub Desktop.
The best way to interpolate 2D angles
/*
2D Angle Interpolation (shortest distance)
Parameters:
a0 = start angle
a1 = end angle
t = interpolation factor (0.0=start, 1.0=end)
Benefits:
1. Angles do NOT need to be normalized.
2. Implementation is portable, regardless of how the modulo "%" operator outputs sign (i.e. Python, Ruby, Javascript)
3. Very easy to remember.
Thanks to Trey Wilson for the closed-form solution for shortAngleDist!
*/
function shortAngleDist(a0,a1) {
var max = Math.PI*2;
var da = (a1 - a0) % max;
return 2*da % max - da;
}
function angleLerp(a0,a1,t) {
return a0 + shortAngleDist(a0,a1)*t;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment