import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Color;
import java.awt.*;
public class rngcli extends java.applet.Applet{
  Point[] p = new Point[100];
  Color col1,col2,col3;
  double piaw=3.14159265358979;
  int Naw,n;
  int takaaw,habaaw,orikaeshi;
  int kaw,iaw,jaw,i,br2,law,haw;
  String NS,habaS,takaS;
  double Nd,takad,habad,xx,yy,dd,mind;
  public double dou(String dous){
    double dou1;
    dou1 = (Double.valueOf(dous)).doubleValue();
    return dou1;
  }
  public double randaw(){
    double rand1aw;
    rand1aw=Math.random();
    return rand1aw;
  }
  public void init(){
    col1=Color.black;
    col2=Color.yellow;
    col3=Color.white;
    takaS=getParameter("takap");
    habaS=getParameter("habap");
    NS=getParameter("Np");
    habad=dou(habaS);
    takad=dou(takaS);
    Nd=dou(NS);
    if(Nd==20){
      Nd=4+46*randaw();
    }
    habaaw=(int)habad;
    takaaw=(int)takad;
    Naw=(int)Nd;
  }
  double x1aw[]=new double[100];
  double y1aw[]=new double[100];
  double w1aw[]=new double[100];
  double x2aw[]=new double[100];
  double y2aw[]=new double[100];
  double w2aw[]=new double[100];
  int xaw[]=new int[100];
  int yaw[]=new int[100];
  int waw[]=new int[100];
  double saw[]=new double[100];
  String sssaw[]=new String[100];
  public double jouaw(double aaw,double baw){
    double jou1aw;
    jou1aw=Math.pow(aaw,baw);
    return jou1aw;
  }
  public double arcsinaw(double atasw){
    double artn1saw;
    artn1saw=Math.asin(atasw);
    return artn1saw;
  }
  public double artnaw(double ataw){
    double artn1aw;
    artn1aw=Math.atan(ataw);
    return artn1aw;
  }
  public double d(double d1,double d2,double d3,double d4){
    double dw;
    dw=jouaw(jouaw(d3-d1,2.0)+jouaw(d4-d2,2.0),0.5);
    return dw;
  }
  void heapaw(double he1aw[],double he2aw[],double he3aw[],int NNaw){
    int kkaw,kksaw,iiaw,jjaw,mmaw;
    double b1aw,b2aw,b3aw,c1aw,c2aw,c3aw;
    kksaw=(int)(NNaw/2);
    for(kkaw=kksaw;kkaw>=1;kkaw--){
      iiaw=kkaw;
      b1aw=he1aw[iiaw-1];b2aw=he2aw[iiaw-1];b3aw=he3aw[iiaw-1];
      while(2*iiaw<=NNaw){
        jjaw=2*iiaw;
        if(jjaw+1<=NNaw){
          if(he1aw[jjaw-1]<he1aw[jjaw]){
            jjaw++;
          }
        }
        if(he1aw[jjaw-1]<=b1aw){
          break;
        }
        he1aw[iiaw-1]=he1aw[jjaw-1];he2aw[iiaw-1]=he2aw[jjaw-1];he3aw[iiaw-1]=he3aw[jjaw-1];
        iiaw=jjaw;
      }//wend
      he1aw[iiaw-1]=b1aw;he2aw[iiaw-1]=b2aw;he3aw[iiaw-1]=b3aw;
    }//next kk
    for(mmaw=NNaw-1;mmaw>=1;mmaw--){
      c1aw=he1aw[mmaw];c2aw=he2aw[mmaw];c3aw=he3aw[mmaw];
      he1aw[mmaw]=he1aw[0];he2aw[mmaw]=he2aw[0];he3aw[mmaw]=he3aw[0];
      iiaw=1;
      while(2*iiaw<=mmaw){
        kkaw=2*iiaw;
        if(kkaw+1<=mmaw){
          if(he1aw[kkaw-1]<=he1aw[kkaw]){
            kkaw++;
          }
        }
        if(he1aw[kkaw-1]<=c1aw){
          break;
        }
        he1aw[iiaw-1]=he1aw[kkaw-1];he2aw[iiaw-1]=he2aw[kkaw-1];he3aw[iiaw-1]=he3aw[kkaw-1];
        iiaw=kkaw;
      }//wend
      he1aw[iiaw-1]=c1aw;he2aw[iiaw-1]=c2aw;he3aw[iiaw-1]=c3aw;
    }//next mm
  }
  public void paint(java.awt.Graphics g){
    g.setColor(col1);
    g.fillRect(1,1,habaaw,takaaw);
    xx=0.0;
    yy=0.0;
    g.setColor(col2);
    Point old,current;
    Naw=n;
    for(kaw=1;kaw<=Naw;kaw++){
      x1aw[kaw-1]=p[kaw-1].x+Math.cos(kaw*1.1)+kaw*0.0001;
      y1aw[kaw-1]=p[kaw-1].y+Math.sin(kaw*1.1)+kaw*0.001;
      xaw[kaw-1]=(int)(x1aw[kaw-1]+0.5);
      yaw[kaw-1]=(int)(y1aw[kaw-1]+0.5);
      sssaw[kaw-1]=""+waw[kaw-1];
      g.fillOval(xaw[kaw-1]-2,yaw[kaw-1]-2,4,4);
    }
    g.setColor(col3);
    for(kaw=0;kaw<Naw-1;kaw++){
        for(law=kaw+1;law<Naw;law++){
            mind=d(x1aw[kaw],y1aw[kaw],x1aw[law],y1aw[law]);
            br2=0;
            for(haw=0;haw<Naw;haw++){
                if(haw!=kaw && haw!=law){
                    dd=d(x1aw[kaw],y1aw[kaw],x1aw[haw],y1aw[haw]);
                    if(d(x1aw[law],y1aw[law],x1aw[haw],y1aw[haw])>dd){
                        dd=d(x1aw[law],y1aw[law],x1aw[haw],y1aw[haw]);
                    }
                    if(dd<mind){
                        br2=1;
                        break;
                    }
                }
            }//h
            if(br2==0){
                g.drawLine(xaw[kaw],yaw[kaw],xaw[law],yaw[law]);
            }
        }//l
    }//k
    g.setColor(col2);
    g.drawString("N="+Naw,15,15);
  }
  public boolean mouseDown(Event evt, int x, int y) {
    if(n<50){
      p[n] = new Point(x,y); n++;
    }
    else{
      n=0;
    }
    repaint();
    return true;
  }
}
