{
  "date": "2026-10-26",
  "scope": "Original synthetic terrain geometry. Demonstrates depth occlusion only; not real terrain, a recorded route, navigation data, a user study or a hosted AlbumMap export.",
  "dimensions": [
    1280,
    900
  ],
  "originalRoute": [
    [
      -3.0,
      -1.0,
      0.0
    ],
    [
      0.0,
      1.0,
      2.0
    ],
    [
      3.0,
      -1.0,
      0.0
    ]
  ],
  "stopNames": [
    "Start",
    "Ridge",
    "Finish"
  ],
  "surfaceVertices": [
    [
      -3.5,
      -2.0,
      0.0
    ],
    [
      -3.5,
      2.0,
      0.0
    ],
    [
      -3.0,
      -2.0,
      0.0
    ],
    [
      -3.0,
      2.0,
      0.0
    ],
    [
      0.0,
      -2.0,
      2.0
    ],
    [
      0.0,
      2.0,
      2.0
    ],
    [
      3.0,
      -2.0,
      0.0
    ],
    [
      3.0,
      2.0,
      0.0
    ],
    [
      3.5,
      -2.0,
      0.0
    ],
    [
      3.5,
      2.0,
      0.0
    ]
  ],
  "surfaceTriangleIndices": [
    [
      0,
      2,
      1
    ],
    [
      1,
      2,
      3
    ],
    [
      2,
      4,
      3
    ],
    [
      3,
      4,
      5
    ],
    [
      4,
      6,
      5
    ],
    [
      5,
      6,
      7
    ],
    [
      6,
      8,
      7
    ],
    [
      7,
      8,
      9
    ]
  ],
  "surface": "Extruded triangular ridge: z=max(0,2*(1-abs(x)/3)), -2<=y<=2. Top-down diagram flattens both route and surface.",
  "routeLift": 0.04,
  "routeRibbonWidths": {
    "outerWhite": 0.17,
    "innerRed": 0.1
  },
  "projection": "Orthographic; camera/right/up and pixel transforms are specified in the downloadable Python renderer.",
  "method": "Triangle z-buffer for surface and surface-following route ribbons; independent ray/triangle intersection for 1001 evenly parameter-spaced centerline samples. Pixel-boundary disagreement is reported separately, not hidden.",
  "labels": "Map markers appear only for visible stops. The separate footer always names all three stops and explicitly marks hidden ones; it is not depth-tested geometry.",
  "views": [
    {
      "file": "map-occlusion-top-v2.png",
      "sha256": "fba63809f25be9d7c966210524987c8e321d61c3ca3aca2a74d42a3aca733411",
      "elevationDegrees": 90,
      "azimuthDescription": "Vertical",
      "centerlineSamples": 1001,
      "hiddenSamples": 0,
      "visibleSamples": 1001,
      "rayRasterBoundaryDisagreements": 0,
      "stopVisibility": {
        "Start": true,
        "Ridge": true,
        "Finish": true
      }
    },
    {
      "file": "map-occlusion-low-v2.png",
      "sha256": "e222f3b119bce4320352087bd04600d8fb7f89ae64448f342494d582c9c897da",
      "elevationDegrees": 18,
      "azimuthDescription": "From negative X and negative Y, equally",
      "centerlineSamples": 1001,
      "hiddenSamples": 468,
      "visibleSamples": 533,
      "rayRasterBoundaryDisagreements": 3,
      "stopVisibility": {
        "Start": true,
        "Ridge": true,
        "Finish": false
      }
    },
    {
      "file": "map-occlusion-high-v2.png",
      "sha256": "bd373493c754032c9ccd1e82786dbfe439e0e1d77b3672d7c482cf302362f778",
      "elevationDegrees": 55,
      "azimuthDescription": "From negative X and negative Y, equally",
      "centerlineSamples": 1001,
      "hiddenSamples": 0,
      "visibleSamples": 1001,
      "rayRasterBoundaryDisagreements": 0,
      "stopVisibility": {
        "Start": true,
        "Ridge": true,
        "Finish": true
      }
    }
  ],
  "software": {
    "numpy": "2.3.3",
    "Pillow": "11.3.0"
  }
}
