// DF07 float dist; float[] xpos = new float[256], ypos = new float[256]; void setup() { size(300,300); background(255,0,0); rectMode(CENTER_DIAMETER); noStroke(); fill(200,100,0); for (int i=0; i<16; i++) { for (int j=0; j<16; j++) { xpos[i*16+j]=i*width/15; ypos[i*16+j]=j*height/15; } } } void loop() { background(30); for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { dist = sqrt(sq(mouseX-i*width/15) + sq(mouseY-j*height/15)); xpos[i*16+j]+=random((-800+(i*width/15-xpos[i*16+j]))/50, (800+(i*width/15-xpos[i*16+j]))/50); ypos[i*16+j]+=random((-800+(j*height/15-ypos[i*16+j]))/50, (800+(j*height/15-ypos[i*16+j]))/50); xpos[i*16+j]+=(i*width/15-xpos[i*16+j])/(1+sq(abs(dist))/7000); ypos[i*16+j]+=(j*height/15-ypos[i*16+j])/(1+sq(abs(dist))/7000); rect(xpos[i*16+j], ypos[i*16+j], 8+abs(dist)/30, 8+abs(dist)/30); } } }