Regina Calculation Engine
|
Represents a triangle in the skeleton of a triangulation. More...
#include <triangulation/ntriangle.h>
Public Member Functions | |
virtual | ~NTriangle () |
Default destructor. More... | |
unsigned long | index () const |
Returns the index of this triangle in the underlying triangulation. More... | |
bool | isBoundary () const |
Determines if this triangle lies entirely on the boundary of the triangulation. More... | |
int | getType () |
Returns a description of the triangle type. More... | |
int | getSubtype () |
Return the triangle vertex or triangle edge that plays a special role for the triangle type of this triangle. More... | |
bool | isMobiusBand () |
Determines whether this triangle is wrapped up to form a Mobius band. More... | |
bool | isCone () |
Determines whether this triangle is wrapped up to form a cone. More... | |
unsigned | getNumberOfEmbeddings () const |
Returns the number of descriptors available through getEmbedding(). More... | |
const NTriangleEmbedding & | getEmbedding (unsigned index) const |
Returns the requested descriptor detailing how this triangle forms a part of a particular tetrahedron in the triangulation. More... | |
NTriangulation * | getTriangulation () const |
Returns the triangulation to which this triangle belongs. More... | |
NComponent * | getComponent () const |
Returns the component of the triangulation to which this triangle belongs. More... | |
NBoundaryComponent * | getBoundaryComponent () const |
Returns the boundary component of the triangulation to which this triangle belongs. More... | |
NVertex * | getVertex (int vertex) const |
Returns the vertex of the triangulation that corresponds to the given vertex of this triangle. More... | |
NEdge * | getEdge (int edge) const |
Returns the edge of the triangulation that corresponds to the given edge of this triangle. More... | |
NPerm4 | getEdgeMapping (int edge) const |
Examines the given edge of this triangle, and returns a mapping from the "canonical" vertices of the corresponding edge of the triangulation to the vertices of this triangle. More... | |
void | writeTextShort (std::ostream &out) const |
Writes this object in short text format to the given output stream. More... | |
void | writeTextLong (std::ostream &out) const |
Writes this object in long text format to the given output stream. More... | |
long | markedIndex () const |
Returns the index at which this object is stored in an NMarkedVector. More... | |
Input and Output | |
std::string | str () const |
Returns the output from writeTextShort() as a string. More... | |
std::string | toString () const |
A deprecated alias for str(), which returns the output from writeTextShort() as a string. More... | |
std::string | detail () const |
Returns the output from writeTextLong() as a string. More... | |
std::string | toStringLong () const |
A deprecated alias for detail(), which returns the output from writeTextLong() as a string. More... | |
Static Public Attributes | |
static const int | TRIANGLE |
Specifies a triangle with no identified vertices or edges. More... | |
static const int | SCARF |
Specifies a triangle with two identified vertices. More... | |
static const int | PARACHUTE |
Specifies a triangle with three identified vertices. More... | |
static const int | CONE |
Specifies a triangle with two edges identified to form a cone. More... | |
static const int | MOBIUS |
Specifies a triangle with two edges identified to form a mobius band. More... | |
static const int | HORN |
Specifies a triangle with two edges identified to form a cone with all three vertices identified. More... | |
static const int | DUNCEHAT |
Specifies a triangle with all three edges identified, some via orientable and some via non-orientable gluings. More... | |
static const int | L31 |
Specifies a triangle with all three edges identified using non-orientable gluings. More... | |
static const NPerm4 | ordering [4] |
An array that maps triangle numbers within a tetrahedron (i.e., face numbers) to the canonical ordering of the individual tetrahedron vertices that form each triangle. More... | |
Friends | |
class | NTriangulation |
Allow access to private members. More... | |
Represents a triangle in the skeleton of a triangulation.
Triangles are highly temporary; once a triangulation changes, all its triangle objects will be deleted and new ones will be created.
|
inlinevirtual |
Default destructor.
All embedding descriptors stored in this triangle will be automatically deleted.
|
inherited |
Returns the output from writeTextLong() as a string.
|
inline |
Returns the boundary component of the triangulation to which this triangle belongs.
|
inline |
Returns the component of the triangulation to which this triangle belongs.
NEdge* regina::NTriangle::getEdge | ( | int | edge | ) | const |
Returns the edge of the triangulation that corresponds to the given edge of this triangle.
Note that edge i of a triangle is opposite vertex i of the triangle.
edge | the edge of this triangle to examine. This should be 0, 1 or 2. |
NPerm4 regina::NTriangle::getEdgeMapping | ( | int | edge | ) | const |
Examines the given edge of this triangle, and returns a mapping from the "canonical" vertices of the corresponding edge of the triangulation to the vertices of this triangle.
This routine behaves much the same as NTetrahedron::getEdgeMapping(), except that it maps the edge vertices into a triangle, not into a tetrahedron. See NTetrahedron::getEdgeMapping() for a more detailed explanation of precisely what this mapping means.
This routine differs from NTetrahedron::getEdgeMapping() in how it handles the images of 2 and 3. This routine will always map 2 to the remaining vertex of this triangle (which is equal to the argument edge), and will always map 3 to itself.
edge | the edge of this triangle to examine. This should be 0, 1 or 2. |
|
inline |
Returns the requested descriptor detailing how this triangle forms a part of a particular tetrahedron in the triangulation.
Note that if this triangle represents multiple faces of a particular tetrahedron, then there will be multiple embedding descriptors available regarding that tetrahedron.
index | the index of the requested descriptor. This should be between 0 and getNumberOfEmbeddings()-1 inclusive. |
|
inline |
Returns the number of descriptors available through getEmbedding().
Note that this number will never be greater than two.
|
inline |
Return the triangle vertex or triangle edge that plays a special role for the triangle type of this triangle.
Note that this routine is only relevant for some triangle types. The triangle type is returned by getType().
|
inline |
Returns the triangulation to which this triangle belongs.
int regina::NTriangle::getType | ( | ) |
|
inline |
Returns the vertex of the triangulation that corresponds to the given vertex of this triangle.
Note that vertex i of a triangle is opposite edge i of the triangle.
vertex | the vertex of this triangle to examine. This should be 0, 1 or 2. |
|
inline |
Returns the index of this triangle in the underlying triangulation.
This is identical to calling getTriangulation()->triangleIndex(this)
.
|
inline |
Determines if this triangle lies entirely on the boundary of the triangulation.
true
if and only if this triangle lies on the boundary.
|
inline |
Determines whether this triangle is wrapped up to form a cone.
Note that several different triangle types (as returned by getType()) can produce this result. Note also that a triangle can be both a Mobius band and a cone.
true
if and only if this triangle is a cone.
|
inline |
Determines whether this triangle is wrapped up to form a Mobius band.
Note that several different triangle types (as returned by getType()) can produce this result. Note also that a triangle can be both a Mobius band and a cone.
true
if and only if this triangle is a Mobius band.
|
inlineinherited |
Returns the index at which this object is stored in an NMarkedVector.
If this object does not belong to an NMarkedVector, the return value is undefined.
|
inherited |
Returns the output from writeTextShort() as a string.
__str__()
function.
|
inlineinherited |
A deprecated alias for str(), which returns the output from writeTextShort() as a string.
|
inlineinherited |
A deprecated alias for detail(), which returns the output from writeTextLong() as a string.
|
virtual |
Writes this object in long text format to the given output stream.
The output should provide the user with all the information they could want. The output should be human-readable, should not contain extremely long lines (so users can read the output in a terminal), and should end with a final newline.
The default implementation of this routine merely calls writeTextShort() and adds a newline.
out | the output stream to which to write. |
Reimplemented from regina::ShareableObject.
|
inlinevirtual |
Writes this object in short text format to the given output stream.
The output should be human-readable, should fit on a single line, and should not end with a newline.
out | the output stream to which to write. |
Implements regina::ShareableObject.
|
friend |
Allow access to private members.
|
static |
Specifies a triangle with two edges identified to form a cone.
|
static |
Specifies a triangle with all three edges identified, some via orientable and some via non-orientable gluings.
|
static |
Specifies a triangle with two edges identified to form a cone with all three vertices identified.
|
static |
Specifies a triangle with all three edges identified using non-orientable gluings.
Note that this forms a spine for the Lens space L(3,1).
|
static |
Specifies a triangle with two edges identified to form a mobius band.
|
static |
An array that maps triangle numbers within a tetrahedron (i.e., face numbers) to the canonical ordering of the individual tetrahedron vertices that form each triangle.
This means that the vertices of triangle i in a tetrahedron are, in canonical order, ordering[i][0..2]
. As an immediate consequence, we obtain ordering[i][3] == i
.
Regina defines canonical order to be increasing order. That is, ordering[i][0] < ... < ordering[i][2]
.
This table does not describe the mapping from specific triangles within a triangulation into individual tetrahedra (for that, see NTetrahedron::getTriangleMapping() instead). This table merely provides a neat and consistent way of listing the vertices of any given tetrahedron face.
This lookup table replaces the deprecated routine regina::faceOrdering().
|
static |
Specifies a triangle with three identified vertices.
|
static |
Specifies a triangle with two identified vertices.
|
static |
Specifies a triangle with no identified vertices or edges.