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... | |
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... | |
Static Public Member Functions | |
static Isomorphism< dim > | identity (unsigned nSimplices) |
Returns the identity isomorphism for the given number of simplices. More... | |
static Isomorphism< dim > | random (unsigned nSimplices, bool even=false) |
Returns a random isomorphism for the given number of simplices. More... | |
Protected Attributes | |
unsigned | nSimplices_ |
The number of simplices in the source triangulation. More... | |
int * | simpImage_ |
Stores the simplex of the destination triangulation that each simplex of the source triangulation maps to. More... | |
Perm< dim+1 > * | facetPerm_ |
The permutation applied to the facets of each source simplex. 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. |
|
inherited |
Returns a detailed text representation of this object.
This text may span many lines, and should provide the user with all the information they could want. It should be human-readable, should not contain extremely long lines (which cause problems for users reading the output in a terminal), and should end with a final newline. There are no restrictions on the underlying character set.
|
inherited |
Returns a short text representation of this object.
This text should be human-readable, should fit on a single line, and should not end with a newline. Where possible, it should use plain ASCII characters.
str()
.
|
inherited |
Returns a short text representation of this object using unicode characters.
Like str(), this text should be human-readable, should fit on a single line, and should not end with a newline. In addition, it may use unicode characters to make the output more pleasant to read. This string will be encoded in UTF-8.