Lesson 08 — Broad-phase & Quadtree

Vì sao so mọi cặp ($n^2$) là không chịu nổi, và làm sao grid / quadtree cắt số cặp xuống. Ba module: (1) quadtree động — vật bay, ô tự chia/gộp theo mật độ; (2) spatial grid — tô ô có vật + cặp cùng ô; (3) đồ thị số phép so sánh theo N.

1. Quadtree động — vật bay, ô tự chia theo mật độ

N vật bay tự do (nảy tường). Mỗi frame quadtree dựng lại: node chứa quá capacity vật thì chia làm 4. Đường kẻ mảnh = biên ô quadtree. Bên dưới đếm số cặp phải test với broad-phase (chỉ cặp cùng lá + lá kề) so với không (mọi cặp $n^2$).



vật · biên ô quadtree · cặp ứng viên (đang test)
Cặp không broad-phase
= C(N,2), mọi cặp
Cặp với broad-phase
cùng lá + lá kề
Giảm
ít test hơn
Số lá quadtree
node lá hiện tại

2. Spatial grid — tô ô có vật, đếm cặp cùng ô + ô kề

Lưới ô đều. Ô tô đậm theo số vật trong ô (càng đông càng đậm). Kéo cell size để thấy: ô to → ít ô đông → nhiều cặp; ô nhỏ → nhiều ô thưa → ít cặp (tới khi quá nhỏ thì vật trải nhiều ô). Cặp ứng viên = mọi cặp trong cùng ô và giữa ô kề.




vật · ô có ≥2 vật (tô theo mật độ) · đường lưới = biên ô
Mọi cặp C(N,2)
Cặp ứng viên (grid)
cùng ô + ô kề
Giảm
Số ô có vật

3. Đồ thị: số phép so sánh theo N — $n^2$ vs broad-phase

Trục ngang = số vật N; trục dọc = số cặp phải test. Đường đỏ = so mọi cặp $C(N,2)\approx N^2/2$ (parabol). Đường xanh = broad-phase $\approx$ tuyến tính ($\sim c\cdot N$). Bảng dưới đối chiếu vài mốc N.

$n^2$ (so mọi cặp) · broad-phase (≈ tuyến tính)