README for JavaQuat 1.6.2,
The Fractal Drawing Software by Garr Lystad.

What's New since 1.6.1

What's New since 1.5.0

What's New since 1.4.1


What's New since 1.4


What's New since 1.2.1

How to run it

Latest information can be obtained from "Fractal Top."

Class structure overview

There are a couple of html files so that you can run the code as an applet. These are JavaQuat.html and Big-JavaQuat.html. I do not recomment running the code from a browser since then it cannot use your file system to save the fractals you draw.

The top level java and class files are Fractal4dApplet and Fractal4dFrame for running as an applet in a browser, or running as a standalone application, respectively.

Each of these files creates an instance of a FractalMaker4d, which is the "parent" class. It has a panel, the blue argument area, on the left that is full of Labeled_Text_Fields and buttons. On the right are the drawing areas, which exist as several levels of classes. The outermost class of the drawing areas, Fractal_Panel, handles the buttons and passes information through to an instance of Fractal4d. (This is primarily for historical reasons.) The Fractal4d instance contains a FractalImageProducer, an Image called refresher and an IndexColorModel. The FractalImageProducer has an instance of LoopNM which implements the Looper4d interface. Two classes are derived from FractalImageProducer for the "Scan on Times" and the "Scan on Plus" button settings. They are called CoeffImageProducer and TransImageProducer respectively.

If you wish to add a fractal defining loop definition it must implement Looper4d. Use the various files such as Loop424.java as a guide. Compile the code using the Java Software Development Kit. Your java file should be in the same directory as all the other Loop....java files. No changes to the rest of the program are necessary. To use your fractal defining loop code set the "Power/Loop Selector" button to "Loop Selector" and enter the name of your class in the box above the button. Capitalization DOES matter. You will need to compile in the presence of the classes ParmSet4d and Quaternion at least.

If you click on the "edit color map" button all the blue arguments area is replaced by a color map editor, which will edit the IndexColorModel of the last Fractal4d you touched. It consists of a ColorMapEditor which contains, among other things, a ColorEditor at its bottom. The former edits the entire color map, while the latter edits one color at a time.

If you click on the "File I/O" button all the blue arguments area is replaced by a panel for reading and writing argument sets and images. The class that controls this area is ImageSaver. It makes use the JQArgReader, GIFEncoder, and GIFDecoder classes. The ColorTable class is part of the GIFDecoder package but is in a separate file since it needs to be a Java public class.

Disclaimer

This is the first Java program of more than a few dozen lines that I've written. As a long time Lisp programmer who now makes his living in C++, (sad come down, isn't it!) I didn't exactly know what coding style to use. That's all worked out now, but my initial indecision shows in the source. I've begun to clean it up, but it isn't beautiful yet. Sorry.

More than that shows I'm afraid. I didn't even know how to approach some of the things I needed to do, and so as I learned a lot as the code got rewritten and rewritten and rewritten. For ease of writing, I made everything available throughout the default package. You Object Oriented purists will no doubt frown at this, as well you should, but for developing a smallish program like this when you don't know what you're doing and have to rewrite it so much, it sure makes the experimentation easier. If you look hard you will notice that functionality is organized in a nice OO way, and that does keep the integrity of the objects in tact to a great extent. So maybe I should have cleaned up the code before letting the public see it, but I have other fractals to fry at the moment. I've begun cleanup on a small scale and I promise I'll do better next time.

As for known bugs, I would have fixed them if I knew I had any. If you find one please let me know. More than likely you will be looking at a problem with your implementation of Java. May I recomment Netscape 4.0, MRJ 1.5 Applet Viewer from Apple (see above), and JavaSoft's Java Runner 1.0.2 as good and stable. For speed MRJ 1.5 gives you a considerable boost. They seem to have a slow garbage collector, but that, writing through CardLayouts, and a poor scheduler are all I've noticed that's wrong. Internet Explorer 3.0 and 4.0 work OK on a PC, but not on a Mac.

  1. I have noticed some "refresh" problems in older versions of Netscape. Resizing the window a slight bit seems to overcome that.
  2. I'll confess, I haven't tried to break things too much. You may be able to if you try. In that case let me know and I'll try to fix it. If you don't do anything funny though, I think the program will draw a lot of nice fractals for you. I hope so anyway.

For all the lawyers and lawyer employers out there: This program is made available without warranty or guarantee of suitability for doing anything at all. No claim whatever is made that it will function or that it will not cause harm to the user, his computer, or the world at large. It should be understood by the user that he is using it as is, whatever its state may be, and that he assumes all risks for said use. The author has not designed it with the intent to cause any harm at all, but with software that means little or nothing.

Terms of the GNU software license apply and for legal purposes should be considered to apply as if contained herein. If you give a friend a copy of this software, or enhance it, please be so kind as to send me email, including the change, if any. Thanks. Hope you enjoy the program.

The Graphics Interchange Format © is the Copyright property of CompuServe Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated.

Copyright © 1997 by Garr S. Lystad
JavaQuat © is the Copyright property by Garr Lystad. This copyright does not apply to the GIFEncoder.java file, but applies to all remaining .java source files and .html files contained herein. JavaQuat(sm) is a Service Mark property of Garr S. Lystad