JSFiddle - React, Tailwind, and code Playground

JavaScript

function X(a){for(l=a.match(/\d+/g),h=document,v=h.body.appendChild(h.createElement("canvas")),v.width=W=l[0],v.height=H=l[1],w=v.getContext("2d"),e=w.createImageData(W,H),d=e.data,N=W*H;N--;)for(i=2,c=N*4;i<l.length;d[c++]=255)for(x=N%W-l[i++],y=~~(N/W)-l[i++],k=l[i++],q=3;q--;)d[c++]+=k*l[i++]/(Math.sqrt(x*x+y*y)+1);w.putImageData(e,0,0);}

var j = 0;
var renderFrame = function () {
    if(window.h && window.v){h.body.removeChild(v);} // clear prev frame
    X("225 150\n" +
      (70 + j) + " " + (120 - j) + " 170 135 56 0\n" + 
      j * 5 + " " + j * 3 + " 64 0 50 205");       
    if(++j < 50) { setTimeout(renderFrame, 1); } else { console.log('done!'); }
};
setTimeout(renderFrame, 10);