Lab
Boids flocking · spatial hash
Canvas 2D · Reynolds flocking · spatial hashing

ฝูงเคลื่อนพร้อมกัน

ฝูงนก/ปลาทั้งฝูงดูเหมือนมีสมองเดียว แต่จริง ๆ แต่ละตัวตัดสินใจเองจาก 3 กฎง่าย ๆ ของ Craig Reynolds (1986): แยกตัว (อย่าชนเพื่อน), เรียงทิศ (หันไปทางเดียวกับเพื่อนรอบตัว), รวมกลุ่ม (วิ่งเข้าหากึ่งกลางฝูง). ใช้ spatial hash ช่วยหาเพื่อนบ้านเร็ว จึงรันได้เป็นพันตัวลื่น ๆ. เลื่อนเมาส์เป็นผู้ล่า/เหยื่อ

700 boids · fps
ตัวชี้
การกระทำ

สี/ความสว่างตามความเร็ว · trails สูง = ทิ้งหางยาว · ตั้ง ลดการเคลื่อนไหว = เริ่มแบบหยุดนิ่ง

วิธีทำงาน: แต่ละเฟรมแต่ละตัวมองเพื่อนในรัศมี vision แล้วรวม 3 แรง: separation (ผลักออกจากตัวที่ใกล้เกิน), alignment (ปรับความเร็วเข้าหาค่าเฉลี่ยของเพื่อน), cohesion (เร่งเข้าหาตำแหน่งเฉลี่ยของเพื่อน). การหาเพื่อนบ้านแบบไล่ทุกคู่จะช้า O(n²) — จึงแบ่งจอเป็นตาราง spatial hash เช็กแค่ 9 ช่องรอบตัว ทำให้เร็วขึ้นมาก.