View difference between Paste ID: CMtfjnZF and VxFmCAN4
SHOW: | | - or go back to the newest paste.
1
PImage img;
2
ArrayList<Square> squares = new ArrayList<Square>();
3-
int min = 64; //min size of the square
3+
int min = 8; //min size of the square
4
int index = 0;
5
6
void setup() {
7
  img = loadImage("http://a4.mzstatic.com/us/r30/Purple/05/81/e6/mzm.kcjwvjip.jpg");
8
  size(img.width, img.height);
9
  background(0);
10
  cuarto(0, 0, img.width); //recursion
11
}
12
13
void draw() {
14
15
  //stroke(255, 0, 0);
16
  noStroke();
17
  
18
  if (index < squares.size()) {
19
    squares.get(index).draw();
20
    index++;
21
  }
22
  
23
}
24
25
void cuarto(int x, int y, int tam) { 
26
  if (tam >= min) {
27
    squares.add(new Square(x, y, tam, img.pixels[x+tam/2 + (y+tam/2)*img.width]));
28
    cuarto(x, y, tam/2);
29
    cuarto(x+tam/2, y, tam/2);
30
    cuarto(x, y+tam/2, tam/2);
31
    cuarto(x+tam/2, y+tam/2, tam/2);
32
  }
33
}
34
35
class Square {
36
  int x, y;
37
  int tam;
38
  color c;
39
40
  Square(int _x, int _y, int _tam, color _c) {
41
    x = _x;
42
    y = _y;
43
    tam = _tam;
44
    c = _c;
45
  }
46
47
  void draw() {
48
    fill(c);
49
    rect(x, y, tam, tam);
50
  }
51
}
52
53
void keyPressed() {
54
  if (key == '-') {
55
    if (min > 2) {
56
      min = min/2;
57
    }
58
  }
59
  if (key == '+') {
60
    min = min*2;
61
  }
62
  println(key+"..."+min); //min size of the square
63
64
  background(0);
65
  squares = new ArrayList<Square>();
66
  cuarto(0, 0, img.width);
67
  index = 0;
68
}
69
70
/* cuatro a la vez
71
72
int total = squares.size();
73
for (int i=0; i<4; i++) {
74
  squares.get(index + i*total/4).draw();
75
  }
76
if (index < total/4) index++;
77
  
78
*/