Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Sewing operation


Sew and unsew operations update the beta function values to modify the topological relation between two or more darts. An \(i\)-dimensional sew can be interpreted as creating a connection between two \(i\)-dimensional cells. That connection takes the form of an adjacency, and the definition of the operation ensures that local structure remains consistent (in particular, cells incident to the new adjacency).

We present a simplified overview of the operations here, as their formal definitions in \(N\)-dimension do not really contribute to library understanding and usage.

Sewing

The sew operation can be divided into two parts:

  • a topological update, which corresponds to a \(\beta\) function update to model a new topological relation
  • a geometrical update, which corresponds to an update of the affected embedded data (attributes)

We call \(i\)-link the sub-operation corresponding to the topological update; Our implementation provide it along with sews due to performance and flexibility concerns.

Topology

The \(i\)-link operation corresponds to the aforementioned topological update. Given two darts \(d_a\) and \(d_b\), the \(i\)-link operation will update of the \(\beta_i\) function in order to model the new connection(s).

OneSew
1-sew between d1 and d4.
TwoSew
2-sew between d2 and d5.

The definition of the new \(\beta_i\) function depends on the dimension of the link; \(1\)-link has a different definition than \(i\)-links, \(i \ge 2\).

The operation is valid only if the respective orbit of the two darts are mappable by a bijection; In practice, this corresponds to a very intuitive condition illustrated below.

ThreeSewable
Example of non 3-sewable (left) and 3-sewable (right) orbits.

Geometry

OneSew
Effect of 2-sew on i-cell composition.

The i-sew operation corresponds to an i-link operation, coupled with an update of the affected attributes. This update is necessary as the topological update can modify the composition

How the attributes are updated is defined through trait implementation in the Rust crate (see Embedding). Which attributes are updated can be deduced from the dimension \(i\) of the sewing operation. This is summarized in the following table:

DimensionGeometrical operation0-cell / Vertex Attributes1-cell / Edge Attributes2-cell / Face Attributes3-cell / Volume Attributes
1Fusing verticesaffectedunaffectedunaffectedunaffected
2Fusing edgesaffectedaffectedunaffectedunaffected
3Fusing facesaffectedaffectedaffectedunaffected

Unsewing

The unsew operation is the inverse to the sew operation. It behaves according to similar properties, but is used to remove links between darts. It does so by replacing values of the \(\beta\) functions by the null dart. Geometrical updates are handled and defined in the same way as for the sew operation.

It also affects attributes similarly, but incident cells are split instead of merged.