#include <sparseGraph.h>
Inheritance diagram for toroidalGrid:
Public Types  
enum  TOptTorus { TORUS_TRIANGULAR = 1, TORUS_QUADRILATERAL = 2, TORUS_HEXAGONAL = 3 } 
Public Member Functions  
toroidalGrid (unsigned short hSkew, unsigned short vSize, short vSkew, unsigned short hSize, TOptTorus facets, goblinController &_CT=goblinDefaultContext) throw (ERRejected) 

Toroidal grid type.


Place a regular grid on the surface of a torus.
It is legal that
If hSkew and vSize [vSkew and hSize] are not relatively prime  especially if hSkew [vSkew] is zero  The graph nodes are just the cut points of the constructed straight lines, enumerated by the first orbit (and its parallels). The graph edges are the minimal orbit segments. At this point, the construction in the TORUS_QUADRILATERAL case is complete. All nodes and all regions have degree 4, and the graphs are selfdual. If hSkew and hSize [vSkew and vSize] have the same residue modulo 2, the resulting graph is bipartite. If TORUS_TRIANGULAR is specified, a third nonparallel orbit is added, splitting each of the regions so far into two triangles. All nodes now have degree 6. If TORUS_HEXAGONAL is specified, there are some more restrictions on the numeric parameters: hSkew and hSize [vSkew and vSize] must have the same residue modulo 3. If not, hSkew and / or vSkew rounded up to meet this requirement. First, the triagonal grid is generated. Then, from the first generating line, every third node is eliminated. After that operation, all nodes have degree 3, and all regions are hexagons.
The constructor yields regular tessilations for several series of nonplanar graphs (e.g. Moebius lattices, taking
On the other hand, there are no representations of K_6 (nodes have degree 5) and the Petersen graph (would be hexagonal but nonbipartite). Triangular and hexagonal torus grids are dual to each other. In terms of its construction, the dual graph of an hexagonal torus grid has consists of the nodes which have been ommitted from the original triangular grid. 