/* Cubism Heavily based on sketch by Ira Greenberg. Press any mouse button to generate another set of cubes. */ float randShift = .2; int quadW = 15; int quadH = quadW; float[]q = { -quadW / 2, -quadH /2, quadW, quadH}; void setup() { size(600, 600); background(255); smooth(); noStroke(); frameRate(30); generateGrid(); } void generateGrid() { /* generate a table structure of quads progressively adding more randomization to each quad */ for (int i = 0, k = 1; i < height - quadH; i += quadH, k++) { /* resetting the transformation matrix keeps the translations from continually accumulating */ resetMatrix(); translate(0, quadH * k); for (int j = 0; j < width - quadW; j+= quadW) { translate(quadW, 0); fill(random(0, 255), random(0, 255), random(0, 255)); quad(q[0] + r(k), q[1] + r(k), q[0] + q[2] + r(k), q[1] + r(k), q[0] + q[2] + r(k), q[1] + q[3] + r(k), q[0] + r(k), q[1] + q[3] + r(k)); } } } float r(int i) { return random(-1 * randShift, i * randShift); } void draw() { // generateGrid(); } void mousePressed() { background(255); generateGrid(); }