Codice




var a=0;
var lato=350;


function init( ){
          var tasto=$('M');
          Event.observe(tasto,'click',tantevolte,false);
}


function tantevolte( ){
          var k=30;
          for(t=0;t<k;t++){
                    passo(a+t);
          }
          if(a<lato*lato-k){
                    a+=k;
          }
          setTimeout(tantevolte,0);
}


function passo(a){
          var f=(327*a)%122500;
          var y=f%lato;
          var x=Math.floor(f/lato);
          disegna(x,y);
}


function disegna(i,j){
          var punto=creaVettore((i-174)/82.5,(198-j)/82.5);
          puntino(i,j,punto);
}


function puntino(x,y,punto){
          var coso=1;
          var tela=$('M');
          var context=tela.getContext('2d');

          var colore;
          var rosso=Math.round(punto*3);
          var verde=Math.round(punto*10);
          var blu=Math.round(punto*12);
          if(punto==-1){
                    colore='#000';
          }else{
                    colore='rgb('+rosso+','+verde+','+blu+')';
          }
          context.fillRect(x,y,1,1);
          context.fillStyle=colore;
          context.fill();
}


function creaVettore(x,y){
          var cicli=100000;
          var vettore=new Array(cicli);
          vettore[0]=[x,y];
          for(m=0;m<cicli-1;m++){
                    var nuovax=xprimo(vettore[m][0],vettore[m][1],x);
                    var nuovay=yprimo(vettore[m][0],vettore[m][1],y);
                    vettore[m+1]=[nuovax,nuovay];
                    if(Math.abs(nuovax)>100){
                              return(m);
                              break;
                    }else if(m<30){
                              for(n=0;n<m;n++){
                                        if(nuovax==vettore[n][0]&&nuovay==vettore[n][1]){
                                                  return(-1);
                                                  break;
                                        }
                              }
                    }else{
                              for(n=m-30;n<m;n++){
                                        if(nuovax==vettore[n][0]){
                                                  return(-1);
                                                  break;
                                        }
                              }
                    }
          }
}


function xprimo(x,y,x0){
          var nuovax=Math.pow(x,2)-Math.pow(y,2)+x0;
          return(nuovax);
}


function yprimo(x,y,y0){
          var nuovay=2*x*y +y0;
     return(nuovay);
}


Event.observe(window,'load',init,false);

Licenza CC