Iterated Function Systems Viewer 3

Iterated Functions Systems Viewer 3

Multi-colored fractal image; IFS imagea3pop-151023-420.ifs

Rendered using bitmap colors on green background; IFS imageaa0648.ifs

Rendered using bitmap colors on black background; IFS imageMu_frenchcurve.ifs

Rendered using bitmap colors on an image background; IFS imageIFSLab_Pyramid.ifs

Rendered using bitmap colors on black background; IFS imageJB_IFS-0025.ifs

Rendered using bitmap colors on an image background; IFS imageIFSLab_XenoBreeder.ifs


What is an Iterated Function System?
What Is IFS Viewer 3?
Quick Start
The Menu Bar

Operational Overview
User Interface References
Software

What is an "Iterated Function System"?

"From Wikipedia, the free encyclopedia
IFS fractals, as they are normally called, can be of any number of dimensions, but are commonly computed and drawn in 2D. The fractal is made up of the union of several copies of itself, each copy being transformed by a function (hence "function system"). The canonical example is the Sierpinski gasket, also called the Sierpinski triangle. The functions are normally contractive, which means they bring points closer together and make shapes smaller. Hence, the shape of an IFS fractal is made up of several possibly-overlapping smaller copies of itself, each of which is also made up of copies of itself, ad infinitum. This is the source of its self-similar fractal nature."   Wikipedia IFS fractals

What Is IFS Viewer 3?

IFS Viewer 3 (IV3) is a simple graphical user interface which allows the visualization of IFS fractals using different coloring methods. IV3 has hundreds of interesting IFS files available for display. You can also add your own IFS transformation files for further exploration of IFS fractals.

The purpose of IV3 is to provide an interactive tool to view IFS fractals and allow you to explore your creativity to display the fractal using different colorization methods.


Quick Start

The easiest way to view an IFS fractal is to load an .ifs file by pressing the Load IFS Transforms button image button. Select the IFS Transforms folder, then navigate to one of the eight sub-folders and double-click on one of the .ifs files. After selecting the file, there is a brief pause while the affine transformations are being computed. The IFS fractal will be displayed on screen at the default resolution of 320x240 pixels. Drawing the fractal at 320x240 takes the least amount of time to compute and display a fractal. This is a good way to see if you like the fractal before committing the time and effort to display at a higher resolution.

After the affine transformations have been calculated and the fractal is rendered, you can select different drawing colors and different background colors. Since all the computational heavy work has been completed, you can change the color of the fractal and background color as many times as you wish and render the fractal in a fraction of the time it takes to render a fractal from loading a new IFS transformation file. Just press the Update Render button image button to have any color changes or 'Flip the Y Axis' take effect.

The quickest way to view an 800x600 fractal is to press the Load IFS Histogram button image button. Navigate to the 'Hst800' folder and select the fractal you wish to view. IV3 comes with a handfull of pre-calculated 'Hst800' files to get you started.

Whether you 'Load a Transformation' or 'Load a .hst file', after the fractal is shown on the screen, you now have the option to 'colorize' the fractal using any picture image you may have on your hard drive. The only limit is that the image must be the same dimensions as the displayed fractal (320x240, 640x480, or 800x600 pixels). Blurred images or images with continous tones (like nature pictures) give the most visually pleasing results.

The menu bar has two sub-menus. They are the File and Help menus. Menu Bar image

The File menu has six menu items:

The Help menu has two menu items:

Load IFS Transforms

Selecting Load IFS Transforms starts up a file dialog window. Navigate to the IFS Transforms folder. Inside of the IFS Transforms folder are eight sub-folders. There are over 800 IFS transformation files available for selection and viewing within these sub-folders.

Load HST File

The HST file, is a file containing all of the pixel intensity levels used to display an IFS fractal. Histograms for the larger display sizes can take several seconds to load. Once the HST file is loaded, rendering will commence immediately after the file has loaded. It will be rendered in the current color settings, and you can now change the drawing color, background color, and 'Flip the Y Axis' as many times as you wish. Just press the Update Render button image button to tell IV3 to re-color the fractal when you change the drawing color, the background color, or 'Flip the Y Axis'.

There is also the Load IFS Histogram button image button above the main drawing area for your convenience. The 'Load HST File' from the 'File Menu' and the Load IFS Histogram button image button function identically.

Note: The five pre-loaded sample fractals (and a few extras) have .hst files already computed and saved in the 'Hst800' folder.

Save HST File

