JS1K

#2: the original

Source for demo by Jon Gjengset. See also description.

function b(c,g){if(c)for(var e=0;e<g.length;e++){var a=g[e],d=Math.random()*100;if(d<2){d=a.a;a.a=a.b;a.b=d}else if(d<4){d=a.a;a.a=-a.b;a.b=-d}if(a.x<=0){a.x=0;a.a=1;a.b=0}if(a.x>=c.canvas.width){a.x=c.canvas.width;a.a=-1;a.b=0}if(a.y<=0){a.y=0;a.b=1;a.a=0}if(a.y>=c.canvas.height){a.y=c.canvas.height;a.b=-1;a.a=0}c.beginPath();c.moveTo(a.x,a.y);a.x+=a.c*a.a;a.y+=a.c*a.b;c.lineTo(a.x,a.y);c.stroke();c.closePath()}}var f=window,h=document.getElementById("c");h.width=f.innerWidth;h.height=f.innerHeight;
if(h.getContext){h=h.getContext("2d");h.strokeStyle="#000000";h.lineWidth=1;for(var i=[{x:0,y:0,a:1,b:0,c:3},{x:parseInt(h.canvas.width/2),y:0,a:0,b:1,c:3},{x:h.canvas.width,y:0,a:0,b:1,c:3},{x:h.canvas.width,y:parseInt(h.canvas.height/2),a:-1,b:0,c:3},{x:h.canvas.width,y:h.canvas.height,a:-1,b:0,c:3},{x:parseInt(h.canvas.width/2),y:h.canvas.height,a:-1,b:0,c:3},{x:0,y:parseInt(h.canvas.height/2),a:0,b:-1,c:3},{x:0,y:h.canvas.height,a:0,b:-1,c:3}],j=0;j<4E3;j+=3)b(h,i);setInterval(function(){b(h,
i)},100)};