float global_time; void setup() { size(600, 600); colorMode(RGB); background(20,1,55); noStroke(); smooth(); global_time = 0; } void draw() { int i, j, box_size; int total_mesh = 20; float xx, yy, distance, wave; box_size = 600 / total_mesh; global_time = global_time + 0.1; // wave speed if (global_time > 3.1415926535*2){ global_time = 0; } for(i=0; i < total_mesh; i++){ for(j=0; j < total_mesh; j++){ xx = (j+0.5) * box_size; yy = (i+0.5) * box_size; if( random(20) < 1 ){ fill(random(8,100)+50,10,40); ellipse(xx, yy, box_size, box_size); } distance = sqrt( sq(xx-mouseX) + sq(yy-mouseY) ); if ( distance < box_size/2 ){ fill(255,255,255); ellipse(xx, yy, box_size, box_size); } wave = distance - 100*(sin(global_time)+1) - 40; if ( (wave > box_size/2) && (wave-15 < box_size/2) ){ fill(0,255,255); ellipse(xx, yy, box_size, box_size); } } } }