class spoint { int xpos, ypos; spoint(int x, int y) { xpos = x; ypos = y; } } int rx; int ry; int count; int previouspoint; float multi; spoint sp1; spoint sp2; spoint sp3; spoint sp4; void setup() { size(510, 510); frameRate(30); noStroke(); randomsetup(); multi = 1.0; } void randomsetup() { background(255); stroke(0); fill(0); rx = 5; ry = 5; previouspoint = 0; count = 0; sp1 = new spoint(5,5); sp2 = new spoint(width-5,5); sp3 = new spoint(width-5,height-5); sp4 = new spoint(5,height-5); ellipse(sp1.xpos,sp1.ypos,10,10); ellipse(sp2.xpos,sp2.ypos,10,10); ellipse(sp3.xpos,sp3.ypos,10,10); ellipse(sp4.xpos,sp4.ypos,10,10); } void draw() { //the count and while loop speed up the drawing. After 100 points are created, then they are drawn. int count = 0; while (count < 500) { int rpoint = int(random(4)); if (rpoint == 0 && previouspoint != 1) { // square point 1 rx = waverage(rx,sp1.xpos,multi); ry = waverage(ry,sp1.ypos,multi); stroke(155,0,0); fill(155,0,0); previouspoint = 0; } else if (rpoint == 1 && previouspoint != 2) { // square point 2 rx = waverage(rx,sp2.xpos,multi); ry = waverage(ry,sp2.ypos,multi); stroke(0,155,0); fill(0,155,0); previouspoint = 1; } else if (rpoint == 2 && previouspoint != 3) { // square point 3 rx = waverage(rx,sp3.xpos,multi); ry = waverage(ry,sp3.ypos,multi); stroke(0,0,155); fill(0,0,155); previouspoint = 2; } else if (rpoint == 3 && previouspoint != 0) { // square point 4 rx = waverage(rx,sp4.xpos,multi); ry = waverage(ry,sp4.ypos,multi); stroke(155); fill(155); previouspoint = 3; } point(rx,ry); count++; } } int waverage(float a, float b, float multiplier) { return int((a*multiplier + b)/(multiplier + 1)); } void keyPressed() { if (key == ' ') { randomsetup(); multi = 1; } } void mousePressed() { randomsetup(); if (mouseButton == LEFT) { multi -= 0.1; } else { multi += 0.1; } }