This applet creates fractals by means of a recursive algorithm, using a "generator" that you draw in the space provided.

A generator simply consists of a few line segments connected together at their endpoints. Each segment can be given a different "type": recursive, non-recursive, or invisible. To change a line segment type, click on the line. You may alter the number of segments in the generator with the increment buttons provided.

The fractal is created by drawing the generator on the paper, and continually erasing and replacing each recursive-type line segment with a smaller copy of the generator in its place. The white arrow on the generator board and the arrows on the recursive line segments show you the orientation in which these smaller generators will be drawn. Theoretically, this drawing, erasing, and replacing should go on forever, and the fractal is the "limit" of these successive iterations. In reality it must stop after a finite number of iterations, called the recursion depth. This program was written so as to choose a (hopefully) suitable recursion depth which avoids unnecessarily prolonged calculations and huge amounts of memory usage. If you feel that your computer can handle a greater depth after drawing a fractal (and you're not satisfied with the detail), click the "extra depth" button, erase the fractal, and click "go" again. Just be aware that this will use a greater amount of computer resources, and there may be a significant lag before completion.

Using invisible segments is a nice way to create generators with disjoint pieces. Think of invisible segments as simply lifting up the drawing pencil and placing it back down in a different location.

You will notice that if your recursive line segments get too long in comparison to the white arrow, they will automatically change to the non-recursive type, and you won't be able to change them back to recursive unless you make them shorter. This is to avoid fractals which explode in size. (I'll leave you to ponder why long segments can create exploding fractals.)

For geometrically precise placement of points, there are two grids available: one is rectangular, the other triangular. When turned on, points will snap to the nearest grid position. Turn the grid off to resume free placement of points.

Some fractals look very pretty with "fill" set to "on." This will fill all the area on one side of the fractal with color. The fill function is disabled when there are invisible line segments in your generator, because the generator will no longer split the drawing board into two regions.

The two "skeleton" buttons allow you to see the fractal as it would be drawn if the recursion depth were set to 1 or 2. This will give you some idea of how the fractal is being drawn.

One thing to be aware of: If, for example, you draw a generator with three recursive segments, and one invisible segment, and your recursive segments are too short, you may see nothing when you click "go." The program is not malfunctioning: the fractal is drawn, but it is practically empty (again, I'll leave you to ponder why).

You can view some examples by clicking the examples button (click repeatedly to see additional examples). You may also add your own fractals to this gallery by clicking the save to gallery button. Please be aware, however, that your fractals are only temporarily saved, and will be erased when you close your browser window.

I hope to add functionality in the future that will allow you to permanently save your drawing in some manner. For now if you get a wonderful fractal and want to keep it, create a screen capture. (On Windows machines, press "Alt" and the "Print Screen" button, and the drawing is saved to your clipboard. Open up a drawing program, and paste the clipboard contents in a new drawing, then save your drawing.)

For a more thorough explanation of the fractal creation process used here, a good place to start is with the "Koch Curve," about which there is plenty of information on-line. The following good sites for further reading were available as of July 2007:

"Fractals: An Introductory Lesson" at http://www.arcytech.org/java/fractals/

"Classic Iterated Function Systems" at http://ecademy.agnesscott.edu/~lriddle/ifs/ifs.html

"Koch curve" at http://planetmath.org/encyclopedia/KochCurve.html

"Koch curve" at http://ccl.northwestern.edu/netlogo/models/KochCurve

I got started with Flash development at the Flash at the Beach MAA PREP workshop held at the University of Rhode Island in June 2007, which was directed by Doug Ensley and Barbara Kaskosz. I thank Doug and Barbara for their wonderful workshop and continued support!