This is an example illustrating the dynamics of repulsion, attraction, and orientation zones used in flocking algorithms. This example is based off of the equation given by Couzin.
The basic principle is that each agent has three regions in a growing radius around it: a zone of repulsion, a zone of orientation, and a zone of attraction respectively.
Dragging/Zooming behavior forked from mbostock's block: Drag & Zoom II
https://d3js.org/d3.v4.min.js