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/assets/route-overlay-nav.svg

<svg xmlns="http://www.w3.org/2000/svg" width="640" height="300" viewBox="0 0 640 300" font-family="monospace" font-size="12">
  <rect width="640" height="300" fill="#0f1116"/>
  <text x="16" y="26" fill="#e8eaed" font-size="14">OSM-3D route overlay + turn-by-turn follow (additive, opt-in)</text>

  <!-- LEFT: the extruded city with the route ribbon draped on the streets -->
  <text x="60" y="58" fill="#9fb3c8">route ribbon ON the streets</text>
  <!-- ground -->
  <rect x="40" y="70" width="240" height="200" fill="#161a20" stroke="#39424e" stroke-width="1"/>
  <!-- a couple of building prisms -->
  <rect x="70" y="150" width="34" height="60" fill="#2b3440" stroke="#3d4a5a"/>
  <rect x="150" y="120" width="40" height="90" fill="#2b3440" stroke="#3d4a5a"/>
  <rect x="215" y="170" width="30" height="46" fill="#2b3440" stroke="#3d4a5a"/>
  <!-- street grid (faint) -->
  <line x1="55" y1="230" x2="265" y2="230" stroke="#39424e" stroke-width="4"/>
  <line x1="130" y1="90" x2="130" y2="255" stroke="#39424e" stroke-width="4"/>
  <!-- the ROUTE: bright L polyline + waypoint dots + the "you are here" pip -->
  <polyline points="60,230 200,230 200,110" fill="none" stroke="#6fd3f5" stroke-width="5"/>
  <circle cx="60" cy="230" r="5" fill="#ffd25a"/>
  <circle cx="200" cy="230" r="5" fill="#ffd25a"/>
  <circle cx="200" cy="110" r="5" fill="#ffd25a"/>
  <circle cx="130" cy="230" r="6" fill="#6fd3f5" stroke="#e8eaed"/>
  <text x="98" y="222" fill="#6fd3f5">progress t →</text>

  <!-- RIGHT: the follow loop -->
  <text x="360" y="58" fill="#9fb3c8">turn-by-turn follow (Msg-driven)</text>
  <rect x="350" y="72" width="250" height="196" fill="#141821" stroke="#39424e" stroke-width="1"/>
  <text x="366" y="98"  fill="#e8eaed">t = route_progress ∈ [0,1]</text>
  <text x="366" y="124" fill="#8fe3a0">target  = route.point_at(t)</text>
  <text x="366" y="148" fill="#8fe3a0">bearing = route.bearing_deg_at(t)</text>
  <text x="366" y="172" fill="#8fe3a0">tilt/dolly = chase constants</text>
  <text x="366" y="196" fill="#f5a86f">Frame: t += dt·speed  (wraps)</text>
  <text x="366" y="224" fill="#9fb3c8">state_json: has_route · route_length</text>
  <text x="366" y="242" fill="#9fb3c8">  route_progress · route_bearing_deg</text>
  <text x="366" y="260" fill="#6fd3f5">reuses OrbitCamera — no new engine</text>
</svg>