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
 |