const micro_height=100; const micro_width=100; const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); const SPEED= 50; const AMPLITUDE=50; const SIZE=1; const NP=10; const rigi=5; const krigi=0.9; const CLAMPED=1; var DAMP=0.05; var firstMic = 1; var myId = 0; var nbMicro = 0; var l=Math.floor(canvas.height/NP); //length of a row var midl=Math.pow(l,2)/2-l/2; var r=1; var redstyle=0; var bluestyle= 0; var tempx,tempy,tempvx,tempvy,i,b,j,k,f,v,vunx,vuny,vdeuxx,vdeuxy,diffun,diffdeux,average,self,start, mousedown,press,radioval,firstmic=0; var tab=[]; var tabuffer=[]; var previoustab=[]; var tabtaken=[]; var tabsin=[]; frequency=document.querySelector("#freq"); amplitude=document.querySelector("#gain"); DB=document.querySelector("#db"); damping=document.querySelector("#damp"); //////////////INITIALISATION//////// function initialisation() { console.log("initialisation"); for (i=0;il&&i&& i%l && (i%l)-l+1 && il*l-l-1){ temp=up(i)+down(i)+left(i); act=tab[i-l].active +tab[i-1].active+tab[i+1].active; } if(i0){ temp=up(i)+down(i)+right(i); act=tab[i+l].active+tab[i-1].active+tab[i+1].active; } if(!act){act=1} temp=(temp*(rigi-1)/(act*rigi)+(tab[i].z)*1/rigi)/2; temp+=previoustab[i].z*1/2; previoustab[i].z=temp; } tabuffer[i].z=temp; } } for(i=0;i0){ return temp; } else {return midl}; } ////////////RENDER/////////////////// function render(){ var xsize,ysize,xpos,ypos=10; var up,right,diag=0; var r,g,b,avr=0; ctx.clearRect(0, 0, canvas.width, canvas.height); for(i=0;i