Regina Calculation Engine
Public Member Functions | Public Attributes | List of all members
regina::SatAnnulus Struct Reference

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...
 
SatAnnulusoperator= (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
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:

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).