mat4-interpolate
Interpolates between two 4x4 matrices, using algorithms from W3C Spec to produce consistent results with CSS animations. Like mat4-interpolator but does the decomposition in place.
Translation, scale, skew and perspective are interpolated linearly, and rotation is interpolated with spherical interpolation.
var mat4 = var start = mat4var end = mat4var out = mat4 //the matrix interpolatorvar interpolate = //.. in your render loop { //interpolate based on alpha, storing results in 'out' matrix var vlid = if !valid //could not interpolate, you need to animate yourself somehow }
Usage
valid = interpolate(out, start, end, alpha)
Interpolates between start
and end
matrices (16 floats in an array) and stores the result in out
, using alpha
for interpolation. This will decompose the two matrices into components, lerp/slerp, and then recompose.
Returns true
is the interpolation succeeded, or false
if either matrix is non-invertible (i.e. scale or perspective W of zero). W3C suggests falling back to discrete animations in this case.
License
MIT, see LICENSE.md for details.