Regina Calculation Engine
|
A helper class for locating and using starter blocks within a triangulation. More...
#include <subcomplex/satblockstarter.h>
Public Member Functions | |
virtual | ~SatBlockStarterSearcher () |
Destroys this object and its internal structures. More... | |
void | findStarterBlocks (Triangulation< 3 > *tri) |
Runs a search for every isomorphic embedding of every starter block from the global SatBlockStarterSet within the given triangulation. More... | |
Protected Member Functions | |
virtual bool | useStarterBlock (SatBlock *starter)=0 |
Used by subclasses to process each starter block embedding that is found. More... | |
Protected Attributes | |
SatBlock::TetList | usedTets |
Keeps track of which tetrahedra have used by the current embedding of the current starter block. More... | |
A helper class for locating and using starter blocks within a triangulation.
This class provides a means for searching for each starter block in the global hard-coded SatBlockStarterSet within a given triangulation. More specifically, given some triangulation t, this class can locate every isomorphic embedding of every starter block in the global SatBlockStarterSet as a subcomplex of t (see Triangulation<3>::isContainedIn() for what is meant by "isomorphic embedding").
The routine findStarterBlocks() runs the search. Each time an isomorphic embedding of a starter block is discovered within the given triangulation, the pure virtual routine useStarterBlock() will be called. The block that is passed to useStarterBlock() will be a new block that refers to the particular embedding of the starter block within the given triangulation (as opposed to the original block structure referring to the prebuilt triangulation in SatBlockStarter).
For each situation that requires searching for starter blocks, a subclass of SatBlockStarterSearcher will be required. This subclass should override useStarterBlock() to perform whatever action is necessary.
Instead of locating all isomorphic embeddings of all starter blocks in the global set, the search can be made to finish early once certain conditions are met. This is done by implementing useStarterBlock() to return false
when the search should quit.