pixel(s0


  
    var Universe = function Pixels() {
     return {
      framecount : 0,
  
      update: function () {
       impulsX = impulsX + (impulsToX - impulsX) / 30;
       impulsY = impulsY + (impulsToY - impulsY) / 30;
  
       // move to tox
       for(i = 0; i<pixels.length; i++ ) {
        pixels[i].x = pixels[i].x + (pixels[i].toX - pixels[i].x) / 10;
        pixels[i].y = pixels[i].y + (pixels[i].toY - pixels[i].y) / 10;
        pixels[i].size = pixels[i].size + (pixels[i].toSize - pixels[i].size) / 10;
  
        pixels[i].r = pixels[i].r + (pixels[i].toR - pixels[i].r) / 10;
        pixels[i].g = pixels[i].g + (pixels[i].toG - pixels[i].g) / 10;
        pixels[i].b = pixels[i].b + (pixels[i].toB - pixels[i].b) / 10;
       }
  
       // update speed
       for(i = 0; i<pixels.length; i++ ) {
        // check for flightmode
        var a = Math.abs(pixels[i].toX - mx) *  Math.abs(pixels[i].toX - mx);
                       var b = Math.abs(pixels[i].toY - my) *  Math.abs(pixels[i].toY - my);
                       var c = Math.sqrt(a+b);
  
        if(pixels[i].flightMode != 2) {
         if(c < 120) {
          if(pixels[i].flightMode == 0) {
                          var alpha = Math.atan2(pixels[i].y - my, pixels[i].x - mx) * 180 / Math.PI + Math.random()*180-90;
                          pixels[i].degree = alpha;
           pixels[i].degreeSpeed = Math.random()*1+0.5;
           pixels[i].frame = 0;
          }
          pixels[i].flightMode = 1;
         } else {
          pixels[i].flightMode = 0;
         }
        }
  
        // random movement
        if(pixels[i].flightMode == 0) {
         // change position
         pixels[i].toX += pixels[i].speedX;
         pixels[i].toY += pixels[i].speedY;
  
         // check for bounds
         if(pixels[i].x < 0) {
          pixels[i].x = width;
          pixels[i].toX = width;
         }
         if(pixels[i].x > width) {
          pixels[i].x = 0;
          pixels[i].toX = 0;
         }
  
         if(pixels[i].y < 0) {
          pixels[i].y = height;
          pixels[i].toY = height;
         }
         if(pixels[i].y > height) {
          pixels[i].y = 0;
          pixels[i].toY = 0;
         }
        }
  
        // seek mouse
        if(pixels[i].flightMode == 1) {
         pixels[i].toX = mx + Math.cos((pixels[i].degree + pixels[i].frame ) % 360 * Math.PI /180)*c;
         pixels[i].toY = my + Math.sin((pixels[i].degree + pixels[i].frame ) % 360 * Math.PI /180)*c;
         pixels[i].frame += pixels[i].degreeSpeed;
         pixels[i].degreeSpeed += 0.01;
        }
  
        if(pixels[i].flightMode != 2) {
         // add impuls
         pixels[i].toX += Math.floor(impulsX * pixels[i].size/30);
         pixels[i].toY += Math.floor(impulsY * pixels[i].size/30);
        }
       }
  
       // set an choord
       var r1 = Math.floor(Math.random() * pixels.length);
       var r2 = Math.floor(Math.random() * pixels.length);
  
       if(pixels[r1].flightMode != 2) pixels[r1].size = Math.random()*30;
       if(pixels[r2].flightMode != 2) pixels[r2].size = Math.random()*30;
  
       this.framecount++;
  
       now = new Date();
       if(now.getTime() - startedAt.getTime() >= machine[machineIndex]) {
        machineIndex++;
        impulsX = Math.random()*800-400;
        impulsY = -Math.random()*400;
  
        var transIndex = Math.floor(Math.random()*transitions.length);
        transitions[transIndex]();
       }    
      },
      draw: function () { 
   //    p.stroke(255, 0, 0);
   //    p.ellipse(p.mouseX+5, p.mouseY+5, 5, 5);
  
       for(i = 0; i<pixels.length; i++ ) {
        p.fill(Math.floor(pixels[i].r), Math.floor(pixels[i].g), Math.floor(pixels[i].b));
        p.ellipse(pixels[i].x, pixels[i].y, pixels[i].size, pixels[i].size);
   //     console.log(pixels[i].x);
       }
  
       if(focusedParticleIndex != null) {
        p.fill(Math.floor(pixels[focusedParticleIndex].r), Math.floor(pixels[focusedParticleIndex].g), Math.floor(pixels[focusedParticleIndex].b));
        p.ellipse(pixels[focusedParticleIndex].x, pixels[focusedParticleIndex].y, pixels[focusedParticleIndex].size, pixels[focusedParticleIndex].size);    
       }
      }
     }
    };