|
| Isomorphism (unsigned nSimplices) |
| Creates a new isomorphism with no initialisation. More...
|
|
| Isomorphism (const Isomorphism ©) |
| Creates a copy of the given isomorphism. More...
|
|
unsigned | size () const |
| Returns the number of simplices in the source triangulation associated with this isomorphism. More...
|
|
int & | simpImage (unsigned sourceSimp) |
| Determines the image of the given source simplex under this isomorphism. More...
|
|
int | simpImage (unsigned sourceSimp) const |
| Determines the image of the given source simplex under this isomorphism. More...
|
|
Perm< dim+1 > & | facetPerm (unsigned sourceSimp) |
| Returns a read-write reference to the permutation that is applied to the (dim + 1) facets of the given source simplex under this isomorphism. More...
|
|
Perm< dim+1 > | facetPerm (unsigned sourceSimp) const |
| Determines the permutation that is applied to the (dim + 1) facets of the given source simplex under this isomorphism. More...
|
|
FacetSpec< dim > | operator[] (const FacetSpec< dim > &source) const |
| Determines the image of the given source simplex facet under this isomorphism. More...
|
|
bool | isIdentity () const |
| Determines whether or not this is an identity isomorphism. More...
|
|
Triangulation< dim > * | apply (const Triangulation< dim > *original) const |
| Applies this isomorphism to the given triangulation, and returns the result as a new triangulation. More...
|
|
void | applyInPlace (Triangulation< dim > *tri) const |
| Applies this isomorphism to the given triangulation, modifying the given triangulation directly. More...
|
|
void | writeTextShort (std::ostream &out) const |
| Writes a short text representation of this object to the given output stream. More...
|
|
void | writeTextLong (std::ostream &out) const |
| Writes a detailed text representation of this object to the given output stream. More...
|
|
std::string | str () const |
| Returns a short text representation of this object. More...
|
|
std::string | utf8 () const |
| Returns a short text representation of this object using unicode characters. More...
|
|
std::string | detail () const |
| Returns a detailed text representation of this object. More...
|
|
template<int dim>
class regina::Isomorphism< dim >
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:
- If facet k of simplex S and facet k' of simplex S' are identified in T, then facet fS(k) of f(S) and facet fS'(k') of f(S') are identified in U. Moreover, their gluing is consistent with the facet/vertex permutations; that is, there is a commutative square involving the gluing maps in T and U and the permutations fS and fS'.
Isomorphisms can be boundary complete or boundary incomplete. A boundary complete isomorphism satisfies the additional condition:
- If facet x is a boundary facet of T then facet f(x) is a boundary facet of U.
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.
- Python:
- Python does not support templates. Instead this class can be used by appending the dimension as a suffix (e.g., Isomorphism2 and Isomorphism3 for dimensions 2 and 3).
- Template Parameters
-
dim | The dimension of the underlying triangulation. This must be between 2 and 15 inclusive. |
Applies this isomorphism to the given triangulation, and returns the result as a new triangulation.
An isomorphism represents a combinatorial map from a triangulation T to a triangulation U. This routine treats the given triangulation as the domain T, and returns the corresponding range U. The given triangulation T is not modified in any way.
In more detail: A new triangulation U is returned, so that this isomorphism represents a one-to-one, onto and boundary complete isomorphism from T to U. That is, T and U will be combinatorially identical triangulations, and this isomorphism describes the mapping from the simplices of T and their facets to the simplices of U and their facets.
The resulting triangulation U is newly created, and must be destroyed by the caller of this routine.
There are several preconditions to this routine. This routine does a small amount of sanity checking (and returns 0 if an error is detected), but it certainly does not check the full set of preconditions. It is up to the caller of this routine to verify that all of the following preconditions are met.
- Precondition
- The number of simplices in the given triangulation is precisely the number returned by size() for this isomorphism.
-
The simplex images are precisely 0,1,...,size()-1 in some order (i.e., this isomorphism does not represent a mapping from a smaller triangulation into a larger triangulation).
- Parameters
-
original | the triangulation to which this isomorphism should be applied. |
- Returns
- the new isomorphic triangulation, or 0 if a problem was encountered (i.e., an unmet precondition was noticed).
Applies this isomorphism to the given triangulation, modifying the given triangulation directly.
This is similar to apply(), except that instead of creating a new triangulation, the simplices and vertices of the given triangulation are modified in-place.
See apply() for further details on how this operation is performed.
As with apply(), there are several preconditions to this routine. This routine does a small amount of sanity checking (and returns without changes if an error is detected), but it certainly does not check the full set of preconditions. It is up to the caller of this routine to verify that all of the following preconditions are met.
- Precondition
- The number of simplices in the given triangulation is precisely the number returned by size() for this isomorphism.
-
The simplex images are precisely 0,1,...,size()-1 in some order (i.e., this isomorphism does not represent a mapping from a smaller triangulation into a larger triangulation).
- Parameters
-
tri | the triangulation to which this isomorphism should be applied. |