xxxxxxxxxx
/*
Samson Goodenough
2018/10/02
Cell Splitter
*/
ArrayList<Cell> cells = new ArrayList<Cell>();
PImage img;
void setup() {
size(1000, 1000);
img = loadImage("laugh.jpg");
cells.add(new Cell(width/2, height/2, width));
}
void draw() {
background(21);
for (int i = 0; i < cells.size(); i++) {
if (cells.get(i).clicked()) {
splitCell(i);
break;
}
}
for (int i = 0; i < cells.size(); i++) {
cells.get(i).display();
}
}
void mousePressed() {
for (int i = 0; i < cells.size(); i++) {
if (cells.get(i).clicked()) {
splitCell(i);
}
}
}
void splitCell(int i) {
cells.add(new Cell(cells.get(i).x - cells.get(i).size/4, cells.get(i).y - cells.get(i).size/4, cells.get(i).size/2)); //top left
cells.add(new Cell(cells.get(i).x + cells.get(i).size/4, cells.get(i).y - cells.get(i).size/4, cells.get(i).size/2)); //top right
cells.add(new Cell(cells.get(i).x - cells.get(i).size/4, cells.get(i).y + cells.get(i).size/4, cells.get(i).size/2)); //bot left
cells.add(new Cell(cells.get(i).x + cells.get(i).size/4, cells.get(i).y + cells.get(i).size/4, cells.get(i).size/2)); //top right
cells.remove(i);
}
class Cell{
float x;
float y;
float size;
Cell(float m, float n, float s){
x = m;
y = n;
size = s;
noStroke();
}
void display(){
fill(img.get(int(x), int(y)));
ellipse(x, y, size, size);
}
boolean clicked(){
if(dist(x, y, mouseX, mouseY) < size/2){
return true;
}
return false;
}
}