Regina Calculation Engine
Public Member Functions | Protected Attributes | Friends | List of all members
regina::BoundaryComponent< dim > Class Template Reference

A component of the boundary of a dim-manifold triangulation. More...

#include <triangulation/generic.h>

Inheritance diagram for regina::BoundaryComponent< dim >:
regina::detail::BoundaryComponentBase< dim > regina::Output< BoundaryComponentBase< dim > > regina::MarkedElement

Public Member Functions

size_t index () const
 Returns the index of this boundary component in the underlying triangulation. More...
 
bool isOrientable () const
 Determines if this boundary component is orientable. 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...
 
size_t markedIndex () const
 Returns the index at which this object is stored in an MarkedVector. More...
 

Protected Attributes

bool orientable_
 Is this boundary component orientable? More...
 

Friends

class Triangulation< dim >
 
class detail::TriangulationBase< dim >
 

Detailed Description

template<int dim>
class regina::BoundaryComponent< dim >

A component of the boundary of a dim-manifold triangulation.

Regina recognises three types of boundary components:

Ideal and invalid vertex boundary components are only recognised when dim is one of Regina's standard dimensions. This is because, in higher dimensions, the relevant conditions rely on undecidable problems.

Regina stores different skeletal information for different types of boundary components:

We can encounter some interesting cases with invalid triangulations. Consider some face whose link has more than one boundary component (which makes the face invalid). This means that different parts of the (dim)-manifold boundary are effectively "pinched" together. If this happens, the different parts of the boundary that are pinched might or might not be listed as part of the same boundary component; if not then the offending face will be included in all of these boundary components. Nevertheless, only one of these can be considered the "official" boundary component of the face as returned by Face::boundaryComponent(). This is all a bit of a mess, but then again the entire triangulation is invalid and so you almost certainly have bigger problems to deal with.

Boundary components are highly temporary: whenever a triangulation changes, all of its boundary component objects will be deleted and new ones will be created in their place.

Boundary component objects are all created, managed and destroyed by the class Triangulation<dim>. See the Triangulation notes for further information on working with dim-dimensional triangulations.

For dimension dim = 3, this template is specialised and offers more functionality. In order to use this specialised class, you will need to include the corresponding header triangulation/dim3.h.

Python
Python does not support templates. Instead this class can be used by appending the dimension as a suffix (e.g., BoundaryComponent2 and BoundaryComponent3 for dimensions 2 and 3).
Template Parameters
dimthe dimension of the underlying triangulation. This must be between 2 and 15 inclusive.

Member Function Documentation

◆ detail()

std::string regina::Output< BoundaryComponentBase< dim > , false >::detail ( ) const
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.

Returns
a detailed text representation of this object.

◆ str()

std::string regina::Output< BoundaryComponentBase< dim > , false >::str ( ) const
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.

Python
In addition to str(), this is also used as the Python "stringification" function str().
Returns
a short text representation of this object.

◆ utf8()

std::string regina::Output< BoundaryComponentBase< dim > , false >::utf8 ( ) const
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.

Returns
a short text representation of this object.

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

Copyright © 1999-2021, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).