xxxxxxxxxx
// let's talk about variables
var density = 5;
var lambda = 3; // how many dice am i rolling and averaging
var spraywidthmax = 100;
var spraywidthmin = 10;
var spraysizemin = 3;
var spraysizemax = 30;
var gmin = 0;
var gmax = 255;
var rmin = 255;
var rmax = 0;
var shape = 0;
var drawblue = false;
var large = false;
// this function runs when you hit play, only once
function setup() {
createCanvas(windowWidth, windowHeight); // how big do i make the sketch?
background(255);
stroke(0);
textSize(50);
}
// this function runs everytime the browser refreshes
// aka every frame
function draw() {
// HOW MUCH IS THE MOUSE MOVING:
var d = dist(mouseX, mouseY, pmouseX, pmouseY); // built-in p5 way
d = constrain(d, 0, 100); // keep d in the range of 0-100
var a = atan2(mouseY-pmouseY, mouseX-pmouseX); // pythagoras
a = degrees(a); // convert radians to degrees
var spraysize = map(d, 0, 100, spraysizemin, spraysizemax);
var spraywidth = map(d, 0, 100, spraywidthmin, spraywidthmax);
if(large) spraysize*=2; // *= is like += for multiplication
if(large) spraywidth*=2;
var r = map(a, 0, 360, rmin, rmax);
var g = map(a, 0, 360, gmin, gmax);
if(drawblue) fill(r, g, 255, 50); else fill(r, g, 0, 50);
for(let i = 0;i<density;i++) {
// skew middle
var sumx = 0;
var sumy = 0;
for(let j = 0;j<lambda;j++) {
sumx = sumx + random(-spraywidth, spraywidth);
sumy = sumy + random(-spraywidth, spraywidth);
}
sumx = sumx/lambda;
sumy = sumy/lambda;
if(shape==0) ellipse(mouseX+sumx, mouseY+sumy, spraysize, spraysize); // x, y, width, height
if(shape==1) rect(mouseX+sumx, mouseY+sumy, spraysize, spraysize); // x, y, width, height
}
}
// COMPLETE KEY: (callback functions)
function keyTyped()
{
if(key==' ') background(255);
if(key=='b') drawblue = !drawblue; // boolean toggle function
if(key=='s') shape = 1-shape; // numerical toggle function
if(key=='l') large = !large;
if(key=='t') text("hi there", mouseX, mouseY);
console.log("keyTyped: " + key);
}