Regina Calculation Engine
|
A normal surface vector using transversely oriented quadrilateral coordinates. More...
#include <surfaces/nsvectororientedquad.h>
Public Member Functions | |
NSVectorOrientedQuad (size_t length) | |
Creates a new vector all of whose entries are initialised to zero. More... | |
NSVectorOrientedQuad (const Vector< LargeInteger > &cloneMe) | |
Creates a new vector that is a clone of the given vector. More... | |
virtual NormalSurfaceVector * | makeMirror (const Triangulation< 3 > *triang) const override |
Creates a new mirror vector corresponding to this vector. More... | |
virtual const Vertex< 3 > * | isVertexLink (const Triangulation< 3 > *triang) const override |
Determines if a rational multiple of the normal surface represented is the link of a single vertex. More... | |
virtual LargeInteger | quads (size_t tetIndex, int quadType, const Triangulation< 3 > *triang) const override |
Returns the number of quadrilateral discs of the given type in this normal surface. More... | |
virtual LargeInteger | orientedQuads (size_t tetIndex, int quadType, const Triangulation< 3 > *triang, bool orientation) const override |
Returns the number of oriented quadrilateral discs of the given type in this normal surface. More... | |
virtual LargeInteger | octs (size_t tetIndex, int octType, const Triangulation< 3 > *triang) const override |
Returns the number of octagonal discs of the given type in this normal surface. More... | |
virtual void | setElement (size_t index, const LargeInteger &value) override |
Sets the given normal coordinate to the given value. More... | |
virtual void | operator+= (const NormalSurfaceVector &other) override |
Adds the given vector to this vector. More... | |
virtual void | scaleDown () override |
Scales this vector down by the greatest common divisor of all its elements. More... | |
virtual LargeInteger | triangles (size_t tetIndex, int vertex, const Triangulation< 3 > *triang) const override |
Returns the number of triangular discs of the given type in this normal surface. More... | |
virtual LargeInteger | orientedTriangles (size_t tetIndex, int vertex, const Triangulation< 3 > *triang, bool orientation) const override |
Returns the number of oriented triangular discs of the given type in this normal surface. More... | |
virtual LargeInteger | edgeWeight (size_t edgeIndex, const Triangulation< 3 > *triang) const override |
Returns the number of times this normal surface crosses the given edge. More... | |
virtual LargeInteger | arcs (size_t triIndex, int triVertex, const Triangulation< 3 > *triang) const override |
Returns the number of arcs in which this normal surface intersects the given triangle in the given direction. More... | |
const Ray & | coords () const |
Gives read-only access to the underlying vector of coordinates. More... | |
virtual NormalSurfaceVector * | clone () const =0 |
Creates a newly allocated clone of this vector. More... | |
size_t | size () const |
Returns the number of coordinates in the underlying vector. More... | |
const LargeInteger & | operator[] (size_t index) const |
Returns the given coordinate from the underlying 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 (const Triangulation< 3 > *triang) const |
Determines if this normal surface has more than one octagonal disc. More... | |
virtual bool | isCompact (const Triangulation< 3 > *triang) const |
Determines if the normal surface represented is compact (has finitely many discs). More... | |
virtual bool | isVertexLinking (const Triangulation< 3 > *triang) const |
Determines if the normal surface represented is vertex linking. More... | |
virtual std::pair< const Edge< 3 > *, const Edge< 3 > * > | isThinEdgeLink (const Triangulation< 3 > *triang) const |
Determines if a rational multiple of the normal surface represented is the thin link of a single edge. More... | |
virtual bool | isSplitting (const Triangulation< 3 > *triang) const |
Determines if the normal surface represented is a splitting surface in the given triangulation. More... | |
virtual LargeInteger | isCentral (const Triangulation< 3 > *triang) const |
Determines if the normal surface represented is a central surface in the given triangulation. More... | |
Static Public Member Functions | |
static NormalSurfaceVector * | makeMirror (const Ray &original, const Triangulation< 3 > *triang) |
static NormalSurfaceVector * | makeZeroVector (const Triangulation< 3 > *triangulation) |
static MatrixInt * | makeMatchingEquations (const Triangulation< 3 > *triangulation) |
static EnumConstraints * | makeEmbeddedConstraints (const Triangulation< 3 > *triangulation) |
Protected Attributes | |
Ray | coords_ |
The raw vector of normal coordinates. More... | |
A normal surface vector using transversely oriented quadrilateral coordinates.
If there are t tetrahedra in the underlying triangulation, there must be precisely 6t coordinates. For each i, coordinates 2i and 2i+1 represent the true
and false
orientations for coordinate i in the 3t-dimensional quadrilateral coordinate system. See NSVectorQuad for further details.