Regina Calculation Engine
Public Member Functions | Static Public Member Functions | Protected Member Functions
regina::NSatTriPrism Class Reference

A saturated block that is a three-tetrahedron triangular prism. More...

#include <subcomplex/nsatblocktypes.h>

Inheritance diagram for regina::NSatTriPrism:
regina::NSatBlock regina::ShareableObject regina::boost::noncopyable

List of all members.

Public Member Functions

 NSatTriPrism (const NSatTriPrism &cloneMe)
 Constructs a clone of the given block structure.
bool isMajor () const
 Is this prism of major type or minor type? See the class notes for further details.
virtual NSatBlockclone () const
 Returns a newly created clone of this saturated block structure.
virtual void adjustSFS (NSFSpace &sfs, bool reflect) const
 Adjusts the given Seifert fibred space to insert the contents of this saturated block.
virtual void writeTextShort (std::ostream &out) const
 Writes this object in short text format to the given output stream.
virtual void writeAbbr (std::ostream &out, bool tex=false) const
 Writes an abbreviated name or symbol for this block to the given output stream.

Static Public Member Functions

static NSatTriPrismisBlockTriPrism (const NSatAnnulus &annulus, TetList &avoidTets)
 Determines whether the given annulus is a boundary annulus for a block of this type (triangular prism).
static NSatTriPrisminsertBlock (NTriangulation &tri, bool major)
 Inserts a new copy of a triangular prism block into the given triangulation, and returns the corresponding block structure.

Protected Member Functions

 NSatTriPrism (bool major)
 Constructs a partially initialised block.

Detailed Description

A saturated block that is a three-tetrahedron triangular prism.

Such a prism may be of major type or of minor type. In a major type prism, the horizontal edges of the boundary annuli are all major (degree three) edges of the prism. Likewise, in a minor type prism, the horizontal boundary edges are all minor (degree two) edges of the prism. See the NSatAnnulus class notes for a definition of "horizontal" and the NTriSolidTorus class notes for further details regarding "major" and "minor".


Constructor & Destructor Documentation

regina::NSatTriPrism::NSatTriPrism ( const NSatTriPrism cloneMe) [inline]

Constructs a clone of the given block structure.

Parameters:
cloneMethe block structure to clone.
regina::NSatTriPrism::NSatTriPrism ( bool  major) [inline, protected]

Constructs a partially initialised block.

The boundary annuli will remain uninitialised, and must be initialised before this block can be used.

Parameters:
majortrue if this block is of major type, or false if it is of minor type.

Member Function Documentation

virtual void regina::NSatTriPrism::adjustSFS ( NSFSpace sfs,
bool  reflect 
) const [virtual]

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is true, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the NSatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters:
sfsthe Seifert fibred space to adjust.
reflecttrue if this block is to be reflected, or false if it should be inserted directly.

Implements regina::NSatBlock.

NSatBlock * regina::NSatTriPrism::clone ( ) const [inline, virtual]

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of NSatBlock will be returned. For this reason, each subclass of NSatBlock must implement this routine.

Returns:
a new clone of this block.

Implements regina::NSatBlock.

static NSatTriPrism* regina::NSatTriPrism::insertBlock ( NTriangulation tri,
bool  major 
) [static]

Inserts a new copy of a triangular prism block into the given triangulation, and returns the corresponding block structure.

The given triangulation will not be emptied before the new tetrahedra are inserted.

Parameters:
trithe triangulation into which the new block should be inserted.
majortrue if a block of major type should be inserted, or false if a block of minor type should be inserted.
Returns:
structural details of the newly inserted block.
static NSatTriPrism* regina::NSatTriPrism::isBlockTriPrism ( const NSatAnnulus annulus,
TetList avoidTets 
) [static]

Determines whether the given annulus is a boundary annulus for a block of this type (triangular prism).

This routine is a specific case of NSatBlock::isBlock(); see that routine for further details.

Parameters:
annulusthe proposed boundary annulus that should form part of the new saturated block.
avoidTetsthe list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.
Returns:
details of the saturated block if one was found, or null if none was found.
bool regina::NSatTriPrism::isMajor ( ) const [inline]

Is this prism of major type or minor type? See the class notes for further details.

Note that this routine cannot be called major(), since on some compilers that name clashes with a macro for isolating major/minor bytes.

Returns:
true if this prism is of major type, or false if it is of minor type.
void regina::NSatTriPrism::writeAbbr ( std::ostream &  out,
bool  tex = false 
) const [inline, virtual]

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:
The parameter out does not exist; standard output will be used.
Parameters:
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be in plain text format.

Implements regina::NSatBlock.

void regina::NSatTriPrism::writeTextShort ( std::ostream &  out) const [inline, virtual]

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.


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

Copyright © 1999-2011, 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).