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

Placeholder class that outlines the functions provided by FaceNumbering<dim, subdim>. More...

#include <triangulation/detail/facenumbering.h>

Inheritance diagram for regina::detail::FaceNumberingAPI< dim, subdim >:
regina::detail::FaceNumberingImpl< dim, subdim, codim > regina::FaceNumbering< dim, subdim > regina::detail::FaceBase< 3, 0 > regina::detail::FaceBase< 3, 1 > regina::detail::FaceBase< 3, 2 > regina::detail::FaceBase< 4, 0 > regina::detail::FaceBase< 4, 1 > regina::detail::FaceBase< 4, 2 > regina::detail::FaceBase< 4, 3 > regina::detail::FaceBase< dim, subdim >

Static Public Member Functions

static constexpr Perm< dim+1 > ordering (int face)
 Given a subdim-face number within a dim-dimensional simplex, returns the corresponding canonical ordering of the simplex vertices. More...
 
static constexpr int 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 constexpr bool containsVertex (int face, int 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 oppositeDim = (dim - 1 - subdim)
 The dimension of the faces opposite these in a top-dimensional simplex of a dim-dimensional triangulation. More...
 
static constexpr bool lexNumbering = (subdim <= oppositeDim)
 true if faces are numbered in lexicographical order according to their vertices, or false if faces are numbered in reverse lexicographical order. More...
 
static constexpr int nFaces = binomSmall(dim + 1, lexDim + 1)
 The total number of subdim-dimensional faces in each dim-dimensional simplex. More...
 

Static Protected Attributes

static constexpr int lexDim = (lexNumbering ? subdim : oppositeDim)
 Whichever of subdim or oppositeDim uses lexicographical face numbering. More...
 

Detailed Description

template<int dim, int subdim>
class regina::detail::FaceNumberingAPI< dim, subdim >

Placeholder class that outlines the functions provided by FaceNumbering<dim, subdim>.

This class exists mainly to help with documentation.

The class FaceNumbering<dim, subdim> details how the subdim-faces of a dim-dimensional simplex are numbered. Its implementation involves many template specialisations, and so this base class FaceNumberingAPI serves to put all the documentation and class constants in one place.

End users should access the numbering scheme through either FaceNumbering<dim, subdim> or its child class Face<dim, subdim>. There is no need to refer to FaceNumberingAPI directly.

The member functions described here are never implemented in the base class FaceNumberingAPI; instead they are redeclared and implemented in the various specialisations of the child class FaceNumberingImpl.

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.

Member Function Documentation

◆ containsVertex()

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

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 constexpr int regina::detail::FaceNumberingAPI< dim, subdim >::faceNumber ( Perm< dim+1 >  vertices)
staticconstexpr

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 constexpr Perm< dim+1 > regina::detail::FaceNumberingAPI< dim, subdim >::ordering ( int  face)
staticconstexpr

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

◆ lexDim

template<int dim, int subdim>
constexpr int regina::detail::FaceNumberingAPI< dim, subdim >::lexDim = (lexNumbering ? subdim : oppositeDim)
staticconstexprprotected

Whichever of subdim or oppositeDim uses lexicographical face numbering.

◆ lexNumbering

template<int dim, int subdim>
constexpr bool regina::detail::FaceNumberingAPI< dim, subdim >::lexNumbering = (subdim <= oppositeDim)
staticconstexpr

true if faces are numbered in lexicographical order according to their vertices, or false if faces are numbered in reverse lexicographical order.

◆ nFaces

template<int dim, int subdim>
constexpr int regina::detail::FaceNumberingAPI< dim, subdim >::nFaces = binomSmall(dim + 1, lexDim + 1)
staticconstexpr

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

◆ oppositeDim

template<int dim, int subdim>
constexpr int regina::detail::FaceNumberingAPI< dim, subdim >::oppositeDim = (dim - 1 - subdim)
staticconstexpr

The dimension of the faces opposite these in a top-dimensional simplex of a dim-dimensional triangulation.


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

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