shadow-zone / files / README.md
README.md
2db5a221 2026-06-12 Pavel Safronov | 1 | # Seismic Shadow Zone |
| 2 | ||
| 3 | An interactive browser simulation of seismic wave propagation through | |
| 4 | Earth's interior, showing how the liquid outer core creates regions — | |
| 5 | *shadow zones* — where earthquake waves cannot be directly detected. | |
| 6 | ||
0ffa72b1 2026-10-27 Pavel Safronov | 7 | **Live demo: https://apps.fuzzyworld.net/shadow-zone/** |
2db5a221 2026-06-12 Pavel Safronov | 8 | |
| 9 | --- | |
| 10 | ||
| 11 | ## What it shows | |
| 12 | ||
| 13 | When an earthquake occurs, P-waves and S-waves spread outward through | |
| 14 | the planet. The liquid outer core refracts P-waves sharply, leaving a | |
| 15 | ~91°–110° band around the globe with no direct arrivals. S-waves cannot | |
| 16 | travel through liquid at all, so they are absent beyond ~105°. | |
| 17 | ||
| 18 | The simulation lets you adjust core size and seismic velocities to see | |
| 19 | how internal structure shapes the shadow zone. Try the presets — *Water | |
| 20 | Core*, *Giant Core*, *Solid Earth* — to explore non-Earth-like scenarios. | |
| 21 | ||
| 22 | ## Features | |
| 23 | ||
| 24 | - P/S-wave ray tracing using Bouguer's law on a parameterised Earth model | |
| 25 | - Shadow zone detection: finds angular gaps in ray coverage, merges | |
| 26 | nearby zones to reduce visual noise | |
| 27 | - Velocity-based layer colouring — equal speed → equal colour | |
| 28 | - Hover over any red arc on the surface to see the exact shadow zone range | |
| 29 | - Collapsible description and Wikipedia reference in the sidebar | |
e86a2c69 2026-06-13 Pavel Safronov | 30 | - **Impossible core presets** — five physically impossible metamaterial-style |
| 31 | cores (marked ⚠️) that go beyond what sliders alone can express: | |
| 32 | - *Negative Refraction* — Snell's law negated at the CMB; rays bend to the | |
| 33 | same side of the normal as the incident ray | |
| 34 | - *Zero-Index Core* — all transmitted rays forced radial; core acts as a | |
| 35 | perfect converging lens with no angular phase accumulation | |
| 36 | - *Spiral Trap* — v∝r profile (zero at centre); sinI is constant, so rays | |
| 37 | spiral inward indefinitely — a seismic black hole | |
| 38 | - *Retrograde Core* — velocity decreases with depth; rays reach the ICB | |
| 39 | and total-internally-reflect, expanding the shadow zone | |
| 40 | - *Perfect Absorber* — all waves absorbed at the CMB; shadow zone equals | |
| 41 | the pure geometric shadow of the core disk | |
2db5a221 2026-06-12 Pavel Safronov | 42 | |
| 43 | ## Tech stack | |
| 44 | ||
| 45 | TypeScript · Vite · Canvas 2D API — no runtime dependencies. | |
| 46 | ||
| 47 | ## Running locally | |
| 48 | ||
| 49 | ```bash | |
| 50 | npm install | |
| 51 | npm run dev | |
| 52 | ``` | |
| 53 | ||
| 54 | Then open http://localhost:5173/shadow-zone/ | |
| 55 | ||
| 56 | ## Credits | |
| 57 | ||
| 58 | Earth icon by [Icongeek26](https://www.flaticon.com/authors/icongeek26) on Flaticon. |