Regina Calculation Engine
Static Public Member Functions | Static Public Attributes | List of all members
regina::detail::FaceNumberingImpl< dim, subdim, lex > Class Template Reference


Implementation details for numbering subdim-faces of a dim-dimensional simplex. More...

#include <triangulation/detail/facenumbering.h>

Inheritance diagram for regina::detail::FaceNumberingImpl< dim, subdim, lex >:
regina::detail::FaceNumberingAPI< dim, subdim >

Static Public Member Functions

static Perm< dim+1 > ordering (unsigned face)
 Given a subdim-face number within a dim-dimensional simplex, returns the corresponding canonical ordering of the simplex vertices. More...
 
static unsigned faceNumber (Perm< dim+1 > vertices)
 Identifies which subdim-face in a dim-dimensional simplex is represented by the first (subdim + 1) elements of the given permutation. More...
 
static bool containsVertex (unsigned face, unsigned vertex)
 Tests whether the given subdim-face of a dim-dimensional simplex contains the given vertex of the simplex. More...
 

Static Public Attributes

static constexpr int nFaces
 The total number of subdim-dimensional faces in each dim-dimensional simplex. More...
 

Detailed Description

template<int dim, int subdim, bool lex>
class regina::detail::FaceNumberingImpl< dim, subdim, lex >


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
dimthe dimension of the simplex whose faces are being numbered. This must be between 1 and 15 inclusive.
subdimthe dimension of the faces being numbered. This must be between 0 and dim-1 inclusive.
lextrue if faces are numbered in lexicographical order according to their vertices (the scheme for low-dimensional faces), or false if faces are numbered in reverse lexicographical order (the scheme for high-dimensional faces). The value of this parameter is forced by dim and subdim; its purpose is to help with template specialisations.

Member Function Documentation

◆ containsVertex()

template<int dim, int subdim>
static bool regina::detail::FaceNumberingAPI< dim, subdim >::containsVertex ( unsigned  face,
unsigned  vertex 
)
staticinherited

Tests whether the given subdim-face of a dim-dimensional simplex contains the given vertex of the simplex.

Parameters
facea subdim-face number in a dim-simplex; this must be between 0 and (dim+1 choose subdim+1)-1 inclusive.
vertexa vertex number in a dim-simplex; this must be between 0 and dim inclusive.
Returns
true if and only if the given subdim-face contains the given vertex.

◆ faceNumber()

template<int dim, int subdim>
static unsigned regina::detail::FaceNumberingAPI< dim, subdim >::faceNumber ( Perm< dim+1 >  vertices)
staticinherited

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
verticesa 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.

◆ ordering()

template<int dim, int subdim>
static Perm<dim + 1> regina::detail::FaceNumberingAPI< dim, subdim >::ordering ( unsigned  face)
staticinherited

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
faceidentifies 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.

Member Data Documentation

◆ nFaces

template<int dim, int subdim, bool lex>
constexpr int regina::detail::FaceNumberingImpl< dim, subdim, lex >::nFaces
static
Initial value:
=
FaceNumberingImpl<dim - 1, subdim - 1, lex>::nFaces +
FaceNumberingImpl<dim - 1, subdim,
(dim >= 2 * (subdim + 1))>::nFaces

The total number of subdim-dimensional faces in each dim-dimensional simplex.


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

Copyright © 1999-2021, 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).