> show canvas only <


/* built with Studio Sketchpad: 
 *   https://sketchpad.cc
 * 
 * observe the evolution of this sketch: 
 *   https://studio.sketchpad.cc/sp/pad/view/ro.Qd2wFxBbbhz/rev.1280
 * 
 * authors: 
 *   Claudio Pinho
 *   Ari Bader-Natal
 *   Jonathan Brodsky
 *   Joel Drake
 *   
 *   Gregg Blanchard
 *   Steve Mickelson
 *   
 *   
 *   
 *   Ed Parker
 *   Mirco Becker
 *   
 *   Andrzej Koper
 *   

 * license (unless otherwise specified): 
 *   creative commons attribution-share alike 3.0 license.
 *   https://creativecommons.org/licenses/by-sa/3.0/ 
 */ 



int[] xpos = new int[50];
int[] sizer = new int[50];
int[] speeder = new int[50];
int[] ypos = new int[50];
int[] drifter = new int[50];
var dropStart = random(500);
var flakeSize = random(1,7);
var reffer = 0;
var counter = 0;
var backgroundimage;
var flakecount = 500;

void setup() {
 size(552, 360);
 stroke(200, 200, 200);
 frameRate(30);
 backgroundimage = loadImage("http://www.greggblanchard.com/images/nightmtn.jpg"); 
}

void draw() {
  image(backgroundimage,0,0);
  reffer++;

    if (reffer % 3 == 0 && counter < flakecount) {
        counter++;
        xpos[counter] = random(552);
        sizer[counter] = random(2,6);
        ypos[counter] = -8;
        speeder[counter] = random(1,2);
        drifter[counter] = 0;
        }
    
    for (int i = 0; i < counter; i++) {
        ypos[i] += speeder[i];
        if (ypos[i] > 368) {
            ypos[i] = 0;
            }
        if (ypos[i] % 10 > 0 && ypos[i] % 10 < .2) {
            drifter[i] = random(-.3,.3);        
            }
        xpos[i] += drifter[i];    
        ellipse(xpos[i],ypos[i],sizer[i],sizer[i]);
        }
        
    if (reffer > 368) {
        reffer = 0;
        dropStart = random(552);
        flakeSize = random(4,8);
        }
    }