Recall the activity on frieze patterns from week 4 of this class. Since frieze patterns involve lots of repetition, it's a good idea to use a computer to draw them.

TO RMOTIF :SIZE RIGHT 45 FORWARD :SIZE / (SQRT 2) LEFT 135 FORWARD :SIZE / 2 LEFT 90 FORWARD :SIZE BACK :SIZE / 2 RIGHT 180 ENDLooking at the patterns, we see that it will be useful to have a procedure that moves the turtle to its right by a fixed distance:
TO MOVERIGHT :DISTANCE PENUP RIGHT 90 FORWARD :DISTANCE LEFT 90 PENDOWN ENDWith just these two procedures we can draw a simple frieze pattern:
TO INFTYINFTY :SIZE RMOTIF :SIZE MOVERIGHT :SIZE WAIT 20 INFTYINFTY :SIZE ENDUse the two procedures to produce a frieze pattern with symmetry 22 /infty; this is the symmetry of the frieze pattern at the top of the figure. You may write your own helper procedures if you wish.
The remaining five frieze patterns are made using mirror images of the basic motif, and so it is convenient to write a LOGO procedure to draw a mirror image of our motif as well. We do this by replacing all left turtle turns with right turns and all right turns with left turns. (Can you see why this would result in the turtle drawing a mirror image figure?)
TO LMOTIF :SIZE LEFT 45 FORWARD :SIZE / SQRT(2) RIGHT 135 FORWARD :SIZE / 2 RIGHT 90 FORWARD :SIZE BACK :SIZE / 2 LEFT 180 ENDUsing this procedure we can easily produce a pattern with symmetry * \infty \infty:
TO STARINFTYINFTY :SIZE RMOTIF :SIZE MOVERIGHT :SIZE LMOTIF :SIZE MOVERIGHT :SIZE WAIT 20 STARINFTYINFTY :SIZE ENDChallenge: Use the procedures defined so far to produce a pattern with symmetry 2* /infty; the third frieze pattern in the figure above has this symmetry.
If you wish, you may also modify RMOTIF and LMOTIF to draw more interesting motifs. In order to achieve all possible symmetries in your frieze patterns you should be careful to make your motifs completely asymmetric.
Two of the remaining three frieze patterns have horizontal lines of mirror symmetry. The following procedure moves the turtle into position to draw a horizontally reflected copy of a motif.
TO HREFLECT :DISTANCE PENUP RIGHT 180 FORWARD :DISTANCE PENDOWN ENDIn the example below the HREFLECT procedure is used to produce a pattern with symmetry /infty *; this is the symmetry of the fourth pattern in the figure above.
TO INFTYSTAR :SIZE LMOTIF :SIZE HREFLECT :SIZE RMOTIF :SIZE HREFLECT :SIZE MOVERIGHT :SIZE WAIT 20 INFTYSTAR :SIZE END
The reason it is easy for LOGO to draw beautiful patterns like these is that the patterns are made up of regularly repeating copies of a single motif (and its mirror image.) The way these copies repeat can be explained in terms of symmetries of the patterns -- reflection in vertical and horizontal lines, translations, rotations and glide reflections.
We have written LOGO procedures that draw the motif and its mirror image (RMOTIF and LMOTIF). We also have a LOGO procedure corresponding to translation (MOVERIGHT) and one corresponding to reflection in a horizontal line (HREFLECT). Reflection in a vertical line comes from combining the procedure for translation with the one for drawing a mirror image motif. A glide reflection would combine translation, reflection through a horizontal line, and drawing a mirror image motif. By thinking in terms of the symmetries that relate copies of the motif in a frieze pattern we can more easily wrote procedures to produce patterns with those symmetries.
If you have time, use LOGO to produce frieze patterns with the remaining two symmetry types.