Regina Calculation Engine

Provides a triangulation of the product T x I
(the product of the torus and the interval).
More...
#include <subcomplex/ntxicore.h>
Public Member Functions  
virtual  ~NTxICore () 
Destroys this object. More...  
const NTriangulation &  core () const 
Returns a full copy of the T x I triangulation that this object describes. More...  
unsigned  bdryTet (unsigned whichBdry, unsigned whichTri) const 
Determines which tetrahedron provides the requested boundary triangle. More...  
NPerm4  bdryRoles (unsigned whichBdry, unsigned whichTri) const 
Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles. More...  
const NMatrix2 &  bdryReln (unsigned whichBdry) const 
Returns a 2by2 matrix describing the alpha and beta curves on a torus boundary in terms of specific tetrahedron edges. More...  
const NMatrix2 &  parallelReln () const 
Returns a 2by2 matrix describing the parallel relationship between the upper and lower boundary curves. More...  
std::string  name () const 
Returns the name of this specific triangulation of T x I as a humanreadable string. More...  
REGINA_DEPRECATED std::string  getName () const 
Deprecated routine that returns the name of this specific triangulation of T x I as a humanreadable string. More...  
std::string  TeXName () const 
Returns the name of this specific triangulation of T x I in TeX format. More...  
REGINA_DEPRECATED std::string  getTeXName () const 
Deprecated routine that returns the name of this specific triangulation of T x I in TeX format. More...  
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. More...  
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. More...  
void  writeTextShort (std::ostream &out) const 
Writes a short text representation of this object to the given output stream. More...  
void  writeTextLong (std::ostream &out) const 
Writes a detailed text representation of this object to the given output stream. More...  
std::string  str () const 
Returns a short text representation of this object. More...  
std::string  utf8 () const 
Returns a short text representation of this object using unicode characters. More...  
std::string  detail () const 
Returns a detailed text representation of this object. More...  
REGINA_DEPRECATED std::string  toString () const 
A deprecated alias for str(). More...  
REGINA_DEPRECATED std::string  toStringLong () const 
A deprecated alias for detail(). More...  
Protected Member Functions  
NTxICore ()  
Default constructor that performs no initialisation. More...  
Protected Attributes  
NTriangulation  core_ 
A full copy of the T x I triangulation that is described. More...  
unsigned  bdryTet_ [2][2] 
The tetrahedra that provide the upper and lower boundary triangles. More...  
NPerm4  bdryRoles_ [2][2] 
Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles. More...  
NMatrix2  bdryReln_ [2] 
Expresses the alpha and beta curves for each torus boundary in terms of specific tetrahedron edges and vertices. More...  
NMatrix2  parallelReln_ 
Expresses the lower alpha and beta curves in terms of the upper alpha and beta curves. More...  
Provides a triangulation of the product T x I
(the product of the torus and the interval).
Generally these triangulations are only one tetrahedron thick (i.e., a "thin Ibundle"), 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 triangles. 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.

inlinevirtual 
Destroys this object.

inlineprotected 
Default constructor that performs no initialisation.

inline 
Returns a 2by2 matrix describing the alpha and beta curves on a torus boundary in terms of specific tetrahedron edges.
Consider the first triangle 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. 

inline 
Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles.
Each boundary torus contains two triangles, whose vertices can be numbered 0, 1 and 2 according to the following diagram. This diagram is completely symmetric, in that edges 12 are no more special than edges 02 or 01. The important observations are that edges 12 and 21 of each triangle are identified, edges 02 and 20 of each triangle are identified and edges 01 and 10 of each triangle are identified.
*>>* 0 2 /  First  / 1 Second triangle v / v triangle 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, whichTri) and let p be the permutation returned by bdryRoles(whichBdry, whichTri). 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 triangle 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 triangle of this boundary
whichBdry  0 if the upper boundary should be examined, or 1 if the lower boundary should be examined. 
whichTri  0 if the first boundary triangle should be examined, or 1 if the second boundary triangle should be examined. 

inline 
Determines which tetrahedron provides the requested boundary triangle.
Recall that the T x I
triangulation has two torus boundaries, each consisting of two boundary triangles. This routine returns the specific tetrahedron that provides the given triangle 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().tetrahedron(bdryTet(...))
.
Note that the same tetrahedron may provide more than one boundary triangle.
whichBdry  0 if the upper boundary should be examined, or 1 if the lower boundary should be examined. 
whichTri  0 if the first boundary triangle should be examined, or 1 if the second boundary triangle should be examined. 

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.

inherited 
Returns a detailed text representation of this object.
This text may span many lines, and should provide the user with all the information they could want. It should be humanreadable, should not contain extremely long lines (which cause problems for users reading the output in a terminal), and should end with a final newline. There are no restrictions on the underlying character set.

inline 
Deprecated routine that returns the name of this specific triangulation of T x I
as a humanreadable string.

inline 
Deprecated routine that returns the name of this specific triangulation of T x I
in TeX format.
std::string regina::NTxICore::name  (  )  const 
Returns the name of this specific triangulation of T x I
as a humanreadable string.

inline 
Returns a 2by2 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 ]

inherited 
Returns a short text representation of this object.
This text should be humanreadable, should fit on a single line, and should not end with a newline. Where possible, it should use plain ASCII characters.
__str__()
.std::string regina::NTxICore::TeXName  (  )  const 
Returns the name of this specific triangulation of T x I
in TeX format.
No leading or trailing dollar signs will be included.

inherited 
A deprecated alias for str().

inherited 
A deprecated alias for detail().

inherited 
Returns a short text representation of this object using unicode characters.
Like str(), this text should be humanreadable, should fit on a single line, and should not end with a newline. In addition, it may use unicode characters to make the output more pleasant to read. This string will be encoded in UTF8.

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 humanreadable string.
None
.out  the output stream to which to write. 
Implemented in regina::NTxIParallelCore, and regina::NTxIDiagonalCore.

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.
None
.out  the output stream to which to write. 
Implemented in regina::NTxIParallelCore, and regina::NTxIDiagonalCore.

inline 
Writes a detailed text representation of this object to the given output stream.
out  the output stream to which to write. 

inline 
Writes a short text representation of this object to the given output stream.
out  the output stream to which to write. 

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.

protected 
Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles.
See bdryRoles() for details.

protected 
The tetrahedra that provide the upper and lower boundary triangles.
See bdryTet() for details.

protected 
A full copy of the T x I
triangulation that is described.

protected 
Expresses the lower alpha and beta curves in terms of the upper alpha and beta curves.
See parallelReln() for details.