JS1K

#2: the original

Source for demo by antimatter15.

var b=document.getElementById("c");b.width=innerWidth;b.height=innerHeight;var e=b.getContext("2d");document.body.onclick=function(a){j.push([a.clientX,a.clientY,20,0,0])};var j=[[300,100,280,2,0],[300,300,280,-2,0]];setInterval(function(){e.clearRect(0,0,innerWidth,innerHeight);for(var a=0;a<j.length;a++){var c=j[a],g=c[0],h=c[1],k=c[2],m=c[3];c=c[4];for(var i=0;i<j.length;i++)if(i!=a){var f=j[i],d;d=f[0]-g;var l=f[1]-h,n=d*d+l*l,o=Math.sqrt(n);f=f[2]*1/n;d=[d/o*f,l/o*f];m+=d[0];c+=d[1]}j[a]=[g,h,k,m,c]}for(a=0;a<j.length;a++){e.fillStyle="hsl("+Math.min(300,Math.floor(50*Math.sqrt(j[a][3]*j[a][3]+j[a][4]*j[a][4])))+",100%,40%)";j[a][0]+=j[a][3]/5;j[a][1]+=j[a][4]/5;g=j[a][0];h=j[a][1];k=j[a][2]/10;e.beginPath();e.arc(g,h,k,0,Math.PI*2,true);e.stroke();e.fill()}},0)