Sketcher[] sk; int nrOfSk=50000, actualSk; int drawColor=0; int drawPhase; float[] character; //boolean paused; int timeOnMouseDown=0; // variables used for calculating average center float br, avx, avy, div, tot_avx, tot_avy; int tot_x=0,tot_y=0; void setup() { size(600,400,P3D); background(0); //framerate(50); character=new float[10]; character[0]=random(0.02,0.5); // how intense character[1]=random(0.0001,0.001); // how often new Sketcher character[2]=character[1]+random(0.005,0.01); // how often morph Sketcher from any existing one character[3]=random(0.005,0.5); // how often morph of color each frame character[4]=random(0.1*PI,PI); // general roundness of sketchers sk=new Sketcher[nrOfSk]; initSketchers(); drawPhase=1; //paused=false; } void initSketchers() { for (int i=0;i>16&255)+p2*(c2>>16&255)); int g=int(p1*(c1>>8&255)+p2*(c2>>8&255)); int b=int(p1*(c1&255)+p2*(c2&255)); set(x,y,(r<<16|g<<8|b)); } int varColor(int c) { int q=2; int rr=constrain((c>>16&255)+(int)random(-q,q),0,255); int gg=constrain((c>>8&255)+(int)random(-q,q),0,255); int bb=constrain((c&255)+(int)random(-q,q),0,255); return (rr<<16|gg<<8|bb); } float bright(int c) { // gets brightness from int color. Result: 0..1 float b=0; b+=(c>>16&255)/255.0; b+=(c>>8&255)/255.0; b+=(c&255)/255.0; b/=3.0; return b; } int getRandomColorFromScreen() { return get((int)random(width),(int)random(height)); } int getUnderMouseColor() { int o; color c=get(mouseX,mouseY); //o=int(red(c))<<16|int(green(c))<<8|int(blue(c)); return c; } int mixColor(int c1, int c2, float p1) { float p2=1.0-p1; int rr=int(constrain((p1*(c1>>16&255)+p2*(c2>>16&255)),0,255)); int gg=int(constrain((p1*(c1>>8&255)+p2*(c2>>8&255)),0,255)); int bb=int(constrain((p1*(c1&255)+p2*(c2&255)),0,255)); return (rr<<16|gg<<8|bb); }