Regina 7.4 Calculation Engine
Triangulations

Triangulations of manifolds in all supported dimensions. More...

Classes

class  regina::Cut
 A cut that separates a triangulation, facet pairing or link diagram into two pieces. More...
 
class  regina::HomologicalData
 A specialised class that computes a large amount of detailed homological information for a 3-manifold triangulation. More...
 
class  regina::Example< int >
 This class offers static routines for constructing a variety of sample dim-dimensional triangulations. More...
 
class  regina::Example< 2 >
 Offers routines for constructing a variety of sample 2-dimensional triangulations. More...
 
class  regina::Example< 3 >
 Offers routines for constructing a variety of sample 3-dimensional triangulations. More...
 
class  regina::Example< 4 >
 Offers routines for constructing a variety of sample 4-dimensional triangulations. More...
 
class  regina::FaceNumbering< int, int >
 Specifies how subdim-faces are numbered within a dim-dimensional simplex. More...
 
class  regina::FacePair
 Represents a pair of tetrahedron face numbers. More...
 
class  regina::FacetPairing< 3 >
 Represents the dual graph of a 3-manifold triangulation. More...
 
struct  regina::FacetSpec< dim >
 A lightweight class used to refer to a particular facet of a particular top-dimensional simplex in a dim-dimensional triangulation. More...
 
class  regina::IsoSigPrintable< dim, supportLocks >
 The default encoding to use for isomorphism signatures. More...
 
class  regina::IsoSigClassic< dim >
 The default signature type to use for isomorphism signatures. More...
 
class  regina::IsoSigDegrees< dim, subdim >
 Defines an alternate type of isomorphism signature based on degree sequences of subdim-faces. More...
 

Typedefs

template<int dim>
using regina::IsoSigPrintableLockFree = IsoSigPrintable<dim, false>
 An encoding for isomorphism signatures that ignores simplex and/or facet locks.
 
template<int dim>
using regina::IsoSigEdgeDegrees = IsoSigDegrees<dim, 1>
 Defines an alternate type of isomorphism signature based on edge degree sequences.
 
template<int dim>
using regina::IsoSigRidgeDegrees = IsoSigDegrees<dim, dim - 2>
 Defines an alternate type of isomorphism signature based on degree sequences of (dim-2)-faces.
 

Enumerations

enum class  regina::TriangleType {
  regina::TriangleType::Unknown = 0 , regina::TriangleType::Triangle = 1 , regina::TriangleType::Scarf = 2 , regina::TriangleType::Parachute = 3 ,
  regina::TriangleType::Cone = 4 , regina::TriangleType::Mobius = 5 , regina::TriangleType::Horn = 6 , regina::TriangleType::DunceHat = 7 ,
  regina::TriangleType::L31 = 8
}
 The combinatorial type of a triangle, which indicates how the vertices and edges of the triangle are identified together. More...
 

Functions

void regina::swap (Cut &a, Cut &b) noexcept
 Swaps the contents of the given cuts.
 
void regina::swap (HomologicalData &a, HomologicalData &b) noexcept
 Swaps the contents of the two given HomologicalData objects.
 
template<int dim>
constexpr int regina::faceOppositeEdge (int i, int j)
 Returns the (dim-2)-face number that is opposite the edge joining vertices i and j in a dim-dimensional simplex.
 
std::ostream & regina::operator<< (std::ostream &out, const FacePair &pair)
 Writes the given face pair to the given output stream.
 
template<int dim>
std::ostream & regina::operator<< (std::ostream &out, const FacetSpec< dim > &spec)
 Writes the given facet specifier to the given output stream.
 

Detailed Description

Triangulations of manifolds in all supported dimensions.

Typedef Documentation

◆ IsoSigEdgeDegrees

template<int dim>
using regina::IsoSigEdgeDegrees = IsoSigDegrees<dim, 1>

Defines an alternate type of isomorphism signature based on edge degree sequences.

Python
Python does not support templates. You can access these classes by appending the appending the dimension as a suffix (e.g., use IsoSigEdgeDegrees3 to use edge degrees in 3-manifold triangulations).

◆ IsoSigPrintableLockFree

template<int dim>
using regina::IsoSigPrintableLockFree = IsoSigPrintable<dim, false>

An encoding for isomorphism signatures that ignores simplex and/or facet locks.

This is exactly the same as the printable encoding that was used with Regina 7.3.x and earlier, before locks were implemented. Like IsoSigPrintable, this encoding represents an isomorphism signature as a std::string using only printable characters from the 7-bit ASCII range.

