Programming, Topic: P5js

All posts

Recent posts

Genuary 2026.03: Fibonacci forever

3) Fibonacci forever

Fibonacci

This is entirely based around this Fibonacci generator function:

function makeFibber(maxValue = 1000) {
  let a = 1;
  let b = 1;
  return () => {
    let n = a + b;
    a = b;
    b = n;
    if (b > maxValue) {
      a = 1;
      b = 1;
    }
    return a;
  };
}

Make a fibber and then just keep calling it for next values.

All sorts of exciting options here!

read more...


Genuary 2023.31: Break a previous image

Genuary!

Spend a month making one beautiful thing per day, given a bunch of prompts. A month late, but as they say, ’the second best time is now'.

Let’s do it!

31) Deliberately break one of your previous images, take one of your previous works and ruin it. Alternatively, remix one of your previous works.

read more...


Genuary 2023.30: Minimalism

Genuary!

Spend a month making one beautiful thing per day, given a bunch of prompts. A month late, but as they say, ’the second best time is now'.

Let’s do it!

30) Minimalism


let gui;
let params = {
  lineWidth: 10,
  minWidth: 50,
  maxWidth: 100, maxWidthMax: 400,
  minHeight: 50,
  maxHeight: 100, maxHeightMax: 400,
  colorChance: 0.1, colorChanceMin: 0, colorChanceMax: 1, colorChanceStep: 0.01,
}

let box;
let colors = [
  "red",
  "blue",
  "yellow",
]

function setup() {
  createCanvas(400, 400);
  
  box = {
    x: -params.lineWidth,
    y: -params.lineWidth,
    width: random(params.minWidth, params.maxWidth),
    height: random(params.minHeight, params.maxHeight),
  }

  gui = createGuiPanel('params');
  gui.addObject(params);
  gui.setPosition(420, 0);
}

function draw() {
  strokeWeight(params.lineWidth);
  stroke("black");
  
  if (random() < params.colorChance) {
    fill(random(colors));
  } else {
    fill("white");
  }
  
  rect(box.x, box.y, box.width, box.height);
  
  box.y += box.height;
  box.height = random(params.minHeight, params.maxHeight);
  
  if (box.y > height) {
    box.x += box.width;
    box.y = -params.lineWidth;
    box.width = random(params.minWidth, params.maxWidth);
    box.height = random(params.minHeight, params.maxHeight);
  }
  
  if (box.x > width) {
    noLoop();
  }
}

I did have a sketch before that that ended up getting a little un-minimal:

read more...