fractalkitty looking for math? fractalkitty.com

Mathober 2025

Minor

#random#grid#animation#math#geometry#spiral#symmetry#mathober

drawGrid


let t = 0;
let n = 25;
function setup() {
  domain = [-2 * PI, 2 * PI];
  createCanvas(500, 500);
  background(255);
  describe(
    "A circle with fat, then then arcs starting from a horizontal diameter line going around by PI and then symmetrically reflected so that the circle looks like it is make of a contrasted spiral. The arcs pull in so that the wave-shapes shrink at the center and move in from the edges. Drawn on radial graph paper. "
  );
  rectMode(CENTER);
  strokeWeight(0.5);
  strokeCap(SQUARE);
  rs = [];
  t = 0;
}

function draw() {
  background(245, 250, 255, 20);
  translate(width / 2, height / 2);
  stroke(100, 110, 120, 10);
  drawGrid();
  t += 1;
  noFill();
  r = (width / 25) * 16;
  stroke(30, 40, 50, 50);

  for (let i = 10; i < 2000; i += 5) {
    arc(
      0,
      0,
      (i * width) / 2100,
      (i * width) / 2100,
      0,
      (((i + t) % 180) * PI) / 180
    );
    arc(
      0,
      0,
      (i * width) / 2100,
      (i * width) / 2100,
      PI,
      PI + (((i + t) % 180) * PI) / 180
    );
  }

  strokeWeight(1);
  noFill();
  stroke(100, 110, 120, 30);
  rect(0, 0, width / 1.02, width / 1.02);
  rect(0, 0, width / 1.04, width / 1.04);
}

function drawGrid() {
  for (let i = 0; i < n; i++) {
    rotate((2 * PI) / n);
    line(-width / 1.5, 0, width / 1.5, 0);
    circle(0, 0, (width / n) * 2 * i);
  }
  noStroke();
  for (let i = 0; i < 500; i++) {
    x = random(-width / 2, width / 2);
    y = random(-width / 2, width / 2);
    fill(245, 250, 255, 150);
    circle(x, y, 2);
  }
}