Regina Calculation Engine
|
Represents a combinatorial isomorphism from one dim-manifold triangulation into another. More...
#include <triangulation/generic.h>
Public Member Functions | |
Isomorphism (unsigned nSimplices) | |
Creates a new isomorphism with no initialisation. More... | |
Isomorphism (const Isomorphism &src)=default | |
Creates a copy of the given isomorphism. More... | |
Isomorphism (Isomorphism &&src) noexcept=default | |
Moves the given isomorphism into this new isomorphism. More... | |
Represents a combinatorial isomorphism from one dim-manifold triangulation into another.
In essence, a combinatorial isomorphism from triangulation T to triangulation U is a one-to-one map from the simplices of T to the simplices of U that allows relabelling of both the simplices and their facets (or equivalently, their vertices), and that preserves gluings across adjacent simplices.
More precisely: An isomorphism consists of (i) a one-to-one map f from the simplices of T to the simplices of U, and (ii) for each simplex S of T, a permutation fS of the facets (0,...,dim) of S, for which the following condition holds:
Isomorphisms can be boundary complete or boundary incomplete. A boundary complete isomorphism satisfies the additional condition:
A boundary complete isomorphism thus indicates that a copy of triangulation T is present as an entire component (or components) of U, whereas a boundary incomplete isomorphism represents an embedding of a copy of triangulation T as a subcomplex of some possibly larger component (or components) of U.
Note that for all types of isomorphism, triangulation U is allowed to contain more simplices than triangulation T.
This class is designed to avoid deep copies wherever possible. In particular, it supports C++11 move constructors and move assignment, and calling routines that return an Isomorphism (e.g., identity() and random()) should not perform any unwanted deep copies.
dim | The dimension of the underlying triangulation. This must be between 2 and 15 inclusive. |