Twelve sensor nodes sit fixed in a 3×2×2 grid inside the cabin volume. When a leak occurs, a gas plume forms at a random point and its concentration falls off with distance: c(r) = c₀·exp(−r²/2s²), where r is the distance from the leak and s widens as the plume spreads over time. Each node samples the plume concentration at its own position, adds sensor noise, and runs the same threshold + sustained-duration dwell logic as any single sensor.
reading_i(t) = plume(pos_i, t) + N(0, σ²)
dwell_i += dt if reading_i > threshold
alarm_i = (dwell_i ≥ sustainedDuration)
- Sensor noise σ — per-node measurement jitter; identical to the 2D model, but here it competes against a real spatial signal instead of a purely temporal one.
- Alarm threshold — concentration level a node's reading must exceed before its own dwell timer starts.
- Sustained duration — how long a node's reading must stay above threshold before that node's alarm latches.
Because the plume has to physically diffuse across the cabin, nodes closer to the leak cross threshold seconds before nodes on the far side — sensor placement becomes as important as noise or dwell time for how fast the network as a whole notices a leak. Watch a triggered leak: nearby spheres flash red first, while distant ones may never cross threshold at all if the plume dilutes below it before it reaches them — a spatial miss, not just a noise-driven one.