disckitty.ca/gallery/code/cs798

CS798 - Assignment 2


This assignment - which turned out to be much more time intensive than the instructor expected - was the generation of the 44 isohedral tilings. An interactive user interface was required such that it could modify the constrained edges to produce all possible tilings. My extension to this assignment wasn't so much a single extension, as a variety of smaller extensions: the ability to select what colours on the two-coloured tiling, the ability to interactive choose which tiling to work on, the ability to directly modify edges without requiring a separate interactive viewer.

The UI for this assignment was based off of the one from Assignment one. The number of tiles generated was based off how many would be visible within the viewport. There were slight issues with translations, however in general what was seen was rendered with few rendered off screen. This could have been optimized so that none would've been rendered off screen, and such that edges and polygons were pre-clipped. In anycase, I was able to get the isohedral tiling IH72 up and running quite quickly - a collection of 4-sided polygons.

In the extension, one was given the option to create non 4 square tilings, however I chose not to perform this. As a result, I was able to use one tiling object, which represented each tile, and merely alternated the colours during tiling compilation.


One could choose to be in either tiling mode, or adjustment mode. When in tiling mode, one could easily rotate, scale and transform the general tiling (to better see things with). When in adjustment mode, one could tweak the tiles to the desired shape. With some adjustments of A1's picking scheme, I was able to allow dynamically creating or selecting an existing point on a tile boundary, and either moving or deleting it. The polygon drawing a single tile responds to this accordingly. Red points indicated fixed vertices, while yellow indicated movable ones. By default, two movable vertices were created for each edge to help get the user started.


Unfortunately, I didn't not have the time to figure out how tessellation works, and as a result, invalid polygons produced wrong looking tilings. I had started looking into possible implementations, but time ran out. The border outlines gave the accurate result, while the polygons themselves appeared incorrect.

With the basic shape completed, all that was left to do was differentiate between different tiling types. There are definitely better ways of doing this, however I created a class for each of the 30 tiling types. IH45 was the same as IH52 for no parameters, so 29 tiling types. A tile had four edges, and each of the edges was - according to the tiling definition supplied by the assignment - either an I, J, S or U. The base tiling class to care of most of the colour setting, drawing, and picking of the tilings. The sub classes took care of handling the specific edge types for drawing and picking. I defined the fours sides as being either alpha, beta, gamma or omega, and established transforms (rotations) accordingly. These were assigned an edge type. Sometimes the edge orientations were identical. For example with IH41, the top and bottom edges are the same, as are the left and right edges. Further, each tiles orientation was the same. Whereas with IH44, orientation was like a checkerboard's colouring scheme (alternating based on row and column).

A simple extension was created with regards to rendering only the tiles visible to the viewport. It approximately works, though there are issues when translating. Further, the tiling editor - which could have been done in a separate screen, was integrated into the tile viewer. As well, tile and border colours, as well as border width, are modifiable. I was not able to get the export to SVG working in time. Oh! and I discovered that engineering has colour printers hiding in one of their labs, so I took advantage of this when having to hand in a hard copy of the assignment. :)

Some Sample Tilings

As a part of the assignment, we were to present the tilings possible, along with some attractive samples. As they were all implemented, all 44 isohedral tilings are presented below, along with 2 samples and the bordering used for the title page of the assignment.

Note: Where possible, checkerboard colouring was used. However, where concavity produced erroneous tiles, a simple mono-coloured tiling with outline was produced.

IH41

IH42

IH43

IH44

IH45

IH46

IH47

IH49

IH50

IH51

IH52

IH53

IH54

IH55

IH56

IH57

IH58

IH59

IH61

IH62

IH64

IH66

IH67

IH68

IH69

IH71

IH72

IH73

IH74

IH76

Non-photorealistic Fish Scales:

Darwin's Favourite:

*In the copy handed in, one of the white moths was pencil shaded grey

Title Page Graphic:

Last Updated: January 14, 2008 - 12:39 AM (pro) (wood) (c) disckitty.ca