Regina 7.3 Calculation Engine
Public Member Functions | List of all members
regina::FaceEmbedding< dim, subdim > Class Template Reference

Details how a subdim-face of a dim-dimensional triangulation appears within each top-dimensional simplex. More...

#include <triangulation/generic.h>

Inheritance diagram for regina::FaceEmbedding< dim, subdim >:
regina::detail::FaceEmbeddingBase< dim, subdim > regina::ShortOutput< FaceEmbeddingBase< dim, subdim > > regina::alias::SimplexVoid< FaceEmbeddingBase< dim, subdim >, dim > regina::alias::FaceNumber< FaceEmbeddingBase< dim, subdim >, subdim > regina::Output< FaceEmbeddingBase< dim, subdim >, false >

Public Member Functions

 FaceEmbedding ()=default
 Default constructor. More...
 
 FaceEmbedding (Simplex< dim > *simplex, Perm< dim+1 > vertices)
 Creates a new object containing the given data. More...
 
 FaceEmbedding (const FaceEmbedding &cloneMe)=default
 Creates a new copy of the given object. More...
 
FaceEmbeddingoperator= (const FaceEmbedding &cloneMe)=default
 Sets this to be a copy of the given object. More...
 
Simplex< dim > * simplex () const
 Returns the top-dimensional simplex in which the underlying subdim-face of the triangulation is contained. More...
 
int face () const
 Returns the corresponding face number of simplex(). More...
 
Perm< dim+1 > vertices () const
 Maps vertices (0,...,subdim) of the underlying subdim-face of the triangulation to the corresponding vertex numbers of simplex(). More...
 
bool operator== (const FaceEmbeddingBase &rhs) const
 Tests whether this and the given object are identical. More...
 
bool operator!= (const FaceEmbeddingBase &rhs) const
 Tests whether this and the given object are not identical. 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
 A default implementation for detailed output. 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...
 

Detailed Description

template<int dim, int subdim>
class regina::FaceEmbedding< dim, subdim >

Details how a subdim-face of a dim-dimensional triangulation appears within each top-dimensional simplex.

For small-dimensional faces, this class is typically described using dimension-specific type aliases: VertexEmbedding<dim>, EdgeEmbedding<dim>, TriangleEmbedding<dim>, TetrahedronEmbedding<dim> and PentachoronEmbedding<dim> refer to the cases subdim = 0, 1, 2, 3 and 4 respectively.

For a dim-dimensional triangulation T, each subdim-face F typically belongs to many top-dimensional simplices of T, and therefore has many associated FaceEmbedding objects. These individual FaceEmbedding objects correspond to the top-dimensional simplices of the link of F (which is a (dim - subdim - 1)-dimensional triangulation).

As of Regina 7.0, a FaceEmbedding can happily outlive its face - even if the underlying Face object is destroyed (e.g., because the triangulation changed), if you made a local copy of a FaceEmbedding beforehand then its simplex(), face() and vertices() routines will continue to return the same values as they did before, back when the underlying Face still existed. A FaceEmbedding cannot, however, outlive its top-dimensional simplex, because internally a FaceEmbedding references the Simplex object in which it lives (i.e., it does not just store an integer simplex index).

If dim is one of Regina's standard dimensions, then this template is specialised to offer additional dimension-specific aliases. In order to use these specialised classes, you will need to include the corresponding triangulation headers (e.g., triangulation/dim2.h for dim = 2, or triangulation/dim3.h for dim = 3).

These objects are small enough to pass by value and swap with std::swap(), with no need for any specialised move operations or swap functions.

Python
Python does not support templates. Instead this class can be used by appending dimensions dim and subdim as suffices (e.g., FaceEmbedding2_1 and FaceEmbedding3_0 for the two examples above).
Template Parameters
dimthe dimension of the underlying triangulation. This must be between 2 and 15 inclusive.
subdimthe dimension of the faces of the underlying triangulation. This must be between 0 and dim-1 inclusive.

Constructor & Destructor Documentation

◆ FaceEmbedding() [1/3]

template<int dim, int subdim>
regina::FaceEmbedding< dim, subdim >::FaceEmbedding ( )
default

Default constructor.

This object is unusable until it has some data assigned to it using operator =.

Python
Not present. This is because the C++ assignment operators are not accessible to Python.

◆ FaceEmbedding() [2/3]

template<int dim, int subdim>
regina::FaceEmbedding< dim, subdim >::FaceEmbedding ( Simplex< dim > *  simplex,
Perm< dim+1 >  vertices 
)
inline

Creates a new object containing the given data.

Parameters
simplexthe top-dimensional simplex in which the underlying subdim-face of the triangulation is contained.
verticesa mapping from the vertices of the underlying subdim-face of the triangulation to the corresponding vertex numbers of simplex. See FaceEmbeddingBase::vertices() for details of how this permutation should be structured.

◆ FaceEmbedding() [3/3]

template<int dim, int subdim>
regina::FaceEmbedding< dim, subdim >::FaceEmbedding ( const FaceEmbedding< dim, subdim > &  cloneMe)
default

Creates a new copy of the given object.

Parameters
cloneMethe object to copy.

Member Function Documentation

◆ detail()

std::string regina::Output< FaceEmbeddingBase< dim, subdim > , supportsUtf8 >::detail ( ) const
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.

Returns
a detailed text representation of this object.

◆ face()

template<int dim, int subdim>
int regina::detail::FaceEmbeddingBase< dim, subdim >::face
inlineinherited

Returns the corresponding face number of simplex().

This identifies which face of the top-dimensional simplex simplex() refers to the underlying subdim-face of the triangulation.

