Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/facett

facett-map3d/.nornir/road-hierarchy.md

Road hierarchy — width-by-class, proven headless

The garmin-nav look: a motorway must read wider/bolder than a residential street. facett-map3d's road_ribbon already does this — and now it's proven as data, not eyeballed.

How it works (already implemented)

style::classify resolves an OSM highway tag to a per-class stroke width (the one source of truth): motorway 3.0 · primary 2.2 · secondary 1.7 · tertiary 1.3 · residential 1.0 · path 0.7. extrude::road_ribbon turns that into a three-pass ground ribbon whose half-widths scale with the class:

OSM highway=… ──▶ style::classify ──▶ Way.width (1.0 … 3.0)   ← one source of truth
                                          │
                    road_ribbon: fill_hw = width · ROAD_WIDTH_DU
                                 casing_hw = fill_hw · CASING_SCALE   (dark outline)
                                 glow_hw  = fill_hw · GLOW_SCALE      (widest; warm for majors)
                                          │
                    class_w = (width-1)/2 , speed_w from maxspeed_kmh
                    glow_strength = class_w·0.7 + speed_w·0.5   → major roads glow warm

So a higher class ⇒ wider casing/fill/glow ⇒ it visually wins the hierarchy, with no second per-class table (scaling Way.width keeps style.rs authoritative).

The proof (this change)

tests/road_hierarchy_proof.rs — headless, no GPU, no pixels. Same L-shaped centreline extruded at three classes; measures the ribbon vertices' cross-spread (x-extent + z-extent) after the fixed terrain quad:

Emits the facett-map3d / road_hierarchy_width_by_class testmatrix cell under --features testmatrix. Reuses edda's nornir-testmatrix via facett_core::testmatrix::emit (no hand-rolled harness).

Next (bounded, headless-verifiable)