> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://dflab.sketchpad.cc/sp/pad/view/ro.4zxoU8do8yQ/rev.405
 * 
 * authors: 
 *   Filipa Rodrigues

 * license (unless otherwise specified): 
 *   creative commons attribution-share alike 3.0 license.
 *   https://creativecommons.org/licenses/by-sa/3.0/ 
 */ 



// This sketch builds on a prior work, "Joao Pinto - 02 - A Noite das Partículas Devoradoras", created by JoaoPinto
// http://dflab.sketchpad.cc/sp/pad/view/ro.9gwIhxQDrrPb0a/rev.1291


   // indicações para a flutuação das partículas e valor default para a rotação do rectângulo
   float px[100];
   float py[100];
   float r = 0;
 
  //número de partículas
int num_particles = 1200;

    //tamanho da área de trabalho 
void setup() {  
size(500, 500); 
    //cor do fundo
background(56,93,131);
    // indicação para centrar o rectângulo
rectMode (CENTER);
    //código para o movimento das partículas (extraído do exemplo fornecido pelo professor)
    px = new float[num_particles];
    py = new float[num_particles];
    
    for (int i = 0; i < num_particles; i++) {
        px[i] = random (width);
        py[i] = random (height);
    }
} 
 
// as instruções que estiverem dentro desta função draw
// são executadas a cada novo frame
 
void draw() {
    //o fundo repete-se a cada frame, de modo a eliminar o efeito "onion skin"
    background(117,110,237);
    //dados para o movimento das partículas 
    for (int i = 0; i < num_particles; i = i+1) {
        px[i] = constrain (px[i] + random (-5, 5), 0, width);
        py[i] = constrain (py[i] + random (-5, 5), 0, height);
        
     //distancia a que as particulas se afastam
        if (dist (px[i], py[i], mouseX, mouseY) < 60) {
            vx = (px[i] - mouseX);
            vy = (py[i] - mouseY);
            
            px[i] = px[i] + vx;
            py[i] = py[i] + vy;
        }
    //forma das partículas
    stroke(1)
    fill(250,159,115);
        ellipse (px[i], py[i], 5, 5);
    }
    //dados para o rectângulo
  {     translate (mouseX,mouseY)
    rotate (r);
    noStroke();
    fill(251,255,59);
    ellipse(0,0,75,75)
    r = r + 0.1;}  
    fill(117,110,237)
    triangle(0,0,37,12,37,50);

}