T x I
(the product of the torus and the interval).
More...
#include <ntxicore.h>
Inheritance diagram for regina::NTxICore:
Public Member Functions | |
const NTriangulation & | core () const |
Returns a full copy of the T x I triangulation that this object describes. | |
unsigned | bdryTet (unsigned whichBdry, unsigned whichFace) const |
Determines which tetrahedron provides the requested boundary face. | |
NPerm | bdryRoles (unsigned whichBdry, unsigned whichFace) const |
Describes which tetrahedron vertices play which roles in the upper and lower boundary faces. | |
const NMatrix2 & | bdryReln (unsigned whichBdry) const |
Returns a 2-by-2 matrix describing the alpha and beta curves on a torus boundary in terms of specific tetrahedron edges. | |
const NMatrix2 & | parallelReln () const |
Returns a 2-by-2 matrix describing the parallel relationship between the upper and lower boundary curves. | |
std::string | getName () const |
Returns the name of this specific triangulation of T x I as a human-readable string. | |
std::string | getTeXName () const |
Returns the name of this specific triangulation of T x I in TeX format. | |
virtual std::ostream & | writeName (std::ostream &out) const =0 |
Writes the name of this specific triangulation of T x I to the given output stream. | |
virtual std::ostream & | writeTeXName (std::ostream &out) const =0 |
Writes the name of this specific triangulation of T x I in TeX format to the given output stream. | |
void | writeTextShort (std::ostream &out) const |
Writes this object in short text format to the given output stream. | |
void | writeTextLong (std::ostream &out) const |
Writes this object in long text format to the given output stream. | |
Protected Member Functions | |
NTxICore () | |
Default constructor that performs no initialisation. | |
Protected Attributes | |
NTriangulation | core_ |
A full copy of the T x I triangulation that is described. | |
unsigned | bdryTet_ [2][2] |
The tetrahedra that provide the upper and lower boundary faces. | |
NPerm | bdryRoles_ [2][2] |
Describes which tetrahedron vertices play which roles in the upper and lower boundary faces. | |
NMatrix2 | bdryReln_ [2] |
Expresses the alpha and beta curves for each torus boundary in terms of specific tetrahedron edges and vertices. | |
NMatrix2 | parallelReln_ |
Expresses the lower alpha and beta curves in terms of the upper alpha and beta curves. |
T x I
(the product of the torus and the interval).
Generally these triangulations are only one tetrahedron thick (i.e., a "thin I-bundle"), though this is not a strict requirement of this class. Triangulations of this type are generally used as components of larger triangulations (such as layered surface bundles).
This product has two torus boundaries, called the upper and lower boundaries. Each of these boundary tori must be formed from precisely two faces. This class tracks the mappings between parallel curves on the upper and lower boundaries, as well as mappings from boundary curves to specific tetrahedron edges.
For each of the two torus boundaries, two curves are chosen as generators of the fundamental group; these curves are called alpha and beta. Note that there is no requirement that the upper alpha and beta be parallel to the lower alpha and beta. The parallelReln() routine can be called to establish the precise relationship between these upper and lower curves.
Every object of this class contains a full copy of the triangulation that it describes (so you should not create excessive objects of this class without reason). This triangulation can be accessed through the core() routine.
regina::NTxICore::NTxICore | ( | ) | [inline, protected] |
Default constructor that performs no initialisation.
const NMatrix2 & regina::NTxICore::bdryReln | ( | unsigned | whichBdry | ) | const [inline] |
Returns a 2-by-2 matrix describing the alpha and beta curves on a torus boundary in terms of specific tetrahedron edges.
Consider the first face of the given boundary. Let t be the tetrahedron returned by bdryTet(whichBdry, 0) and let p be the permutation returned by bdryRoles(whichBdry, 0).
Let edge01 be the directed edge from vertex p[0] to p[1] of tetrahedron t, and let edge02 be the directed edge from vertex p[0] to p[2] of tetrahedron t. Then the matrix returned by this routine describes how the directed edges edge01 and edge02 relate to the alpha and beta curves on the given boundary. Specifically:
[ alpha ] [ edge01 ] [ ] = bdryReln() * [ ] . [ beta ] [ edge02 ]
It is guaranteed that this matrix has determinant +1 or -1.
whichBdry | 0 if the upper boundary should be examined, or 1 if the lower boundary should be examined. |
NPerm regina::NTxICore::bdryRoles | ( | unsigned | whichBdry, | |
unsigned | whichFace | |||
) | const [inline] |
Describes which tetrahedron vertices play which roles in the upper and lower boundary faces.
Each boundary torus contains two faces, whose vertices can be numbered 0, 1 and 2 according to the following diagram. This diagram is completely symmetric, in that edges 1-2 are no more special than edges 0-2 or 0-1. The important observations are that edges 1-2 and 2-1 of each face are identified, edges 0-2 and 2-0 of each face are identified and edges 0-1 and 1-0 of each face are identified.
*--->>--* |0 2 / | First | / 1| Second face v / v face |1 / | | / 2 0| *--->>--*
This routine returns a permutation that maps these integers 0,1,2 to real tetrahedron vertices. Let t be the tetrahedron returned by bdryTet(whichBdry, whichFace) and let p be the permutation returned by bdryRoles(whichBdry, whichFace). Then vertices p[0], p[1] and p[2] of tetrahedron t correspond to the markings 0, 1 and 2 respectively in the diagram above (and therefore the boundary face is face p[3] of the tetrahedron).
The arguments to this routine affect whether we examine the upper or lower boundary and whether we examine the first or second face of this boundary
whichBdry | 0 if the upper boundary should be examined, or 1 if the lower boundary should be examined. | |
whichFace | 0 if the first boundary face should be examined, or 1 if the second boundary face should be examined. |
unsigned regina::NTxICore::bdryTet | ( | unsigned | whichBdry, | |
unsigned | whichFace | |||
) | const [inline] |
Determines which tetrahedron provides the requested boundary face.
Recall that the T x I
triangulation has two torus boundaries, each consisting of two boundary faces. This routine returns the specific tetrahedron that provides the given face of the given torus boundary.
What is returned is the index number of the tetrahedron within the triangulation. To access the tetrahedron itself, you may call core().getTetrahedron(bdryTet(...))
.
Note that the same tetrahedron may provide more than one boundary face.
whichBdry | 0 if the upper boundary should be examined, or 1 if the lower boundary should be examined. | |
whichFace | 0 if the first boundary face should be examined, or 1 if the second boundary face should be examined. |
const NTriangulation & regina::NTxICore::core | ( | ) | const [inline] |
Returns a full copy of the T x I
triangulation that this object describes.
Successive calls to this routine will returns the same triangulation (i.e., it is not recreated each time). The triangulation that is returned may not be modified or destroyed.
std::string regina::NTxICore::getName | ( | ) | const |
Returns the name of this specific triangulation of T x I
as a human-readable string.
std::string regina::NTxICore::getTeXName | ( | ) | const |
Returns the name of this specific triangulation of T x I
in TeX format.
No leading or trailing dollar signs will be included.
const NMatrix2 & regina::NTxICore::parallelReln | ( | ) | const [inline] |
Returns a 2-by-2 matrix describing the parallel relationship between the upper and lower boundary curves.
Let a_u and b_u be the upper alpha and beta boundary curves. Suppose that the lower alpha is parallel to w.a_u + x.b_u, and that the lower beta is parallel to y.a_u + z.b_u. Then the matrix returned will be
[ w x ] [ ] . [ y z ]
In other words, if a_l and b_l are the lower alpha and beta curves respectively, we have
[ a_l ] [ a_u ] [ ] = parallelReln() * [ ] . [ b_l ] [ b_u ]
virtual std::ostream& regina::NTxICore::writeName | ( | std::ostream & | out | ) | const [pure virtual] |
Writes the name of this specific triangulation of T x I
to the given output stream.
The name will be written as a human-readable string.
out | the output stream to which to write. |
Implemented in regina::NTxIDiagonalCore, and regina::NTxIParallelCore.
virtual std::ostream& regina::NTxICore::writeTeXName | ( | std::ostream & | out | ) | const [pure virtual] |
Writes the name of this specific triangulation of T x I
in TeX format to the given output stream.
No leading or trailing dollar signs will be written.
out | the output stream to which to write. |
Implemented in regina::NTxIDiagonalCore, and regina::NTxIParallelCore.
void regina::NTxICore::writeTextLong | ( | std::ostream & | out | ) | const [inline, virtual] |
Writes this object in long text format to the given output stream.
The output should provided the user with all the information they could want. The output should end with a newline.
The default implementation of this routine merely calls writeTextShort() and adds a newline.
out | the output stream to which to write. |
Reimplemented from regina::ShareableObject.
void regina::NTxICore::writeTextShort | ( | std::ostream & | out | ) | const [inline, virtual] |
Writes this object in short text format to the given output stream.
The output should fit on a single line and no newline should be written.
out | the output stream to which to write. |
Implements regina::ShareableObject.
NMatrix2 regina::NTxICore::bdryReln_[2] [protected] |
Expresses the alpha and beta curves for each torus boundary in terms of specific tetrahedron edges and vertices.
The elements bdryReln_[0] and bdryReln_[1] refer to the upper and lower boundaries respectively, and each of these matrices must have determinant +1 or -1. See bdryReln() for further details.
NPerm regina::NTxICore::bdryRoles_[2][2] [protected] |
Describes which tetrahedron vertices play which roles in the upper and lower boundary faces.
See bdryRoles() for details.
unsigned regina::NTxICore::bdryTet_[2][2] [protected] |
The tetrahedra that provide the upper and lower boundary faces.
See bdryTet() for details.
NTriangulation regina::NTxICore::core_ [protected] |
A full copy of the T x I
triangulation that is described.
NMatrix2 regina::NTxICore::parallelReln_ [protected] |
Expresses the lower alpha and beta curves in terms of the upper alpha and beta curves.
See parallelReln() for details.