Skip to content

Pipeline geometry: axes + geometry lab (patterns, angle, pan)#11

Merged
silviot merged 3 commits into
mainfrom
feat/pipeline-geometry
May 29, 2026
Merged

Pipeline geometry: axes + geometry lab (patterns, angle, pan)#11
silviot merged 3 commits into
mainfrom
feat/pipeline-geometry

Conversation

@silviot

@silviot silviot commented May 29, 2026

Copy link
Copy Markdown
Collaborator

Builds on the 4-panel pipeline view to make the Droste → Escher geometry legible and explorable.

X/Y axes (log + rotated-log)

  • log: u = log|z−c| (X, period logS) and v = arg(z−c) (Y, 2π).
  • rotated log: u′/v′ axes + the original log u-axis drawn dashed at its tilt β. SVG overlay with a dark halo for contrast.

Geometry lab (pipeline view control strip)

  1. Test patterns — generated polar grid (concentric circles + radial spokes) and cartesian grid, loadable from the start screen and the lab strip. A centred square nest puts the limit point at the image centre, so the polar pattern maps to a clean cartesian grid in the log panel (rings → vertical lines, spokes → horizontal lines) and to the spiral grid in the tententoon — the clearest view of the transform.
  2. Rotation/twist angle (γ) — slider re-tilts the rotated-log and sets the tententoon twist k = tan γ; the β button snaps back to canonical. Shows why only β closes the spiral up with the Droste scale.
  3. Pan — drag the rotated-log panel; the log-space pan δ = R(−γ)·drag zooms (u) and rotates (v) the tententoon.

Implementation

  • New GL uniforms u_rot, u_kTwist, u_pan (default canonical, so non-lab rendering is unchanged). The CPU pure functions take matching PanelOpts, so GPU/CPU agree and the lab math is unit-tested.
  • Lab pan/angle reset on image load.

Tests 22/22, svelte-check clean. Preview: https://geometry-lab.tententoon.pages.dev

🤖 Generated with Claude Code

silviot and others added 3 commits May 29, 2026 06:22
- log: u = log|z−c| (X, period logS marker) and v = arg(z−c) (Y, 2π).
- rotated log: u′/v′ axes plus the original log u-axis drawn dashed at
  its tilt β (visualises what the rotation does).
SVG overlay with a dark drop-shadow halo so the amber axes read over any
image region. Escher panel has none (it's the spiral, not a cartesian map).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Three experiments for understanding the Droste → Escher geometry, behind a
"geometry lab" control strip in the pipeline view:

- Test patterns (test-patterns.ts): generated polar grid (concentric circles
  + radial spokes) and cartesian grid, loadable from the DropZone and the lab
  strip. A centred square nest puts the limit point at the image centre, so
  the polar pattern maps to a clean cartesian grid in the log panel (rings →
  vertical lines, spokes → horizontal lines) and to the spiral grid in the
  tententoon — the clearest view of what the transform does.

- Rotation/twist angle override (idea 3): a γ slider re-tilts the rotated-log
  and sets the tententoon twist k = tan γ. Only the canonical β closes the
  spiral up with the Droste scale; other angles over/under-twist visibly.

- Pan (idea 2): drag the rotated-log panel; the log-space pan δ = R(−γ)·drag
  zooms (u) and rotates (v) the tententoon. Shows the tententoon is exp() of
  the strip.

Wired via new GL uniforms (u_rot, u_kTwist, u_pan), defaulting to canonical so
non-lab rendering is unchanged. Experimental — for evaluation, not yet linked
from the main UI beyond the pipeline view.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- The CPU pure functions now take the same pan/rot/kTwist options as the GL
  shader (default canonical), so the geometry-lab controls behave identically
  on the WebGL2 fallback path — and the math is unit-tested.
- Reset the lab pan/angle when a new image loads, so the pipeline view never
  opens with a stale transform.
- Tests: k=0 removes the twist; a v-pan shifts the log panel while staying
  fully opaque (no black).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@silviot silviot merged commit 3b14937 into main May 29, 2026
1 check passed
@silviot silviot deleted the feat/pipeline-geometry branch May 29, 2026 04:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant