private final int MAX_ITER = 570; private final double ZOOM = 150; private BufferedImage I; private double zx, zy, cx, cy, temp; public Mandelbrot() { 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) { temp = zx * zx - zy * zy + cx; zy = 2.0 * zx * zy + cy; zx = temp; iter--; } I.setRGB(x, y, iter | (iter << 8)); } } } public void paint(GreenfootImage gfim) { gfim.drawImage(I, 0, 0, this); setImage(gfim); } }