84 lines
2.9 KiB
Plaintext
84 lines
2.9 KiB
Plaintext
IfsCompose
|
|
----------
|
|
|
|
IfsCompose is a plug-in for PIKA that allows
|
|
the creation of Iterated Function System fractals by direct
|
|
manipulation onscreen of the component transforms.
|
|
|
|
|
|
IFS Fractals
|
|
------------
|
|
|
|
You may be familiar with IFS's from the screen
|
|
hack 'Flame'. They are also the basis of fractal image compression.
|
|
|
|
For a brief introduction to IFS's see Foley and van Dam, et
|
|
al,. _Computer Graphics, Principles and Practice_, 2nd Ed.,
|
|
(Addison Wesley, 1990).
|
|
|
|
The standard references in the field are Michael Barnsley's books (though
|
|
I haven't looked at them yet):
|
|
|
|
M. Barnsley, _Fractals Everywhere_, Academic Press Inc., 1988.
|
|
M. Barnsley and L. Hurd, _Fractal Image Compression_, Jones and
|
|
Bartlett.
|
|
|
|
Briefly, you take a point and repeatedly apply one of a set of
|
|
transformations to it, choosing randomly between them, and plot the
|
|
point at each step. An interesting result (the Collage Theorem) says
|
|
that if you can find a set of transformations that break up an image
|
|
into smaller copies of itself, then the resulting fractal exactly
|
|
reproduces the original image. For example, here is a classic image
|
|
of a leaf and the same image with the four component transforms
|
|
colored distinctively.
|
|
|
|
But the best way to appreciate this may to install this program and
|
|
try it out. I've extended the basic concept as found in
|
|
Foley and van Dam to include transformations in color space as
|
|
well as in real space.
|
|
|
|
Installation
|
|
------------
|
|
The included Makefile should work with minor modifications on most
|
|
systems if you have installed Pika normally. Put the resulting binary
|
|
in ~/.pika/plug-ins or the system-wide plug-ins directory.
|
|
|
|
The included files gtkaspectframe.c/.h implement a modified frame
|
|
widget that guarantees that the aspect ratio of the child widget
|
|
remains constant when the parent is resized. It's sort of specialized,
|
|
but if you think it would be useful for other purposes, let me know
|
|
and I'll lobby for its inclusion in the standard gtk.
|
|
|
|
Use
|
|
---
|
|
The interface is somewhat complex and it may take you a little while
|
|
to get the hang of it. (There are 19 parameters for each
|
|
transformation in your fractal, after all). The best way to learn is
|
|
probably to start by making small changes, and seeing what they
|
|
do. Click on the transformations (represented by polygons) in the
|
|
design window to manipulate them interactively.
|
|
|
|
Button-1: rotate/scale
|
|
Button-2: distort
|
|
Button-3: move
|
|
|
|
If you hold down shift while clicking, you can select multiple polygons
|
|
to apply the transformation to.
|
|
|
|
Try not to click too near the center of a polygon, as this will
|
|
amplify your actions.
|
|
|
|
Note that if you render onto an image with an alpha channel, the
|
|
background will be transparent (very useful for compositing several
|
|
fractals), otherwise the background will be the current background.
|
|
|
|
There are tutorials and some example images at:
|
|
|
|
http://www.gtk.org/~otaylor/IfsCompose/ifs_tutorial/tutorial.html
|
|
http://tigert.pika.technology.heckin/ifs-compose/
|
|
|
|
|
|
Have fun!
|
|
|
|
Owen Taylor
|