If the face dimension subdim is at most 4, then you can also access this face number through a dimension-specific alias (e.g., edge() in the case subdim = 1).

Returns
the corresponding face number of the top-dimensional simplex. This will be between 0 and (dim+1 choose subdim+1)-1 inclusive.

◆ operator!=()

template<int dim, int subdim>
bool regina::detail::FaceEmbeddingBase< dim, subdim >::operator!= ( const FaceEmbeddingBase< dim, subdim > &  rhs) const
inlineinherited

Tests whether this and the given object are not identical.

Here identical means that two FaceEmbedding objects refer to the same-numbered face of the same-numbered simplex, and have the same embedding permutations as returned by vertices().

In particular, since this test only examines face/simplex/vertex numbers (not object pointers), it is meaningful to compare two FaceEmbedding objects from different underlying triangulations.

Warning
The meaning of this comparison changed in Regina 7.0. In older versions of Regina, to compare as equal, two FaceEmbedding objects (i) had to be faces of the same Simplex object (a stronger requirement that effectively restricted this test to faces of the same triangulation); but also (ii) only had to refer to the same-numbered face, not use the same full embedding permutations (a weaker requirement that nowadays would incur an unacceptable performance cost).
Parameters
rhsthe object to compare with this.
Returns
true if and only if both object are identical.

◆ operator=()

template<int dim, int subdim>
FaceEmbedding & regina::FaceEmbedding< dim, subdim >::operator= ( const FaceEmbedding< dim, subdim > &  cloneMe)
default

Sets this to be a copy of the given object.

Parameters
cloneMethe object to copy.

◆ operator==()

template<int dim, int subdim>
bool regina::detail::FaceEmbeddingBase< dim, subdim >::operator== ( const FaceEmbeddingBase< dim, subdim > &  rhs) const
inlineinherited

Tests whether this and the given object are identical.

Here identical means that two FaceEmbedding objects refer to the same-numbered face of the same-numbered simplex, and have the same embedding permutations as returned by vertices().

In particular, since this test only examines face/simplex/vertex numbers (not object pointers), it is meaningful to compare two FaceEmbedding objects from different underlying triangulations.

Warning
The meaning of this comparison changed in Regina 7.0. In older versions of Regina, to compare as equal, two FaceEmbedding objects (i) had to be faces of the same Simplex object (a stronger requirement that effectively restricted this test to faces of the same triangulation); but also (ii) only had to refer to the same-numbered face, not use the same full embedding permutations (a weaker requirement that nowadays would incur an unacceptable performance cost).
Parameters
rhsthe object to compare with this.
Returns
true if and only if both object are identical.

◆ simplex()

template<int dim, int subdim>
Simplex< dim > * regina::detail::FaceEmbeddingBase< dim, subdim >::simplex
inlineinherited

Returns the top-dimensional simplex in which the underlying subdim-face of the triangulation is contained.

If the triangulation dimension dim is at most 4, then you can also access this simplex through a dimension-specific alias (e.g., tetrahedron() in the case dim = 3).

Returns
the top-dimensional simplex.

◆ str()

std::string regina::Output< FaceEmbeddingBase< dim, subdim > , supportsUtf8 >::str ( ) const
inherited

Returns a short text representation of this object.

This text should be human-readable, should use plain ASCII characters where possible, and should not contain any newlines.

Within these limits, this short text ouptut should be as information-rich as possible, since in most cases this forms the basis for the Python __str__() and __repr__() functions.

Python
The Python "stringification" function __str__() will use precisely this function, and for most classes the Python __repr__() function will incorporate this into its output.
Returns
a short text representation of this object.

◆ utf8()

std::string regina::Output< FaceEmbeddingBase< dim, subdim > , supportsUtf8 >::utf8 ( ) const
inherited

Returns a short text representation of this object using unicode characters.

Like str(), this text should be human-readable, should not contain any newlines, and (within these constraints) should be as information-rich as is reasonable.

Unlike str(), this function may use unicode characters to make the output more pleasant to read. The string that is returned will be encoded in UTF-8.

Returns
a short text representation of this object.

◆ vertices()

template<int dim, int subdim>
Perm< dim+1 > regina::detail::FaceEmbeddingBase< dim, subdim >::vertices
inlineinherited

Maps vertices (0,...,subdim) of the underlying subdim-face of the triangulation to the corresponding vertex numbers of simplex().

If the link of the underlying subdim-face is orientable, then this permutation also maps (subdim+1, ..., dim) to the remaining vertex numbers of simplex() in a manner that preserves orientation as you walk through the many different FaceEmbedding objects for the same underlying subdim-face.

This routine returns the same permutation as simplex().faceMapping<subdim>(face()) (and this routine is faster if you already have a FaceEmbedding). See Simplex<dim>::faceMapping() for details.

Returns
a mapping from the vertices of the underlying subdim-face to the corresponding vertices of simplex().

◆ writeTextLong()

void regina::ShortOutput< FaceEmbeddingBase< dim, subdim > , false >::writeTextLong ( std::ostream &  out) const
inlineinherited

A default implementation for detailed output.

This routine simply calls T::writeTextShort() and appends a final newline.

Python
Not present. Instead you can call detail() from the subclass T, which returns this output as a string.
Parameters
outthe output stream to which to write.

◆ writeTextShort()

template<int dim, int subdim>
void regina::detail::FaceEmbeddingBase< dim, subdim >::writeTextShort ( std::ostream &  out) const
inlineinherited

Writes a short text representation of this object to the given output stream.

Python
Not present. Use str() instead.
Parameters
outthe output stream to which to write.

The documentation for this class was generated from the following files:

Copyright © 1999-2023, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).