- ouline: This is controls for a border for the triangular tiles.
The modes are:
- A border round each triangle which the design at any stage is divided into. The border is only round the smallest triangles of the division, and since these triangles are subtriangles of larger triangles, and the edges are not always all contained in the larger triangle, the shapes outlined by the black lines are not all triangles.
- Same as (1), but also an outline to the original triangle of the initial tiling.
- This corresponds to a hinged tiling of triangles, but the triangles shrink while hinging, and stay within the initial triangle tiling. The initial triangles, shown when background (1) is chosen, show how the operation is programmed, but with colouring (3) you get a better sense of the hinging of the triangles. The width of the outline is controlled by the y coordinate of the magenta dot.
- In this mode, no outlines of triangles are shown.

- background:
- This gives a random pastal colour to the initial triangle tiles. This colour remains even as tiles are hinged, so it to show the relation between the original tiles and subsequent iterations of the pattern.
- This is a uniform black background.
- The triangles being hinged are all the same colour, either black or white. This means that triangles may change colour at each iteration stage, some switching from black to white or vice versa. Not entirely satisfactory, but does make the hinged tiling clearly visible, and is simple to code.
- This is a slighly buggy version of changing tile colours as added; a better version is (5), but I thought this was interesting, though they change colour, so not quite right, if one wants constant coloured tiles.
- The triangle divisions at each stage are different random pastal colours. The colour depends on the coordinate of the middle of the triangle in which the iteration transition transformation is taking place.
- At each stage, when a tile is added to the design, it has a new colour, depending on the stage at which it first appears. Colour depends on position of pink dot. This version does not work yet, since this part of code has not been updated since change from version of hinged triangle tiling that adds hexagon regions of triangles at each state
- This is a debugging version that shows different colours for differnt regions of the triangle division. Doesn't change colour of central region, or corner regions of divided triangle.

- curves: This is about the style and colour of the paths, but not
the actual directions of the paths, which corresponds to the orientation of the tiles
- Each initial segment is a random colour. Colours of paths are preserved when the tiles are hinged. New colours of paths introduced are all the same at each level. I.e., if two new paths first appear at the same level of iteration of hinging, they have the same colour.
- Each initial segment is a random colour, with the interior being a the opposite colour, i.e., paths have an outline.
- Paths have a black outline. The thickness of the black outline is controlled by the y coordinate of the blue dot. The y coordinate of the yellow dot controls the path thickness.
- Paths are shaded to look somewhat 3D. Again, y coordinate of the yellow dot controls the path thickness.
- Same as (4), but the "caps" on paths are not shown. Each triangle only has an ars, with no dot marking the side with no arc.
- Same as (4), but all new paths that are introduced at each step are black, so only the iterations of the original paths can be seen on a black background. This makes the result of iteration of individual paths easier to distinguish.
- In this mode, no curves are shown, so the underlying tiling can be seen more clearly.

- paths: The initial tile orientations, which determine different
initial path patterns.
- "random"; each segment different random colour
- vertical wiggles interspaced with dots. Constant path colour
- "smiles", Constant path colour, with colour controlled by yellow and cyan dots.
- Each tile has an (x,y,z) coordinate, since there are three directions of sets of parallel lines. I give the orientation as a function of these x,y,z, e.g.: orientation = mod(IK.x*paritysign,3.);
- orientation = mod(mod(IK.y,3.)*mod(IK.z,3.),3.);
- orientation = mod((IK.y+IK.x)*IK.z,3.); You can edit the code to try other options.
- circles

- dots: This is just whether the control dots are shown or not.
- Variable iteration
- iteration level constant across screen
- iteration level depends on distance from centre, with control parameter given by x coord of magenta dot
- iteration level depends on distance from top, with control parameter given by x coord of magenta dot

- operation sequence:

Uniforms: