milestone 01 · the brute-force baseline
First, the version that does no thinking at all
A range query asks a simple question: which objects lie inside this rectangle? The simplest correct answer tests every object, every time - and it is genuinely fast enough here. That matters, because a structure that skips work is only interesting once you can see exactly how much work there was to skip.
The field is clustered rather than evenly spread, so density varies by region. Drag a rectangle over a dense cluster and then over an empty corner: brute force does identical work for both. The quadtree, arriving in the next milestone, will not.
225 of 800 objects fall inside the region at 120, 140, sized 200 by 200.
The seed, object count, and region travel in the URL, so a shared link rebuilds the identical field.
experiment controls
Choose a region to query
Drag on the field, pick a preset, or type exact bounds. All three write the same query - the numbers below are the keyboard equivalent of the drag, not a separate mode.
The scatter is clustered, not uniform, so density varies by region.
measured · your browser
How long does the baseline actually take?
Unlike the counts beside this panel, these numbers come from your machine, so they change between runs, browsers, and devices. Nothing is measured until you ask - a benchmark that runs on every keystroke is a benchmark nobody should trust.
Not measured yet.
simulated · brute force
What the query found
Every count here is simulated: it is produced by this lab's own model and is exactly reproducible from the seed, on any machine. The wall-clock figures in the measurement panel are not - those come from your browser and will differ from mine.
- Objects tested
- 800
- Results found
- 225
- Region
- 120, 140 · 200×200
- Cells pruned
- none - no tree yet
Brute force tests every object regardless of where the region sits. That is the baseline the quadtree has to beat.
| Object | x | y |
|---|---|---|
| #1 | 157.5 | 336.0 |
| #2 | 184.8 | 267.8 |
| #4 | 270.1 | 189.2 |
| #7 | 294.7 | 292.3 |
| #8 | 289.5 | 308.5 |
| #10 | 233.4 | 169.1 |
| #16 | 136.2 | 320.6 |
| #25 | 262.0 | 198.0 |
| #28 | 279.2 | 284.1 |
| #31 | 235.0 | 309.6 |
| #33 | 125.8 | 277.1 |
| #34 | 226.1 | 167.5 |
| #38 | 195.6 | 220.3 |
| #45 | 269.4 | 305.7 |
| #48 | 292.6 | 295.1 |
| #52 | 206.4 | 221.8 |
| #55 | 261.7 | 152.1 |
| #57 | 207.6 | 205.4 |
| #64 | 209.3 | 220.3 |
| #67 | 204.9 | 230.1 |
| #71 | 135.2 | 301.6 |
| #77 | 309.3 | 202.1 |
| #79 | 287.3 | 158.5 |
| #83 | 212.0 | 255.6 |
| #85 | 274.1 | 165.8 |
| #89 | 271.7 | 328.5 |
| #94 | 221.6 | 259.3 |
| #95 | 178.1 | 176.1 |
| #96 | 268.9 | 335.4 |
| #101 | 193.0 | 226.5 |
| #111 | 179.3 | 263.0 |
| #112 | 202.4 | 228.4 |
| #114 | 144.9 | 246.3 |
| #115 | 205.4 | 158.2 |
| #118 | 254.1 | 155.4 |
| #131 | 231.9 | 284.4 |
| #135 | 169.6 | 254.2 |
| #139 | 143.7 | 161.2 |
| #142 | 207.1 | 249.4 |
| #143 | 221.1 | 227.4 |
| #145 | 250.7 | 333.3 |
| #146 | 213.7 | 321.4 |
| #152 | 188.8 | 169.9 |
| #153 | 267.5 | 177.7 |
| #154 | 165.3 | 302.8 |
| #158 | 214.1 | 307.0 |
| #160 | 130.4 | 285.5 |
| #163 | 190.9 | 223.0 |
| #164 | 225.6 | 228.4 |
| #166 | 278.2 | 302.1 |
Showing the first 50 of 225 results.