/** * Gaussian * By Raphael Rouvinov-Kats * * Sort of draws gaussian distribution values * https://en.wikipedia.org/wiki/Multivariate_normal_distribution * * But it's equal at all angles, so it's just a normal distribution * https://en.wikipedia.org/wiki/Normal_distribution * */ frameRate(0); var normalPDF = function(x, mu, sigma) { return 1/sqrt(2*PI*sigma*sigma) * pow(Math.E, -(x-mu)*(x-mu)/(2*sigma*sigma)); }; var addGaussianAtPosition = function(posX, posY) { if (!this.loadPixels) { return; } this.loadPixels(); var pix=this.imageData.data; var RED = 0, GREEN = 1, BLUE = 2; var colToSubtract; var r = random(0, 1); if (r < 1/3) { colToSubtract = RED; } else if (r < 2/3) { colToSubtract = GREEN; } else { colToSubtract = BLUE; } var l = 401 * 401; while(l--) { var x = l % 401; var y = (l-x)/401; var dx = posX - x; var dy = posY - y; var d = sqrt(dx*dx + dy*dy); var val = normalPDF(d, 0, 100) * (1 << 16); var ind = (x + y * 400) << 2; pix[ind + colToSubtract] -= val; } this.updatePixels(); }; var mousePressed = function() { addGaussianAtPosition(mouseX, mouseY); };