Presets
Playback
School and predator
Drag inside the tank to steer the predator by hand; release to let it hunt on its own.
Noise sweep
Measures the polarisation for nine noise levels with the predator switched off.
Model checks
The science
The Vicsek model
N point-like fish move at constant speed v0. Each step a fish looks at all fish within the radius r (itself included) and takes the average of their headings, then adds a random angle ξ drawn uniformly from [-η/2, η/2]: θi(t+1) = arg(∑j∈r eiθj) + ξi, and xi(t+1) = xi(t) + v0 eiθi(t+1). The order parameter is the polarisation φ = |∑ eiθj| / N, equal to 1 for a perfectly aligned school and about 0.89/√N for random headings. Vicsek and co-workers (1995) found a genuine transition at a critical noise that depends on the density N/L².
Predator
A predator of speed vp steers towards the nearest fish and eats it inside the catch radius; the eaten fish is replaced at a random place so N stays fixed. Fish inside the fear radius add an escape vector pointing away from the predator to their average heading. This is an ad-hoc rule in the spirit of the Couzin and Reynolds models, not a measured hydrodynamic response.
Nearest-neighbour check
For N independent random points with density ρ the nearest-neighbour distance has the Poisson distribution P(d) = 2π ρ d e-π ρ d² with mean 1/(2√ρ). A school is more clustered or more evenly spaced than that, which the third graph shows.
Honest simplifications: a periodic 2D box, point fish with no body length, no hydrodynamics, no depth, no cohesion or repulsion force (the Vicsek model aligns but does not bind: a school here is a travelling band, not a ball), and the numbers are for finite N and so smooth the transition.
What to try
- Start at noise 0.3 and raise it slowly: the polarisation graph drops from near 1 to near 0.
- Run the noise sweep to get the whole transition curve in a few seconds.
- Switch the predator on with low noise and see how the school splits and rejoins.
- Increase the school size: the disordered polarisation floor falls as 1/sqrt(N).