int xspacing = 8; int w; int x; int yvlength; float theta; float amplitude = 75.0; float period = 500.0; float dx; float [] yvalues; float [] sinewave; float z; float b; float diameter; float k = 0; float mouseDist; float maxDistance; void setup(){ size (500, 800); frameRate(40); colorMode(RGB, 255, 255, 255, 100); smooth(); w = width +16; dx = (TWO_PI / period) * xspacing; yvlength = w/xspacing; yvalues = new float[yvlength]; maxDistance = dist(0, 0, width/4, height/4); } void draw(){ background(0); calcWave(); renderWave(); for (int z = 0; z <=height; z +=35) { for (int b = 0; b <=width; b +=35) { fill(40, 200, 100); diameter = (sinewave[b / 8] - z) / 10; if (keyPressed) { fill(random(255), random(255), random(255), 100); } if (!keyPressed) { fill(50, 139, 170); } stroke(10, 211); ellipse (b, z, diameter, diameter); } } } void calcWave(){ theta += 0.08; float x = theta; for (int i = 0; i < yvalues.length; i++) { yvalues[i] = sin(x - mouseX/10)*amplitude; x+=dx; } } void renderWave() { sinewave = new float [yvalues.length]; for (int x = 0; x < yvalues.length; x++) { sinewave[x] = width/2+yvalues[x] + mouseY - height/2; noStroke(); fill(50, 139, 170, 50); if (mousePressed) { fill(random(255), random(255), random(255), 50); frameRate(900); } if (!mousePressed) { fill(50, 139, 170, 50); frameRate(40); } ellipseMode(CENTER); ellipse(x*xspacing,sinewave[x],30,16); } }