Chapter 4 is about particle systems: emitters that spawn short-lived particles under forces. This expansion gives each emitter a city and lets live pollution set its behavior.
The page fetches hourly PM2.5 for Berlin, Delhi, and Los Angeles from Open-Meteo’s air-quality endpoint. Each city is an emitter at the bottom of the canvas, and its PM2.5 reading sets the spawn rate and particle color, so a dirtier city visibly smokes harder. A Perlin wind pushes the particles sideways as they rise and fade. The hour of day advances on its own, so you can watch the daily cycle rather than a single reading.
Data source: Open-Meteo Air Quality API
Endpoint:https://air-quality-api.open-meteo.com/v1/air-quality?latitude=...&longitude=...&hourly=pm2_5
Access: Public, no key. Loaded from an hourly server-side refresh when possible, with a bundled snapshot fallback, and a live browser fetch only when the API allows CORS. Data window: Jul 18, 2026 (pulled Jul 18, 2026 UTC)
Delhi usually dominates, which is the point: the difference in air quality is obvious as motion in a way a bar chart is not.