This is a roadmap for FractalToy planned functionality.
Currently implemented
- Mouse zooming, dragging (with scroll and partial redraw), revert to last view, reset view.
- Save screenshot
- Colour cycling animation
- Coordinates window
- Custom fractal parameter toolbar (partial, only supports complex numbers)
- Fractal classes loaded via reflection (no error checking in xml definition though)
- Support for other numeric/string parameter types. Enough to allow
flexibility for Lyapunov fractal for now, but fractal registry system is
needing some further work.
- Parallel rendering using multiple host CPU cores when available.
- Using XSD/DTD schema to validate fractal .xml files.
- Drawing a guide of the outline of the Mandelbrot set over the
Julia set when the constant point is being picked; the Julia fractal
generates very interesting results when this point is close to, but is
not a member of the Mandelbrot set.
- Smooth shading; see here
for algorithm.
- Keyboard shortcuts for all toolbar and other commonly-used
operations, to avoid repetitive mouse-keyboard switching.
Short-term goals
- Implement a mathematical equation parser so that fractals such as
Mandelbrot, Julia and Newton can use any polynomial function; this will
allow much more exciting experimentation. If the end-user has
javac
available, it should be possible to compile the
formula into native JVM bytecode on the fly, for faster evaluation.
- Complete implementation of coordinates clamping feature (stops the
view from wandering beyond the edges of the fractal shape).
- Edit fractal parameters dialog box; allows editing of all parameters
(not just the toolbar-accessible ones) in a separate dialog; prevents an
overloaded toolbar.
- Bookmarking - saving position and/or parameters into an XML file for
later recall.
- Presets - a drop-down list of pre-set parameters that produce
interesting results.
- Ability to create your own custom palettes. The underlying back-end
code is already present for this, just the Swing GUI code needs to be
written.
Medium term goals
- Ability to create motion video sequences
- The user would define "waypoints" in the fractal image and set
movement/transition parameters, allowing a continuous zoom/pan about
the fractal image. Other parameters could be interpolated as well in
order to create various morphing effects.
- While Java is not powerful enough to be able to render frames in
real-time, there's always the possibility of rendering each separate
frame to an image file on disk (allowing the user to use their own
video encoding program afterwards), or the individual frames could be
fed via an interprocess pipe to an open-source video encoder such as
MPlayer or FFmpeg to produce a movie file on the fly.
- View rotation; may be useful for video animation sequences. The
current rectangular coordinate model doesn't support this,
unfortunately.
- Extended precision beyond IEEE 754; this could be either arbitrary
precision or keeping track of underflow error. Extended precision modes
should only be used once underflow is detected with IEEE 754, to avoid
unnecessary performance losses.
- Command-line interface for offline/scripted rendering, as well as batch
rendering for movies.
- Convert online documentation into a hypertext document for easier
navigation.
Long term goals
- Support for other kinds of fractal systems (IFS, flames etc).
- Investigate how well FractalToy compiles with native
host Java compilers such as
gcj
(GNU Classpath).