JSFiddle - React, Tailwind, and code Playground
JavaScript
X=function(a){for(l=a.split("\n"),h=document,v=h.createElement("canvas"),z=l[0].split(u=" "),v.width=W=z[0],v.height=H=z[1],h.body.appendChild(v),w=v.getContext("2d"),e=w.createImageData(W,H),d=e.data,y=0;y<H;y++)for(x=0;x<W;x++){for(c=4*(y*W+x),i=1;i<l.length;i++)for(t=l[i].split(u),o=x-t[0],p=y-t[1],r=Math.sqrt(o*o+p*p)+1,q=0;q<3;q++)d[c+q]+=t[2]*t[3+q]/r;d[c+3]=255}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);