Discovering/balancing as many group characteristics of a particular creature that exhibits
flock (or flock like) behavior as possible, in order to accurately represent groups of it.

A problem of enforcing conditions that are required for flocking to occur.

And of course a problem of 3D math.

Understanding the problem(s):

Q: What conditions are necessary for a flock to occur?

A: Proximity.
The units must *consistantly* be close enough to see each other such that they can take what
the other nearby units are doing into account. If we just let a bunch of flockers go, they
will eventually (1) Go off into the distance and (2) Split into subflocks that will most
likely never re-unite (illustrated below.)

Solution:Keeping proximity

Solving the problem(s):

Keeping proximity:

Migration rule: If a flocker can't see any other flockers, then it is oriented towards
a waypoint in a set of way points that have been setup.

Sphere containment rule.

Accurate behavior:

Average heading rule: keep each unit facing the same direction as it's neighbor flockers.

Average position rule: Direct each unit's orientation towards the center of it's neigbor
flockers.

Seperation rule: Direct each unit's orientation away from neighbor flockers that are too close
(aka. Probably going to be occupying the same space in short order--because we moved into them,
they into us, or both.)

Wild flipping:

This is one of the harder things to see when you don't know why it's happening and have not
encountered it before.

Distorted frames:

Re-determine a mutually orthogonal frame of basis axis-vectors, for each flocking unit consistantly.
This can be done every frame of the game, or in a seperate thread every on a fixed time interval. The process
for doing this is the same process that one might use to determine the basis axis-vectors of a camera, referred to
as the Frenet frame.