Fractal Roamer, the desktop years

who needs fish, when you have all of eternity to explore?

Before FractRoam went to your pocket, it was a desktop program — several of them, really. From roughly 1999 to 2003 it was how I learned a new GUI toolkit: write the fractal roamer for it. There were versions for Linux SVGA, gtk+/gnome, Windows MFC, and DirectX, plus one that dumped every frame to .png (which, officially, is pronounced “ping”). The versions below still run where their platforms survive — and the coordinates at the bottom of this page now open in the modern app.

Places found in the set

Saved while roaming, 1999–2003. Each one opens in FractRoam — on a phone with the app installed it opens there; anywhere else, on fractroam.com.

starfish
x: 0.334477 → 0.335843; y: 0.426521 → 0.427614
sgt. pepper portrait
x: -0.206042 → -0.203210; y: -0.649937 → -0.647671
curled horns
x: -0.461382 → -0.461221; y: 0.569852 → 0.569981
eye
x: 0.379142 → 0.379791; y: 0.239058 → 0.239577
spiralbrot
x: -1.280884 → -1.226485; y: 0.358847 → 0.402366
(pull out a little bit & label)
x: -0.747893 → -0.747825; y: -0.081626 → -0.081680
wave
x: -0.886264 → -0.868970; y: -0.262249 → -0.248414
spiral galaxy
x: -0.340604 → -0.338431; y: -0.627327 → -0.625588
eyeball
x: -0.317093 → -0.316867; y: 0.626530 → 0.626711
julia set (mandel relative)
x: -0.182443 → -0.181244; y: -0.662695 → -0.661736

Downloads

Last builds
Windows (2a-4, sorta) · DirectDraw (2a-4, kinda) — the DirectX build was compiled for 1600×1200 instead of the otherwise-standard 320×240; the GUI and command-line options it needed never happened.
Binaries (2a_3)
Windows MFC · DirectX
Source (2a_3)
gnome · PNG (v1) · Windows DirectX · “library” source for all platforms (fractroam.h and fractroam.c — every port needed it). The SVGA and Windows-MFC source for 2a_3 went missing somewhere along the way.
Older versions
WinFractRoam 2a_2 · 2a_1 (bin, src) · 2a (bin, src)
SVGAfractroam 2a_2
gnofractroam 2a_2 · 2a · 1a · 1b · 1c
fractroam 1a

Commands, as they were

[space] or [right click]
toggle autopilot
f
toggle fractal type [mandelbrot or julia]
d
display coordinates
c
color cycle / change palette
s
style change 1
h j k l / arrows
with autopilot off, move through the set
z / x
with autopilot off, zoom in / out
[left click]
with autopilot off, center image on point

How it happened

Everyone and their dog has to write a fractal program, and this one was mine. A friend showed me how to compute the Mandelbrot set, and in seventeen hours (with glade) I had learned enough gtk+/gnome to have a working prototype. It had no user interface, but it was very hypnotic — the trick was I’d made it zoom around very sniftily.

Thus were born gnofractroam 1a, 1b, and 1c. Then it turned out 9 of 10 people I wanted to show it to used Windows, and the port was a mess — so fractroam2 separated the computation from the UI, and the ports followed: gtk+ again (much more cleanly), Windows MFC, DirectX, SVGA, and PNGfractroam, which dumped every frame to disk so realtime stopped mattering. The versioning never did get sane, the README never did get written, and the distributed renderer stayed in the mental works — but by then the roaming itself had taught me what it needed to: how to make the zoom interesting more often than not, which is the part that survived all the way to the app.


footnotes:

  1. the alternate style is from when I forgot the definition of the absolute value of a complex number — it looked neat, so I kept it as an option.