Assignment 3


Assignment 3: Symmetry and Celtic knots

Due date: Monday, June 29th, 2015


In this assignment, you will complete a few simple exercises related to discrete planar symmetry groups, and then proceed on to an implementation question based on Celtic knots.

If you’re auditing the course, Question 3(a) (the implementation question) is optional. But you must still complete 3(b).

Please try to submit everything in a single document, so that I can mark it all at once.

Question 1: Drawing wallpaper patterns

Consider the following simple motif, consisting of a quarter circle inscribed in a square, inspired by the paving stones of Porto:

(Click on the motif to download a PDF version.)

By arranging a grid of rotated copies of this motif, draw designs with the following five wallpaper groups: p1, p2, cm, p4, and p4g. The grids should be tightly packed, with no empty space between motifs. Be sure to include enough of the grid that the repeating structure of the overall pattern is clear.

You can produce these drawings however you wish: by hand, by manual computer drawing using raster or vector graphics tools, by stamping out transformed copies with a tool like Adobe Illustrator or Inkscape, or by writing code to generate vector output. Just submit all the drawings, each labeled with its symmetry group.

Question 2: Identifying symmetry groups

Each of the images below depicts a fragment of a frieze or wallpaper pattern, in which the manner of continuation should be clear. For each image, identify the symmetry group by giving the usual international crystallographic symbol (or the orbifold signature, if you prefer). If you feel you need to suppress small variations in the image to account for imperfections in the execution, state what you’re choosing to ignore. I encourage you to look up flowcharts online that will guide you through the process of identifying symmetry groups.




(b) Kufic calligraphy from the portal arch of the Tughluq Temur Mausoleum, China (source).


(c) Geometric pattern from the portal arch of the Tughluq Temur Mausoleum, China.


(d) Tilework from the Masjid-i-Jami, Isfahan (source)

Question 3: Celtic knots

(a) Implementation

Write a program to draw Celtic knots using the method described in Peter Cromwell’s article “Celtic knotwork: mathematical art” (Mathematical Intelligencer 15(1) (1993), pages 36–47; the link should work from an on-campus computer). Your program must accept an input file giving the size of the grid and the locations of break markers, and produce as output a vector image of the corresponding knotwork (in postscript, SVG, PDF, etc). You are not required to implement any extensions, though if you’re interested you can always consult a list of suggested extensions from 2010.

File format

Let us agree on the following simple file format for specifying a knotwork:

  • The first line contains an integer width, an integer height, and the number of break markers. Each cell in this grid represents one quarter of a square in Cromwell’s primal grid.
  • Each subsequent line describes a single break marker. The line has three parts: two integers giving the x and y coordinates of the start of the break marker (zero-based and relative to the top left of the grid), and a letter S or E indicating whether the break marker should extend to the south or east. The x and y coordinates must sum to an even number. Each break marker will extend across two of these “sub-cells”.

Here’s a quick example. The first twelve break markers are used to define the border. The first image is a visualization of the resulting framework, and the image on the right is a possible rendering of the corresponding knotwork.


6 6 15                  
0 0 E
2 0 E
4 0 E
0 0 S
0 2 S
0 4 S
6 0 S
6 2 S
6 4 S
0 6 E
2 6 E
4 6 E
1 1 S
1 3 E
4 4 E
small_ex small_knot

You are free to extend this format in any way you want, or even adopt an entirely different format, as long as you provide a way to read the old format into your program. Ideally, you should create an interactive interface for editing the break markers (see the list of extensions). You can assume the input is well-formed. The goal here is to get you as quickly as possible into the interesting part of the assignment.


There are many possible styles for drawing Celtic knots. You can choose a simple default style for all output. Your default must at least give some indication of interlacing, and must use real curves (they can’t be purely polygonal).


Some implementation notes to get you started:

  • You don’t have to draw whole ribbons directly. If you experiment a bit, you’ll notice that you can assemble a knotwork using little tiles, one for each grid cell. Furthermore, the number of different possible tile motifs is very small (not including rotations and reflections).
  • One tricky part in assigning motifs to cells is getting the interlacing to work. With a bit more experimentation, you’ll find that the over-under relationship at the crossings can be determined in advance purely from the x and y coordinates of the grid cells.
Programming language
You are free to use any Turing-complete language. Google is not a valid programming language. That is, you can find many web pages describing how to draw Celtic knots. Some include implementations. Some even include source code. You’re welcome to browse the web in search of inspiration and algorithms, but please don’t look at any other source code during the assignment. If in doubt about external sources of information, talk to me first.

You must produce a short write-up describing your implementation. You can structure your submission as you wish, but should include at least the following:

  • Describe your implementation. What set of languages, tools, and libraries did you use? What is the interface? If you created an interactive user interface, include screen shots.
  • Mention any bugs or limitations, and say what you would do to overcome them.
  • Include some samples produced by your program, which demonstrate the complete range of its features.

Your write-up can either be a PDF document or a web page. Your submission should not contain more than about three or four pages of text, though you’re welcome to make it longer by including lots of pictures. Some time before the deadline, email me either a URL for your web-based write-up or a PDF (ideally, as part of the same report containing the answers to the previous questions).

I don’t plan to examine your source code, but I reserve the right to request it for marking purposes. I also reserve the right to request a demonstration (a demo might be the best way to show off some extensions).

(b) Two-sided frieze patterns

Cromwell’s paper mentions ten one- and two-colour frieze groups that arise naturally as symmetry groups of Celtic frieze patterns. Pick five of those groups and for each one produce an illustration of a Celtic frieze with those symmetries. The illustration should be different from the one in the paper. Label it with the symbol for the group.

You do not have to respect the frieze symmetry at the edges of your illustration — the knotwork can fold back on itself. Just make sure to include enough repeats that the implied frieze symmetry is evident.

Obviously, the intention is for you to produce these drawings using your program from the previous question (in which case, these images can serve as sample results for the previous question). But you’re welcome to use any other medium you choose. Thus, you can draw them by hand if your program doesn’t work or works only partially (or if the muse strikes).


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.