44 lines
1.3 KiB
Java
44 lines
1.3 KiB
Java
import java.awt.Graphics;
|
|
import java.awt.image.BufferedImage;
|
|
import javax.swing.JFrame;
|
|
|
|
public class Mandelbrot extends JFrame {
|
|
|
|
private final int MAX_ITER = 570;
|
|
private final double ZOOM = 150;
|
|
private BufferedImage I;
|
|
private double zx, zy, cX, cY, tmp;
|
|
|
|
public Mandelbrot() {
|
|
super("Mandelbrot Set");
|
|
setBounds(100, 100, 800, 600);
|
|
setResizable(false);
|
|
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
|
I = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
|
|
for (int y = 0; y < getHeight(); y++) {
|
|
for (int x = 0; x < getWidth(); x++) {
|
|
zx = zy = 0;
|
|
cX = (x - 400) / ZOOM;
|
|
cY = (y - 300) / ZOOM;
|
|
int iter = MAX_ITER;
|
|
while (zx * zx + zy * zy < 4 && iter > 0) {
|
|
tmp = zx * zx - zy * zy + cX;
|
|
zy = 2.0 * zx * zy + cY;
|
|
zx = tmp;
|
|
iter--;
|
|
}
|
|
I.setRGB(x, y, iter | (iter << 8));
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void paint(Graphics g) {
|
|
g.drawImage(I, 0, 0, this);
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
new Mandelbrot().setVisible(true);
|
|
}
|
|
}
|