Regina Calculation Engine
Public Member Functions | Static Public Attributes | Friends | List of all members
regina::NFace Class Reference

Represents a face in the skeleton of a triangulation. More...

#include <triangulation/nface.h>

Inheritance diagram for regina::NFace:
regina::ShareableObject regina::NMarkedElement regina::boost::noncopyable

Public Member Functions

virtual ~NFace ()
 Default destructor. More...
 
bool isBoundary () const
 Determines if this face lies entirely on the boundary of the triangulation. More...
 
int getType ()
 Returns a description of the face type. More...
 
int getSubtype ()
 Return the face vertex or face edge that plays a special role for the face type of this face. More...
 
bool isMobiusBand ()
 Determines whether this face is wrapped up to form a Mobius band. More...
 
bool isCone ()
 Determines whether this face is wrapped up to form a cone. More...
 
unsigned getNumberOfEmbeddings () const
 Returns the number of descriptors available through getEmbedding(). More...
 
const NFaceEmbeddinggetEmbedding (unsigned index) const
 Returns the requested descriptor detailing how this face forms a part of a particular tetrahedron in the triangulation. More...
 
NComponentgetComponent () const
 Returns the component of the triangulation to which this face belongs. More...
 
NBoundaryComponentgetBoundaryComponent () const
 Returns the boundary component of the triangulation to which this face belongs. More...
 
NVertexgetVertex (int vertex) const
 Returns the vertex of the triangulation that corresponds to the given vertex of this face. More...
 
NEdgegetEdge (int edge) const
 Returns the edge of the triangulation that corresponds to the given edge of this face. More...
 
NPerm4 getEdgeMapping (int edge) const
 Examines the given edge of this face, and returns a mapping from the "canonical" vertices of the corresponding edge of the triangulation to the vertices of this face. More...
 
void writeTextShort (std::ostream &out) const
 Writes this object in short text format to the given output stream. More...
 
- Public Member Functions inherited from regina::ShareableObject
 ShareableObject ()
 Default constructor that does nothing. More...
 
virtual ~ShareableObject ()
 Default destructor that does nothing. More...
 
virtual void writeTextLong (std::ostream &out) const
 Writes this object in long text format to the given output stream. More...
 
std::string toString () const
 Returns the output from writeTextShort() as a string. More...
 
std::string toStringLong () const
 Returns the output from writeTextLong() as a string. More...
 
- Public Member Functions inherited from regina::NMarkedElement
long markedIndex () const
 Returns the index at which this object is stored in an NMarkedVector. More...
 

Static Public Attributes

static const int TRIANGLE
 Specifies a face with no identified vertices or edges. More...
 
static const int SCARF
 Specifies a face with two identified vertices. More...
 
static const int PARACHUTE
 Specifies a face with three identified vertices. More...
 
static const int CONE
 Specifies a face with two edges identified to form a cone. More...
 
static const int MOBIUS
 Specifies a face with two edges identified to form a mobius band. More...
 
static const int HORN
 Specifies a face with two edges identified to form a cone with all three vertices identified. More...
 
static const int DUNCEHAT
 Specifies a face with all three edges identified, some via orientable and some via non-orientable gluings. More...
 
static const int L31
 Specifies a face with all three edges identified using non-orientable gluings. More...
 
static const NPerm4 ordering [4]
 An array that maps face numbers within a tetrahedron to the canonical ordering of the individual tetrahedron vertices that form each face. More...
 

Friends

class NTriangulation
 Allow access to private members. More...
 

Additional Inherited Members

- Protected Member Functions inherited from regina::boost::noncopyable
 noncopyable ()
 A constructor which does nothing. More...
 
 ~noncopyable ()
 A destructor which does nothing. More...
 

Detailed Description

Represents a face in the skeleton of a triangulation.

Faces are highly temporary; once a triangulation changes, all its face objects will be deleted and new ones will be created.

Constructor & Destructor Documentation

regina::NFace::~NFace ( )
inlinevirtual

Default destructor.

All embedding descriptors stored in this face will be automatically deleted.

Member Function Documentation

NBoundaryComponent * regina::NFace::getBoundaryComponent ( ) const
inline

Returns the boundary component of the triangulation to which this face belongs.

Returns
the boundary component containing this face, or 0 if this face does not lie entirely within the boundary of the triangulation.
NComponent * regina::NFace::getComponent ( ) const
inline

Returns the component of the triangulation to which this face belongs.

Returns
the component containing this face.
NEdge* regina::NFace::getEdge ( int  edge) const

Returns the edge of the triangulation that corresponds to the given edge of this face.

Note that edge i of a face is opposite vertex i of the face.

