Regina Calculation Engine
|
A normal hypersurface vector using standard tetrahedron-prism coordinates. More...
#include <hypersurface/nhsstandard.h>
Public Member Functions | |
NNormalHypersurfaceVectorStandard (size_t length) | |
Creates a new vector all of whose entries are initialised to zero. More... | |
NNormalHypersurfaceVectorStandard (const NVector< NLargeInteger > &cloneMe) | |
Creates a new vector that is a clone of the given vector. More... | |
virtual NLargeInteger | tetrahedra (size_t pentIndex, int vertex, const Dim4Triangulation *triang) const |
Returns the number of tetrahedron pieces of the given type in this normal hypersurface. More... | |
virtual NLargeInteger | prisms (size_t pentIndex, int prismType, const Dim4Triangulation *triang) const |
Returns the number of prism pieces of the given type in this normal hypersurface. More... | |
virtual NLargeInteger | edgeWeight (size_t edgeIndex, const Dim4Triangulation *triang) const |
Returns the number of times this normal hypersurface crosses the given edge. More... | |
virtual NNormalHypersurfaceVector * | clone () const =0 |
Creates a newly allocated clone of this vector. More... | |
virtual bool | isCompact (const Dim4Triangulation *triang) const |
Determines if the normal hypersurface represented is compact (has finitely many pieces). More... | |
virtual bool | isVertexLinking (const Dim4Triangulation *triang) const |
Determines if the normal hypersurface represented is vertex linking. More... | |
virtual const Dim4Vertex * | isVertexLink (const Dim4Triangulation *triang) const |
Determines if a rational multiple of the normal hypersurface represented is the link of a single vertex. More... | |
virtual const Dim4Edge * | isThinEdgeLink (const Dim4Triangulation *triang) const |
Determines if a rational multiple of the normal hypersurface represented is the thin link of a single edge. 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... | |
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... | |
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... | |
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 NNormalHypersurfaceVector * | makeZeroVector (const Dim4Triangulation *triangulation) |
static NMatrixInt * | makeMatchingEquations (const Dim4Triangulation *triangulation) |
static NEnumConstraintList * | makeEmbeddedConstraints (const Dim4Triangulation *triangulation) |
Static Public Attributes | |
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 | |
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 hypersurface vector using standard tetrahedron-prism coordinates.
If there are p pentachora in the underlying triangulation, there must be precisely 15p coordinates. The first 15 coordinates will be for the first pentachoron, the next 15 for the second pentachoron and so on. For each pentachoron, the first five represent the number of tetrahedron pieces about vertex 0,...,4, and the next ten represent the number of prism pieces of type 0,...,9 (see NNormalHypersurface::prisms() for 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. |
|
inlineinherited |
Adds the given multiple of the given vector to this vector.
other | the vector a multiple of which will be added to this vector. |
multiple | the multiple of other to be added to this vector. |
|
pure virtualinherited |
Creates a newly allocated clone of this vector.
The clone will be of the same subclass of NNormalHypersurfaceVector as this vector.
|
virtual |
Returns the number of times this normal hypersurface crosses the given edge.
See NNormalHypersurface::edgeWeight() for further details.
edgeIndex | the index in the triangulation of the edge in which we are interested; this should be between 0 and Dim4Triangulation::countEdges()-1 inclusive. |
triang | the triangulation in which this normal hypersurface lives. |
Implements regina::NNormalHypersurfaceVector.
|
inlineinherited |
Returns the sum of all elements of this vector.
|
virtualinherited |
Determines if the normal hypersurface represented is compact (has finitely many pieces).
The default implementation for this routine simply runs through every piece type until a piece type with infinite piece count is found or all piece types have been examined. Subclasses of NNormalHypersurfaceVector should override this if they can provide a faster implementation.
triang | the triangulation in which this normal hypersurface lives. |
true
if and only if the normal hypersurface represented is compact.
|
virtualinherited |
Determines if a rational multiple of the normal hypersurface represented is the thin link of a single edge.
The default implementation for this routine involves counting the number of pieces of every type. Subclasses of NNormalHypersurfaceVector should override this if they can provide a faster implementation.
triang | the triangulation in which this normal hypersurface lives. |
|
virtualinherited |
Determines if a rational multiple of the normal hypersurface represented is the link of a single vertex.
The default implementation for this routine involves counting the number of pieces of every type. Subclasses of NNormalSurfaceVector should override this if they can provide a faster implementation.
triang | the triangulation in which this normal hypersurface lives. |
|
virtualinherited |
Determines if the normal hypersurface represented is vertex linking.
A vertex linking hypersurface contains only tetrahedra.
The default implementation for this routine simply runs through every non-tetrahedron piece type ensuring that each has no corresponding pieces. Subclasses of NNormalHypersurfaceVector should override this if they can provide a faster implementation.
triang | the triangulation in which this normal hypersurface lives. |
true
if and only if the normal hypersurface represented is vertex linking.
|
inlineinherited |
Negates every element of this vector.
This is an optimised implementation that overrides NVector<NLargeInteger>::negate().
|
inlineinherited |
Returns the norm of this vector.
This is the dot product of the vector with itself.
|
inlineinherited |
Calculates the dot product of this vector and the given vector.
other | the vector with which this will be multiplied. |
|
inlineinherited |
Multiplies this vector by the given scalar.
factor | the scalar with which this will be multiplied. |
|
inlineinherited |
Adds the given vector to this vector.
other | the vector to add to this vector. |
|
inlineinherited |
Subtracts the given vector from this vector.
other | the vector to subtract from this vector. |
|
inlineinherited |
Determines if this vector is equal to the given vector.
compare | the vector with which this will be compared. |
true
if and only if the this and the given vector are equal.
|
inlineinherited |
|
inlinevirtual |
Returns the number of prism pieces of the given type in this normal hypersurface.
See NNormalHypersurface::prisms() for further details.
pentIndex | the index in the triangulation of the pentachoron in which the requested prism pieces reside; this should be between 0 and Dim4Triangulation::size()-1 inclusive. |
prismType | specifies the edge of the given pentachoron that this prism separates from the opposite triangle; this should be between 0 and 9 inclusive. |
triang | the triangulation in which this normal hypersurface lives. |
Implements regina::NNormalHypersurfaceVector.
|
inherited |
Scales this vector down by the greatest common divisor of all its elements.
The resulting vector will be the smallest multiple of the original that maintains integral entries, and these entries will have the same signs as the originals.
This routine thus reduces a ray to its smallest possible representation.
This routine poses no problem for vectors containing infinite elements; such elements are simply ignored and left at infinity.
|
inlineinherited |
Sets the element at the given index in the vector to the given value.
index
is between 0 and size()-1 inclusive.index | the vector index to examine. |
value | the new value to assign to the element. |
|
inlineinherited |
Returns the number of elements in the vector.
|
inlineinherited |
Subtracts the given multiple of the given vector to this vector.
other | the vector a multiple of which will be subtracted from this vector. |
multiple | the multiple of other to be subtracted from this vector. |
|
inlinevirtual |
Returns the number of tetrahedron pieces of the given type in this normal hypersurface.
See NNormalHypersurface::tetrahedra() for further details.
pentIndex | the index in the triangulation of the pentachoron in which the requested tetrahedron pieces reside; this should be between 0 and Dim4Triangulation::size()-1 inclusive. |
vertex | the vertex of the given pentachoron around which the requested tetrahedron pieces lie; this should be between 0 and 4 inclusive. |
triang | the triangulation in which this normal hypersurface lives. |
Implements regina::NNormalHypersurfaceVector.
|
protectedinherited |
The internal array containing all vector elements.
|
protectedinherited |
A pointer just beyond the end of the internal array.
The size of the vector can be computed as (end - elements).
|
staticinherited |
Negative one in the underlying number system.
This would be const
if it weren't for the fact that some compilers don't like this. It should never be modified!
|
staticinherited |
One in the underlying number system.
This would be const
if it weren't for the fact that some compilers don't like this. It should never be modified!
|
staticinherited |
Zero in the underlying number system.
This would be const
if it weren't for the fact that some compilers don't like this. It should never be modified!