Formalisms for Celtic Knot

Tile Decomposition

My first programming attempt made use of the fact that celtic knots of this style can be decomposed into a set of 35 base tiles, or just twelve tile types with rotations:
By adjoining these images together with certain restrictions, a seamless Celtic knot image can be formed:
tile tile tile tile
tile tile tile tile

Diamond Decomposition

The tile decomposition divides the knot into independent pieces that are easy to draw, but rules must be followed in adjoining the tiles together. The diamond decomposition is an alternate way of decomposing Celtic knots which more naturally encodes information about the structure of the knot. Each diamond is a quadrilateral.There are two strands in each diamond, which either cross or deflect. In the case of crossing, the strands connect opposite sides of the diamond. In the case of deflection, the two strands run roughly parallel, connecting pairs of adjacent sides. I refer to diamonds where the strands cross as "open" and those without crossings as "closed" (note there are two ways for a diamond to be closed), and say that the closed diamonds have a “gate” that runs between opposite corners of the diamond, separating the diamond into two compartments that contain the two strand segments.

Diamonds can be adjoined to create Celtic knots, but it is difficult to produce a set of tiles that produce smooth-looking knots because the closure of adjacent diamonds affects the curvature of the strands.

Extensions and Generalizations

Free-form Knots

My recent efforts have been in extending the framework for Celtic knots to non-rectangular grids.

While computer drawing of Celtic knots is more easily accomplished in terms of the "tile" decomposition, the essential structure of the knots is more easily generalized in terms of the "diamond" decomposition. This can be seen in my knot editing program, in which the user interface for manipulating the strands is based on the diamonds -- a diamond may be clicked to add or remove gates -- but the drawing routine is as described above, and is based on tiles.

The general outline of the process is:
  1. Begin with a "premesh" graph, which defines the boundary of the knot and its interior structure.
  2. Use the premesh graph to induce a "Celtic mesh" graph. The faces of this graph are the diamonds within which the knot is drawn.
  3. Follow the same rules for drawing a Celtic knot by filling in the diamonds.
One might ask why we begin with the premesh graph only to move on to the Celtic mesh graph: can we simply begin with the Celtic mesh graph? The answer is yes, but there are reasons for following this formalism:
  • Construction of the Celtic mesh graph is non-trivial; most graphs would not satisfy the requirements.
  • The premesh graph determines the outer border of the knot and some of its key features.
  • Every valid Celtic mesh graph can be induced from a premesh graph, and so requiring that we start from the premesh graph does not diminish the possible configurations we may end up with.
Under this framework, the premesh graph can be created in a fairly unconstrained manner; there are some restrictions that produce better results, but for the most part it is a simple process. The resulting Celtic mesh graph is then guaranteed to be valid. The procedure for generating the Celtic mesh graph from the premesh graph is as follows:
  1. Add a node for each node of the premesh graph.
  2. Add a node for each face of the premesh graph.
  3. For each interior edge in the premesh graph, add a four-sided face that connects its two incident nodes and the two nodes corresponding to its incident faces.
  4. For exterior edges, follow the same procedure but append a new node for the 'exterior face' (a new node for each exterior edge).
The following figures show the premesh graph, the celtic mesh graph, and the resulting knot overlaid on top of the celtic mesh graph as well as on its own.

The basis for free-form Celtic knots is the natural extension of the diamond decomposition.