Mandelbrot集合

ソース:

import java.awt.*;
import java.applet.Applet;

public class Mandelbrot extends Applet {
    static final int MAXITER = 200;
    Image img;

    int count(double x, double y) {
        double a = x,  b = y;
        for (int i = MAXITER; i > 0; i--) {
            double a2 = a * a,  b2 = b * b;
            if (a2 + b2 > 4) return i;
            b = 2 * a * b - y;  a = a2 - b2 - x;
        }
        return 0;
    }

    public void init() {
        int width = getWidth();
        int height = getHeight();
        double xorig = Double.parseDouble(getParameter("xorig"));
        double yorig = Double.parseDouble(getParameter("yorig"));
        double d = Double.parseDouble(getParameter("d"));
        Color[] colors = new Color[MAXITER + 1];
        colors[0] = Color.BLACK;
        for (int i = 1; i < colors.length; i++) {
            float h = (float) Math.pow((double) i / colors.length, 6);
            colors[i] = Color.getHSBColor(0.666667f * h, 1f, h);
        }
        img = createImage(width, height);
        Graphics g = img.getGraphics();
        for (int i = 0 ; i < width; i++) {
            double x = xorig + d * i;
            for (int j = 0; j < height; j++) {
                double y = yorig + d * j;
                g.setColor(colors[count(x, y)]);
                g.fillRect(i, (height - 1 - j), 1, 1);
            }
        }
    }

    public void paint(Graphics g) {
        g.drawImage(img, 0, 0, this);
    }

    public void update(Graphics g) {
        paint(g);
    }
}

奥村晴彦

Last modified: 2005-12-29 23:21:16