Can a swinging pendulum reveal that the Earth turns — without ever looking at the sky? And does its swing plane really turn at the sine-of-latitude rate Foucault announced in 1851, rather than the 'one turn per day' or 'no turn at all' his contemporaries expected?
Units: hours (full swing-plane rotation at the Paris Panthéon, φ = 48°50'47" N; Foucault 1851 reported ~11.3°/h ≈ 31.8 h)
▶ Run this simulationRead how it works
A pendulum proves the planet turns: the swing plane precesses at exactly Ω·sinφ — recovered from full-3-D-Ω dynamics where the sine law is never plugged in, giving the Panthéon's 31.80-hour rosette against Foucault's 31.79 h
Integrate a FULL 3-D spherical pendulum (exact |r|=L Lagrange-multiplier constraint, RK4, dt=2e-3) in the rotating frame, carrying the COMPLETE rotation vector Ω = Ω(0, cosφ, sinφ) in local east/north/up coordinates — the vertical projection Ω·sinφ is never isolated in the dynamics, so at low latitude the Coriolis force is dominated by the HORIZONTAL component of Ω and the sine law must emerge from the dynamics. The recovery mirrors the live module: sample the swing-line azimuth at every outer turning point (rₕ·vₕ crossing + → −), unwrap mod π, least-squares-fit azimuth vs time; the slope is the measured precession rate, sinφ̂ = −rate/Ω. Canonical run at the Paris Panthéon latitude (48.84636°) across 24 seeds (random release azimuth, ±10% amplitude jitter); scored as the real-world full-turn period T̂ = T_sidereal/sinφ̂ against the known 31.79 h, loaded only to score. Latitude scan pole→Sydney, pendulum-independence (4×L, 2×amplitude), equator cross-check, two historical rival hypotheses, an Ω=0 null, and the live module's 2-D reduction as consistency. ?world=foucault (?lat=<deg>).
swing-plane precession rate = −Ω·sinφ (vertical component of the planet's rotation vector only); T_Panthéon = T_sidereal/sinφ
0.0012
11.321
| Latitude deg | Rate over omega | Sin phi | Name |
|---|---|---|---|
| 90 | -0.999662 | -1 | pole |
| 66.5637 | -0.917193 | -0.9175028 | arctic circle |
| 48.84636 | -0.752693 | -0.7529476 | Paris Panthéon |
| 30 | -0.499831 | -0.5 | half rate at 30° |
| 10 | -0.17359 | -0.1736482 | near-equatorial |
| -33.8688 | 0.557105 | 0.557293 | Sydney — sign reversed |
24
Foucault's sine law (L. Foucault, C. R. Acad. Sci. 32, 135 (1851); derivation M. Binet, ibid. 32, 197 (1851)): in a frame rotating at Ω, a pendulum's swing plane precesses at the vertical component Ω_z = Ω·sinφ — a full turn per sidereal day at the pole, nothing at the equator, reversed in the south, INDEPENDENT of the pendulum itself. It VALIDATES, not derives: the lab assumes Newtonian mechanics in a rotating frame (the Coriolis force −2Ω×v with the FULL rotation vector) and shows the emergent, fitted plane-rotation rate equals Ω·sinφ — the projection is never isolated in the dynamics, and at the equator the largest horizontal Coriolis coupling produces exactly zero precession, which is the nontrivial half of the law. Scored in real units as the Panthéon's 31.79-hour rosette period. It does NOT model Foucault's real systematics (launch asymmetry, aerodynamic drag, ellipse growth) beyond the finite-amplitude Airy bias, which appears at its textbook magnitude (3/8)(a/L)² and is reported, not hidden. The lab's first rotating-frame world: the dynamical proof that the Earth rotates, needing no sky.
HONEST-MODULE CERTIFICATE (derisk gates I–M, ONE deliberate module edit): the derisk EXECUTES the shipped src/modules/FoucaultModule.ts — sha256-pinned and mechanically stripped of TypeScript (34 exact strip pairs + 3 bulk prefixes, every count asserted), run via new Function against recorder Babylon/DOM stubs. This is a fully LIVE world: the measurement ACCRUES during the run (turning-point azimuth samples feeding a running least-squares fit), so the certificate proves the whole trajectory, not an init snapshot. (1) 1200 real fixedUpdate/render engine calls at fl(1/120) — exactly 2 RK4 substeps of the module's fl(1/240) clock per call, the accumulator returning to EXACTLY 0 — are bit-exact vs a statics-built replica at EVERY call: the full RK4 state, the fit accumulators (n/ΣT/ΣA/ΣTT/ΣTA and the fitted rate), the 6000-slot trail ring and the 16-float thin-instance matrix buffer, bob/rod positions, and the camera drift. (2) The %6 HUD textContent AND the %6 chart SVG are LIVE — the chart redraws with the growing azimuth series (first world in the cert streak whose chart is live rather than a dead branch) — and both are bit-equal to the replica templates at every one of the 201/200 pinned writes; the chart is EMPTY at init and earns its curve during the run. (3) The shown rate '-0.0987' is cert-pinned yet EARNED: the fitted rate (-0.09872513974784834) differs from the coded −Ω·sinφ bit-for-bit (Δ 5.59e-6 — it is a least-squares slope through 7 discretely-sampled turning points, not a paste), and fresh executed instances MOVE it through the real constructor + dynamics + fit: φ=30° → rate/−Ω = 0.49981 ≈ ½, Sydney −33.87° → the rate flips sign. (4) The display is PRICED in named stages with NO free constants: shown − (−Ωz) = finite-window 5.56e-6 ≤ 3·SE_slope (SE 1.82e-5 from the fit's OWN residuals) + algorithm floor 2.82e-7 rel ≤ the derived T^(−3/2)-scaled ceiling 4.71e-6 (24× window; the module's LINEAR 2-D EOM precesses at exactly −Ω_z, so the floor prices RK4 + turning-point sampling only). (5) TWO law-fed display elements, disclosed and priced: the HUD's 'Ω·sin φ' comparison line and the chart's dashed guide slope are CODED (rateTheory = −Ω·sinφ — a theory ruler drawn next to the measurement, never the measurement); the ruler is priced against the ORACLE's emergent full-3-D-Ω rate at the module's own φ=45°: rel Δ 3.37e-4 ≤ 1e-3 (the oracle's own Airy + O((Ω/ω₀)²) systematics). (6) The executed measurement block (turning-point sampler + azimuth unwrap mod π + least-squares fit) is answer-free — no omegaZ/rateTheory/latRad/Math.sin/Math.cos references, no 31.78/0.7529/0.098 literals, 5 disclosed DT clock refs — with a planted-violation self-test. (7) ONE honesty edit to the module ends nothing but a false unit: the HUD's rate conversion (|rate|·60/2π, i.e. turns per MINUTE) was labelled 'turns/day' — with the sped-up 45 s day the label was wrong by ×4/3; relabelled 'turns/min' with zero numeric change, then sha-pinned (certifying a known-false label would be dishonest). Tamper tests surgical: known→25 fails only scoring gate A with the recovery unchanged; cert-sha only I; exec-ulp only K. The sped-up day (Ω = 2π/45 s) and the 2-D reduction remain disclosed on-screen and in the oracle's gate H.
npm run derisk -- foucault (scripts/foucault-derisk.mjs)scripts/oracles/foucault.reference.jsonL. Foucault, 'Démonstration physique du mouvement de rotation de la Terre au moyen du pendule', C. R. Acad. Sci. (Paris) 32, 135–138 (1851) — the Panthéon pendulum (67 m, 28 kg) turned clockwise ~11.3°/hour, a full circle in ~31.8 hours, matching sinφ for Paris. M. Binet, C. R. Acad. Sci. 32, 197 (1851) — first derivation of the sine factor. Modern treatment: J. B. Marion & S. T. Thornton, Classical Dynamics, §10.5; the Airy finite-amplitude ellipse precession (3/8)ω₀ab/L² is the classic systematic every museum pendulum fights.