Ocean Halftone Earth

A reusable Three.js globe driven by a bundled, reproducible NOAA CoastWatch surface geostrophic-current snapshot. Solid land is separated from ocean with a Natural Earth 1:50m mask. Ocean dots stay at fixed intersections of a diagonal UV grid: observed speed controls their baseline radius and observed east/north vectors control a restrained directional radius pulse.

npm install
npm run dev
npm run build

The on-screen status reports loading, the NOAA snapshot date/resolution, or an explicit data failure. A failed current request produces steady small dots—never arbitrary fallback flow.

Current data

See DATA.md for the authoritative NOAA product and endpoint, variables, timestamp, units, attribution/license, exact ERDDAP query, cache format and refresh command, missing-value behavior, longitude/latitude handling, visual mapping, limitations, and verification workflow.

createOceanField() in src/oceanField.js exposes setCurrentField(values, width, height). Input is equirectangular RGBA bytes ordered west-to-east and south-to-north: normalized speed, encoded east unit component, encoded north unit component, validity. Longitude repeats and latitude clamps. The texture affects radius only; grid centers cannot move. Replaced GPU textures are disposed.

Geographic mask

public/assets/ne-50m-land-mask.png is a 2048×1024 binary equirectangular raster generated from Natural Earth ne_50m_land. Natural Earth data is public domain. SHA-256: 1e6c7b35e083f39259ee7d93fe7a8b4fd5ce7828f7de2b782a096150d8c07157.

The shader wraps longitude, clamps latitude, rejects grid centers beyond either pole, tests the mask at each dot center, and tests it again at each rendered fragment. The latter prevents accepted circles from crossing onto land.

Occurrence radiation visualization

Validated NOAA microplastics occurrence coordinates also seed a deterministic animated visualization layer. src/radiationField.js rasterizes bounded, pseudo-random radial phase fields into one reusable texture. The globe shader blends overlapping envelopes, maps their moving phases through a three-color palette, and modulates the same fixed halftone dot radii without moving dot centers. Pins remain separate geometry above the globe.

This layer visualizes spatial radiation from occurrence locations. It is not a measured concentration surface, debris forecast, or advection model. The existing center-and-fragment Natural Earth mask still gates every rendered dot, so the effect cannot render over land. Edit RADIATION_CONFIG to set density, radius, falloff, palette, animation speed, seed, ring count, texture resolution, hotspot cap, and per-hotspot raster budget. Input is deterministically thinned only above maxHotspots; the bundled 3,954-site cache is below the default 5,000-site cap.

Built With

Share this project:

Updates