Regina Calculation Engine
|
Provides a variety of alternative representations of a single bounded Seifert fibred space. More...
#include <manifold/nsfsaltset.h>
Public Member Functions | |
NSFSAltSet (const NSFSpace *sfs) | |
Creates a new set of alternatives for the given Seifert fibred space. More... | |
void | deleteAll () |
Destroys all of the alternative representations in this set. More... | |
void | deleteAll (NSFSpace *exception) |
Destroys all of the alternative representations in this set, except for the given exception. More... | |
void | deleteAll (NSFSpace *exception1, NSFSpace *exception2) |
Destroys all of the alternative representations in this set, except for the two given exceptions. More... | |
unsigned | size () const |
Returns the number of alternative spaces in this set. More... | |
NSFSpace * | operator[] (unsigned which) const |
Returns the requested alternative space. More... | |
const NMatrix2 & | conversion (unsigned which) const |
Returns the conversion matrix for the requested alternative space. More... | |
bool | reflected (unsigned which) const |
Returns whether or not a reflection was used when creating the requested alternative space. More... | |
Provides a variety of alternative representations of a single bounded Seifert fibred space.
These alternatives are made possible by altering the curves made by the fibre and base orbifold on a boundary torus.
This class is designed to help in finding simple representations of graph manifolds (or, indeed, any non-geometric manifolds containing Seifert fibred blocks).
Each alternative comes with its own representation of the original Seifert fibred space, along with instructions for converting fibre/base curves on the boundary tori between the original and alternative spaces.
The alternative representations will generally be as simple as possible (and indeed simpler than the original where possible). In particular, each alternative space is guaranteed to have obstruction constant zero. The base orbifold may be changed entirely (for instance, an orientable Seifert fibred space over the Mobius band with no exceptional fibres will be converted to a Seifert fibred space over the disc with two exceptional fibres).
The conversions between boundary curves are described by a conversion matrix M as follows. Consider the first boundary torus. Let f_old and o_old be directed curves on this boundary representing the fibre and base orbifold of the original space, and let f_alt and o_alt be directed curves on this same boundary representing the fibre and base orbifold of the new alternative space. Then
[f_alt] [f_old] [ ] = M * [ ]. [o_alt] [o_old]
Note that this only applies to the first boundary torus! If the Seifert fibred space has more than one boundary, then for the remaining boundaries the unoriented fibre and base curves remain the same. More specifically, the directed fibre remains identical, and the directed curve representing the base orbifold is reversed if and only if a reflection was used in creating the alternative space, as returned by reflected().
See the page on Notation for Seifert fibred spaces for details on some of the terminology used above.
regina::NSFSAltSet::NSFSAltSet | ( | const NSFSpace * | sfs | ) |
Creates a new set of alternatives for the given Seifert fibred space.
Note that in general, none of the alternatives will have a representation identical to the given space (generally these alternative representations will be simpler if possible).
sfs | the original Seifert fibred space for which we are creating a set of alternative representations. |
|
inline |
Returns the conversion matrix for the requested alternative space.
This matrix describes the fibre and base curves of the alternative space on the first boundary torus in terms of the fibre and base curves of the original space (which was passed to the NSFSAltSet constructor). See the class notes above for details.
Note that this conversion matrix applies only to the first boundary torus! If there is more than one boundary, the remaining boundary conversions are simpler and depend only on whether a reflection has been used or not. See reflected() or the class notes for details.
which | indicates which of the alternatives we should return the conversion matrix for; this must be between 0 and size()-1 inclusive. |
void regina::NSFSAltSet::deleteAll | ( | ) |
Destroys all of the alternative representations in this set.
This routine is for situations where none of the alternatives here are appropriate for keeping and using elsewhere.
void regina::NSFSAltSet::deleteAll | ( | NSFSpace * | exception | ) |
Destroys all of the alternative representations in this set, except for the given exception.
If the given exception is null or is not one of the alternatives in this set, every alternative will be destroyed.
This routine is for situations where one of the alternatives has been kept for later use, and the rest are to be discarded.
exception | the one alternative that should not be destroyed. |
Destroys all of the alternative representations in this set, except for the two given exceptions.
If either exception is null or is not one of the alternatives in this set, it will be ignored (and this routine will behave like the one-exception or no-exceptions variant). Likewise, if both exceptions are the same then this routine will behave like the one-exception variant.
This routine is for situations where one of the alternatives has been kept for later use, but due to other operations that may have taken place (such as space swapping) it is only known that the alternative we kept is one of two possibilities.
exception1 | the first alternative that should not be destroyed. |
exception2 | the second alternative that should not be destroyed. |
|
inline |
|
inline |
Returns whether or not a reflection was used when creating the requested alternative space.
This determines the conversion between boundary curves for all boundary tori after the first.
More specifically, if no reflection was used then the directed fibre and base curves are identical for the original and alternative spaces. If a reflection was used, then the directed fibres are identical but the directed base curves are reversed.
The conversion between curves on the first boundary torus is generally more complex, and is returned as a matrix by the conversion() routine.
which | indicates which of the alternatives is being queried; this must be between 0 and size()-1 inclusive. |
true
if a reflection was used in creating the requested alternative space, or false
if no reflection was used.
|
inline |
Returns the number of alternative spaces in this set.