/* 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);
}