Mandelblot集合のサンプルです

 複素平面の実部(x軸) : -2〜0.5
複素平面の虚部(y軸) : -1.2〜1.2
複素定数の実部 : -1.2
複素定数の虚部 : -0.1



//このソースコードはJavaアプリケーション用です.Applet用ではありません.
/**
 * @author hemmi
 */
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
public class Mandelbrot_2 extends Frame{
 
	public static void main(String[] args) {
		int imgWidth,imgHeight;
		imgWidth = 512;
		imgHeight = 512;
		AppFrame f = new AppFrame();
		f.setTitle("Mandelbrot2");
		f.setSize(imgWidth,imgHeight);
		f.addWindowListener ( new WindowAdapter(){
		public void windowClosing(WindowEvent e){
				System.exit(0); }
		});
		f.show();
	} //end of main()
} //end of public class Mandelbrot_2
	
 
 
class AppFrame extends Frame{
	public void paint(Graphics g){
 
		int x,xx,y,yy,k;
		int imgWidth,imgHeight;
		int N,BN;
		double RB,RE,IB,IE;
		double ar,ai,dr,di,zr,zi,z2r,z2i;
		long t;
		Color[] C={Color.red, Color.orange, Color.pink , Color.magenta , Color.blue , Color.cyan , Color.green , Color.yellow, Color.lightGray, Color.gray };
 
		imgWidth = 512;
		imgHeight = 512;
		N=30;   //複素平面内の,1点での計算を繰り返す回数
		BN=450; //複素平面の分割数
		RB=-2;  //複素平面の実部(x軸)の始点
		RE=0.5;   //複素平面の実部(x軸)の終点
		IB=-1.2;  //複素平面の虚部(y軸)の始点
		IE=1.2;   //複素平面の虚部(y軸)の終点
 
		ar=-1.2;  //複素定数の実部
		ai=-0.1;  //複素定数の虚部
 
		dr = (RE-RB) / BN;    //実部の増分
		di = (IE-IB) / BN;    //虚部の増分
		g.setColor(Color.BLACK);
		g.fillRect(0,0,imgWidth,imgHeight);
    
		for (xx=0 ; xx<=BN ; ++xx){         //実軸(x軸)のループ
		   for (yy=0 ; yy<=BN; ++yy){       //虚軸(y軸)のループ
			  ar = RB + xx*dr;              //複素定数の値を,計算する複素平面上のX座標(実部の値)とする
			  ai = IE - yy*di;              //複素定数の値を,計算する複素平面上のy座標(虚部の値)とする
			  zr = 0.0;              //複素平面上の実部の値を0から計算し始める
			  zi = 0.0;              //複素平面上の虚部の値を0から計算し始める
		  
			  for (k=0 ; k<=N ; ++k){
				 z2r = zr*zr - zi*zi + ar;  //zの2乗の実部
				 z2i = 2.0*zr*zi + ai;      //zの2乗の虚部
          
				 if ((z2r*z2r + z2i*z2i) > 4.0) {
					g.setColor(C[k % 10]);
					g.drawLine(xx+30,yy+50,xx+30,yy+50);
					break;
				 } //end of if
				 zr=z2r;
				 zi=z2i;
			  } //end of k
     
		   } //end of yy
		} //end of xx
 
	} //end of paint
 
} //end of class AppFrame