#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 self-dual. 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 non-parallel 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 non-planar 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 non-bipartite). 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. |