Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function interpolate(from, to, progress, easing) {
  2.     switch(typeof to) {
  3.         default:
  4.             return easing(progress) > 0.5 ? to : from
  5.         break
  6.  
  7.         case(`number`): // Numbers
  8.             let delta = to - from
  9.             return from + delta * easing(progress)
  10.         break
  11.  
  12.         case(`object`): // Objects
  13.             if(Array.isArray(to)) { // Interpolate Array
  14.  
  15.                 let tempArray = new Array(to.length)
  16.                 for(let i in to) {
  17.                     tempArray[i] = interpolate(from[i], to[i], progress, easing)
  18.                 }
  19.                 return tempArray
  20.  
  21.             } else { // Interpolate Object
  22.                 if(to._rgb != undefined) { // Specifically Interpolate Chroma Color
  23.                     return chroma.rgb(interpolate(from.rgb(), to.rgb(), progress, easing))
  24.                 } else { // Interpolate General Object
  25.  
  26.                     let tempObject = {}
  27.                     for(let key of Object.keys(to)) {
  28.                         tempObject[key] = interpolate(from[key], to[key], progress, easing)
  29.                     }
  30.                     return tempObject
  31.  
  32.                 }
  33.             }
  34.         break
  35.  
  36.         /*
  37.         case(`string`): // Strings
  38.             return to
  39.         break
  40.  
  41.         case(`boolean`): // Booleans
  42.             return to
  43.         break
  44.         */
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement