CS 791 Assignment 2 extensions
What follows are some suggested non-trivial extensions to the implementation
component of Assignment 2. You are welcome (and indeed encouraged) to
dream up your own ideas for extensions. These are presented very roughly
in increasing order of complexity. The harder ones make fine topics for
final projects in the course.
- Add a way to selectively disable the rendering of some grid
cells, so that
you can produce patterns that don't have a square footprint.
- Add a user interface for specifying break markers interactively.
Even better, be able to draw the knot and edit the rendering
parameters interactively too.
- Come up with some new rendering styles for knots. This could
mean a few different things:
- Change the shapes of the strands into something more
interesting.
- Leave the shape alone, but apply rendering effects
to those shapes (multiple bands, new interlacing types,
textures along strokes, etc.).
- Develop some painting hacks to turn a simple
postscript drawing into a rasterized image with
texture, faux-3D, etc. See Glassner's
Celtic knotwork
articles from CG&A for inspiration.
- Assign different colours to each unique strand in a knotwork.
- Add zoomorphs, key patterns, or other Celtic ornaments.
See Matthew Kaplan and Elaine Cohen, Computer generated Celtic
design, 2003 Eurographics Workshop on Rendering.
- Produce knotworks on different grids (i.e., different tilings),
perhaps using the technique of
Christian
Mercat. Consider disk-shaped
patterns, phyllotaxes, aperiodic tilings, spherical designs,
or anything else that grabs you.
- Produce attractive knotworks on 3D polygonal meshes.
- Implement the method of Cameron Browne to fit knotworks to
arbitrary shapes. See Cameron Browne, Font Decoration by
Automatic Mesh Fitting, RIDT'98.
- Find a space-filling 3D analogue of Celtic knots.
Glassner touches on this topic in the third article of his
series on Celtic knotwork.
This paper
by Carlo Séquin might also provide some inspiration.
- If you're interested in knot theory, add code to automatically
determine the knot-theoretic properties of a knotwork. How
many independent strands are there? Is it truly knotted, or
merely an unknot? What patterns of break markers will guarantee
a single strand? What's the simplest Celtic trefoil?
Are Celtic knots a good way to present a large
family of elementary knots in an attractive, intuitive way?