Aggregation

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.

back