int pressMode = 0; int maxTrailLength = 5000; int[][] trail = new int[maxTrailLength][3]; int trailCounter = 0; int justOnce = 0; int fadeRate = 100; int wobble = 2; void setup () { size(800,600); framerate(100); colorMode(HSB, 1.0); background(0); stroke(1); } void draw () { if( pressMode == 1 ) { if( justOnce == 0 ) { stroke(1, 1); background(0.85, 0.05, 0); trailCounter = 0; for( int i = 0; i < maxTrailLength; i++ ) { trail[i][0] = 0; trail[i][1] = 0; trail[i][2] = 0; } } trail[trailCounter][0] = mouseX; trail[trailCounter][1] = mouseY; trail[trailCounter][2] = fadeRate; } background(0.9, 1, 0.15); for( int i = 3; i < trailCounter; i++ ) { stroke(float(trail[i][2])/fadeRate, 1, 1, float(trail[i][2])/fadeRate); strokeWeight(abs(fadeRate/float(trail[i][2]))); bezier(trail[i-3][0], trail[i-3][1], trail[i-2][0], trail[i-2][1], trail[i-1][0], trail[i-1][1], trail[i][0], trail[i][1]); } for( int i = 0; i < trailCounter; i++ ) { trail[i][0] = trail[i][0] + int(random(-wobble, wobble)) + int((trail[i][0]-width/2)*0.0125); trail[i][1] = trail[i][1] + int(random(-wobble, wobble)) + int((trail[i][1]-height/2)*0.0125); trail[i][2]--; } trailCounter++; if( pressMode == 0 ) { justOnce = 0; } else { justOnce = 1; } } void mousePressed() { pressMode = 1; } void mouseReleased() { pressMode = 0; }