Parameters
edgethe edge of this face to examine. This should be 0, 1 or 2.
Returns
the corresponding edge of the triangulation.
NPerm4 regina::NFace::getEdgeMapping ( int  edge) const

Examines the given edge of this face, and returns a mapping from the "canonical" vertices of the corresponding edge of the triangulation to the vertices of this face.

This routine behaves much the same as NTetrahedron::getEdgeMapping(), except that it maps the edge vertices into a face, not into a pentachoron. 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 face (which is equal to the argument edge), and will always map 3 to itself.

Parameters
edgethe edge of this face to examine. This should be 0, 1 or 2.
Returns
a mapping from vertices (0,1) of the requested edge to the vertices of this face.
const NFaceEmbedding & regina::NFace::getEmbedding ( unsigned  index) const
inline

Returns the requested descriptor detailing how this face forms a part of a particular tetrahedron in the triangulation.

Note that if this face represents multiple faces of a particular tetrahedron, then there will be multiple embedding descriptors available regarding that tetrahedron.

Parameters
indexthe index of the requested descriptor. This should be between 0 and getNumberOfEmbeddings()-1 inclusive.
Returns
the requested embedding descriptor.
unsigned regina::NFace::getNumberOfEmbeddings ( ) const
inline

Returns the number of descriptors available through getEmbedding().

Note that this number will never be greater than two.

Returns
the number of embedding descriptors.
int regina::NFace::getSubtype ( )
inline

Return the face vertex or face edge that plays a special role for the face type of this face.

Note that this routine is only relevant for some face types. The face type is returned by getType().

Returns
The vertex or edge that plays a special role (this will be 0, 1 or 2), or -1 if this face type has no special vertex or edge.
int regina::NFace::getType ( )

Returns a description of the face type.

The face type describes how the edges and vertices of the face are identified.

Returns
one of the predefined face type constants in NFace.
NVertex * regina::NFace::getVertex ( int  vertex) const
inline

Returns the vertex of the triangulation that corresponds to the given vertex of this face.

Note that vertex i of a face is opposite edge i of the face.

Parameters
vertexthe vertex of this face to examine. This should be 0, 1 or 2.
Returns
the corresponding vertex of the triangulation.
bool regina::NFace::isBoundary ( ) const
inline

Determines if this face lies entirely on the boundary of the triangulation.

Returns
true if and only if this face lies on the boundary.
bool regina::NFace::isCone ( )
inline

Determines whether this face is wrapped up to form a cone.

Note that several different face types (as returned by getType()) can produce this result. Note also that a face can be both a Mobius band and a cone.

Returns
true if and only if this face is a cone.
bool regina::NFace::isMobiusBand ( )
inline

Determines whether this face is wrapped up to form a Mobius band.

Note that several different face types (as returned by getType()) can produce this result. Note also that a face can be both a Mobius band and a cone.

Returns
true if and only if this face is a Mobius band.
void regina::NFace::writeTextShort ( std::ostream &  out) const
inlinevirtual

Writes this object in short text format to the given output stream.

The output should fit on a single line and no newline should be written.

Python:
The parameter out does not exist; standard output will be used.
Parameters
outthe output stream to which to write.

Implements regina::ShareableObject.

Friends And Related Function Documentation

friend class NTriangulation
friend

Allow access to private members.

Member Data Documentation

const int regina::NFace::CONE
static

Specifies a face with two edges identified to form a cone.

const int regina::NFace::DUNCEHAT
static

Specifies a face with all three edges identified, some via orientable and some via non-orientable gluings.

const int regina::NFace::HORN
static

Specifies a face with two edges identified to form a cone with all three vertices identified.

const int regina::NFace::L31
static

Specifies a face with all three edges identified using non-orientable gluings.

Note that this forms a spine for the Lens space L(3,1).

const int regina::NFace::MOBIUS
static

Specifies a face with two edges identified to form a mobius band.

const NPerm4 regina::NFace::ordering[4]
static

An array that maps face numbers within a tetrahedron to the canonical ordering of the individual tetrahedron vertices that form each face.

This means that the vertices of face i in a tetrahedron are, in canonical order, ordering[i][0..2]. As an immediate consequence, we obtain ordering[i][3] == i.

This table does not describe the mapping from specific triangulation faces into individual tetrahedra (for that, see NTetrahedron::getFaceMapping() 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().

const int regina::NFace::PARACHUTE
static

Specifies a face with three identified vertices.

const int regina::NFace::SCARF
static

Specifies a face with two identified vertices.

const int regina::NFace::TRIANGLE
static

Specifies a face with no identified vertices or edges.


The documentation for this class was generated from the following file:

Copyright © 1999-2012, The Regina development team
This software is released under the GNU General Public License.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@debian.org).