Kildekode til Mandelbrot.java

//******************************************************************************
// Mandelbrot.java:	Applet
//
//******************************************************************************
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Event;
import java.awt.Color;
import java.lang.Math;

//==============================================================================
// Main Class for applet Mandelbrot
//
//==============================================================================
public class Mandelbrot extends Applet
{
	
	double maxX, maxY, minX, minY;
    
	double dx, dy;
	int    x, y;
	int    horisontalOppløsning, vertikalOppløsning;
	int    mandelbrotMengde[][];

	double reell, imaginær, gammel_reell;
	double lengde_Z;

	int     iterering;
	int     maxIterering = 256;
	int     maxVerdi;
	int	n;
	boolean ferdig = false;
	Color[] farge = new Color[256];
	
	
	public String getAppletInfo() {
		return "Name: Mandelbrot\r\n" +
		       "Author: Dennis G. Landsem\r\n" +
		       "Created with Microsoft Visual J++ Version 1.1";
	}

	public void init() {
        
		//Finner skjermoppløsningen
		horisontalOppløsning = bounds().width;
		vertikalOppløsning = bounds().height;

		//Leser inn plotteområde
		String overførtmaxX = getParameter("MAXX");
		Double temp = Double.valueOf(overførtmaxX);
		maxX = temp.doubleValue();
		String overførtmaxY = getParameter("MAXY");
		temp = Double.valueOf(overførtmaxY);
		maxY = temp.doubleValue();
		String overførtminX = getParameter("MINX");
		temp = Double.valueOf(overførtminX);
		minX = temp.doubleValue();
		String overførtminY = getParameter("MINY");
		temp = Double.valueOf(overførtminY);
		minY = temp.doubleValue();
		
 		resize(horisontalOppløsning, vertikalOppløsning);

	}

	// Mandelbrot Paint Handler
	//--------------------------------------------------------------------------
	public void paint(Graphics g) {

		if (!ferdig) {
			//Oppretter en matrise med 256 elementer. Hvert element representerer en vilkårlig farge
			int i;
			for (i = 0; i < 256; i++) {
				farge[i] = new Color((int)(Math.random() * 256), (int)(Math.random() * 256), (int)(Math.random() * 256));
			}
			
			mandelbrotMengde = new int[horisontalOppløsning][vertikalOppløsning];
			dx = (maxX - minX) / horisontalOppløsning;
			dy = (maxY - minY) / vertikalOppløsning;
			
			for (y = 0; y < vertikalOppløsning - 1; y++) {
				for (x = 0; x < horisontalOppløsning - 1; x++) {
					reell = 0;
					imaginær = 0;
					iterering = 0;
					do {
						gammel_reell = reell;
						reell = reell * reell - imaginær * imaginær + (minX + (double)x * dx);
						imaginær = 2 * gammel_reell * imaginær + (minY + (double)y * dy);
						
						iterering++;
						lengde_Z = reell * reell + imaginær * imaginær;
					} while ((lengde_Z <= 4.0) && (iterering <= maxIterering));
										

					if (iterering <= maxIterering) {
						g.setColor(farge[iterering - 1]);
						mandelbrotMengde[x][y] = iterering - 1;
						//g.setColor(farge[(int)((iterering/maxIterering) * 10)]);
					}
					else {
						g.setColor(Color.black);
						mandelbrotMengde[x][y] = 0;
					}
					g.drawLine(x, y, x, y);
				}
			}
			ferdig = true;
		}
		else {
			for (y = 0; y < vertikalOppløsning - 1; y++) {
				for (x = 0; x < horisontalOppløsning - 1; x++) {
					if (mandelbrotMengde[x][y] != 0) {
						g.setColor(farge[mandelbrotMengde[x][y]]);
					}
					else g.setColor(Color.black);
					g.drawLine(x, y, x, y);
				}
			}
		}
	}
}