Regina Calculation Engine
|
Represents a saturated block in a Seifert fibred space. More...
#include <subcomplex/satblock.h>
Public Types | |
typedef std::set< Tetrahedron< 3 > * > | TetList |
The data structure used to store a list of tetrahedra that should not be examined by isBlock(). More... | |
Public Member Functions | |
SatBlock (const SatBlock &cloneMe) | |
Creates a new clone of the given block. More... | |
virtual | ~SatBlock () |
Destroys all internal arrays. More... | |
virtual SatBlock * | clone () const =0 |
Returns a newly created clone of this saturated block structure. More... | |
unsigned | nAnnuli () const |
Returns the number of annuli on the boundary of this saturated block. More... | |
const SatAnnulus & | annulus (unsigned which) const |
Returns details of the requested annulus on the boundary of this saturated block. More... | |
bool | twistedBoundary () const |
Is the ring of boundary annuli twisted to form a long Mobius strip? More... | |
bool | hasAdjacentBlock (unsigned whichAnnulus) const |
Returns whether there is another saturated block listed as being adjacent to the given boundary annulus of this block. More... | |
SatBlock * | adjacentBlock (unsigned whichAnnulus) const |
Returns the saturated block listed as being adjacent to the given boundary annulus of this block. More... | |
unsigned | adjacentAnnulus (unsigned whichAnnulus) const |
Returns which specific annulus of the adjacent block is listed as being adjacent to the given boundary annulus of this block. More... | |
bool | adjacentReflected (unsigned whichAnnulus) const |
Returns whether the adjacency along the given boundary annulus of this block is reflected. More... | |
bool | adjacentBackwards (unsigned whichAnnulus) const |
Returns whether the adjacency along the given boundary annulus of this block is backwards. More... | |
void | setAdjacent (unsigned whichAnnulus, SatBlock *adjBlock, unsigned adjAnnulus, bool adjReflected, bool adjBackwards) |
Lists the given saturated block as being adjacent to the given boundary annulus of this block. More... | |
virtual void | adjustSFS (SFSpace &sfs, bool reflect) const =0 |
Adjusts the given Seifert fibred space to insert the contents of this saturated block. More... | |
virtual void | transform (const Triangulation< 3 > *originalTri, const Isomorphism< 3 > *iso, Triangulation< 3 > *newTri) |
Adjusts the structure of this block according to the given isomorphism between triangulations. More... | |
void | nextBoundaryAnnulus (unsigned thisAnnulus, SatBlock *&nextBlock, unsigned &nextAnnulus, bool &refVert, bool &refHoriz, bool followPrev) |
Finds the next (or previous) boundary annulus around from this, treating all adjacent blocks as part of a single large saturated region. More... | |
std::string | abbr (bool tex=false) const |
Returns an abbreviated name or symbol for this block. More... | |
virtual void | writeAbbr (std::ostream &out, bool tex=false) const =0 |
Writes an abbreviated name or symbol for this block to the given output stream. More... | |
bool | operator< (const SatBlock &compare) const |
Implements a consistent ordering of saturated blocks. More... | |
virtual void | writeTextShort (std::ostream &out) const =0 |
Writes a short text representation of this object to the given output stream. More... | |
virtual void | writeTextLong (std::ostream &out) const |
Writes a detailed text representation of this object to the given output stream. 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... | |
Static Public Member Functions | |
static SatBlock * | isBlock (const SatAnnulus &annulus, TetList &avoidTets) |
Determines whether the given annulus is in fact a boundary annulus for a recognised type of saturated block. More... | |
Protected Member Functions | |
SatBlock (unsigned nAnnuli, bool twistedBoundary=false) | |
Constructor for a block with the given number of annuli on the boundary. More... | |
Static Protected Member Functions | |
static bool | isBad (Tetrahedron< 3 > *t, const TetList &list) |
Determines whether the given tetrahedron is contained within the given list. More... | |
template<class List > | |
static bool | isBad (Tetrahedron< 3 > *t, const List &list) |
Determines whether the given tetrahedron is contained within the given list. More... | |
static bool | notUnique (Tetrahedron< 3 > *test) |
Determines whether the given tetrahedron pointer is null. More... | |
static bool | notUnique (Tetrahedron< 3 > *test, Tetrahedron< 3 > *other1) |
Determines whether the given tetrahedron pointer is null or equal to another from the given list. More... | |
static bool | notUnique (Tetrahedron< 3 > *test, Tetrahedron< 3 > *other1, Tetrahedron< 3 > *other2) |
Determines whether the given tetrahedron pointer is null or equal to another from the given list. More... | |
static bool | notUnique (Tetrahedron< 3 > *test, Tetrahedron< 3 > *other1, Tetrahedron< 3 > *other2, Tetrahedron< 3 > *other3) |
Determines whether the given tetrahedron pointer is null or equal to another from the given list. More... | |
static bool | notUnique (Tetrahedron< 3 > *test, Tetrahedron< 3 > *other1, Tetrahedron< 3 > *other2, Tetrahedron< 3 > *other3, Tetrahedron< 3 > *other4) |
Determines whether the given tetrahedron pointer is null or equal to another from the given list. More... | |
Protected Attributes | |
unsigned | nAnnuli_ |
The number of boundary annuli. More... | |
SatAnnulus * | annulus_ |
Details of each boundary annulus, as seen from the inside of this saturated block. More... | |
bool | twistedBoundary_ |
Is the ring of boundary annuli twisted to form a Mobius band? More... | |
SatBlock ** | adjBlock_ |
The saturated block joined to each boundary annulus; this may be null if there is no adjacency or if this information is not known. More... | |
unsigned * | adjAnnulus_ |
Describes which specific annulus of the adjacent saturated block is joined to each boundary annulus of this block. More... | |
bool * | adjReflected_ |
Describes whether the adjacency for each boundary annulus is reflected (see the class notes above). More... | |
bool * | adjBackwards_ |
Describes whether the adjacency for each boundary annulus is backwards (see the class notes above). More... | |
Represents a saturated block in a Seifert fibred space.
A saturated block is a connected set of tetrahedra built from a subset of fibres (no fibres may enter or exit the boundary of the block). In addition, the boundary of this block must be a ring of saturated annuli, as described by the SatAnnulus class. Aside from this ring of saturated annuli, there may be no other boundary triangles within the block.
The boundary annuli are numbered consecutively as illustrated below, where the markings 0 and 1 within the triangles represent the first and second triangle of each annulus (see the SatAnnulus class notes for details). Note that the following diagram is viewed from inside the block.
-+---+---+---+---+---+---+- |0 /|0 /|0 /|0 /|0 /|0 /| ... | / | / | / | / | / | / | ... |/ 1|/ 1|/ 1|/ 1|/ 1|/ 1| -+---+---+---+---+---+---+- Annulus # ... n-2 n-1 0 1 2 3 ...
The ring of boundary annuli may optionally be twisted, so that together the annuli form a long Mobius band. In this case, for the purposes of labelling and marking annuli, the twist occurs between annuli n-1 and 0. Be careful when dealing with blocks with twisted boundaries, since with twists it is possible to identify an edge with itself in reverse (thus producing something that is not a 3-manifold triangulation).
Each saturated block corresponds to a piece of the base orbifold of the larger Seifert fibred space. For the purpose of connecting the base orbifold together, we assume that the boundary of this particular piece runs horizontally in the diagram above (specifically following the horizontal edges of the boundary annuli, as described in the SatAnnulus class notes). Insisting on such a boundary may lead to (1,k) twists within the block; these are accounted for by the virtual adjustSFS() routine.
Saturated blocks are generally joined to one another (or themselves) along their boundary annuli. For this purpose, each saturated block contains a list of which annulus of this block is adjacent to which annulus of which other block. Adjacencies may be reflected, meaning that the adjacent annulus has its fibres reversed (i.e., the adjacent annulus has undergone an up-to-down reflection); they may also be backwards, meaning that the first triangle of one annulus is joined to the second triangle of the other (and vice versa).
|
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.