Spicoli manipulates surfaces through the following two primary mechanisms:
A clique is an integral value associated with portions of the surface. They can be arbitrarily assigned in order to create groupings of vertices. Cliques in Spicoli are unsigned ints that can be associated with every vertex of the surface. Spicoli treats the zero clique as a special NULL clique. Therefore, the user should not use zero for performing any clique operations on the surface.
Cliques in Spicoli are collections of vertices. However, an ambiguity occurs when performing triangle-based operations on these cliques. Spicoli will automatically resolve vertex cliques into triangle cliques using the following rule: if two or more vertices in the triangle have the same clique value, the triangle is assigned that clique value; otherwise, if every vertex of the triangle has a different clique value then the triangle is arbitrarily assigned the lowest clique value of the three vertices.
Spicoli can construct grids from surfaces. Grid values are assigned using the distance to the nearest surface vertex to the grid point. This makes grid construction very expensive because every grid point must be compared to every surface vertex. The OEVoxelizeMethod namespace describes the available methods.