var gB, fullRes, windowRes;
var requiredFrames = 360;
windowRes = min(windowWidth, windowHeight);
createCanvas(windowRes, windowRes);
gB = createGraphics(fullRes = 2048, fullRes);
gB.drawingContext.shadowOffsetX = 32;
gB.drawingContext.shadowOffsetY = 32;
gB.drawingContext.shadowBlur = 32;
gB.drawingContext.shadowColor = 'black';
function randPow(multiplier, min, max, power) {
for (var i = 0; i < power; i += 1) {
multiplier *= random(min, max);
gB.translate(fullRes * 0.5, fullRes * 0.5);
for (var i = 0; i < squares; i += 1) {
for (var j = 0; j < squares; j += 1) {
var xPos = map(i, 0, squares - 1, fullRes * -0.4, fullRes * 0.4);
var yPos = map(j, 0, squares - 1, fullRes * -0.4, fullRes * 0.4);
gB.translate(xPos, yPos);
gB.translate(fullRes / squares / 4, fullRes / squares / 4);
gB.rotate(map(i * j, 0, (squares - 1) * (squares - 1), 0, TAU));
gB.translate(fullRes / squares / -4, fullRes / squares / -4);
gB.rect(0, 0, fullRes / squares / 2, fullRes / squares / 2);
saveGif('export', requiredFrames, {
function displayBuffer(buffer) {
image(buffer, windowRes / 2, windowRes / 2, windowRes, windowRes);
function windowResized() {
windowRes = min(windowWidth, windowHeight);
resizeCanvas(windowRes, windowRes);