This class is designed to be used as a template parameter for Triangulation<dim>::isoSig() and Triangulation<dim>::isoSigDetail(). Typical users would have no need to create objects of this class or call any of its functions directly.

Python
Python does not support templates. Instead this class can be used by appending the dimension as a suffix (e.g., IsoSigPrintableLockFree2 and IsoSigPrintableLockFree3 for dimensions 2 and 3).

◆ IsoSigRidgeDegrees

template<int dim>
using regina::IsoSigRidgeDegrees = IsoSigDegrees<dim, dim - 2>

Defines an alternate type of isomorphism signature based on degree sequences of (dim-2)-faces.

Python
Python does not support templates. You can access these classes by appending the appending the dimension as a suffix (e.g., use IsoSigRidgeDegrees4 to use triangle degrees in 4-manifold triangulations).

Enumeration Type Documentation

◆ TriangleType

enum class regina::TriangleType
strong

The combinatorial type of a triangle, which indicates how the vertices and edges of the triangle are identified together.

Here the vertices of the triangle are considered unlabelled (so a relabelling will not change the combinatorial type).

This is the result of calling f.triangleType(), where f is a 2-face within a triangulation of any dimension ≥ 3.

Enumerator
Unknown 

Indicates that the triangle type has not yet been determined.

Triangle 

Specifies a triangle with no identified vertices or edges.

Scarf 

Specifies a triangle with two identified vertices, and no other edge or vertex identifications.

Parachute 

Specifies a triangle with three identified vertices, but no edge identifications.

Cone 

Specifies a triangle with two edges identified to form a cone.

The apex of the cone is not identified with the other two vertices, and the base of the cone is not identified with the other two edges.

Mobius 

Specifies a triangle with two edges identified to form a Möbius band.

The boundary of the Möbius band is not identified with the other two edges.

Horn 

Specifies a triangle with two edges identified to form a cone, and with all three vertices identified.

The base of the cone is not identified with the other two edges.

DunceHat 

Specifies a triangle with all three edges identified, some via orientation-preserving and some via orientation-reversing gluings.

L31 

Specifies a triangle with all three edges identified using orientation-reversing gluings.

Note that this forms a spine for the lens space L(3,1).

Function Documentation

◆ faceOppositeEdge()

template<int dim>
int regina::faceOppositeEdge ( int i,
int j )
inlineconstexpr

Returns the (dim-2)-face number that is opposite the edge joining vertices i and j in a dim-dimensional simplex.

This function is offered because its implementation is faster than working through the FaceNumbering class.

The arguments i and j do not need to appear in ascending order.

Python
Python does not support templates. Instead, Python users should call this function in the form faceOppositeEdge(dim, i, j); that is, the template parameter dim becomes the first argument of the function.
Template Parameters
dimthe dimension of simplex that we are working with. This must be between 2 and 15 inclusive.
Parameters
ithe first vertex of an edge in a dim-dimensional simplex. This must be between 0 and dim inclusive.
jthe second vertex of an edge in a dim-dimensional simplex. This must be between 0 and dim inclusive, and must be different from i.
Returns
the number of the (dim-2)-face opposite the given edge.

◆ operator<<() [1/2]

std::ostream & regina::operator<< ( std::ostream & out,
const FacePair & pair )
inline

Writes the given face pair to the given output stream.

Parameters
outthe output stream to which to write.
pairthe face pair to write.
Returns
a reference to out.

◆ operator<<() [2/2]

template<int dim>
std::ostream & regina::operator<< ( std::ostream & out,
const FacetSpec< dim > & spec )
inline

Writes the given facet specifier to the given output stream.

Parameters
outthe output stream to which to write.
specthe specifier to write.
Returns
a reference to out.

◆ swap() [1/2]

void regina::swap ( Cut & a,
Cut & b )
inlinenoexcept

Swaps the contents of the given cuts.

This global routine simply calls Cut::swap(); it is provided so that Cut meets the C++ Swappable requirements.

Parameters
athe first cut whose contents should be swapped.
bthe second cut whose contents should be swapped.

◆ swap() [2/2]

void regina::swap ( HomologicalData & a,
HomologicalData & b )
inlinenoexcept

Swaps the contents of the two given HomologicalData objects.

This global routine simply calls HomologicalData::swap(); it is provided so that HomologicalData meets the C++ Swappable requirements.

Warning
Although this operation is constant time, the HomologicalData class contains an enormous amount of data spread across many different member variables, and so this should really be considered "expensive constant time". You should still work to avoid swapping (or moving, and certainly copying) HomologicalData objects where possible.
Parameters
athe first object whose contents should be swapped.
bthe second object whose contents should be swapped.