/** a virtual chalkboard by guru */ int count = 100; PVector[] opos = new PVector[count]; PVector[] pos = new PVector[count]; float [] ease = new float[count]; void setup() { size(600,600); smooth(); for ( int i=0; i < count; i++) { pos[i] = new PVector( width/2, height/2); opos[i] = new PVector( width/2, height/2); ease[i] = map( i, 0, count, 0.1, 0.2); } background(0); } void draw() { //noStroke(); stroke( 255,4); //noFill(); fill( 255,4); PVector mpos = new PVector( mouseX, mouseY ); float f = 0.2 * sqrt( sq(mouseX - pmouseX) + sq( mouseY - pmouseY )); beginShape(QUAD_STRIP); for ( int i=0; i < count; i++) { PVector diff = new PVector(mpos.x, mpos.y); diff.sub(pos[i]); diff.mult(ease[i]); diff.add( new PVector( random(-f,f), random(-f, f))); pos[i].add( diff ); if (mousePressed) { //line( opos[i].x, opos[i].y, pos[i].x, pos[i].y ); vertex( pos[i].x, pos[i].y); vertex( opos[i].x, opos[i].y); } opos[i].set(pos[i]); } endShape(CLOSE); } void keyPressed() { background(0); }