class Tile { int w; int h; boolean flatten = true; float offset = 0; color t_col = color(240, 240, 240); color t_edge = color(0); int tile; float tileRes; float ratio; Crap[] mess = new Crap[0]; int messL = 5; Tile(int iw, int ih, int ti, float itr, float ir) { w = iw; h = ih; tileRes = itr; ratio = ir; tile = ti; /* if(round(random(3)) == 0) { for(int i = 0; i < round(random(4)) + 1; i++) { switch(round(random(2))) { case 0: addPlate(); break; case 1: addRecyclable(); break; case 2: addLaundry(); break; } } } */ } void display(PImage im) { if(tile < 0) { fill(t_col); stroke(t_edge); strokeWeight(1); beginShape(); vertex(0, 0); vertex(tileRes / 2, -ratio * tileRes / 2); vertex(tileRes, 0); vertex(tileRes / 2, ratio * tileRes / 2); vertex(0, 0); endShape(); }else if(flatten){ pushMatrix(); float descale = tileRes / sqrt(pow(im.width, 2) + pow(im.height, 2)); translate(tileRes / 2, -tileRes * ratio / 2); float trat = ratio; if(trat == 0) trat = 0.01; scale(descale, trat * descale); rotate(PI / 4); image(im, 0, 0); popMatrix(); }else{ image(im, 0, -(tileRes * ratio / 2), tileRes, tileRes * ratio); //image(im, 0, 0, tileRes, tileRes * ratio); } pushMatrix(); for(int i = 0; i < mess.length; i++) { mess[i].display(); translate(0, -mess[i].HEIGHT); } popMatrix(); } Crap popCrap() { if(mess.length > 0) { Crap retCrap = mess[mess.length - 1]; Crap tMess[] = new Crap[mess.length - 1]; for(int i = 0; i < tMess.length; i++) { tMess[i] = mess[i]; } mess = tMess; return retCrap; } return null; } boolean pushCrap(Crap in) { if(mess.length < 5) { Crap tMess[] = new Crap[mess.length + 1]; for(int i = 0; i < mess.length; i++) { tMess[i] = mess[i]; } tMess[mess.length] = in; mess = tMess; return true; } return false; } }