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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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 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 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... | |
![]() | |
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.