Somewhere around 1986-87 I wrote a set of Mandelbrot calculation/display
programs for DEC VT340 terminals. For the past few years, I've been
sitting in front of various displays but haven't come across anything
that can handle color sixel. Therefore, these programs have been sitting
around collecting dust.
I was just poking around on a recent Infomagic linux disk the other day
when I stumbled across libsx. This is a set of routines which make
writing Xwindows applications very easy. Since I had been wanting to
write an Xwindows display program but didn't know enough about the
details of writing X applications, I explored this as an option. xmdisp
is basically a day's worth of work with libsx. Kudos to the author! See
README.libsx for more information. The package is available somewhere
around sunsite.unc.edu:/pub/Linux/X11/devel and probably other locations.
freq.c and dirlist.c were borrowed (ok, stolen) from within the libsx
examples. hlsrgb.c includes modified versions of some routines I pulled
off DEC's internal network many eons ago.
Included in this package are sources for mcalc, xmdisp and mxwd. mcalc
does the calculations and writes a datafile. xmdisp reads the datafile
and produces an Xwindows display containing a fractal picture. mxwd
reads the datafile and writes an Xwindows dump format file which can be
read by xwud and xpr. This can also be used to convert to other file
formats via pbm or like utilities.
This kit contains the libsx header file and a static library. The
binaries in this kit require the libsx shared library (available from
sunsite).
Also included is the file m0000.mdb which is a starter data file. It was
calculated with 'mcalc -2 -2 4 1024 2 m0000.mdb'. This shows the full
Mandelbrot set.
The default image size is 600x600. This can be changed by adjusting the
values in mandelbrot.h and invoking make. These values used to be
800x480 for VT340. I thought 600x600 might be nicer for an Xwindows
display.
Command line arguments to mcalc are:
left coordinate of left edge of box
top coordinate of top edge of box
height distance from top to bottom (or left to right)
iterations maximum iterations before giving up (< 32766)
limit cutoff value (normally 2)
filename where to store the calculated data
xmdisp takes an optional argument which is the name of the initial file
to load.
xmdisp displays and controls include:
Top Form:
Quit Leave the application
Reload Reload the current image. Useful for watching an
in-progress calculation.
Load... Select a file to load
File Name Currently loaded file
Coordinates Form:
Left Coordinate of left edge
Top Coordinate of top edge
Height Distance from top to bottom (or left to right)
Parameters Form:
Limit Cutoff value
Iterations Maximum iteration count
Processes Number of processes used in calculation
Color Form:
Cycle Start/stop color cycling
Reset Reset to initial colors
Image Display:
Press mouse button 1 and dragged across an area. Press mouse
button 3 to start mcalc in batch over the selected area. This
passes the mcalc command as input to 'batch -q J'. If you want
to change this command, modify SUBMIT_COMMAND in submit.h and
rebuild.
mxwd takes two arguments. The mcalc format input file and the name of a
file to write in xwd format.
------------------------------------------------------------------------
If you make any modifications to this software, please forward them to
me. My email address is pfau@cnj.digex.net.