Grimm's Law (1822) describes how the Proto-Indo-European (PIE) obstruent system became the Proto-Germanic one. Nine stops fall into three manner/voicing series, each sharing three places of articulation (labial, dental, velar):
S1: p t k (voiceless stops) → f θ x (voiceless fricatives)
S2: b d g (voiced stops) → p t k (voiceless stops)
S3: bʰ dʰ gʰ (voiced aspirated) → b d g (plain voiced stops)
Each phoneme is a point in a 3D articulatory space: place (labial↔dental↔velar), manner (stop↔fricative "aperture"), and voicing/aspiration (voiceless↔voiced↔aspirated). Rather than fake a 3D render, this 2D version plots the same feature space as two synchronized panels — top: place × manner (where only S₁ moves), bottom: place × voicing/aspiration (where only S₂ and S₃ move) — so every visible motion is a real projection of the underlying coordinates, not a flattened camera view.
The classic push-chain account says the shift is sequential, not simultaneous: S1 fricativises first, and only once it has moved far enough away does its old "stop" slot count as vacated — only then can S2 safely move into it without merging with S1's un-shifted remnants, and likewise S3 waits on S2. That coupling is a real ODE integrated every frame:
dp1/dt = k1 (S1 leads, constant rate)
dp2/dt = g · max(0, p1 − p2 − m) (S2 follows, gated by margin m)
dp3/dt = g · max(0, p2 − p3 − m) (S3 follows S2 the same way)
xi(t) = lerp(origin_i, target_i, clamp(pi, 0, 1))
Raise the push margin and followers wait longer before moving (more separation, slower overall shift); raise the follower gain and, once released, they sprint to close the gap. The Drag chain toggle removes the coupling entirely — all three series move at the same independent rate k1 — which is the rival "drag chain" hypothesis where a change is pulled by phonological symmetry pressure rather than pushed by an encroaching neighbour. Compare the "Min. gap" readouts: the push model keeps a persistent margin-sized separation between series (verified numerically: push settles near gap≈m while drag lets all three reach 1.0 simultaneously) — fewer near-merger moments than the drag model.
This is a simplified but structurally real model of chain shifts in historical phonology — the same push/drag mechanics are invoked for the English Great Vowel Shift and the High German Consonant Shift.
Panel controls: drag inside either panel to pan it, scroll/pinch to zoom — each panel keeps its own independent view, like rotating a camera around the two halves of the same feature space.