A 2-3 flip removes a face and adds a new edge. The inverse is a 3-2 flip. Two boundary faces are replaced in a 2-2 flip. The faces should be approximately co-planar.
Edge removal and multi-face removal operations can be represented by sequences of 2-3, 3-2, 2-2 and 4-4 flips. Although a given composite operation may improve the mesh, some of its individual flips may temporarily reduce the quality. (They may even invert elements.) Thus using such composite operations is likely to produce better results than using only simple topological changes.
The ring of vertices around the edge are triangulated using Klincsek's algorithm to produce an optimal triangulation.
Edge removal that produces a 6-8 flip.
Boundary edge removal changes the volume of the mesh. It is performed only if the surface is approximately planar. In our implementation, boundary edges may be removed if the angle between the normals of the two adjacent boundary faces is less than a user specified constant.
Edge removal that produces a 4-6 flip. An edge removal that changes the volume of the mesh.
We have implemented edge removal for interior and boundary edges.
Face removal that produces an 8-6 flip.
Currently in our implementation only one or two faces can be removed by face removal. We will implement the general multi-face removal algorithm.
One can repeatedly sweep over all the edges and faces, applying edge and face removal. However this is very inefficient. A better approach is to keep track of the edges and faces upon which local topological changes could possibly improve the mesh.
We maintain a set of active tetrahedra. Tetrahedra are added to the active set upon insertion in the mesh. Tetrahedra are removed from the set when they are removed from the mesh or when it is determined that edge or face removal on its edges and faces will not improve the mesh.
Use the classs by including the file mesh/simplicial.h or by including mesh.h.