Join the two ends of a full-circle cone at the seam behind it

On a full circle, -pi and pi are the same direction, but the bins and
events treated them as two ends. An edge whose angles began a hair below
-pi was never filed in the bins just below pi, so the last ray passed a
wall on the seam. A corner on the seam whose angle came out as -pi lost the
ray beside it on the pi side, and the outline drew a chord across open
sky. File such edges at both ends, wrap rays beside the seam round to the
other end, and when proving a corner hidden, check the bin across the seam
too. Both queries, Dart and native.

svg_cone_exact_test now also probes just either side of every wall corner
in range and an even sweep, independent of the outline it checks, and
holds open-sky stretches to the range circle's chords, so a wall the query
missed entirely, or a false shadow, fails it.

Found in review by Astra.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ddc02a59aeDara Adedeji committed on 10/6/2026, 1:20:07 AMparent0be77d1

Checks

Some checks failed
3 files changedLine totals unavailable