Aaron R. Carmichaelaaronrcarmichael.com

arc / things / strange-attractor

Strange attractor

22,000 points carried by the flow. Drag to orbit. Static frame under reduced motion.

  1. Numbers found by watching

    A Lorenz-84 variant, integrated into a point cloud, with the parameters re-rolled on every frame so the shape never quite settles. The constants carry a comment in the source: prettiest initial conditions. They were not derived. They were found by running it and looking.

    x' = −a·x + y² − z² + a·f y' = −y + x·y − b·x·z + g z' = −z + b·x·y + x·z a = 1.062477352437103 b = 8.038291607940321 f = 14.507204661264549 g = 1.8347793740599485
    evidence
    commits lorentz, add quant · source preserved at /animation.js
  2. The seed on the diagonal

    Five commits in one day — thomas three times, then gpt, then uygyug — replaced it with the Thomas cyclically symmetric attractor. It never went chaotic, and the reason is in one line of the source.

    x' = −ω·x + a·sin(y) y' = −ω·y + a·sin(z) z' = −ω·z + a·sin(x) 2023: a = 1, ω = 1, seed (0.1, 0.1, 0.1) 2026: a = 1, ω = 0.19, seed (0.1, 0.0, −0.1)

    The seed (0.1, 0.1, 0.1) sits on the line x = y = z. That line is invariant under this system: a point starting on it can never leave it, and along it there is nowhere to go but into a fixed point. The equations were right and the starting point made the result impossible.

    evidence
    commits thomas ×3, gpt, uygyug · 2023-09-09
  3. life

    The entire commit message. The Lorenz variant is back in the file; the Thomas experiment is gone. Two weeks later the last commit of the era added the school essay, and the site went quiet for two years.

    evidence
    commit life · 2023-11-25
  4. Moved one number off the diagonal

    Both systems rebuilt on a bare canvas: no three.js, no CDN, works offline. The 2023 versions needed r122 and APIs that were removed in r125, so they no longer run at all. Thomas keeps Aaron’s a and timestep, moves the seed off the diagonal, and runs ω inside the chaotic band. It is the default above.

    The original file also carried //todo: show the parameters live? — the readout in the corner is that todo, answered late.