boolean init; PImage[] img; int imgNr; float hairDirNoiseScale=0.005; int bushNr; boolean drawing; void setup() { size(800,800,P3D); //smooth(); 1658,1658 background(0,0,0); init=true; bushNr=0; imgNr=0; drawing = true; img = new PImage[5]; img[0] = loadImage("vangogh.jpg"); img[1] = loadImage("vermeer.jpg"); img[2] = loadImage("monalisa.jpg"); img[3] = loadImage("warhol.jpg"); img[4] = loadImage("giger.jpg"); initBush(); } void draw() { if (drawing) { for (int j=0;j<250;j++) { if (bushNr=nr_bush) { bushNr=0; drawing = false; } } //saveFrame("c:/cd_cover_0.005_####.tga"); } void mousePressed() { drawing = true; bushNr=0; imgNr++; if (imgNr==img.length) imgNr=0; initBush(); //println(imgNr); } /* void keyPressed() { if (key=='r') setup(); } */ //////////////////////////////////////////////////////////////////////// ////////////////////////////// Bush class ////////////////////////////// int nr_col=400, nr_row=400, nr_bush; // number of rows/columns float colWid, rowHei; // column width/row height float baseLen=12, randLen=12; // basic bush length plus random length int nrHairPerBush=8; float randDir=radians(45); Bush[] bush; void initBush() { nr_bush=nr_col*nr_row; colWid=width/(float)nr_col; rowHei=height/(float)nr_row; bush=new Bush[nr_bush]; for (int x=0;x=nr_col) { x2=nr_col-1; } int y1=row-1; if (y1<0) { y1=0; } int y2=row+1; if (y2>=nr_row) { y2=nr_row-1; } for (int x=x1;x<=x2;x++) { for (int y=y1;y<=y2;y++) { if (!(x==0&&y==0)) { int i=y*nr_col+x; rot+=0.01*(getTurnDirection(dir,bush[i].dir)); } } } } void setNewRotation() { rot*=0.95; dir+=rot; while (dir>PI) { dir-=TWO_PI; } while (dir<-PI) { dir+=TWO_PI; } } void drawMe() { dirLine(x,y,len,dir,c); for (int i=0;ideg2)?deg2-(deg1-TWO_PI):deg2-deg1; if (rdeg>16&255)*p1 + (c2>>16&255)*p2); int g=int((c1>>8&255)*p1 + (c2>>8&255)*p2); int b=int((c1&255)*p1 + (c2&255)*p2); set(x,y,(r<<16|g<<8|b)); } float bright(int c) { int r=c>>16&255, g=c>>8&255, b=c&255; return (r+g+b)/3.0; }