もちろん、フラクタル画像を生成する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によるフラクタル生成の簡単な例であり、式とパラメータを変更することにより、他のタイプのフラクタル生成にも適応できる。
Por supuesto, aquí te muestro dos ejemplos de código en Java que generan imágenes fractales:

Ejemplo 1: Conjunto de Mandelbrot

El conjunto de Mandelbrot es uno de los fractales más conocidos y se puede generar mediante una iteración de una función compleja en el plano complejo. El siguiente código muestra cómo generar una imagen de Mandelbrot utilizando Java y la biblioteca gráfica 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);
    }
}


Este código genera una imagen de Mandelbrot con un tamaño de 800x600 píxeles utilizando una paleta de grises. La imagen se muestra en una ventana usando una instancia de la clase Frame de AWT y una instancia de la clase Canvas para dibujar la imagen.



Ejemplo 2: Árbol fractal

Los árboles fractales son otra forma popular de fractales y se generan mediante una recursión que dibuja ramas que se dividen en ramas más pequeñas. El siguiente código muestra cómo generar un árbol fractal utilizando Java y la biblioteca gráfica 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();
        }
    }
}


Este ejemplo genera el fractal de Mandelbrot empleando la técnica de la iteración en Java. El código comienza definiendo las variables necesarias para la generación de la imagen, como el ancho y el alto de la imagen, el nivel de zoom y el número máximo de iteraciones permitidas. A continuación, se crea una instancia de BufferedImage para almacenar la imagen fractal.

El código utiliza dos bucles for anidados para recorrer cada píxel en la imagen y calcular su valor en función de la fórmula iterativa del conjunto de Mandelbrot. Dentro del bucle, se realiza un cálculo iterativo para cada píxel usando las variables de posición y zoom, y se usa la técnica de coloración de la imagen HSB para asignar un color a cada píxel en función del número de iteraciones realizadas antes de salir del conjunto.

Finalmente, la imagen se guarda en formato PNG en un archivo con el nombre "mandelbrot.png". Este código es un ejemplo simple de generación de fractales en Java empleando la técnica de iteración, y se puede adaptar para generar otros tipos de fractales cambiando las fórmulas y parámetros.