## 2026-02-08: Visualization Conventions Documentation ### Key findings from codebase analysis: - `visualize_extrinsics.py` went through 7+ iterations (commits `6113d0e` → `d07c244`) - The core confusion was conflating Plotly view transforms with data-frame transforms - `world_to_plot()` is now a no-op identity function — all data stays in OpenCV frame - Plotly `camera.up = {y:-1}` is the correct way to render Y-down data without transforming it - `autorange: "reversed"` was a red herring — it flips tick labels, not data - `inside_network.json` uses a different world frame (Fusion/gravity-aligned) than calibrate_extrinsics.py (ArUco marker object frame) - README.md has 3 stale references to removed flags: `--pose-convention`, `--world-basis`, `--diagnose` ### Conventions confirmed: - Poses are `world_from_cam` (solvePnP result is inverted before saving) - RGB = XYZ color convention for axis triads - All units are meters - `--origin-axes-scale` controls origin triad independently from `--scale`