Normal surfaces in triangulations. More...
Classes | |
struct | regina::NDiscSpec |
Specifies a single normal disc in a normal surface. More... | |
class | regina::NDiscSetTet |
Represents a set of normal discs inside a single tetrahedron. More... | |
class | regina::NDiscSetTetData< T > |
Stores data of type T for every normal disc inside a single tetrahedron. More... | |
class | regina::NDiscSetSurface |
Represents the set of all normal discs forming a normal surface. More... | |
class | regina::NDiscSetSurfaceData< T > |
Stores data of type T for every normal disc within a particular normal surface. More... | |
class | regina::NDiscSpecIterator |
An iterator used for running through all normal discs in a normal surface. More... | |
struct | regina::NDiscType |
Identifies a single normal or almost normal disc type within a triangulation. More... | |
class | regina::NNormalSurfaceVector |
Stores the vector of a single normal surface in a 3-manifold. More... | |
class | regina::NNormalSurface |
Represents a single normal surface in a 3-manifold. More... | |
class | regina::NNormalSurfaceList |
A packet representing a collection of normal surfaces in a 3-manifold. More... | |
struct | regina::NPrismSpec |
Specifies a single triangular prism in a tetrahedron. More... | |
class | regina::NPrismSetSurface |
Represents the set of prisms defined by slicing along all the quads in a particular normal surface. More... | |
class | regina::NNormalSurfaceVectorANStandard |
An almost normal surface vector using standard triangle-quad-oct coordinates. More... | |
class | regina::NNormalSurfaceVectorMirrored |
A normal surface vector that is mirrored in another coordinate system to avoid frequent lengthy calculations. More... | |
class | regina::NNormalSurfaceVectorQuad |
A normal surface vector using quad coordinates. More... | |
class | regina::NNormalSurfaceVectorQuadOct |
An almost normal surface vector using quad-oct coordinates. More... | |
class | regina::NNormalSurfaceVectorStandard |
A normal surface vector using standard triangle-quad coordinates. More... | |
class | regina::NSurfaceFilter |
A packet that accepts or rejects normal surfaces. More... | |
class | regina::NSurfaceSet |
Represents a collection of normal surfaces in a 3-manifold. More... | |
class | regina::NSurfaceSubset |
Represents a subset of a normal surface set. More... | |
class | regina::NXMLFilterReader |
An XML element reader that reads the specific details of a normal surface filter. More... | |
class | regina::NXMLFilterPacketReader |
An XML packet reader that reads a single surface filter. More... | |
class | regina::NXMLNormalSurfaceReader |
An XML element reader that reads a single normal surface. More... | |
class | regina::NXMLNormalSurfaceListReader |
An XML packet reader that reads a single normal surface list. More... | |
class | regina::NSurfaceFilterCombination |
A normal surface filter that simply combines other filters. More... | |
class | regina::NSurfaceFilterProperties |
A normal surface filter that filters by basic properties of the normal surface. More... | |
Functions | |
std::ostream & | regina::operator<< (std::ostream &out, const NDiscSpec &spec) |
Writes the given disc specifier to the given output stream. | |
bool | regina::numberDiscsAwayFromVertex (int discType, int vertex) |
Determines whether or not normal discs of the given type are numbered away from the given vertex. | |
bool | regina::discOrientationFollowsEdge (int discType, int vertex, int edgeStart, int edgeEnd) |
Determines whether or not the natural boundary orientation of a normal disc of the given type follows the given directed normal arc. | |
std::ostream & | regina::operator<< (std::ostream &out, const NDiscType &type) |
Writes the given disc type to the given output stream. | |
NNormalSurfaceVector * | regina::makeZeroVector (const NTriangulation *triangulation, int flavour) |
Returns a new normal surface vector of the appropriate length for the given triangulation and the given flavour of coordinate system. | |
NMatrixInt * | regina::makeMatchingEquations (NTriangulation *triangulation, int flavour) |
Creates a new set of normal surface matching equations for the given triangulation using the given flavour of coordinate system. | |
std::ostream & | regina::operator<< (std::ostream &out, const NPrismSpec &spec) |
Writes the given prism specifier to the given output stream. | |
Variables | |
const int | regina::vertexSplit [4][4] |
Lists which vertex splits split which pairs of vertices. | |
const int | regina::vertexSplitMeeting [4][4][2] |
Lists which vertex splits meet which edges. | |
const int | regina::vertexSplitDefn [3][4] |
Lists the vertices which each vertex split splits. | |
const int | regina::vertexSplitPartner [3][4] |
Lists the second vertex with which each vertex is paired under each vertex split. | |
const char | regina::vertexSplitString [3][6] |
Contains strings describing which vertices each vertex split splits. | |
const NPerm | regina::triDiscArcs [4][3] |
Lists in consecutive order the directed normal arcs that form the boundary of each type of triangular normal disc. | |
const NPerm | regina::quadDiscArcs [3][4] |
Lists in consecutive order the directed normal arcs that form the boundary of each type of quadrilateral normal disc. | |
const NPerm | regina::octDiscArcs [3][8] |
Lists in consecutive order the directed normal arcs that form the boundary of each type of octagonal normal disc. |
Normal surfaces in triangulations.
bool regina::discOrientationFollowsEdge | ( | int | discType, | |
int | vertex, | |||
int | edgeStart, | |||
int | edgeEnd | |||
) |
Determines whether or not the natural boundary orientation of a normal disc of the given type follows the given directed normal arc.
Natural boundary orientation is defined by arrays triDiscArcs, quadDiscArcs and octDiscArcs.
discType | the normal disc type under consideration; this should be between 0 and 9 inclusive, as described by the NDiscSpec class notes. | |
vertex | the vertex about which the normal arc runs. | |
edgeStart | the start vertex of the edge to which the normal arc is parallel. | |
edgeEnd | the end vertex of the edge to which the normal arc is parallel. |
NMatrixInt* regina::makeMatchingEquations | ( | NTriangulation * | triangulation, | |
int | flavour | |||
) |
Creates a new set of normal surface matching equations for the given triangulation using the given flavour of coordinate system.
The returned matrix will be newly allocated and its destruction will be the responsibility of the caller of this routine.
Each equation will be represented as a row of the matrix. Each column of the matrix represents a coordinate in the given flavour of coordinate system.
triangulation | the triangulation upon which these matching equations will be based. | |
flavour | the flavour of coordinate system to be used; this must be one of the predefined coordinate system constants in NNormalSurfaceList. |
NNormalSurfaceVector* regina::makeZeroVector | ( | const NTriangulation * | triangulation, | |
int | flavour | |||
) |
Returns a new normal surface vector of the appropriate length for the given triangulation and the given flavour of coordinate system.
All elements of this vector will be initialised to zero.
The new vector will be of the subclass of NNormalSurfaceVector corresponding to the given flavour of coordinate system. The caller of this routine is responsible for destroying the new vector.
triangulation | the triangulation upon which the underlying coordinate system is based. | |
flavour | the flavour of coordinate system to be used; this must be one of the predefined coordinate system constants in NNormalSurfaceList. |
bool regina::numberDiscsAwayFromVertex | ( | int | discType, | |
int | vertex | |||
) |
Determines whether or not normal discs of the given type are numbered away from the given vertex.
discType | the normal disc type under consideration; this should be between 0 and 9 inclusive, as described by the NDiscSpec class notes. | |
vertex | the vertex under consideration; this should be between 0 and 3 inclusive. |
true
if normal discs of the given type are numbered away from the given vertex, or false
if they are numbered towards the given vertex. std::ostream& regina::operator<< | ( | std::ostream & | out, | |
const NPrismSpec & | spec | |||
) |
Writes the given prism specifier to the given output stream.
The prism specifier will be written as a pair (tetIndex, edge)
.
out | the output stream to which to write. | |
spec | the prism specifier to write. |
std::ostream & regina::operator<< | ( | std::ostream & | out, | |
const NDiscType & | type | |||
) | [inline] |
Writes the given disc type to the given output stream.
The disc type will be written as a pair (tetIndex, type)
.
out | the output stream to which to write. | |
type | the disc type to write. |
std::ostream& regina::operator<< | ( | std::ostream & | out, | |
const NDiscSpec & | spec | |||
) |
Writes the given disc specifier to the given output stream.
The disc specifier will be written as a triple (tetIndex, type, number)
.
out | the output stream to which to write. | |
spec | the disc specifier to write. |
const NPerm regina::octDiscArcs[3][8] |
Lists in consecutive order the directed normal arcs that form the boundary of each type of octagonal normal disc.
Each permutation p represents an arc about vertex p[0]
parallel to the directed edge from p[1]
to p[2]
.
Array octDiscArcs[i]
lists the boundary arcs of the octagonal disc of type i. See NNormalSurface::getOctCoord() for further details.
Note that permutation octDiscArcs[i][j]
will be even precisely when j
is 0, 1, 4 or 5.
octDiscArcs(discType, arcIndex)
that essentially looks up the corresponding array. This is necessary because of a bug in gcc 2.95. const NPerm regina::quadDiscArcs[3][4] |
Lists in consecutive order the directed normal arcs that form the boundary of each type of quadrilateral normal disc.
Each permutation p represents an arc about vertex p[0]
parallel to the directed edge from p[1]
to p[2]
.
Array quadDiscArcs[i]
lists the boundary arcs of the quadrilateral disc of type i. See NNormalSurface::getQuadCoord() for further details.
Note that permutation quadDiscArcs[i][j]
will be even precisely when j
is even.
quadDiscArcs(discType, arcIndex)
that essentially looks up the corresponding array. This is necessary because of a bug in gcc 2.95. const NPerm regina::triDiscArcs[4][3] |
Lists in consecutive order the directed normal arcs that form the boundary of each type of triangular normal disc.
Each permutation p represents an arc about vertex p[0]
parallel to the directed edge from p[1]
to p[2]
.
Array triDiscArcs[i]
lists the boundary arcs of the triangular disc of type i. See NNormalSurface::getTriangleCoord() for further details.
Note that every permutation in this array is even.
triDiscArcs(discType, arcIndex)
that essentially looks up the corresponding array. This is necessary because of a bug in gcc 2.95. const int regina::vertexSplit[4][4] |
Lists which vertex splits split which pairs of vertices.
There are three vertex splits, numbered 0,1,2. Each vertex split split the four tetrahedron vertices 0,1,2,3 into two pairs. vertexSplit[i][j]
is the number of the vertex split that keeps vertices i
and j
together.
It is guaranteed that vertex split i will keep the vertices of edge i together (and will therefore also keep the vertices of edge 5-i together).
const int regina::vertexSplitDefn[3][4] |
Lists the vertices which each vertex split splits.
See vertexSplit for details on what a vertex split is. Vertex split number i
splits the vertex pairs vertexSplitDefn[i][0,1]
and vertexSplitDefn[i][2,3]
.
const int regina::vertexSplitMeeting[4][4][2] |
Lists which vertex splits meet which edges.
See vertexSplit for details on what a vertex split is. vertexSplitMeeting[i][j][0,1]
are the numbers of the two vertex splits that meet the edge joining tetrahedron vertices i
and j
.
const int regina::vertexSplitPartner[3][4] |
Lists the second vertex with which each vertex is paired under each vertex split.
See vertexSplit for details on what a vertex split is. Vertex split number i
pairs vertex v
with vertex vertexSplitPartner[i][v]
.
const char regina::vertexSplitString[3][6] |
Contains strings describing which vertices each vertex split splits.
See vertexSplit for details on what a vertex split is. The string describing vertex split number i
is vertexSplitString[i]
and is of the form 02/13
, which in this case is the vertex split that splits vertices 0,2 from vertices 1,3.