Skip to content

feat: combine the Julia and Mandelbrot screensavers into one paired view #209

Description

@BernardJen

Owner request: combine the Julia Set and Mandelbrot screensavers into one.

The idea came out of reviewing the (rejected) Julia rewrite on #122, which drew a
small Mandelbrot inset with a marker showing where the current c parameter sat.
That inset was the best thing in it: it made the boundary tour legible instead of
mysterious, because you could see why the Julia shape looked the way it did.

Combining the two turns that inset into the point of the saver rather than a corner
decoration — and the 5:1 wall is unusually well suited to showing two related images
side by side.

Why the two belong together

Every Julia set is defined by a single complex parameter c, and the Mandelbrot set
is precisely the map of which c values give a connected Julia set. They are two
views of the same object. Shown together, the relationship is self-evident:

Composition options for 6000×1200

A — Split panes. Mandelbrot left, Julia right, with the c marker on the
Mandelbrot side. Simple, legible, and each pane is still 3000×1200, which is a
comfortable aspect. Recommended starting point.

B — Julia full-frame, Mandelbrot as a map inset. Closer to what the rejected
branch did. The Julia set gets the whole wall; the map sits in a corner as
orientation. Better if the Julia set is the subject and the map is a caption.

C — Continuous morph across the frame. c varies with horizontal position, so
the frame shows a family of Julia sets shading into one another. Visually striking
and unusual, but it stops being a tour and loses the map entirely.

A is recommended; B is a reasonable alternative. Pick one and record it here before
implementation.

Interaction with #121, which is in flight

This needs deciding before anyone writes code, because there is real tension:

#121's Mandelbrot rewrite has been reviewed and kept, and its whole premise is an
infinite dive by perturbation theory — a double-double reference orbit on the CPU
so the zoom can go past float precision. A dive is the opposite of a stable map you
can point at.

Two ways to reconcile them, and they are genuinely different products:

  1. Dive with a following Julia. The Mandelbrot pane keeps diving, and c is
    taken from the dive centre, so the Julia pane morphs as the zoom descends. This
    preserves everything quality: Mandelbrot screensaver — make it an actual infinite dive (perturbation theory) #121 built and makes the pairing dynamic. More interesting,
    and more work.
  2. Zoomed-out map, no dive. The Mandelbrot pane stays wide enough to be a usable
    map and c walks the boundary. Simpler, but it discards the perturbation work
    quality: Mandelbrot screensaver — make it an actual infinite dive (perturbation theory) #121 exists for — in which case quality: Mandelbrot screensaver — make it an actual infinite dive (perturbation theory) #121 should be closed as superseded rather than
    quietly abandoned.

Option 1 is recommended: it keeps the deep-dive work and produces a better saver
than either half alone.

What happens to the two existing savers

Combining reduces the rotation from 30 entries to 29. Decide explicitly:

The second is probably better — a deep dive and a paired map are both worth showing,
and they are different enough not to feel like a repeat.

Acceptance criteria

  • Composition (A/B/C) chosen and recorded here before implementation
  • The quality: Mandelbrot screensaver — make it an actual infinite dive (perturbation theory) #121 interaction resolved and recorded: dive-with-following-Julia, or static map
  • Decided and recorded whether Mandelbrot survives as a standalone entry
  • The c marker is clearly visible and unmistakably tied to the Julia view
  • Connected-to-dust transition visible during a normal ten-minute slot
  • Both panes readable at 6000×1200; neither reduced to a thumbnail
  • Readable at 12% washout — the rejected Julia branch was too dark, so this needs
    watching
  • registry.js updated, and the entry count in any documentation updated with it
  • Frame cost at 6000×1200 recorded — two fractal panes is roughly twice the
    fragment work of one
  • Structure baseline added for the new entry, that saver's line only

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions