template<int dim, int subdim, int codim = dim - subdim - 1>
class regina::detail::FaceNumberingImpl< dim, subdim, codim >
Implementation details for numbering subdim-faces of a dim-dimensional simplex.
This numbering scheme can be accessed via FaceNumbering<dim, subdim> or Face<dim, subdim>, both of which use this as a base class. End users should not need to refer to FaceNumberingImpl directly.
See the FaceNumbering template class notes for further information, including details of how the face numbering scheme works.
- Python
- This base class is not present, and neither is FaceNumbering<dim, subdim>. Python users can access these routines through the class Face<dim, subdim> (which in Python becomes Facedim_subdim, or one of the type aliases such as Vertex3, Edge2 and so on).
- Template Parameters
-
dim | the dimension of the simplex whose faces are being numbered. This must be between 1 and 15 inclusive. |
subdim | the dimension of the faces being numbered. This must be between 0 and dim-1 inclusive. |
codim | the codimension (dim-subdim-1) of the faces being numbered. Ideally this would be specified directly as dim-subdim-1 in the partial template specialisation, and this should be legal according to CWG1315; however, it fails to build under some versions of gcc (e.g., 10.2.0). |
template<int dim, int subdim>
Identifies which subdim-face in a dim-dimensional simplex is represented by the first (subdim + 1) elements of the given permutation.
In other words, this routine identifies which subdim-face number within a dim-dimensional simplex spans vertices vertices[0, ..., subdim]
.
- Parameters
-
vertices | a permutation whose first (subdim + 1) elements represent some vertex numbers in a dim-simplex. |
- Returns
- the corresponding subdim-face number in the dim-simplex. This will be between 0 and (dim+1 choose subdim+1)-1 inclusive.
template<int dim, int subdim>
Given a subdim-face number within a dim-dimensional simplex, returns the corresponding canonical ordering of the simplex vertices.
If this canonical ordering is c, then c[0,...,subdim] will be the vertices of the given face in increasing numerical order. That is, c[0] < ... < c[subdim]. The remaining images c[(subdim + 1),...,dim] will be ordered arbitrarily.
Note that this is not the same permutation as returned by Simplex<dim>::faceMapping<subdim>():
- ordering() is a static function, which returns the same permutation for the same face number, regardless of which dim-simplex we are looking at. The images of 0,...,subdim will always appear in increasing order, and the images of (subdim + 1),...,dim will be arbitrary.
- faceMapping() examines the underlying face F of the triangulation and, across all appearances of F in different dim-simplices: (i) chooses the images of 0,...,subdim to map to the same respective vertices of F; and (ii) chooses the images of (subdim + 1),...,dim to maintain a "consistent
orientation" constraint.
- Parameters
-
face | identifies which subdim-face of a dim-dimensional simplex to query. This must be between 0 and (dim+1 choose subdim+1)-1 inclusive. |
- Returns
- the corresponding canonical ordering of the simplex vertices.