フラクタルを生成するコード例を教えていただけませんか。
もちろん、フラクタル画像を生成するJavaコードの例を2つ紹介しよう：

例1：マンデルブロ集合

マンデルブロ集合は最もよく知られたフラクタルの1つで、複素平面上で複素関数を反復することで生成できる。次のコードは、JavaとAWTグラフィックス・ライブラリを用いてマンデルブロ画像を生成する方法を示している：

```
import java.awt.*;
import java.awt.image.BufferedImage;

public class Mandelbrot {
    public static void main(String[] args) {
        int width = 800, height = 600;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        double xmin = -2.0, xmax = 1.0, ymin = -1.5, ymax = 1.5;
        double zx, zy, cx, cy, tmp;
        int maxiter = 255, iter;

        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                cx = xmin + (xmax - xmin) * x / (width - 1);
                cy = ymin + (ymax - ymin) * y / (height - 1);
                zx = zy = 0.0;
                iter = 0;

                while (zx * zx + zy * zy < 4.0 && iter < maxiter) {
                    tmp = zx * zx - zy * zy + cx;
                    zy = 2.0 * zx * zy + cy;
                    zx = tmp;
                    iter++;
                }

                int color = iter << 16 | iter << 8 | iter;
                image.setRGB(x, y, color);
            }
        }

        Frame frame = new Frame();
        frame.setSize(width, height);
        frame.add(new Canvas() {
            public void paint(Graphics g) {
                g.drawImage(image, 0, 0, this);
            }
        });
        frame.setVisible(true);
    }
}
```


このコードでは、グレーパレットを使って800x600ピクセルのマンデルブロ画像を生成しています。この画像は、AWTのFrameクラスのインスタンスとCanvasクラスのインスタンスを使ってウィンドウに表示されます。



例2: フラクタルツリー

フラクタル木は、フラクタル図形のもう一つの一般的な形式であり、小さな枝に分かれる枝を描く再帰によって生成される。次のコードは、JavaとJavaFXグラフィックス・ライブラリを使ってフラクタル木を生成する方法を示している：

```
public class Mandelbrot {
    public static void main(String[] args) {
        int width = 800;
        int height = 800;
        double zoom = 1;
        double moveX = -0.5;
        double moveY = 0;
        int maxIterations = 300;

        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                double zx = 1.5 * (x - width / 2) / (0.5 * zoom * width) + moveX;
                double zy = (y - height / 2) / (0.5 * zoom * height) + moveY;
                double cx = zx;
                double cy = zy;

                int i = maxIterations;
                while (zx * zx + zy * zy < 4 && i > 0) {
                    double tmp = zx * zx - zy * zy + cx;
                    zy = 2.0 * zx * zy + cy;
                    zx = tmp;
                    i--;
                }

                int c = Color.HSBtoRGB((maxIterations / (float) i) % 1, 1, i > 0 ? 1 : 0);
                image.setRGB(x, y, c);
            }
        }

        try {
            ImageIO.write(image, "png", new File("mandelbrot.png"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
```


この例では、Javaの反復技法を使ってマンデルブロ・フラクタルを生成しています。コードは、画像の幅や高さ、ズームレベル、最大反復回数など、画像を生成するのに必要な変数を定義することから始まります。次に、フラクタル画像を保存するために BufferedImage のインスタンスが生成される。

コードは2つの入れ子になったforループを使って画像の各ピクセルをループし、マンデルブロ集合の反復式に基づいてその値を計算します。ループ内では、位置とズームの変数を使った反復計算が各ピクセルに対して実行され、HSB画像カラーリング技法が、集合を抜ける前に実行された反復回数に基づいて各ピクセルに色を割り当てるために使われます。

最後に、画像はPNG形式で "mandelbrot.png "というファイルに保存される。このコードは、反復技法を使ったJavaによるフラクタル生成の簡単な例であり、式とパラメータを変更することにより、他のタイプのフラクタル生成にも適応できる。