import java.awt.Graphics;
import java.awt.Color;
import java.lang.Integer;

public class PlotMand extends java.applet.Applet {
static final int koko=1;
static final float leveys=300f;

public void paint(Graphics g) {

Color farben[];
float x,x2,y,y2,z;
float a,b,amin,amax,bmin,bmax;
int rval,bval,k,l=0;
Integer iapu=new Integer(0);

// annetaan fraktaalin parametriarvot
amin=Float.valueOf(getParameter("amin")).floatValue();
amax=Float.valueOf(getParameter("amax")).floatValue();
bmin=Float.valueOf(getParameter("bmin")).floatValue();
bmax=Float.valueOf(getParameter("bmax")).floatValue();

// Alustetaan vŠritaulukkoon vŠrit 0..63
farben = new Color[64];
// Lasketaan taulukon vŠriarvot
// x-suunnassa kasvaa punainen, y-suunnassa vŠhenee sininen
for (k=0;k<64;k+=1){
		rval=(int)(128 + k*2);
		bval=(int)(255 - k*2);
  farben[k] = new Color(rval,0,bval);
}
// valkoista vaan
for (k=2;k<8;k+=1){
  farben[k] = new Color(255,255,255);
}

// musta aukko keskellŠ
  farben[63] = new Color(0,0,0);

	for (int j=1;j<(this.size().height -1-koko);j+=koko)
 	for (int i=1;i<(this.size().width -1-koko);i+=koko){
// lasketaan pisteen (x,y) paikka
 iapu=new Integer(i);
 a=iapu.floatValue()*(amax-amin)/leveys + amin;
 iapu= new Integer(j);
 b=iapu.floatValue()*(bmax-bmin)/leveys + bmin;
 x=0.0f; y=0.0f; k=0;

 do {
   x2=x*x - y*y + a;
   y2=2*x*y + b;
   y=y2; x=x2;
   z=(x*x + y*y);
   k+=1;
 } while ((z<4.0f)&&(k<72));

// vŠrin mŠŠritys iterointien mŠŠrŠn perusteella
  if (k>6) {l=k-7;}
  if (k>70) {l=63;}

// JŠtetŠŠn maalaamatta iterointi < 7
 if (k>6) {g.setColor(farben[l]);}

// PiirretŠŠn 1 pix pituisia vaakajanoja :
// pisteenpiirtometodia ei kai ole Javassa
// JŠtetŠŠn piirtŠmŠttŠ iterointi < 7
 if (k>6) {g.drawLine(i,j,i,j);}
	}
}
}

