# File cone edges by angle and skip corners nearer walls hide · dara/icarus

[View on GitCafe](https://git.cafe/dara/icarus/commit/532aa7a367ea2f430ed481fc2fdacdf93f51874b)

Repository: [dara/icarus](https://git.cafe/dara/icarus)

Visibility: public

Requested revision: 532aa7a367ea2f430ed481fc2fdacdf93f51874b

Requested commit: 532aa7a367ea2f430ed481fc2fdacdf93f51874b

Commit: 532aa7a367ea2f430ed481fc2fdacdf93f51874b

Tree: cd4d030359371263aeb6c79d1776805ed960823e

Author: Dara Adedeji

Committer: Dara Adedeji

## Message

```
File cone edges by angle and skip corners nearer walls hide

Every ray of a cone leaves the same eye, so the Dart query now works in
angles from it. Edges the eye may see are filed once into angular bins,
each sorted nearest first, and a ray tests only its own bin. Runs of
consecutive ring edges that cross a bin from one boundary to the next
prove how far any ray in that bin can travel, and the edge tree is walked
nearest node first so whatever starts beyond those depths is skipped
whole: nodes, edges and the corners that would have cast rays.

The outline is the same shape: over 145,872 cones on all 26 map sides it
never differs from the previous native query by more than 1e-5 SVG units.
On Lotus and Breeze a cone casts about 2.5x fewer rays and runs 10-20x
fewer edge tests. In the browser, dragging a 103° cone, the query's p99
falls from 11-18 ms to 2.5-4.4 ms.

svg_cone_exact_test checks every line of real cones against exact single
rays, and fails if the hidden-corner test is made even 3% too eager.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

```

## Parents

- [98320be0bc22f5a6c6429c8dcffaf46880ef131c](https://git.cafe/dara/icarus/commit/98320be0bc22f5a6c6429c8dcffaf46880ef131c?format=markdown)

[Source at this commit](https://git.cafe/dara/icarus/tree/532aa7a367ea2f430ed481fc2fdacdf93f51874b?format=markdown)
