|
void | writeTextShort (std::ostream &out) const |
| Writes a short text representation of this face to the given output stream. More...
|
|
void | writeTextLong (std::ostream &out) const |
| Writes a detailed text representation of this face to the given output stream. More...
|
|
size_t | index () const |
| Returns the index of this face within the underlying triangulation. More...
|
|
Triangulation< dim > * | triangulation () const |
| Returns the triangulation to which this face belongs. More...
|
|
REGINA_DEPRECATED Triangulation< dim > * | getTriangulation () const |
| Deprecated routine that returns the triangulation to which this face belongs. More...
|
|
Component< dim > * | component () const |
| Returns the component of the triangulation to which this face belongs. More...
|
|
REGINA_DEPRECATED Component< dim > * | getComponent () const |
| Deprecated routine that returns the component of the triangulation to which this face belongs. More...
|
|
template<int lowerdim> |
Face< dim, lowerdim > * | face (int face) const |
| Returns the lowerdim-face of the underlying triangulation that appears as the given lowerdim-dimensional subface of this face. More...
|
|
template<int lowerdim> |
NPerm< dim+1 > | faceMapping (int face) const |
| Examines the given lowerdim-dimensional subface of this face, and returns the mapping between the underlying lowerdim-face of the triangulation and the individual vertices of this face. More...
|
|
size_t | degree () const |
| Returns the degree of this face. More...
|
|
REGINA_DEPRECATED size_t | getDegree () const |
| Deprecated routine that returns the degree of this face. More...
|
|
const FaceEmbedding< dim, dim - codim > & | embedding (size_t index) const |
| Returns one of the ways in which this face appears within a top-dimensional simplex of the underlying triangluation. More...
|
|
REGINA_DEPRECATED const FaceEmbedding< dim, dim - codim > & | getEmbedding (size_t index) const |
| Deprecated routine that returns one of the ways in which this face appears within a top-dimensional simplex of the underlying triangulation. More...
|
|
std::vector< FaceEmbedding< dim, dim - codim > >::const_iterator | begin () const |
| A begin function for iterating through all appearances of this face within the various top-dimensional simplices of the underlying triangulation. More...
|
|
std::vector< FaceEmbedding< dim, dim - codim > >::const_iterator | end () const |
| An end function for iterating through all appearances of this face within the various top-dimensional simplices of the underlying triangulation. More...
|
|
const FaceEmbedding< dim, dim - codim > & | front () const |
| Returns the first appearance of this face within a top-dimensional simplex of the underlying triangluation. More...
|
|
const FaceEmbedding< dim, dim - codim > & | back () const |
| Returns the last appearance of this face within a top-dimensional simplex of the underlying triangluation. More...
|
|
bool | isValid () const |
| Determines if this face is valid. More...
|
|
bool | hasBadIdentification () const |
| Determines if this face is identified with itself under a non-identity permutation. More...
|
|
bool | hasBadLink () const |
| Determines if this face does not have an appropriate link. More...
|
|
bool | isLinkOrientable () const |
| Determines if the link of this face is orientable. More...
|
|
size_t | markedIndex () const |
| Returns the index at which this object is stored in an NMarkedVector. 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...
|
|
REGINA_DEPRECATED std::string | toString () const |
| A deprecated alias for str(). More...
|
|
REGINA_DEPRECATED std::string | toStringLong () const |
| A deprecated alias for detail(). More...
|
|
template<int dim, int subdim>
class regina::Face< dim, subdim >
Represents a subdim-face in the skeleton of a dim-dimensional triangulation.
A given subdim-face F of the triangulation may appear many times within the various top-dimensional simplices of the underlying triangulation. As an extreme example, in a 1-vertex triangulation of a 3-manifold, the single vertex makes 4n such appearances, where n is the total number of tetrahedra.
Each such appearance is described by a single FaceEmbedding object. You can iterate through these appearances using begin() and end(), or using a C++11 range-based for
loop: for (auto& emb : F) { ... }
. You can count these appearances by calling degree(), and you can also examine them using routines such as front(), back() and embedding().
- Warning
- Face objects are highly temporary: whenever a triangulation changes, all its face objects will be deleted and new ones will be created in their place.
If dim is one of Regina's standard dimensions, then this template is specialised to offer additional functionality. In order to use these specialised classes, you will need to include the corresponding headers (e.g., dim2/dim2edge.h for (dim, subdim) = (2, 1), or triangulation/nvertex.h for (dim, subdim) = (3, 0)). For convenience, there are typedefs for these specialised classes (such as Dim2Edge and NVertex respectively).
- Python:
- Python does not support templates. Instead this class can be used by appending dimensions dim and subdim as suffices (e.g., Face2_1 and Face3_0 for the two examples above). The typedefs mentioned above for standard dimensions (e.g., Dim2Edge and NVertex) are also available.
- Template Parameters
-
dim | the dimension of the underlying triangulation. This must be between 2 and 15 inclusive. |
subdim | the dimension of the faces that this class represents. This must be between 0 and dim-1 inclusive. |
template<int dim, int subdim>
template<int lowerdim>
Returns the lowerdim-face of the underlying triangulation that appears as the given lowerdim-dimensional subface of this face.
The argument face must represent a lowerdim-face number within a subdim-simplex. This lowerdim-face number will be interpreted with respect to the inherent labelling (0, ..., subdim) of the vertices of this subdim-face. See FaceEmbedding<dim, subdim>::vertices() for details on how these map to the vertex numbers of the dim-dimensional simplices that contain this face in the overall triangulation.
See FaceNumbering<subdim, lowerdim> for the conventions of how lowerdim-faces are numbered within a subdim-simplex.
- Python:
- Python does not support templates. Instead, Python users should call this function in the form
face(lowerdim, face)
; that is, the template parameter lowerdim becomes the first argument of the function.
- Parameters
-
face | the lowerdim-face of this subdim-face to examine. This should be between 0 and (subdim+1 choose lowerdim+1)-1 inclusive. |
- Returns
- the corresponding lowerdim-face of the triangulation.
template<int dim, int subdim>
template<int lowerdim>
Examines the given lowerdim-dimensional subface of this face, and returns the mapping between the underlying lowerdim-face of the triangulation and the individual vertices of this face.
The argument face must represent a lowerdim-face number within a subdim-simplex. This lowerdim-face number will be interpreted with respect to the inherent labelling (0, ..., subdim) of the vertices of this subdim-face. See FaceEmbedding<dim, subdim>::vertices() for details on how these map to the vertex numbers of the dim-dimensional simplices that contain this face in the overall triangulation.
Let F denote this subdim-face of the triangulation, and let L denote the lowerdim-face of the triangulation that corresponds to the given subface of F. Then the permutation returned by this routine maps the vertex numbers (0, ..., lowerdim) of L to the corresponding vertex numbers of F. This is with respect to the inherent labellings (0, ..., lowerdim) and (0, ..., subdim) of the vertices of L and F respectively.
In particular, if this routine returns the permutation p, then the images p[0,...,lowerdim] will be some permutation of the vertices Face<subdim, lowerdim>::ordering(face)[0,...,lowerdim].
This routine differs from Simplex<dim>::faceMapping<lowerdim>() in how it handles the images of (lowerdim+1, ..., dim):
- This routine will map (lowerdim+1, ..., subdim) to the remaining vertices of this face in an arbitrary order, and will map (subdim+1, ..., dim) to (subdim+1, ..., dim) again in an arbitrary order.
- In contrast, Simplex<dim>::faceMapping<lowerdim>() chooses the images of (lowerdim+1, ..., dim) to satisfy an additional orientability constraint.
See FaceNumbering<subdim, lowerdim> for the conventions of how lowerdim-faces are numbered within a subdim-simplex.
- Python:
- Python does not support templates. Instead, Python users should call this function in the form
faceMapping(lowerdim, face)
; that is, the template parameter lowerdim becomes the first argument of the function.
- Parameters
-
face | the lowerdim-face of this subdim-face to examine. This should be between 0 and (subdim+1 choose lowerdim+1)-1 inclusive. |
- Returns
- a mapping from the vertices of the underlying lowerdim-face of the triangulation to the vertices of this subdim-face.
Determines if this face is valid.
There are several conditions that might make a subdim-face of a dim-dimensional triangulation invalid:
- if the face is identified with itself under a non-identity permutation (e.g., an edge is identified with itself in reverse, or a triangle is identified with itself under a rotation);
- if the face does not have an appropriate link. Here the meaning of "appropriate" depends upon the type of face:
- for a face that belongs to some boundary facet(s) of the triangulation, its link must be a topological ball;
- for a vertex that does not belong to any boundary facets, its link must be a closed (dim - 1)-manifold;
- for a (subdim ≥ 1)-face that does not belong to any boundary facets, its link must be a topological sphere.
Condition (1) is tested for all dimensions subdim and dim. Condition (2) is more difficult, since it relies on undecidable problems. As a result, (2) is only tested when dim is one of Regina's standard dimensions.
If this face is invalid, then it is possible to find out why. In non-standard dimensions, this must mean that the face fails condition (1) above. In standard dimensions, you can call the functions hasBadIdentification() and/or hasBadLink() to determine whether the failure is due to conditions (1) or (2) respectively.
- Returns
- for standard dimensions dim, returns
true
if and only if this face is valid according to both conditions (1) and (2) above; for non-standard dimensions dim, returns true
if and only if this face is valid according to condition (1).