After loading an .ifs transform file and your fractal has been fully rendered in the display window, you may save the pixel intensity histogram (.hst) to disk for later use. A histogram file for any of the three display sizes can be saved as a snapshot of any fractal pixel intensity maps once all of the affine transformation calculations have been completed. It doesn't matter what color or background color you are currently displaying because the HST file doesn't record any color information.

Tip 1: If you render a fractal at 800x600 or 640x480, it is advised that you save the histogram file of that fractal to eliminate the time required to calculate the affine transformations at high resolution. Calculation times for 800x600 fractals using more than 2 million iterations, can take over two minutes. HST files greatly reduce the amount of time it takes to display a fractal the next time around.

Tip 2: When the file dialog window appears notice that the *.hst in the file name text box is highlighted. At this point if you right-click on the highlighted *.hst you can select Paste from the pop-up window, or alternatively, press [Ctrl+V] to paste the default file name for that particular fractal. For example: If the .ifs fractal file you are viewing is the BarnsleyFern.ifs fractal at 800x600 resolution, the default .hst file name is BarnsleyFern_800.hst. The general default file format is ifsFileName plus an underscore plus the width of fractal display screen plus .hst (i.e. ifsFileName_displayScreenWidth.hst). You can also name the file however you wish, as long as it has the .hst file extension.

Load Bitmap Image

This option allows you to load and to display a bitmap image (.bmp file) stored on your hard drive. This option only allows 800x600, 640x480, and 320x240 pixel bitmaps to be loaded. Once you have selected and loaded a bitmap, the bitmap image will be displayed in the main viewing window.

Save Bitmap Image

This option allows you to save any currently displayed fractal as a bitmap image (.bmp file) to your hard drive. The saved bitmap image will be the same dimensions as the currently selected display size.

Once the file dialog window appears, you may right-click on the highlighted *.bmp and select Paste from the pop-up menu or alternatively press [Ctrl+V] to paste the default file name into the textbox of the file dialog. The default bitmap file name is the ifsFileName plus an underscore plus displayScreenWidth plus .bmp (i.e. ifsFileName_displayScreenWidth.bmp). You can also name the file however you wish, as long as it has the .bmp file extension.

Exit

Selecting this option will terminate IFS Viewer 3

The Help Menu

The Help Menu has two menu items - Help and About

Help

Selecting Help brings up this document.

About

Selecting About displays 'License and Copyright' information.

This is the text of the 'License and Copyright'

IFS Viewer 3

Written by Andres Amaya Jr - (c) 2016, All Rights Reserved

You are granted permission to borrow parts of this program that can be integrated into your project. No further notice is required. Please obtain my permission before distributing this work in full. Do not include this work in a CD pack, website, forum or other file archive or download site without permission.

Do not create modified versions of this program and call them yours. Copyright law permits me to claim copyright on derived works. As I mentioned - you can use ideas and portions of the code in your projects without hindrance.

Care has been taken to insure that this software is free from defects, but that can never be guaranteed. The user understands that by running the software they assume all risks. This software is provided AS IS. There are no warrantees explicit or implied.

Behind the screen (operational overview)

These are the main steps IV3 performs to draw and manipulate an IFS fractal.

1) Load IFS transforms

2) Calculate and display the 'IFS preview window' approximation.

3) Calculate the affine transformations and build in memory, the pixel histogram of the current fractal.

4) Display the fractal in the selected background and foreground colors from the pixel histogram in memory.

5) Color the rendered fractal using a picture on your hard drive. This step is optional but offers the most variety in colorizing the fractal.

Steps 1 - 4 are performed automatically once an IFS transform has been loaded.

User Interface

IFS Preview Window

IFS preview window image The first place where the newly loaded fractal is shown is in the IFS Preview window. The IFS Preview will display a rough approximation of what the fractal will look like and also shows the results of each of the individual transformations in a different color.

While the affine transformations for the fractal are calculated, a progress bar indicates the status of the calculations in 10% increments.

After 150,000 iterations have been calculated, the fractal is displayed in the main window at a graphics resolution of 320 x 240 pixels. Lastly a frame/border of the current drawing color is placed around the fractal at display resolutions of 320x240 and 640x480 pixels. This is a visual indicator of the size of an image that is to be saved to disk.

IFS Title & Source

The Title textbox shows the name of the IFS fractal once loaded.

The Source textbox shows the originator or creator of the IFS fractal once loaded.

Iterations

The Iterations textbox allows you to change the number of iterations used to draw the fractal. Default iterations are:

