📖 A Brief History
The story begins with Ludimar Hermann in 1870, who noticed ghost-like
gray spots at the intersections of white corridors in a black grid — a phenomenon
now known as the Hermann grid illusion. The spots arise from lateral inhibition
in retinal ganglion cells: a cell at an intersection receives more inhibition from its
neighbours than one sitting along a corridor, so it reports a dimmer signal and the brain
perceives a faint dark smudge.
In the early 1990s, German vision scientist Elke Lingelbach extended
this line of inquiry by introducing color into grid-based stimuli.
Her 1994 work explored how structured, high-density lattice patterns with distinct
colored nodes at each crossing center produce compelling peripheral fading effects.
Rather than relying on the muted ghost spots of the original Hermann grid, Lingelbach’s
colored nodes are vivid and clearly perceived at first glance — making their
eventual disappearance all the more striking.
Lingelbach’s work later contributed to the celebrated
scintillating grid illusion (Schrauf, Lingelbach & Wist, 1997),
in which white disks placed at the intersections of a Hermann-style grid appear to
spontaneously flicker or wink on and off as the eye moves across the pattern.
🔆 How the Illusion Works Here
- Sealed lattice — the green arms are sized so that every
arm tip meets the opposing tip of the adjacent plus sign exactly
(spacing = 2 × arm length).
This creates a continuous perceptual texture with no gaps, which the visual
system treats as one unified field rather than individual objects.
- Yellow hubs — a small yellow disk at every cross center
marks each lattice node. These are the elements that fade: vivid in the
fovea, increasingly invisible in the periphery after a few seconds of steady fixation.
- High color contrast — navy background, green arms, and yellow
hubs give the strongest possible initial signal to the peripheral retina,
making the eventual fading especially dramatic.
- SQUARE arm caps — flat stroke ends ensure the touching
points are clean geometric joints with no overlap or gap, reinforcing the
unified-lattice percept that accelerates peripheral adaptation.
🔧 What Was Built in Stage 4
buildLingelbachGrid() computes grid dimensions dynamically from
ARM_LENGTH and HALF_SPAN, guaranteeing canvas
coverage with at least one cell of overflow on every edge — no manual
column/row count needed.
- The touching constraint (
spacing = ARM_LENGTH × 2) is
enforced internally. Changing the arm length slider automatically rebuilds
the grid with proper spacing.
- Yellow hubs are drawn as raw
ellipse() calls in screen coordinates
after all plus sign arms, ensuring they always appear on top of arm ends
regardless of stroke thickness.
- The white fixation dot is drawn last, always on top of everything.
- No null centre placeholder — unlike the Troxler stages, a plus sign
(with its yellow hub) exists at user
(0, 0);
the fixation dot is simply drawn over it.
🎮 Controls
- Arm length — larger arms spread the grid; spacing updates automatically
to maintain the touching constraint.
- Arm weight — thicker arms also widen the hub diameter to match,
keeping the node visually proportional. Override with the Hub Size slider.
- Arm opacity — lower = lattice fades toward background = slower
hub fading; higher = vivid lattice = faster peripheral suppression.
- Arm caps: Flat vs. Round vs. Projected — flat is cleanest for
touching arms; round or projected caps cause visible overlaps that change
the lattice texture interestingly.
- Yellow hub size — larger hubs are easier to see initially but
may be harder to suppress.
- Fixation dot (white) — increase for a clearer central target.
- G — toggle the coordinate grid (keep off for best effect).
🧠 The Science
The yellow hubs fade because of neural adaptation: when a peripheral
stimulus is completely stationary on the retina, the ganglion cells and cortical
neurons responding to it gradually reduce their firing rate. The brain interprets
sustained silence as “nothing new here” and suppresses the percept.
The dense surrounding lattice accelerates this by claiming the majority of
peripheral attention, leaving the hubs as contextually “unimportant”
repetitive signals. Any eye movement shifts the retinal image, resets adaptation,
and instantly restores the hubs to full visibility — making the illusion
a striking live demonstration of how actively your visual cortex edits perception.