21 февраля 2021

Barnsley IFS Fractals

One of the most remarkable spin-offs of fractal geometry is the ability to "encode" realistic images in very small sets of numbers -- parameters for a set of functions that map a region of two-dimensional space onto itself. In principle (and increasingly in practice), a scene of any level of complexity and detail can be stored as a handful of numbers, achieving amazing "compression" ratios... how about a super-VGA image of a forest, more than 300,000 pixels at eight bits apiece, from a 1-KB "seed" file?


Again, Michael Barnsley and his co-workers at the Georgia Institute of Technology are to be thanked for pushing the development of these iterated function systems (IFS).

When you select this fractal type, Fractint scans the current IFS file (default is FRACTINT.IFS, a set of definitions supplied with Fractint) for IFS definitions, then prompts you for the IFS name you wish to run. Fern and 3dfern are good ones to start with. You can press [F6] at the selection screen if you want to select a different .IFS file you've written.

Note that some Barnsley IFS values generate images quite a bit smaller than the initial (default) screen. Just bring up the zoom box, center it on the small image, and hit [Enter] to get a full-screen image.

To change the number of dots Fractint generates for an IFS image before stopping, you can change the "maximum iterations" parameter on the [X] options screen.

Fractint supports two types of IFS images: 2D and 3D. In order to fully appreciate 3D IFS images, since your monitor is presumably 2D, we have added rotation, translation, and perspective capabilities. These share values with the same variables used in Fractint's other 3D facilities; for their meaning see "Rectangular Coordinate Transformation" . You can enter these values from the command line using:

  rotation=xrot/yrot/zrot       (try 30/30/30)
  shift=xshift/yshift           (shifts BEFORE applying perspective!)
  perspective=viewerposition    (try 200)

Alternatively, entering [I] from main screen will allow you to modify these values. The defaults are the same as for regular 3D, and are not always optimum for 3D IFS. With the 3dfern IFS type, try rotation=30/30/30. Note that applying shift when using perspective changes the picture -- your "point of view" is moved.

A truly wild variation of 3D may be seen by entering "2" for the stereo mode (see "Stereo 3D Viewing" ), putting on red/blue "funny glasses", and watching the fern develop with full depth perception right there before your eyes!

This feature USED to be dedicated to Bruce Goren, as a bribe to get him to send us MORE knockout stereo slides of 3D ferns, now that we have made it so easy! Bruce, what have you done for us *LATELY* ?? (Just kidding, really!)

Each line in an IFS definition (look at FRACTINT.IFS with your editor for examples) contains the parameters for one of the generating functions, e.g. in FERN:

     a    b     c    d    e    f    p
   ___________________________________
     0     0    0  .16    0    0   .01
   .85   .04 -.04  .85    0  1.6   .85
   .2   -.26  .23  .22    0  1.6   .07
  -.15   .28  .26  .24    0  .44   .07

  The values on each line define a matrix, vector, and probability:
      matrix   vector  prob
      |a b|     |e|     p
      |c d|     |f|

The "p" values are the probabilities assigned to each function (how often it is used), which add up to one. Fractint supports up to 32 functions, although usually three or four are enough.

3D IFS definitions are a bit different. The name is followed by (3D) in the definition file, and each line of the definition contains 13 numbers: a b c d e f g h i j k l p, defining:

      matrix   vector  prob
      |a b c|   |j|     p
      |d e f|   |k|
      |g h i|   |l|

The program FDESIGN can be used to design IFS fractals - see FDESIGN .

You can save the points in your IFS fractal in the file ORBITS.RAW which is overwritten each time a fractal is generated. The program Acrospin can read this file and will let you view the fractal from any angle using the cursor keys. See Acrospin .