wiggler0xa0

wiggler0xa0

by Eshy Lavi

HTML

<body>
<canvas id="c" width="561" height="379" style="border:4px solid white;"></canvas>
</body>

CSS

body{background-color:black;}
.ps{margin:0;padding:0;}

JavaScript

//canvas c
var c   = document.getElementById('c');  
//context ctx
var ctx = c.getContext('2d');
//author
var author = "Eshy Lavi try emailing me at the g."
//colors and opacity
var _r=243;var _b=228;var _g=213;
var _a=0.5;
//color change rates
var _dg=2;var _dr=1;var _db=3;
//x and y positions for main and mainfs.
var xs=[];var ys=[];var xsf=[];var ysf=[];
//color change?
var radii=[];
var shradii=[];
var eaten=[];
var cchanges=[];
var odiss=[];
var diss=[];
var odis;
var M=221;
var theta2=0;
var N=236;
var theta=0;
var rate=5.54;
var delta=14;
var c_w=document.getElementById('c').width;
var c_h=document.getElementById('c').height;
var maxrad=Math.floor(c_w/4);
var maxradf=Math.floor(c_w/12);
var radnow;
var xzero=Math.floor(c_w/2);
var yzero=Math.floor(c_h/2);
var dnf=true;
var oxs=[];var oys=[];
var rnr=0;var nrn=0;var aqa=0;
var fillitv;

function init(){
alert('//close the water HEATER at 01:40;')
 for (var i=0;i<N;i++){
radii.push(12);
  radnow=/*Math.random()**/maxrad;
  theta=(i*360/N);/*+Math.random()*360/N;*/  
  xs.push(xzero+radnow*Math.cos(theta/57.3));
  ys.push(yzero-radnow*Math.sin(theta/57.3));  
  
  cchanges.push(true);
 }
  for (var j=0;j<M;j++){
  theta2=(j*360/M);
  xsf.push(xzero+maxradf*Math.cos(theta2/57.3));
  ysf.push(yzero-maxradf*Math.sin(theta2/57.3));
  eaten.push(false);
shradii.push(10);
}

 for (var ii=1;ii<N;ii++){
  odiss[ii]=Math.sqrt((xs[i]-xs[i-1])*(xs[i]-xs[i-1])+(ys[i]-ys[i-1])*(ys[i]-ys[i-1]));
 }
 odiss[0]=Math.sqrt((xs[0]-xs[N-1])*(ys[0]-ys[N-1])+(ys[0]-ys[N-1])*(ys[0]-ys[N-1]));
 fillitv=-1;
 window.requestAnimationFrame(draw);
}

var asd=0;var asa=0;
var thetaback=0;
function draw(){
 ctx.fillStyle='rgba(0,0,0,1)';
 ctx.fillRect(0,0,561,379);
 ctx.fillStyle="rgba("+_r+","+_g+","+_b+","+_a+")";
 ctx.strokeStyle="rgba("+_r+","+_g+","+_b+","+_a+")";
 ctx.globalCompositeOperation='source-atop';

  for (rnr=0;rnr<N;rnr++){
 if (!cchanges[rnr]){ctx.fillStyle="blue";ctx.strokeStyle='blue';}
 else...