template<int dim, int subdim>
class regina::FaceNumbering< dim, subdim >
Specifies how subdim-faces are numbered within a dim-dimensional simplex.
Regina uses the following general scheme for numbering faces:
- For low-dimensional faces (subdim < dim / 2), faces are numbered in lexicographical order according to their vertices. For example, in a 3-dimensional triangulation, edges 0,...,5 contain vertices 01, 02, 03, 12, 13, 23 respectively.
- For high-dimensional faces (subdim ≥ dim / 2), faces are numbered in reverse lexicographical order according to their vertices. For example, in a 3-dimensional triangulation, triangles 0,...,3 contain vertices 123, 023, 013, 012 respectively.
- As a consequence, unless subdim = (dim-1)/2, we always have subdim-face number i opposite (dim-1-subdim)-face number i. For the special "halfway case" subdim = (dim-1)/2, where each subdim-face is opposite another subdim-face, we always have subdim-face number i opposite subdim-face number (nFaces-1-i).
Every class Face<dim, subdim> inherits from this class, which means you can access these routines as Face<dim, subdim>::ordering(), Face<dim, subdim>::faceNumber(), and so on.
An advantage of referring to FaceNumbering<dim, subdim> directly (as opposed to Face<dim, subdim>) is that its header is lightweight: it does not pull in the large and complex headers required by Face<dim, subdim>.
This class is specialised (and optimised) in Regina's standard dimensions.
- Python
- This class is not available in Python. However, all of its routines can be accessed through 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 we are numbering. This must be between 1 and 15 inclusive. |
subdim | the dimension of the faces that we are numbering. This must be between 0 and dim-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.