Aggregation unlike contraction has the ability to merge any two points in the mesh together regardless of whether or not they share a triangle.
The closest two points by euclidian distance are always merged first. For these examples we will be using a model with two very close spheres, found in src/models/2spheres.c the source is as follows:
double func(double x, double y, double z) { if(x > 0) x -= .32; else x += .32; return (x*x + y*y + z*z) - .1; }
On the left is the contracted version with 1000 points , on the right is the aggregated version with 1000 points:
To enable aggregation, use the --aggregation (or -j) option to specify a maximum point count. Aggregation will be run until the point count is brought down to this number.
Typically aggregation would only be performed to merge a small amount of points together. It is an alternative means of contraction but the results are generally much poorer.