home *** CD-ROM | disk | FTP | other *** search
- fractals.doc - Various musings about exploring fractals with fExplore
-
- What the program does:
- This program generates images of fractals. You can zoom into the
- fractal to see new and different features, some similar, others distinct.
- After calculated, the images are "animated" by quickly rotating colors,
- leaving the structure alone but allowing the colors to move fluidly.
- Since images take a while to generate, you may store them to disk and
- play them later as a slide show.
-
- What is a fractal:
- The word fractal is used for many things. I use it to specifically
- refer to images generated while testing for Mandlebroit set membership.
- Others use it when refering to most anything associated with fractal
- geometry, a new discipline of mathematics which attempts to model the
- chaos of nature in a powerful way. To gain intution into the difference
- between the geometry taught in high school (Euclidean) and newer Fractals
- think of the difference between a perfect circle and an oak tree. Euclidean
- geometry can describe a circle very well and easily, but an oak tree is too
- complicated. Fractal geometry attempts to model the tree by quantifying
- the similarity between its overall shape (the trunk and major branches),
- with its details (an individual twig connecting to leaves).
-
- About fractals:
- Many people find images of fractals enchanting. They have a mathematical
- and visual simplicity, stunningly detailed. Diving into different areas
- of the Mandlebroit set reveals regions of spectacular beauty. Hidden
- in the details are areas both similar and diverse from the starting image.
- You can never be quite certain what you will see after a few zooms. This
- gives fractal exploration its unique characteristic - it is always surprising
- what you will find.
-
- Hints for exploring:
- Exploring consists of zooming into interesting regions of the fractal.
- The most interesting regions are the boundaries between the members of
- the mandlebroit set (depicted as black) and those areas not in the set
- (depicted via colors). Pick any boundary area that interests you and zoom.
- Structures with lots of detail are the best places to try.
-
- How and why the program does what it does:
- Mathematically speaking, images are generated by mapping a portion of
- the complex plane to the screen and calculating how many iterations each
- point takes before it is known not to be in the mandlebroit set. The
- maximum number of iterations is 20,000. Some points very quickly diverge,
- others never do. So how long it takes to calculate individual pixels varies
- greatly. When generating the image it would be nice to calculate the easy
- portions first, leaving the hard stuff for last. This way we will see more
- of the image quickly.
- The algorithm used by this program is somewhat simple. A list of points
- to calculate next is maintained. Whenever a point diverges, its neighbors are
- added to this list. If this list is empty (as it is on starting) a coarse
- grid of points are added. This grid will be made smaller over time, but is
- only used when the list is empty. There is also a special process where points
- next to those diverged are placed on the list. This is necessary because the
- list can be only so long. So some neighbors of diverged points can't
- be properly added.
- I found the algorithm complicated enough to warrant displaying salient
- parts on the image. Basically points are colored like this:
- black - points that diverged or haven't been calculated yet
- color - rainbow from red to violet representing different iteration counts
- white - points in list to be calculated next
- So, watching the display, it starts out with white boxes enclosing colored
- areas. When the white runs into points that don't diverge (take more than
- 20,000 iterations), those neighbors aren't added to the list and so the white
- goes away and a jagged edge is left.
-
- Outline of program:
- initialize screen
- map complex numbers onto screen
- loop:
- if list is empty
- add points from a grid (decrease grid spacing if need be)
- for all points in list
- calculate iteration count
- display as black if infinite, colored if diverged
- if colored, add neighbors to list
- goto loop
-
-