regina::SatAnnulus Struct Reference
Standard Triangulations and Subcomplexes

Represents an annulus formed from a pair of triangles in a Seifert fibred space. More...

`#include <subcomplex/satannulus.h>`

## Public Member Functions

| SatAnnulus ()
| Creates a new uninitialised structure. More...
| SatAnnulus (const SatAnnulus &cloneMe)
| Creates a clone of the given structure. More...
| SatAnnulus (Tetrahedron< 3 > *t0, Perm< 4 > r0, Tetrahedron< 3 > *t1, Perm< 4 > r1)
| Creates a new structure initialised to the given values. More...
SatAnnulus & | operator= (const SatAnnulus &cloneMe)
| Makes this equal to a clone of the given structure. More...
bool | operator== (const SatAnnulus &other) const
| Determines whether or not this and the given structure describe the same annulus with the same representation. More...
bool | operator!= (const SatAnnulus &other) const
| Determines whether or not this and the given structure describe the same annulus with the same representation. More...
unsigned | meetsBoundary () const
| Determines how many triangles of this annulus lie on the boundary of the triangulation. More...
void | switchSides ()
| Converts this into a representation of the same annulus from the other side. More...
SatAnnulus | otherSide () const
| Returns a representation of the same annulus from the other side. More...
void | reflectVertical ()
| Reverses the direction of the vertical fibres in this annulus representation. More...
SatAnnulus | verticalReflection () const
| Returns a representation of this annulus in which the vertical direction of the fibres has been reversed. More...
void | reflectHorizontal ()
| Performs a left-to-right reflection of this annulus representation. More...
SatAnnulus | horizontalReflection () const
| Returns a left-to-right reflected representation of this annulus. More...
void | rotateHalfTurn ()
| Rotates the representation of this annulus by 180 degrees. More...
SatAnnulus | halfTurnRotation () const
| Returns a 180 degree rotated representation of this annulus. More...
bool | isAdjacent (const SatAnnulus &other, bool *refVert, bool *refHoriz) const
| Determines whether this and the given annulus are adjacent, possibly modulo vertical or horizontal reflections. More...
bool | isJoined (const SatAnnulus &other, Matrix2 &matching) const
| Determines whether this and the given annulus are joined in some form, even if the fibres on each annulus are not consistent. More...
bool | isTwoSidedTorus () const
| Determines whether this annulus has its boundaries identified to form an embedded two-sided torus within the surrounding triangulation. More...
void | transform (const Triangulation< 3 > *originalTri, const Isomorphism< 3 > *iso, Triangulation< 3 > *newTri)
| Adjusts this annulus representation according to the given isomorphism between triangulations. More...
SatAnnulus | image (const Triangulation< 3 > *originalTri, const Isomorphism< 3 > *iso, Triangulation< 3 > *newTri) const
| Returns the image of this annulus representation under the given isomorphism between triangulations. More...
void | attachLST (Triangulation< 3 > *tri, long alpha, long beta) const
| Attaches a layered solid torus to the this saturated annulus. More...

## Public Attributes

Tetrahedron< 3 > * | tet [2]
| Describes which tetrahedra provide the first and second triangles. More...
Perm< 4 > | roles [2]
| Describes how the first and second triangles match up with individual tetrahedron vertices. More...

## Detailed Description

Represents an annulus formed from a pair of triangles in a Seifert fibred space.

This annulus is saturated, i.e., a union of fibres. More than that, the fibres run parallel to the two boundary edges of the annulus.

The annulus is described from one side only. The description includes an array of indices tet[] describing which two tetrahedra provide the triangles of the annulus, as well as an array of permutations roles[] detailing how the annulus matches up with the individual tetrahedron vertices.

The annulus can be drawn as follows, with the upper edge identified with the lower:

               *--->---*
               |0  2 / |
       First   |    / 1|  Second
      triangle |   /   | triangle
               |1 /    |
               | / 2  0|
               *--->---*

Suppose that tet[0] and tet[1] are the tetrahedra providing the first and second triangles respectively. Then the markings 0..2 on the first triangle above correspond to vertices roles[0][0..2] of tetrahedron tet[0], and likewise the markings 0..2 on the second triangle above correspond to vertices roles[1][0..2] of tetrahedron tet[1].

Note that the diagram above can also be drawn as follows.

               *--->---*
               | \ 2  1|
       First   |0 \    |  Second
      triangle |   \   | triangle
               |    \ 0|
               |1  2 \ |
               *--->---*

Note also that the labelling of the tetrahedra and their vertices establishes an orientation on the vertical fibres, as well as a left-to-right direction across the annulus.

For convenience we refer to edges roles[][0-1] as vertical, edges roles[][0-2] as horizontal, and edge roles[][1-2] as diagonal. This is illustrated in the following diagrams.

            V  Horizontal       V   Diagonal
            e  *--->---*        e  *--->---*
            r  |   g / |        r  |H\ 2  1|
            t  |  a / 1|        t  | o\    |
            i  | i /   |        i  |  r\   |
            c  |D /    |        c  |   i\ 0|
            a  | / 2  0|        a  |    z\ |
            l  *--->---*        l  *--->---*

Python:\n The member arrays tet and roles are accessed for
  reading through functions tet() and roles() respectively. For instance, the first triangle tetrahedron for the saturated annulus a can be accessed as `a.tet(0)`. These same member arrays are accessed for writing through functions setTet() and setRoles(), so for instance the second triangle vertex roles for the saturated annulus a can be modified by calling `a.setRoles(1, newRoles)`.

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

- subcomplex/satannulus.h

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