Regina Calculation Engine
Public Member Functions | Protected Attributes | List of all members
regina::NTxIDiagonalCore Class Reference

One of a family of thin T x I triangulations that typically appear at the centres of layered torus bundles. More...

#include <subcomplex/ntxicore.h>

Inheritance diagram for regina::NTxIDiagonalCore:
regina::NTxICore regina::ShareableObject regina::boost::noncopyable

Public Member Functions

 NTxIDiagonalCore (unsigned long newSize, unsigned long newK)
 Creates a new T x I triangulation with the given parameters. More...
 
unsigned long size () const
 Returns the total number of tetrahedra in this T x I triangulation. More...
 
unsigned long k () const
 Returns the additional parameter k as described in the class notes. More...
 
std::ostream & writeName (std::ostream &out) const
 Writes the name of this specific triangulation of T x I to the given output stream. More...
 
std::ostream & writeTeXName (std::ostream &out) const
 Writes the name of this specific triangulation of T x I in TeX format to the given output stream. More...
 
const NTriangulationcore () 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 NMatrix2bdryReln (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. More...
 
const NMatrix2parallelReln () const
 Returns a 2-by-2 matrix describing the parallel relationship between the upper and lower boundary curves. More...
 
std::string getName () const
 Returns the name of this specific triangulation of T x I as a human-readable string. More...
 
std::string getTeXName () const
 Returns the name of this specific triangulation of T x I in TeX format. More...
 
void writeTextShort (std::ostream &out) const
 Writes this object in short text format to the given output stream. More...
 
void writeTextLong (std::ostream &out) const
 Writes this object in long text format to the given output stream. More...
 
Input and Output
std::string str () const
 Returns the output from writeTextShort() as a string. More...
 
std::string toString () const
 A deprecated alias for str(), which returns the output from writeTextShort() as a string. More...
 
std::string detail () const
 Returns the output from writeTextLong() as a string. More...
 
std::string toStringLong () const
 A deprecated alias for detail(), which returns the output from writeTextLong() as a string. 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...
 

Detailed Description

One of a family of thin T x I triangulations that typically appear at the centres of layered torus bundles.

Different triangulations in this family use different numbers of tetrahedra, with the larger triangulations producing more complicated relationships between the upper and lower boundary curves.

Members of this family are parameterised by their size (the number of tetrahedra) and an additional integer k, where 1 <= k <= size - 5. Note that this means we must have size >= 6. The member of this family of size n with additional parameter k is labelled T_n:k.

It is worth noting that T_n:k is isomorphic to T_n:(n-4-k), so in reality there are only [(n-4)/2] different triangulations for a given size (rounded down).

A triangulation of this family is most easily defined in terms of its central torus. Central surfaces are described in detail in "Structures of small closed non-orientable 3-manifold triangulations", Benjamin A. Burton, J. Knot Theory Ramifications 16 (2007), 545–574; in particular, see the section on thin I-bundles.

The central torus begins with two triangles u0 and u1 (which eventually provide the upper torus boundary), with a chain of quadrilaterals q1, ..., q(n-5) descending diagonally beneath them as illustrated in the diagram below.

diaginit.png

We then distort quadrilateral qk and attach two more triangles w0 and w1 to its side (these will eventually provide the lower torus boundary). This is illustrated in the following diagram.

diagdistort.png

The entire central torus wraps from left to right (so the lower left edges of most quadrilaterals qi are identified with the upper right edges of q(i-1), and the left edge of qk is identified with the right edge of w1). As an exception, the two uppermost edges are identified with the two lowermost edges in a parallel fashion (so the upper left edge of u1 is identified with the lower right edge of q1, and the adjacent edges at right angles to these are also identified).

The four triangles in the central torus correspond to the four tetrahedra in the triangulation that provide the boundary triangles. The upper boundary is coned out from triangles u0 and u1, and the lower boundary is coned out from triangles w0 and w1. In each boundary, u0 or w0 gives the first boundary triangle and u1 or w1 gives the second. The directions of the corresponding alpha and beta curves are illustrated below.

diagbdry.png

As a final illustration, the example below shows the central surface in the case (n, k) = (9, 2).

diag92.png

Constructor & Destructor Documentation

regina::NTxIDiagonalCore::NTxIDiagonalCore ( unsigned long  newSize,
unsigned long  newK 
)

Creates a new T x I triangulation with the given parameters.

Parameters
newSizethe number of tetrahedra in this triangulation. This must be at least 6.
newKthe additional parameter k as described in the class notes. This must be between 1 and (newSize - 5) inclusive.

Member Function Documentation

const NMatrix2 & regina::NTxICore::bdryReln ( unsigned  whichBdry) const
inlineinherited

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

Parameters
whichBdry0 if the upper boundary should be examined, or 1 if the lower boundary should be examined.
Returns
the relationship between the boundary curves and tetrahedron edges.
NPerm4 regina::NTxICore::bdryRoles ( unsigned  whichBdry,
unsigned  whichTri 
) const
inlineinherited

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 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 triangle are identified, edges 0-2 and 2-0 of each triangle are identified and edges 0-1 and 1-0 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

Parameters
whichBdry0 if the upper boundary should be examined, or 1 if the lower boundary should be examined.
whichTri0 if the first boundary triangle should be examined, or 1 if the second boundary triangle should be examined.
Returns
the permutation mapping roles 0, 1 and 2 in the diagram above to real tetrahedron vertex numbers.
unsigned regina::NTxICore::bdryTet ( unsigned  whichBdry,
unsigned  whichTri 
) const
inlineinherited

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().getTetrahedron(bdryTet(...)).

Note that the same tetrahedron may provide more than one boundary triangle.

Parameters
whichBdry0 if the upper boundary should be examined, or 1 if the lower boundary should be examined.
whichTri0 if the first boundary triangle should be examined, or 1 if the second boundary triangle should be examined.
const NTriangulation & regina::NTxICore::core ( ) const
inlineinherited

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.

Returns
the full triangulation.
std::string regina::ShareableObject::detail ( ) const
inherited

Returns the output from writeTextLong() as a string.

Returns
a long text representation of this object.
std::string regina::NTxICore::getName ( ) const
inherited

Returns the name of this specific triangulation of T x I as a human-readable string.

Returns
the name of this triangulation.
std::string regina::NTxICore::getTeXName ( ) const
inherited

Returns the name of this specific triangulation of T x I in TeX format.

No leading or trailing dollar signs will be included.

Returns
the name of this triangulation in TeX format.
unsigned long regina::NTxIDiagonalCore::k ( ) const
inline

Returns the additional parameter k as described in the class notes.

Returns
the additional parameter k.
const NMatrix2 & regina::NTxICore::parallelReln ( ) const
inlineinherited

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 ]
Returns
the relationship between the upper and lower boundary curves.
unsigned long regina::NTxIDiagonalCore::size ( ) const
inline