The correct number of iterations depends on how opaque you wish the fractal to appear. The fewer the iterations the more transparent the fractal will appear, conversely more iterations will produce fractals with more detail or more opaque in appearance. Here are some suggested iteration ranges:

The other consideration is that more iterations take longer to process. It's always going to be a trade-off between speed vs. detail.

Display Size

Display Size radio buttons image If you wish to display the fractal at a higher resolution, you will need to select either Display Size 640x480 or Display Size 800x600 and then press the Render At New Size button image button to begin calculating the fractal and build it's associated pixel histogram at the selected display resolution.

Note: Changing the display size also resets the number of iterations to the default values used to calculate the IFS transformations (See 'Iterations' above).

Once the histogram is in memory, you can select a different color with which to render the fractal, and also choose a new background color, without the need to re-calculate the affine transformatios for the fractal.

Load IFS Transforms (button)

Pressing the Load IFS Transforms button image button will bring up a file dialog window. Navigate to the IFS transforms folder. Inside this folder are eight sub-folders containing over 800 IFS fractals for your perusal.
The folders are:

An IFS transformation file must be loaded before anything else takes place. IV3 has five pre-loaded IFS transformations at program start up. One of the five transformations is selected at random and displayed.

The pixel intensity histogram of all of the displayed pixels, of which the fractal is comprised, is stored in memory for further graphical manipulation. The caveat is that the histogram is only valid for one-and-only-one of the three graphic resolutions available. At start up, only the histogram for a 320 x 240 pixel is stored in memory.

Select Render Color

Select Color Gradient - radio buttons imageSelecting a new color gradient is done by clicking one of the 9 color gradients appearing just above the main display window and to the left.

Set Background Color

Select Background Color - radio buttons imageSelecting a new background color is done by clicking one of the 9 background colors shown above the main display window and to the right. Once a background color is selected the main window will change to the color selected, erasing the fractal currently displayed.

Update Render(button)

Before pressing the Render In New Color button image button, you can also check the Flip Y Axis checkbox image image checkbox. This is to compensate for the fact that depending on whether the IFS transformations were made using the mathematical X/Y plane (positive Y values are above X axis) or the computer screen X/Y plane (positive Y values are below X axis), you can still view the fractal with correct Y orientation once the histogram has been computed and stored in memory.

To display the fractal with the new color selection(s) or flipped Y axis, press the Update Render button image button. The rendering of the fractal will begin immediately without any further affine calculations. How long this will take depends on the current display size. Higher resolutions will take proportionately longer times to display.

Note:If the Y Axis has been flipped, and you then 'SAVE' the histogram of the flipped fractal, the pixel intensity histogram will also be saved with the Y axis flipped. The Y axis will be flipped whenever saving a histogram while the Flip Y Axis checkbox image image check box for Update Render or check box for Render Using BMP is selected.

Render Using BMP(button)

Another display choice is the Render Using BMP button image button. This allows you to paint the fractal with the colors stored in any bitmap image (.BMP) you have on your computer. Along with the option of Flip Y Axis checkbox image, you can also select the Invert Image Colors checkbox image which inverts the colors of the .BMP at render time. Inverting image colors provides two different colorizations per bitmap image, the regular image colors and the inverted image colors (like a color photograph negative image).

Both the Flip Y Axis checkbox image and Invert Image Colors checkbox image options must be selected -before- pressing the Render Using an Image button image button. Selecting either of the two options after pressing the Render Using BMP button image button will have no effect until the next render.

Only bitmap image sizes of 320x240, 640x480, and 800x600 pixels are permitted for use as colorization images or for loading as a saved bitmap.

References

There are many good sources of information for generating and colorizing IFS fractals on the Internet.

Here are few to get you started.

Wikipedia - Barnsley Fern
Jan_1988 Byte magazine article by Michael F. Barnsley and Alan D. Sloan
Ergodic Theory, Fractal Tops And Colour Stealing (PDF by Michael F. Barnsley)
J. C. Sprott - Automatic Generation of Iterated Functions Systems
Ken Brakke - IFS Gallery and transforms
Nathan Zeldes - IFS Image Gallery
Paul Bourke Fractals (scroll down for IFS gallery with transformations)
Classic Iterated Function Systems (IFS home page)
IFS Gallery with transform files (Larry Riddle, Agnes Scott College)

Software

Apophysis - Fractal Flame software
Ken Brakke - Stand Alone Java IFS program (.jar)
Nathan Zeldes - Download IFS Lab
IFS Construction Kit
Fractal Designer by Doug Nelson (DOS/DOS Box)
RS-IFS.bas (DOS/DOS box)