• fullscreen
• Circle.pde
• Lesson_Five_Project_Simple.pde
• ```class Circle {
float x,y; //location
float dia; //diameter
float exSpd; //expansion speed
color c; //color of each circle

Circle (float x_, float y_) {
dia = 10; //starting diameter, also dot for moving, and dot for bounce-back
x = x_; //x position
y = y_; //y position
c = color(random(255), random(255), random(255)); //randomize color of circle
}

void display(float exSpd_) {
exSpd = exSpd_;
stroke(c); //random color
strokeWeight(4);
fill(255);
ellipse(x,y,dia,dia); //displays the circle
dia += exSpd; //expands the circle at rate pre-defined
noStroke();
fill(c);
ellipse(x,y,10,10); //displays a solid circle in the center of expanding one
}

float diameter() { //sends diamter expansion data to the main draw loop for storing in an array
return dia;
}
}
```
```ArrayList circles;
//Circle[] circles = new Circle[0]; //object array
float[] expandSpeed = new float[0]; //speed array
float[] xCoord = new float[0]; //x coordinates array
float[] yCoord = new float[0]; //y coordinates array
float[] diaArray = new float[0]; //diameters array
int iter; //counter to keep track of current interation
float x,y,dia;

void setup() {
size(400,400);
smooth();
circles = new ArrayList(); //create blank arraylist
}

void draw() {
background(255);

for(int i = 0; i < circles.size(); i++) { //loop for the current number of objects
iter = i; //iteration counter equals i
Circle circle = (Circle) circles.get(i); //get object from ArrayList position i
circle.display(expandSpeed[i]); //display the object Array
diaArray[i] = circle.diameter(); //fill the diameter array to that it updates with display

if (circle.diameter() < 13) { //if circle gets too small, expand
expandSpeed[i] = 1;
}

x = xCoord[iter]; //pull the current iteration of x coordinates
y = yCoord[iter]; //pull the current iteration of y coordinates
dia = diaArray[iter]; //pull the current iteration of diameter data

for(int h = 0; h < diaArray.length-1; h++) { //for each indice currently holding object/xy/diameter data
if (h != iter) { //NOT including the iteration that was pulled before this loop
float distance = dist(x,y,xCoord[h],yCoord[h]); //get distance between current iteration and all other points

if(distance < dia/2+diaArray[h]/2) { //if that distance is greater than current radius plus all other radi
expandSpeed[h] = -1; //reverse current iteration
expandSpeed[iter] = -1; //and all other colliding iterations
}
}
}
}
}

void mousePressed() {
float xCoord_ = mouseX; //add place to xCoord array and input current mouseX data
xCoord = (float[]) append(xCoord, xCoord_);

float yCoord_ = mouseY; //add place to yCoord array and input current mouseY data
yCoord = (float[]) append(yCoord, yCoord_);

float diaArray_ = 10; //add place to diameter Array and input dumb placeholder data
diaArray = (float[]) append(diaArray, diaArray_);

float expandSpeed_ = .2; //add place to expnasion speed Array and input the speed
expandSpeed = (float[]) append(expandSpeed, expandSpeed_);

}

void keyPressed() {
if (circles.size() > 0) {
circles.remove(circles.size()-1);
xCoord = shorten(xCoord);
yCoord = shorten(yCoord);
diaArray = shorten(diaArray);
expandSpeed = shorten(expandSpeed);
}
}
```

### tweaks (0)

This sketch is running as Java applet, exported from Processing.

Report Sketch

Report for inappropriate content