Exploring fractals was never this easy!

Mandelbrot Madness!

Microsoft .NET 2.0 Version 2.0

System Requirements

Note: MM! .NET may work on non-Windows platforms with a .NET 2.0 compatible framework. However, this is untested, and I have not personally been able to acquire a non-Microsoft .NET framework that supports version 2.0. Use on a non-Windows platform is completely unsupported.

MM! makes use of IKVM.NET by Jeroen Frijters, which in turn uses GNU Classpath. Both of these are required to support Mandelbrot Madness! JAVA's MOB file format and are included along with the application. Please do not bother either of these projects with questions or problems with this program.




Download Mandelbrot Madness!

You can download the current version of Mandelbrot Madness! from the following links:

Mandelbrot Madness! is released under version 2.0 of the GNU General Public License.


Installation Instructions

The recommended method of installation is to download the Inno Setup based installation program and run it. This will set up all the usual program groups, desktop icons, and (if necessary) path information. It also provides the usual uninstall links via the Start menu and Add/Remove Programs. Windows users looking to bypass the setup program or non-Windows users willing to give it a try can download the no-installer binary ZIP file. Just unZIP this where ever you want and run it. Just make sure to keep all the program files together with their directory structure intact (this is important for the help files and MM XML support).


Mandelbrot Madness! Program History

Mandelbrot Madness! started as a combination of curiosity about Mandelbrot images and fractals, and a desire to learn Visual C++.

During my senior year of college, I took a class in computer graphics. Instead of concentrating on software packages and how to use them, like the course one of my friends took at another school, our class concentrated on the fundamentals of graphics. Instead of using the cosine shading tool, we wrote our own cosine shading programs. Instead of loading up the latest, greatest ray tracing tool, we wrote our own. We also experimented with fractals, which always strikes a computer scientist's interest. And wherever there are fractals, there's the Mandelbrot set.

Being the ambitious little geek I was, I quickly took the Pascal code handed out in class, ported it to C, and had a handy little Mandelbrot renderer for DOS. It produced 16-color 480 x 480 gray-scale images. I even modified it somewhat to create a virtual slide show during one of our engineering open houses at school. The problem came when I wanted to capture the images to a file.

I never was familiar enough with the internal structure of the various popular image formats to trust myself to modify my DOS program to write to a file. For quite a while, the only method available to me was to run the program in a DOS window under Windows 95, then use an image editor such as Paint Shop Pro to do a screen capture. The image could then be cropped down and saved under whatever image format I could want. However, this imposed a number of limitations that I did not care for. Win95 cannot support running SVGA in a DOS window, so I was limited to the 16 colors my compiler's graphics routines could support. For the same reason, I could only make images as large as 480 x 480 pixels. To complicate matters, juggling the different windows and screen captures was not fun, and seemed a bit too many hoops to jump through to obtain a simple image. What I needed was something that (1) could produce an image whatever size and color depth I wanted, (2) save it to a standard image format recognized by most image editors, and (3) would be a bit easier to use and more portable.

That's when I turned to Visual C++.

I took a Visual C++ class in school the same semester, but graphics projects and my senior project distracted me and I did poorly in the class. My gracious instructor was understanding, though, and was quite kind to me and gave me a decent grade. But I truly wanted to learn Visual C++, so I purchased it from the school and tasked myself to learn it on my own. My efforts wavered somewhat, until I finally obtained some computer-based training at work. Also, through the miracle of the Internet, I also happened upon some rather gracious young programmers in Denmark, who freely distributed their VC++ code to handle standard Windows DIB bitmaps. Thus, Mandelbrot Madness! was born.

It was not long after this that I began development on the Java version. (For its complete history, see the Java version's program history or the full history in the help files.) As I began to learn more and more Java tricks, the Windows version of MM! was steadily eclipsed and quickly forgotten. My Visual C++ skills quickly faded and I had neither the time nor finances to keep up with the latest version of Microsoft's compilers. The Windows version then suffered a fatal blow when the source code mysteriously vanished, despite my obsessive tendency for taking backups. While it was always my intention to eventually bring the Windows version in step with the Java version, I could never find the time to update the code, and losing the code only make the task impossible. So the compiled Windows version languished in the realm of abandonware, gathering dust on a handful of hard drives. Years passed, and eventually even the Java version began to lay dormant, as I never had time to add any new features.

Time marches on, and later on I found myself starting a new job in a new state programming in a new programming language: Microsoft .NET C#. Although I had never used it before, I was brought on because of my object-oriented programming skills, and I was amazed at how easily my Java knowledge could be transliterated to Microsoft's "Java killer." I was brought on to develop Web sites using ASP .NET with C# on the backend, but I knew from my research that one could also develop Windows Forms applications (the successor, I believe to the old Microsoft Foundation Classes) using C# as well. I was curious to give it a try, to broadened my arsenal beyond just Web programming. Now... if only there were a project that I had extensive experience with that I could simply port the code over, saving time building the logic so I could concentrate on the new language structures....

The .NET version of MM! came together with surprising speed. Using MMJ! 4.0 as a base, I ported the Java objects to C#, making minor improvements to the implementation as I went. I replicated all of MMJ!'s functionality (at least those features that made sense in pure Windows; things like Java's look and feel system were easily discarded) and found several minor bugs and tweaks to fix along the way. I found easy ways to implement some old ideas that I wanted to add to the Java version but never got around to doing (like an XML-based file format) and leveraged several features of .NET that Java didn't have available when I built that version (like image formats beyond GIFs and JPEGs). In the end, I found MM! to be better than ever, and my interest in recreational programming and MM! itself to be finally rekindled.


Browse the Documentation

The entire MM! 2.0 documentation is here online for your browsing enjoyment. Feel free to start by reading the help index. The FAQ should also be very helpful.


Return to Mandelbrot Madness! Main Page