Regina Calculation Engine
|
Represents a single normal hypersurface in a 4-manifold triangulation. More...
#include <hypersurface/normalhypersurface.h>
Public Member Functions | |
NormalHypersurface (const Triangulation< 4 > *triangulation, NormalHypersurfaceVector *vector) | |
Creates a new normal hypersurface inside the given triangulation with the given coordinate vector. More... | |
NormalHypersurface (const Triangulation< 4 > *triang, HyperCoords coordSystem, List allCoords) | |
A Python-only routine that creates a new normal hypersurface inside the given triangulation with the given coordinate vector. More... | |
~NormalHypersurface () | |
Destroys this normal hypersurface. More... | |
NormalHypersurface * | clone () const |
Creates a newly allocated clone of this normal hypersurface. More... | |
NormalHypersurface * | doubleHypersurface () const |
Creates a newly allocated hypersurface that is the double of this hypersurface. More... | |
LargeInteger | tetrahedra (size_t pentIndex, int vertex) const |
Returns the number of tetrahedron pieces of the given type in this normal hypersurface. More... | |
LargeInteger | prisms (size_t pentIndex, int prismType) const |
Returns the number of prism pieces of the given type in this normal hypersurface. More... | |
LargeInteger | edgeWeight (size_t edgeIndex) const |
Returns the number of times this normal hypersurface crosses the given edge. More... | |
size_t | countCoords () const |
Returns the number of coordinates in the specific underlying coordinate system being used. More... | |
const Triangulation< 4 > * | triangulation () const |
Returns the triangulation in which this normal hypersurface resides. More... | |
const std::string & | name () const |
Returns the name associated with this normal hypersurface. More... | |
void | setName (const std::string &name) |
Sets the name associated with this normal hypersurface. More... | |
void | writeTextShort (std::ostream &out) const |
Writes this hypersurface to the given output stream, using standard tetrahedron-prism coordinates. More... | |
void | writeRawVector (std::ostream &out) const |
Writes the underlying coordinate vector to the given output stream in text format. More... | |
void | writeXMLData (std::ostream &out) const |
Writes a chunk of XML containing this normal hypersurface and all of its properties. More... | |
bool | isEmpty () const |
Determines if this normal hypersurface is empty (has no pieces whatsoever). More... | |
bool | isCompact () const |
Determines if this normal hypersurface is compact (has finitely many pieces). More... | |
bool | isOrientable () const |
Returns whether or not this hypersurface is orientable. More... | |
bool | isTwoSided () const |
Returns whether or not this hypersurface is two-sided. More... | |
bool | isConnected () const |
Returns whether or not this hypersurface is connected. More... | |
bool | hasRealBoundary () const |
Determines if this hypersurface has any real boundary, that is, whether it meets any boundary tetrahedra of the triangulation. More... | |
bool | isVertexLinking () const |
Determines whether or not this hypersurface is vertex linking. More... | |
const Vertex< 4 > * | isVertexLink () const |
Determines whether or not a rational multiple of this hypersurface is the link of a single vertex. More... | |
const Edge< 4 > * | isThinEdgeLink () const |
Determines whether or not a rational multiple of this hypersurface is the thin link of a single edge. More... | |
const AbelianGroup & | homology () const |
Returns the first homology group of this hypersurface. More... | |
Triangulation< 3 > * | triangulate () const |
Returns a 3-manifold triangulation describing this normal hypersurface. More... | |
bool | sameSurface (const NormalHypersurface &other) const |
Determines whether this and the given hypersurface in fact represent the same normal hypersurface. More... | |
bool | embedded () const |
Determines whether this hypersurface is embedded. More... | |
bool | locallyCompatible (const NormalHypersurface &other) const |
Determines whether this and the given hypersurface are locally compatible. More... | |
const Ray & | rawVector () const |
Gives read-only access to the raw vector that sits beneath this normal hypersurface. More... | |
void | writeTextLong (std::ostream &out) const |
A default implementation for detailed output. More... | |
std::string | str () const |
Returns a short text representation of this object. More... | |
std::string | utf8 () const |
Returns a short text representation of this object using unicode characters. More... | |
std::string | detail () const |
Returns a detailed text representation of this object. More... | |
Protected Member Functions | |
void | calculateRealBoundary () const |
Calculates whether this hypersurface has any real boundary and stores the result as a property. More... | |
void | calculateFromTriangulation () const |
Calculate and store all properties that we derive from the 3-manifold triangulation of this hypersurface. More... | |
Protected Attributes | |
NormalHypersurfaceVector * | vector_ |
Contains the coordinates of the normal hypersurface in whichever space is appropriate. More... | |
const Triangulation< 4 > * | triangulation_ |
The triangulation in which this normal hypersurface resides. More... | |
std::string | name_ |
An optional name associated with this hypersurface. More... | |
Property< bool > | orientable_ |
Is this hypersurface orientable? More... | |
Property< bool > | twoSided_ |
Is this hypersurface two-sided? More... | |
Property< bool > | connected_ |
Is this hypersurface connected? More... | |
Property< bool > | realBoundary_ |
Does this hypersurface have real boundary (i.e. More... | |
Property< bool > | compact_ |
Is this hypersurface compact (i.e., does it only contain finitely many pieces)? More... | |
Property< AbelianGroup, StoreManagedPtr > | H1_ |
First homology group of the hypersurface. More... | |
Friends | |
class | XMLNormalHypersurfaceReader |
Represents a single normal hypersurface in a 4-manifold triangulation.
Once the underlying triangulation changes, this normal hypersurface object is no longer valid.
The information provided by the various query methods is independent of the underlying coordinate system being used. See the NormalHypersurfaceVector class notes for details of what to do when introducing a new coordinate system.
Note that non-compact surfaces (surfaces with infinitely many pieces, are allowed; in these cases, the corresponding coordinate lookup routines will return LargeInteger::infinity where appropriate.
|
inherited |
Returns a detailed text representation of this object.
This text may span many lines, and should provide the user with all the information they could want. It should be human-readable, should not contain extremely long lines (which cause problems for users reading the output in a terminal), and should end with a final newline. There are no restrictions on the underlying character set.
|
inherited |
Returns a short text representation of this object.
This text should be human-readable, should fit on a single line, and should not end with a newline. Where possible, it should use plain ASCII characters.
__str__()
.
|
inherited |
Returns a short text representation of this object using unicode characters.
Like str(), this text should be human-readable, should fit on a single line, and should not end with a newline. In addition, it may use unicode characters to make the output more pleasant to read. This string will be encoded in UTF-8.
|
inlineinherited |
A default implementation for detailed output.
This routine simply calls T::writeTextShort() and appends a final newline.
out | the output stream to which to write. |