import javax.swing.JApplet; import javax.swing.JRootPane; import java.awt.*; import java.awt.geom.*; public class MandelbrotApplet extends JApplet { private final double XMAX = 1.0; private final double XMIN = -2.0; private final double YMAX = 1.0; private final double YMIN = -1.0; //private final double INCREMENT = .008; //private final double REAL_INCREMENT = INCREMENT; //private final double IMAG_INCREMENT = INCREMENT; private final int ITERATIONS = 255; public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; /* double xscale = (getWidth() - 1.0) / (XMAX - XMIN); double yscale = (getHeight() - 1.0) / (YMIN - YMAX); g2.scale(xscale, yscale); g2.translate(-XMIN, -YMAX); g2.setStroke(new BasicStroke(0)); */ Dimension d = getSize(); for(int pR = 0; pR < d.width; pR++) { for(int pI = 0; pI < d.height; pI++) { Complex z = new Complex(0.0, 0.0); double r = XMIN + (pR * ((XMAX + Math.abs(XMIN)) / d.width)); double i = YMIN + (pI * ((YMAX + Math.abs(YMIN)) / d.height)); Complex c = new Complex(r, i); boolean inSet = true; int redColor = 0; for(int iter = 0; iter < ITERATIONS; iter++) { if(((z.getReal() * z.getReal()) + (z.getImg() + z.getImg())) > 4) { inSet = false; redColor = iter; } z = Complex.add(Complex.multiply(z, z), c); } if(inSet) { g2.setColor(Color.black); } else { g2.setColor(new Color(redColor, 0, 0)); } g2.draw(new Line2D.Double(pR, pI, pR, pI)); } } } }