Skip to content

Electric streaks

An experiment of forming something similar to Electric trees using a 1-dimensional cellular automata.

A series of lines stretch down across the canvas, growing more organized with time

function setup() {
  createCanvas(400, 600);
  
  background(0)
  let k = Array(width).fill(0.3)
  randomSeed(100)
  
  for (let g = 0; g < height; g ++) {
    let nk = Array(width).fill(0)
    let t = map(g, 0, height, 0.08, 0.01)
    let tb = 0.1
    let f = x=>(random() + random()) ** 2 / 4 * x
    for (let i = 0; i < k.length; i ++) {
      set(i, g, sqrt(k[i]) * 255)
      let aw = 0, bw = 0, cw = 0
      if (i > 0) {
        aw = f(k[i - 1]) + t
      }
      bw = f(k[i]) + tb
      if (i < k.length - 1) {
        cw = f(k[i + 1]) + t
      }
      let w = aw+bw+cw
      if (i > 0) {
        nk[i - 1] += aw / w * k[i]
      }
      nk[i] += bw / w * k[i]
      if (i < k.length - 1) {
        nk[i + 1] += cw / w * k[i]
      }
    }
    k = nk
  }
  updatePixels()
}

(Originally seen at https://editor.p5js.org/bojidar-bg/sketches/Bmy_TxzcP)

Experiments tagged p5 (14/85)

Experiments on this site (14/85)