Work in progress. An expansion tectonics model of the Earth. Visualizes oceanic plate age gradients on an interactive 3D globe, with the goal of reconstructing past globes by removing the youngest oceanic crust and remapping onto smaller spheres — testing the hypothesis that Earth has been growing in mass without subduction. The reconstruction engine is functional but the scientific analysis is ongoing.
The viewer has a layer switcher with several groups:
- Plates — tectonic plate segmentation, classified boundaries (ridges, faults, land edges), and ridge/land barriers
- Age — ocean crust age gradient (bearing encoded as hue) and raw age map (EarthByte 2020)
- Elevation — ETOPO 2022 terrain/bathymetry, mountain ranges with medial-axis spines, steep ridgelines with arc fits, continental shelf margins, and continental mask
- Reconstruction — forward-projected crust on the present-day sphere at 5, 10, 20, 40, and 80 Ma steps
- Data — volcanoes (GVP), crustal thickness, sediment thickness, spreading rate/direction, fracture zones
The age gradient encodes the direction of greatest change in ocean crust age as a hue. Opposite colors indicate either a spreading zone (new crust created) or a transform fault (same-age crust slipped apart).
Some rifts are no longer active but are clearly visible in the gradient map — for example, the ancient rift between Spain and France:
The reconstruction engine peels away oceanic crust in age increments, rotates the remaining plates using spreading-rate-derived quaternions, and remaps onto a progressively smaller sphere. Gaps and overlaps are the scientific output — the model does not attempt to close them. See docs/reconstruction-engine.md for the full design.
Requires: Rust toolchain, Node.js, wasm-pack, Git LFS
# Pull large data files
git lfs pull
# Install Node dependencies
npm installnpm start
# Visit http://localhost:8081Keyboard controls:
W/S— tilt up/downA/D— pan left/rightQ/E— rotate (twist)R— reset orientation (north up)?— toggle keyboard help overlay
Mouse drag, scroll wheel, and touch gestures (pinch, twist, drag) are also supported.
# Age gradient texture
cd model && cargo run --release --bin bearings
# Plate boundaries
cd model && cargo run --release --bin boundaries
# Plate segmentation
cd model && cargo run --release --bin segments
# Elevation, mountains, ridgelines, margins
cd model && cargo run --release --bin elevation
# Reconstruction frames
cd model && cargo run --release --bin reconstructAll binaries support --help and --quick-test=downsample for fast iteration.
npm test # Rust unit tests + viewer TypeScript tests + script testsAWS CDK stack (S3 + CloudFront + Route53):
npm run deploy- Ocean age: EarthByte 2020 oceanic age grids (NetCDF, Git LFS)
- Elevation: ETOPO 2022 v1 (1 arcminute, bedrock)
- Volcanoes: Smithsonian Global Volcanism Program (GVP)
- Crustal/sediment thickness: CRUST1.0 (Laske et al. 2013)
- Spreading rate/direction, fracture zones: EarthByte / Matthews et al. 2011