Returns the total number of tetrahedra in this T x I triangulation.

Returns
the total number of tetrahedra.
std::string regina::ShareableObject::str ( ) const
inherited

Returns the output from writeTextShort() as a string.

Python:
This implements the __str__() function.
Returns
a short text representation of this object.
std::string regina::ShareableObject::toString ( ) const
inlineinherited

A deprecated alias for str(), which returns the output from writeTextShort() as a string.

Deprecated:
This routine has (at long last) been deprecated; use the simpler-to-type str() instead.
Returns
a short text representation of this object.
std::string regina::ShareableObject::toStringLong ( ) const
inlineinherited

A deprecated alias for detail(), which returns the output from writeTextLong() as a string.

Deprecated:
This routine has (at long last) been deprecated; use the simpler-to-type detail() instead.
Returns
a long text representation of this object.
std::ostream & regina::NTxIDiagonalCore::writeName ( std::ostream &  out) const
inlinevirtual

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.

Python:
The argument out is missing, and is always assumed to be standard output.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::NTxICore.

std::ostream & regina::NTxIDiagonalCore::writeTeXName ( std::ostream &  out) const
inlinevirtual

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.

Python:
The argument out is missing, and is always assumed to be standard output.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::NTxICore.

void regina::NTxICore::writeTextLong ( std::ostream &  out) const
inlinevirtualinherited

Writes this object in long text format to the given output stream.

The output should provide the user with all the information they could want. The output should be human-readable, should not contain extremely long lines (so users can read the output in a terminal), and should end with a final newline.

The default implementation of this routine merely calls writeTextShort() and adds a newline.

Python:
The parameter out does not exist; standard output will be used.
Parameters
outthe output stream to which to write.

Reimplemented from regina::ShareableObject.

void regina::NTxICore::writeTextShort ( std::ostream &  out) const
inlinevirtualinherited

Writes this object in short text format to the given output stream.

The output should be human-readable, should fit on a single line, and should not end with a newline.

Python:
The parameter out does not exist; standard output will be used.
Parameters
outthe output stream to which to write.

Implements regina::ShareableObject.

Member Data Documentation

NMatrix2 regina::NTxICore::bdryReln_[2]
protectedinherited

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.

NPerm4 regina::NTxICore::bdryRoles_[2][2]
protectedinherited

Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles.

See bdryRoles() for details.

unsigned regina::NTxICore::bdryTet_[2][2]
protectedinherited

The tetrahedra that provide the upper and lower boundary triangles.

See bdryTet() for details.

NTriangulation regina::NTxICore::core_
protectedinherited

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

NMatrix2 regina::NTxICore::parallelReln_
protectedinherited

Expresses the lower alpha and beta curves in terms of the upper alpha and beta curves.

See parallelReln() for details.


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

Copyright © 1999-2014, 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@debian.org).