import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Color;
public class dog50 extends java.applet.Applet{
  Color col1,col2;
  int N,taka,haba,ni,nj;
  int k,i,j,l,co,minj,minj2,minj3;
  int xz,xz2,yz,yz2,label;
  String NS,habaS,takaS;
  double Nd,takad,habad,th;
  Color cl[]=new Color[13];


  public double dou(String dous){
    double dou1;
    dou1 = (Double.valueOf(dous)).doubleValue();
    return dou1;
  }
  public double rand(){
    double rand1;
    rand1=Math.random();
    return rand1;
  }
  public void init(){
    col1=Color.black;
    col2=Color.yellow;
    cl[0]=Color.white;
    cl[1]=Color.cyan;
    cl[2]=Color.green;
    takaS=getParameter("takap");
    habaS=getParameter("habap");
    NS=getParameter("Np");
    habad=dou(habaS);
    takad=dou(takaS);
    Nd=4-50*Math.log(rand());
    haba=(int)habad;
    taka=(int)takad;
    N=(int)Nd;
  }
  double x1;
  double y1;
  int x;
  int y;
  double s;
  String sss;
  public double jou(double a,double b){
    double jou1;
    jou1=Math.pow(a,b);
    return jou1;
  }
  public double arcsinaw(double atasw){
    double artn1saw;
    artn1saw=Math.asin(atasw);
    return artn1saw;
  }
  public double d(double d1,double d2,double d3,double d4){
    double dw;
    dw=jou(jou(d3-d1,2.0)+jou(d4-d2,2.0),0.5);
    return dw;
  }

    public void paint(java.awt.Graphics g){
        g.setColor(col1);
        g.fillRect(1,1,haba,taka);

        double ai[]=new double[101];
        int ain;
        double centerx;
        double centery;
        centerx=200.0;
        centery=175.0;
        double theta;
        double rr;
        double pi;
        double r;
        double x;
        double y;
        long colr;
        long colg;
        long colb;
        pi=3.141592653589793;
        r=-3.0+6.0*rand();
        for(ain=0;ain<51;ain++){
            ai[ain]=-2.0+4.0*rand();
        }//ain
        long li;
        double maxabs;
        maxabs=0.0;
        colr=122;
        colg=122;
        colb=122;
        g.setColor(new Color((int)colr,(int)colg,(int)colb));
        g.drawString("Please wait",15,15);
        for(i=0;i<50;i++){
            for(li=0;li<1000;li=li+1){
                theta=2.0*pi*(li+i*1000)/50000;
                x=ai[0];
                y=0.0;
                for(ain=1;ain<51;ain++){
                    x=x+ai[ain]*Math.pow(r,ain)*Math.cos(ain*theta);
                    y=y+ai[ain]*Math.pow(r,ain)*Math.sin(ain*theta);
                }
                if(Math.abs(x)>maxabs){
                    maxabs=Math.abs(x);
                }
                if(Math.abs(y)>maxabs){
                    maxabs=Math.abs(y);
                }
            }//theta
            g.setColor(col1);
            g.fillRect(1,1,150,15);
            g.setColor(Color.pink);
            g.drawString("Please wait "+i+"/100",15,15);
        }
        rr=165.0/maxabs;
        g.drawLine(1,(int)centery,550,(int)centery);
        g.drawLine((int)centerx,1,(int)centerx,400);
        for(i=0;i<50;i++){
            for(li=0;li<1000;li=li+1){
                theta=2.0*pi*(li+i*1000)/50000;
                x=ai[0];
                y=0.0;
                for(ain=1;ain<51;ain++){
                    x=x+ai[ain]*Math.pow(r,ain)*Math.cos(ain*theta);
                    y=y+ai[ain]*Math.pow(r,ain)*Math.sin(ain*theta);
                }
                if(i%6==0){
                    colr=255;//li/l256p2;
                    colg=(int)(li*256/10000);
                    colb=(int)(li*256/10000);
                }
                if(i%6==1){
                    colr=(int)(li*256/10000);
                    colg=255;
                    colb=(int)(li*256/10000);
                }
                if(i%6==2){
                    colr=(int)(li*256/10000);
                    colg=(int)(li*256/10000);
                    colb=255;
                }
                if(i%6==3){
                    colr=255;
                    colg=(int)(li*256/10000);
                    colb=255;
                }
                if(i%6==4){
                    colr=255;
                    colg=255;
                    colb=(int)(li*256/10000);
                }
                if(i%6==5){
                    colr=(int)(li*256/10000);
                    colg=255;
                    colb=255;
                }
                g.setColor(new Color((int)colr,(int)colg,(int)colb));
                g.drawOval((int)(centerx+rr*x-0.5),(int)(centery-rr*y-0.5),1,1);
            }//theta
            g.setColor(col1);
            g.fillRect(1,1,150,15);
            g.setColor(Color.yellow);
            g.drawString("Please wait "+(50+i)+"/100",15,15);
        }
        g.setColor(col1);
        g.fillRect(1,1,150,15);
        g.setColor(Color.blue);
        g.drawOval((int)(centerx-rr*r),(int)(centery-rr*r),(int)(2*rr*r),(int)(2*rr*r));
        g.drawString("r",(int)(centerx+rr*r+1),(int)(centery+11));
        g.drawString("0",(int)(centerx-10),(int)(centery+11));
        g.setColor(Color.green);
        g.drawString("R",480,(int)(centery+11));
        g.drawString("I",(int)(centerx-10),30);
        g.drawString("f(x)=sum_{i=0,...,50}a_i*x^i",15,15);
        g.drawString("r="+r,15,30);

    }
}