Tuesday, November 19, 2013

snowflake construction in GSP

Here are instructions for making a snowflake iteration similar to the one shown in the previous post using Geometer's Sketchpad. I generally don't put useful things like instructions on this blog, but I thought I would make an exception: these fun and easy constructions are worth doing because they are pretty, and they illustrate some important concepts associated with recursion. GSP is a great tool for playing with these sorts of things - I haven't explored Geogebra at all, so I can't comment on what similar sorts of things can be done with that tool.

1. Draw a line segment AB (using the segment tool), construct its midpoint C (with the line selected, choose Construct > Midpoint), and then construct the midpoint of AC (we'll call that D).

The important thing to note is that AB is the only thing that you will draw. Everything else will be constructed. What we are doing here is a really good example of what GSP aficionados call geometric programming: AB is your input, and everything else we construct as part of a program written in the language of geometry. A mistake that some people make with GSP when they are first playing with it is to consider it a drawing rather than construction tool - you really should draw very little, and construct a lot.

2. Mark A as the center of rotation (select A, and then Transform > Mark Center) and rotate all lines and points around A by 60 degrees, five times. You'll end up with six spokes that look like this:

3. Connect the midpoints of the spokes to form a hexagon.

4. Select all sides of the hexagon and construct the midpoints of the sides. Then connect those midpoints to the points on the interior of the hexagon to form a star, like the one shown below.

5. At this point it would be wise to hide some of the things that we don't want to include in our construction (select lines and dots and press CNTRL+H). You should leave your star, the original points A and B, and the mid and end-points of each spoke.

6. Now we are ready to iterate. To do this, select the points A and B, and then open the Iterate dialog (Transform > Iterate...). The first iteration is to map A to C and B to itself. Keep the dialog open (we need to add more maps to this iteration).

7. Repeat the same sort of mapping on each spoke: A gets mapped to the midpoint of the spoke, and B gets mapped to the endpoint of the spoke. Do this by using the Struct... > Add New Map on the iteration dialog.

8. After mapping onto all the spokes, hit the Iterate button.

9. You can now hide any points or parts of the iteration that you'd like, and increase or decrease the number of iterations (select the whole shape and use the plus (+) and minus (-) keys).

Two thing to note: when we mapped A and B, we mapped them onto points that were derived from A and B (midpoints and endpoints of the line AB, and rotations of those points), and we mapped A and B such that the distance between their images was smaller than the original distance between A and B. Mapping A and B so that they moved closer to each other means that the resulting shape will be bounded - otherwise the shape will get larger with each iteration.