In this thesis we describe and implement a system for drawing knot diagrams in a visually pleasing way. A knot is formally an embedding of a circle in the 3-space. Its projection into the plane is called a diagram, which can in turn be combinatorially described using Gaussian code.
Gaussian code serves as our input. We first describe a criterion which decides whether the code indeed represents a knot. In what follows we construct a plane graph, which serves as the extension to the code and serves as the initial step in constructing the layout.
Fruchterman-Reingold spring embedding algorithm is used as the first step in determining positions of crossings. Afterwards the graph is adjusted, and Kamada-Kawai approach is used in the second phase. In this phase we use additional force-like constraints that control uniform angle positions around a crossing and also serve to diminish the severity of inflections. Finally the vertex coordinates are used as interpolation points for the curve.
We also present layouts of several knots with small number of crossings.
|