|
Regina Calculation Engine
|
A normal surface vector using transversely oriented standard (triangle-quad) coordinates. More...
#include <surfaces/nsoriented.h>
Public Member Functions | |
| NNormalSurfaceVectorOriented (size_t length) | |
| Creates a new vector all of whose entries are initialised to zero. More... | |
| NNormalSurfaceVectorOriented (const NVector< NLargeInteger > &cloneMe) | |
| Creates a new vector that is a clone of the given vector. More... | |
| virtual NLargeInteger | getTriangleCoord (unsigned long tetIndex, int vertex, NTriangulation *triang) const |
| Returns the number of triangular discs of the given type in this normal surface. More... | |
| virtual NLargeInteger | getQuadCoord (unsigned long tetIndex, int quadType, NTriangulation *triang) const |
| Returns the number of quadrilateral discs of the given type in this normal surface. More... | |
| virtual NLargeInteger | getOrientedTriangleCoord (unsigned long tetIndex, int vertex, NTriangulation *triang, bool orientation) const |
| Returns the number of oriented triangular discs of the given type in this normal surface. More... | |
| virtual NLargeInteger | getOrientedQuadCoord (unsigned long tetIndex, int quadType, NTriangulation *triang, bool orientation) const |
| Returns the number of oriented quadrilateral discs of the given type in this normal surface. More... | |
| virtual NLargeInteger | getOctCoord (unsigned long tetIndex, int octType, NTriangulation *triang) const |
| Returns the number of octagonal discs of the given type in this normal surface. More... | |
| virtual NLargeInteger | getEdgeWeight (unsigned long edgeIndex, NTriangulation *triang) const |
| Returns the number of times this normal surface crosses the given edge. More... | |
| virtual NLargeInteger | getTriangleArcs (unsigned long triIndex, int triVertex, NTriangulation *triang) const |
| Returns the number of arcs in which this normal surface intersects the given triangle in the given direction. More... | |
Public Member Functions inherited from regina::NNormalSurfaceVector | |
| NNormalSurfaceVector (size_t length) | |
| Creates a new vector all of whose entries are initialised to zero. More... | |
| NNormalSurfaceVector (const NVector< NLargeInteger > &cloneMe) | |
| Creates a new vector that is a clone of the given vector. More... | |
| virtual | ~NNormalSurfaceVector () |
| A virtual destructor. More... | |
| virtual NNormalSurfaceVector * | clone () const =0 |
| Creates a newly allocated clone of this vector. More... | |
| virtual bool | allowsAlmostNormal () const =0 |
| Determines if the specific underlying coordinate system allows for almost normal surfaces, that is, allows for octagonal discs. More... | |
| virtual bool | allowsSpun () const =0 |
| Determines if the specific underlying coordinate system allows for spun-normal surfaces; that is, surfaces with infinitely many triangles. More... | |
| virtual bool | allowsOriented () const =0 |
| Determines if the specific underlying coordinate system allows for transversely oriented normal surfaces. More... | |
| virtual bool | hasMultipleOctDiscs (NTriangulation *triang) const |
| Determines if this normal surface has more than one octagonal disc. More... | |
| virtual bool | isCompact (NTriangulation *triang) const |
| Determines if the normal surface represented is compact (has finitely many discs). More... | |
| virtual bool | isVertexLinking (NTriangulation *triang) const |
| Determines if the normal surface represented is vertex linking. More... | |
| virtual const NVertex * | isVertexLink (NTriangulation *triang) const |
| Determines if a rational multiple of the normal surface represented is the link of a single vertex. More... | |
| virtual std::pair< const NEdge *, const NEdge * > | isThinEdgeLink (NTriangulation *triang) const |
| Determines if a rational multiple of the normal surface represented is the thin link of a single edge. More... | |
| virtual bool | isSplitting (NTriangulation *triang) const |
| Determines if the normal surface represented is a splitting surface in the given triangulation. More... | |
| virtual NLargeInteger | isCentral (NTriangulation *triang) const |
| Determines if the normal surface represented is a central surface in the given triangulation. More... | |
| NLargeInteger | getFaceArcs (unsigned long triIndex, int triVertex, NTriangulation *triang) const |
| A deprecated alias for getTriangleArcs(). More... | |
Public Member Functions inherited from regina::NRay | |
| NRay (size_t length) | |
| Creates a new ray all of whose coordinates are initialised to zero. More... | |
| NRay (const NVector< NLargeInteger > &cloneMe) | |
| Creates a new ray that is a clone of the given ray. More... | |
| void | scaleDown () |
| Scales this vector down by the greatest common divisor of all its elements. More... | |
| void | negate () |
| Negates every element of this vector. More... | |
Public Member Functions inherited from regina::NVector< NLargeInteger > | |
| NVector (size_t newVectorSize) | |
| Creates a new vector. More... | |
| NVector (size_t newVectorSize, const NLargeInteger &initValue) | |
| Creates a new vector and initialises every element to the given value. More... | |
| NVector (const NVector< NLargeInteger > &cloneMe) | |
| Creates a new vector that is a clone of the given vector. More... | |
| ~NVector () | |
| Destroys this vector. More... | |
| size_t | size () const |
| Returns the number of elements in the vector. More... | |
| const NLargeInteger & | operator[] (size_t index) const |
| Returns the element at the given index in the vector. More... | |
| void | setElement (size_t index, const NLargeInteger &value) |
| Sets the element at the given index in the vector to the given value. More... | |
| bool | operator== (const NVector< NLargeInteger > &compare) const |
| Determines if this vector is equal to the given vector. More... | |
| NVector< NLargeInteger > & | operator= (const NVector< NLargeInteger > &cloneMe) |
| Sets this vector equal to the given vector. More... | |
| void | operator+= (const NVector< NLargeInteger > &other) |
| Adds the given vector to this vector. More... | |
| void | operator-= (const NVector< NLargeInteger > &other) |
| Subtracts the given vector from this vector. More... | |
| void | operator*= (const NLargeInteger &factor) |
| Multiplies this vector by the given scalar. More... | |
| NLargeInteger | operator* (const NVector< NLargeInteger > &other) const |
| Calculates the dot product of this vector and the given vector. More... | |
| void | negate () |
| Negates every element of this vector. More... | |
| NLargeInteger | norm () const |
| Returns the norm of this vector. More... | |
| NLargeInteger | elementSum () const |
| Returns the sum of all elements of this vector. More... | |
| void | addCopies (const NVector< NLargeInteger > &other, const NLargeInteger &multiple) |
| Adds the given multiple of the given vector to this vector. More... | |
| void | subtractCopies (const NVector< NLargeInteger > &other, const NLargeInteger &multiple) |
| Subtracts the given multiple of the given vector to this vector. More... | |
Static Public Member Functions | |
| static NNormalSurfaceVector * | makeZeroVector (const NTriangulation *triangulation) |
| static NMatrixInt * | makeMatchingEquations (NTriangulation *triangulation) |
| static NEnumConstraintList * | makeEmbeddedConstraints (NTriangulation *triangulation) |
Static Public Member Functions inherited from regina::NNormalSurfaceVector | |
| static NNormalSurfaceVector * | makeZeroVector (const NTriangulation *triangulation) |
| Returns a new normal surface vector of the appropriate length for the given triangulation and for the coordinate system corresponding to this subclass of NNormalSurfaceVector. More... | |
| static NMatrixInt * | makeMatchingEquations (NTriangulation *triangulation) |
| Creates a new set of normal surface matching equations for the given triangulation using the coordinate system corresponding to this particular subclass of NNormalSurfaceVector. More... | |
| static NEnumConstraintList * | makeEmbeddedConstraints (NTriangulation *triangulation) |
| Creates a new set of validity constraints representing the condition that normal surfaces be embedded. More... | |
Additional Inherited Members | |
Static Public Attributes inherited from regina::NVector< NLargeInteger > | |
| static NLargeInteger | zero |
| Zero in the underlying number system. More... | |
| static NLargeInteger | one |
| One in the underlying number system. More... | |
| static NLargeInteger | minusOne |
| Negative one in the underlying number system. More... | |
Protected Attributes inherited from regina::NVector< NLargeInteger > | |
| NLargeInteger * | elements |
| The internal array containing all vector elements. More... | |
| NLargeInteger * | end |
| A pointer just beyond the end of the internal array. More... | |
A normal surface vector using transversely oriented standard (triangle-quad) coordinates.
If there are t tetrahedra in the underlying triangulation, there must be precisely 14t coordinates. For each i, coordinates 2i and 2i+1 represent the true and false orientations for coordinate i in the 7t-dimensional standard coordinate system. See NNormalSurfaceVectorStandard for further details.
|
inline |
Creates a new vector all of whose entries are initialised to zero.
| length | the number of elements in the new vector. |
|
inline |
Creates a new vector that is a clone of the given vector.
| cloneMe | the vector to clone. |
|
virtual |
Returns the number of times this normal surface crosses the given edge.
See NNormalSurface::getEdgeWeight() for further details.
| edgeIndex | the index in the triangulation of the edge in which we are interested; this should be between 0 and NTriangulation::getNumberOfEdges()-1 inclusive. |
| triang | the triangulation in which this normal surface lives. |
Implements regina::NNormalSurfaceVector.
|
inlinevirtual |
Returns the number of octagonal discs of the given type in this normal surface.
See NNormalSurface::getOctCoord() for further details.
| tetIndex | the index in the triangulation of the tetrahedron in which the requested octagons reside; this should be between 0 and NTriangulation::getNumberOfTetrahedra()-1 inclusive. |
| octType | the number of the vertex splitting that this octagon type represents; this should be between 0 and 2 inclusive. |
| triang | the triangulation in which this normal surface lives. |
Implements regina::NNormalSurfaceVector.
|
inlinevirtual |
Returns the number of oriented quadrilateral discs of the given type in this normal surface.
See NNormalSurface::getOrientedQuadCoord() for further details.
The default implementation of this routine returns zero, which is suitable for coordinate systems that do not support transverse orientation.
| tetIndex | the index in the triangulation of the tetrahedron in which the requested quadrilaterals reside; this should be between 0 and NTriangulation::getNumberOfTetrahedra()-1 inclusive. |
| quadType | the number of the vertex splitting that this quad type represents; this should be between 0 and 2 inclusive. |
| triang | the triangulation in which this normal surface lives. |
| orientation | the orientation of the normal discs. |
Reimplemented from regina::NNormalSurfaceVector.
|
inlinevirtual |
Returns the number of oriented triangular discs of the given type in this normal surface.
See NNormalSurface::getOrientedTriangleCoord() for further details.
The default implementation of this routine returns zero, which is suitable for coordinate systems that do not support transverse orientation.
| tetIndex | the index in the triangulation of the tetrahedron in which the requested triangles reside; this should be between 0 and NTriangulation::getNumberOfTetrahedra()-1 inclusive. |
| vertex | the vertex of the given tetrahedron around which the requested triangles lie; this should be between 0 and 3 inclusive. |
| triang | the triangulation in which this normal surface lives. |
| orientation | the orientation of the normal discs. |
Reimplemented from regina::NNormalSurfaceVector.
|
inlinevirtual |
Returns the number of quadrilateral discs of the given type in this normal surface.
See NNormalSurface::getQuadCoord() for further details.
| tetIndex | the index in the triangulation of the tetrahedron in which the requested quadrilaterals reside; this should be between 0 and NTriangulation::getNumberOfTetrahedra()-1 inclusive. |
| quadType | the number of the vertex splitting that this quad type represents; this should be between 0 and 2 inclusive. |
| triang | the triangulation in which this normal surface lives. |
Implements regina::NNormalSurfaceVector.
|
virtual |
Returns the number of arcs in which this normal surface intersects the given triangle in the given direction.
See NNormalSurface::getTriangleArcs() for further details.
| triIndex | the index in the triangulation of the triangle in which we are interested; this should be between 0 and NTriangulation::getNumberOfTriangles()-1 inclusive. |
| triVertex | the vertex of the triangle (0, 1 or 2) around which the arcs of intersection that we are interested in lie; only these arcs will be counted. |
| triang | the triangulation in which this normal surface lives. |
Implements regina::NNormalSurfaceVector.
|
inlinevirtual |
Returns the number of triangular discs of the given type in this normal surface.
See NNormalSurface::getTriangleCoord() for further details.
| tetIndex | the index in the triangulation of the tetrahedron in which the requested triangles reside; this should be between 0 and NTriangulation::getNumberOfTetrahedra()-1 inclusive. |
| vertex | the vertex of the given tetrahedron around which the requested triangles lie; this should be between 0 and 3 inclusive. |
| triang | the triangulation in which this normal surface lives. |
Implements regina::NNormalSurfaceVector.