Rima, the Realtime Interactive Mandelbrot Animator


Rima is an open-source Mandelbrot set animator for Windows, Mac OS X, and Linux. It has a few noteworthy features:

  • Rima animates by displaying the results of every iteration, instead of only displaying the results of, say, 1,000 iterations as a static image;
  • Rima colors pixels using the polar coordinates of each point; and
  • Rima has a few really pretty bugs in the color-space conversion code that you can cycle through with by pressing 'c'.

  • (I think these features are unique developments. If another program has done this before me, please let me know.)


    Rima 0.4.2 for Windows
    Rima 0.4.2 for Mac OS X (Intel, possibly Leopard or later only)
    Rima 0.4.1 for Linux (amd64)
    Rima 0.4.0 for Linux (i386)
    Mansdlbrot 0.3.0 for Mac OS X (PPC), the precursor to rima
    Rima 0.4.2 source code


    You can find a small gallery of screenshots here, and some movies here. (For the movies, you'll need an MPEG-4 codec such as FFDShow (Windows) or Perian (Macs), or a video player with them built in such as mplayer or VLC.


    Keys for control/browsing:
    	- 	(minus) 		zoom out
    	= 				zoom in
    	arrow keys			pan
    	spacebar			pause/unpause iteration
    	backspace			clear to first iteration
    	{				increase frame-skipping
    	}				decrese frame-skipping
    	[				reduce maximum speed 
    	]				increase maximum speed
    	c				switch coloration mode
    	.	(period)		advance one iteration (fast)
    	ctrl-.	(ctrl-period)		advance twenty iterations (fast)
    	,	(comma)			move back one iteration (very slow at late iterations)
    	<	(shift-comma)		back five iterations (very slow)
    	ctrl-,	(ctrl-comma)		back twenty iterations (very slow)
    	ctrl-<	(shift-ctrl-comma)	back one hundred iterations (very slow)
    optional command-line options:
    	-f				Fullscreen
    	-x _____			Horizontal screen resolution
    	-y _____			Vertical screen resolution
    	-r _____			Initial position on the real axis
    	-i _____			Initial position on the imaginary axis
    	-z _____			Initial zoom level (smaller numbers are higher zoom)
    	-b				Benchmark mode: runs 256 iterations as fast as possible, 
    					then quits.  Prints speed info (except on Windows)
    	-j 				Jump benchmark mode: performs several zooms, pans, and jumps,
    					then quits and prints speed info (does nothing on Windows)


    Rima is moderately well-optimized. It will take advantage of multi-core or multi-processor systems effectively (except, currently, on Windows, since my current compiler for Windows doesn't support OpenMP). However, the algorithm it uses for rendering is inherently slower than the traditional escape-time algorithm used by most other programs.

    Compiling from source

    Download the source here: rima-0.4.2.tar.gz. If you're on OS X, try the Xcode project. If you're on linux, install SDL and the SDL development headers (on Debian or Ubuntu: sudo apt-get install libsdl libsdl-dev), then try running make. If you're on Windows, good luck. (I compiled the Windows binary from Linux using MinGW with Makefile.mingw). In all cases, it's best if you use a compiler that supports OpenMP. This includes gcc >= 4.2. If you're using gcc 4.1 or earlier, edit Makefile and remove the -fopenmp option.