Euler operator (digital geometry)
# Euler operator (digital geometry)

In solid modeling and computer-aided design, the Euler operators modify the graph of connections to add or remove details of a mesh while preserving its topology. They are named by Baumgart after the Euler–Poincaré characteristic. He chose a set of operators sufficient to create useful meshes, some lose information and so are not invertible.

The boundary representation for a solid object, its surface, is a polygon mesh of vertices, edges and faces. Its topology is captured by the graph of the connections between faces. A given mesh may actually contain multiple unconnected shells (or bodies); each body may be partitioned into multiple connected components each defined by their edge loop boundary. To represent a hollow object, the inside and outside surfaces are separate shells.

Let the number of vertices be V, edges be E, faces be F, components H, shells S, and let the genus be G (S and G correspond to the $b_0$ and $b_2$ Betti numbers respectively). Then, to denote a meaningful geometric object, the mesh must satisfy the generalized Euler–Poincaré formula

The Euler operators preserve this characteristic. The Eastman paper lists the following basic operators, and their effects on the various terms:

| Name | Description | ΔV | ΔE | ΔF | ΔH | ΔS | ΔG |
| - | - | - | - | - | - | - | - |
| MBFLV | Make Body-Face-Loop-Vertex | 1 | 0 | 1 | 0 | 1 | 0 |
| MEV | Make Edge-Vertex | 1 | 1 | 0 | 0 | 0 | 0 |
| MEFL | Make Edge-Face-Loop | 0 | 1 | 1 | 0 | 0 | 0 |
| MEKL | Make Edge, Kill Loop | 0 | 1 | 0 | -1 | 0 | 0 |
| KFLEVB | Kill Faces-Loops-Edges-Vertices-Body | −2 | −n | −n | 0 | -1 | 0 |
| KFLEVMG | Kill Faces-Loops-Edges-Vertices, Make Genus | −2 | −n | −n | 0 | 0 | 1 |

## Geometry

Euler operators modify the mesh's graph creating or removing faces, edges and vertices according to simple rules while preserving the overall topology thus maintaining a valid boundary (i.e. not introducing holes). The operators themselves don't define how geometric or graphical attributes map to the new graph: e.g. position, gradient, uv texture coordinate, these will depend on the particular implementation.

