Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

regina::NGluingPerms Class Reference
[Census of Triangulations]

Represents a specific set of gluing permutations to complement a particular pairwise matching of tetrahedron faces. More...

#include <ngluingperms.h>

List of all members.

Public Member Functions

 NGluingPerms (const NGluingPerms &cloneMe)
 Creates a new set of gluing permutations that is a clone of the given permutation set.
virtual ~NGluingPerms ()
 Deallocates any memory used by this structure.
unsigned getNumberOfTetrahedra () const
 Returns the total number of tetrahedra under consideration.
const NFacePairinggetFacePairing () const
 Returns the specific pairing of tetrahedron faces that this set of gluing permutations complements.
NPerm gluingPerm (const NTetFace &source) const
 Returns the gluing permutation associated with the given tetrahedron face.
NPerm gluingPerm (unsigned tet, unsigned face) const
 Returns the gluing permutation associated with the given tetrahedron face.
NTriangulationtriangulate () const
 Returns a newly created triangulation as modelled by this set of gluing permutations and the associated tetrahedron face pairing.

Static Public Member Functions

static void findAllPerms (const NFacePairing *newPairing, const NFacePairingIsoList *autos, bool orientableOnly, bool finiteOnly, int whichPurge, UseGluingPerms use, void *useArgs=0)
 Generates all possible gluing permutation sets that complement the given tetrahedron face pairing.


Detailed Description

Represents a specific set of gluing permutations to complement a particular pairwise matching of tetrahedron faces.

Given a pairwise matching of faces (as described by class NFacePairing), each face that is matched with some other face will have an associated permutation of four elements (as described by class NPerm).

If a face is matched with some other face, the two corresponding associated permutations will be inverses. If a face is left deliberately unmatched, it will have no associated permutation.

Such a set of permutations models part of the structure of a triangulation, in which each tetrahedron face that is glued to another face has a corresponding gluing permutation (and the matched face has the inverse gluing permutation).

Python:
Not present.


Constructor & Destructor Documentation

regina::NGluingPerms::NGluingPerms const NGluingPerms cloneMe  ) 
 

Creates a new set of gluing permutations that is a clone of the given permutation set.

Parameters:
cloneMe the gluing permutations to clone.

regina::NGluingPerms::~NGluingPerms  )  [inline, virtual]
 

Deallocates any memory used by this structure.


Member Function Documentation

static void regina::NGluingPerms::findAllPerms const NFacePairing newPairing,
const NFacePairingIsoList autos,
bool  orientableOnly,
bool  finiteOnly,
int  whichPurge,
UseGluingPerms  use,
void *  useArgs = 0
[static]
 

Generates all possible gluing permutation sets that complement the given tetrahedron face pairing.

Each set of gluing permutations will be produced precisely once up to equivalence, where equivalence is defined by a set of automorphisms of the given face pairing.

For each permutation set that is generated, routine use (as passed to this function) will be called with that permutation set as an argument.

Once the generation of permutation sets has finished, routine use will be called once more, this time with null as its first (permutation set) argument.

Parameter whichPurge may be used to avoid constructing permutation sets that correspond to triangulations satisfying the given constraints (such as non-minimality). The use of this parameter, combined with parameters orientableOnly and finiteOnly, can significantly speed up the permutation set generation. For some combinations of these parameters entirely different algorithms are used.

Note that not all permutation sets described by parameter whichPurge will be avoided. It is guaranteed however that every permutation set whose corresonding triangulation does not satisfy the constraints described by whichPurge will be generated.

Precondition:
The given face pairing is connected, i.e., it is possible to reach any tetrahedron from any other tetrahedron via a series of matched face pairs.

The given face pairing is in canonical form as described by NFacePairing::isCanonical(). Note that all face pairings constructed by NFacePairing::findAllPairings() are of this form.

Todo:
Feature: Allow cancellation of permutation set generation.
Parameters:
newPairing the specific pairing of tetrahedron faces that the generated permutation sets will complement.
autos the collection of isomorphisms that define equivalence of permutation sets. These isomorphisms must all be automorphisms of the given face pairing, and will generally be the set of all such automorphisms. This parameter may be 0, in which case the set of all automorphisms of the given face pairing will be generated and used.
orientableOnly true if only gluing permutations corresponding to orientable triangulations should be generated, or false if no such restriction should be imposed.
finiteOnly true if only gluing permutations corresponding to finite triangulations should be generated, or false if no such restriction should be imposed.
whichPurge specifies which permutation sets we may avoid constructing (see the function notes above for details). This should be a bitwise OR of purge constants from class NCensus, or 0 if we should simply generate every possible permutation set. If a variety of purge constants are bitwise ORed together, a permutation set whose triangulation satisfies any of these constraints may be avoided. Note that not all such permutation sets will be avoided, but enough are avoided that the performance increase is noticeable.
use the function to call upon each permutation set that is found. The first parameter passed to this function will be a gluing permutation set. The second parameter will be parameter useArgs as was passed to this routine.
useArgs the pointer to pass as the final parameter for the function use which will be called upon each permutation set found.

const NFacePairing * regina::NGluingPerms::getFacePairing  )  const [inline]
 

Returns the specific pairing of tetrahedron faces that this set of gluing permutations complements.

Returns:
the corresponding tetrahedron face pairing.

unsigned regina::NGluingPerms::getNumberOfTetrahedra  )  const [inline]
 

Returns the total number of tetrahedra under consideration.

Returns:
the number of tetrahedra under consideration.

NPerm regina::NGluingPerms::gluingPerm unsigned  tet,
unsigned  face
const [inline]
 

Returns the gluing permutation associated with the given tetrahedron face.

Precondition:
The given face is actually paired with some other face in the underlying pairwise matching (see routine getFacePairing()).
Parameters:
tet the tetrahedron under investigation (this must be strictly less than the total number of tetrahedra under consideration).
face the face of the given tetrahedron under investigation (between 0 and 3 inclusive).
Returns:
the associated gluing permutation.

NPerm regina::NGluingPerms::gluingPerm const NTetFace source  )  const [inline]
 

Returns the gluing permutation associated with the given tetrahedron face.

Precondition:
The given face is actually paired with some other face in the underlying pairwise matching (see routine getFacePairing()).

The given face is a real tetrahedron face (not boundary, before-the-start or past-the-end).

Parameters:
source the tetrahedron face under investigation.
Returns:
the associated gluing permutation.

NTriangulation* regina::NGluingPerms::triangulate  )  const
 

Returns a newly created triangulation as modelled by this set of gluing permutations and the associated tetrahedron face pairing.

Each matched pair of faces and their associated permutations will be realised as two tetrahedron faces glued together with the corresponding gluing permutation. Each unmatched face will be realised as a boundary tetrahedron face.

It is the responsibility of the caller of this routine to delete this triangulation once it is no longer required.

Returns:
a newly created triangulation modelled by this structure.


The documentation for this class was generated from the following file:
Copyright © 1999-2004, Ben Burton
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).