import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; public class lc extends java.applet.Applet{ Color col1,col2,col3,col4,col5,col6,col7; int N,co,co2,h; int taka,haba,taka2,haba2,orikaeshi; int k,i,j,l,kaw; double di2,di,cp2,cpx,ys,t,th,xmax,lto,pi,dw; double x0,y0,xx,yy,xa1=0,ya1=0,yy2; double di4,di3,cp3,cpx3,ys3,t2,ds,us,dd,maxd,maxx,maxy; double y20,y21,sa0,sa1,maxd2,maxx2,maxy2; int br,br2,u,k2; int xz,xz2,yz,yz2; String NS,habaS,takaS; double Nd,takad,habad; Color cl[]=new Color[13]; double kx[]=new double[100]; double ky[]=new double[100]; double kz[]=new double[100]; 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 artnaw(double ataw){ double artn1aw; artn1aw=Math.atan(ataw); return artn1aw; } public double sainaw(double saiaw){ double sain1aw; sain1aw=Math.sin(saiaw); return sain1aw; } public double kosaw(double kosainaw){ double kos1aw; kos1aw=Math.cos(kosainaw); return kos1aw; } 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 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 init(){ col1=Color.black; col2=Color.yellow; col3=Color.pink; col4=Color.blue; col5=Color.white; col6=Color.red; col7=Color.green; takaS=getParameter("takap"); habaS=getParameter("habap"); NS=getParameter("Np"); habad=dou(habaS); takad=dou(takaS); Nd=dou(NS); // if(Nd==20){ Nd=4+26*rand(); // } haba=(int)habad; taka=(int)takad; N=(int)Nd; } double x1[]=new double[100]; double y1[]=new double[100]; double w1[]=new double[100]; double x2[]=new double[100]; double y2[]=new double[100]; double w2[]=new double[100]; double aa[]=new double[100]; double bb[]=new double[100]; double aa2[]=new double[100]; double bb2[]=new double[100]; int x[]=new int[100]; int y[]=new int[100]; double s[]=new double[100]; String sss[]=new String[100]; void heapv(double te1[],double te2[],double te3[],int NN){ int kk,kks,ii,jj,mm; double b1,b2,b3,c1,c2,c3; kks=(int)(NN/2); for(kk=kks;kk>=1;kk--){ ii=kk; b1=te1[ii-1];b2=te2[ii-1];b3=te3[ii-1]; while(2*ii<=NN){ jj=2*ii; if(jj+1<=NN){ if(te1[jj-1]=1;mm--){ c1=te1[mm];c2=te2[mm];c3=te3[mm]; te1[mm]=te1[0];te2[mm]=te2[0];te3[mm]=te3[0]; ii=1; while(2*ii<=mm){ kk=2*ii; if(kk+1<=mm){ if(te1[kk-1]<=te1[kk]){ kk++; } } if(te1[kk-1]<=c1){ break; } te1[ii-1]=te1[kk-1];te2[ii-1]=te2[kk-1];te3[ii-1]=te3[kk-1]; ii=kk; }//wend te1[ii-1]=c1;te2[ii-1]=c2;te3[ii-1]=c3; }//next mm } public void paint(java.awt.Graphics g){ pi=3.1415926535897932384626; taka=350; haba=500; taka2=taka; haba2=haba; taka=taka2*40; haba=haba2*40; xx=0.0; yy=0.0; g.setColor(col1); g.fillRect(1,1,haba,taka); g.setColor(col2); for(k=0;kxx){ w1[i]=3*pi/2-arcsinaw((y1[i]-yy)/d(x1[i],y1[i],xx,yy)); } w1[i]=w1[i]+pi; if(w1[i]>2*pi){ w1[i]=w1[i]-2*pi; } if(orikaeshi==1){ w1[i]=arcsinaw((y1[i]-yy)/d(x1[i],y1[i],xx,yy))+pi/2; if(x1[i]>xx){ w1[i]=3*pi/2-arcsinaw((y1[i]-yy)/d(x1[i],y1[i],xx,yy)); } w1[i]=w1[i];//+pi/2; if(w1[i]>2*pi){ w1[i]=w1[i]-2*pi; } } }//next i x1[0]=xx; y1[0]=yy; w1[0]=100.0; heapv(w1,x1,y1,N); g.drawLine((int)xx,(int)yy,(int)x1[0],(int)y1[0]); lto=x1[0]; if(orikaeshi==0){ aa[co]=(y1[0]-yy)/(x1[0]-xx); bb[co]=y1[0]-aa[co]*x1[0]; co++; } else{ aa2[co2]=(y1[0]-yy)/(x1[0]-xx); bb2[co2]=y1[0]-aa2[co2]*x1[0]; co2++; } if(x1[0]==xmax){ orikaeshi=1; } //th=th+w1[0]; }//wend for(k=0;k0 && ys0){ x0=-ys/di;y0=0; } else{ x0=(taka-ys)/di; y0=taka; } } yy=di*haba+ys; if(yy>0 && yy0){ xa1=(taka-ys)/di;ya1=taka; } else{ xa1=-ys/di; ya1=0; } } l=1; kx[l-1]=x0;ky[l-1]=y0; for(k=1;k<=N;k++){ if(k!=i && k!=j){ di4=(y1[i-1]-y1[k-1])/(x1[i-1]-x1[k-1]); di3=-1/di4; cp3=(y1[i-1]+y1[k-1])/2; cpx3=(x1[i-1]+x1[k-1])/2; ys3=cp3-cpx3*di3; t2=jou(x1[i-1]-x1[k-1],2)+jou(y1[i-1]-y1[k-1],2); y20=di3*x0+ys3; y21=di3*xa1+ys3; sa0=y0-y20; sa1=ya1-y21; if(sa0*sa1<0){ l++; kx[l-1]=(ys3-ys)/(di-di3); ky[l-1]=di*kx[l-1]+ys; }//if sa0*sa1<0 }//if(k!=i && k!=j) }//next k l++; kx[l-1]=xa1; ky[l-1]=ya1; for(u=1;u<=l;u++){ kz[u-1]=0; } heapv(kx,ky,kz,l); for(k=1;k<=l-1;k++){ k2=k+1; xx=(kx[k-1]+kx[k2-1])/2; yy2=di*xx+ys; ds=jou(xx-x1[i-1],2)+jou(yy2-y1[i-1],2); br2=0; for(u=1;u<=N;u++){ if(u!=i && u!=j){ us=jou(xx-x1[u-1],2)+jou(yy2-y1[u-1],2); if(usaa[h]*(kx[k-1]-haba2*20)+bb[h]+taka2*20){ br2=1; } } for(h=0;h.5 && jou(kx[k-1]-haba,2)>.5 && jou(ky[k-1],2)>.5 && jou(ky[k-1]-taka,2)>.5){ if(dd>maxd){ maxd=dd; maxx=kx[k-1]; maxy=ky[k-1]; } } if(jou(kx[k-1],2)>.5 && jou(kx[k-1]-haba,2)>.5 && jou(ky[k-1],2)>.5 && jou(ky[k-1]-taka,2)>.5){ g.drawOval((int)(kx[k-1]-jou(dd,0.5)-haba2*20),(int)(ky[k-1]-jou(dd,0.5)-taka2*20),(int)(2*jou(dd,0.5)),(int)(2*jou(dd,0.5))); if(dd>maxd2){ maxd2=dd; maxx2=kx[k-1]; maxy2=ky[k-1]; } } br2=0; for(h=0;haa[h]*(kx[k2-1]-haba2*20)+bb[h]+taka2*20){ br2=1; } } for(h=0;h.5 && jou(kx[k2-1]-haba,2)>.5 && jou(ky[k2-1],2)>.5 && jou(ky[k2-1]-taka,2)>.5){ // dd=jou(kx[k2-1]-x1[i-1],2)+jou(ky[k2-1]-y1[i-1],2); if(dd>maxd){ maxd=dd; maxx=kx[k2-1]; maxy=ky[k2-1]; } } if(jou(kx[k2-1],2)>.5 && jou(kx[k2-1]-haba,2)>.5 && jou(ky[k2-1],2)>.5 && jou(ky[k2-1]-taka,2)>.5){ // dd=jou(kx[k2-1]-x1[i-1],2)+jou(ky[k2-1]-y1[i-1],2); g.drawOval((int)(kx[k2-1]-jou(dd,0.5)-haba2*20),(int)(ky[k2-1]-jou(dd,0.5)-taka2*20),(int)(2*jou(dd,0.5)),(int)(2*jou(dd,0.5))); if(dd>maxd2){ maxd2=dd; maxx2=kx[k2-1]; maxy2=ky[k2-1]; } } }//if br2<3 }//next k }//next j }//next i g.setColor(col7); g.drawOval((int)(maxx2-jou(maxd2,0.5)-haba2*20),(int)(maxy2-jou(maxd2,0.5)-taka2*20),(int)(2*jou(maxd2,0.5)),(int)(2*jou(maxd2,0.5))); g.drawRect((int)(maxx2-haba2*20-5),(int)(maxy2-taka2*20-5),10,10); if(maxx>0){ g.setColor(col5); g.drawOval((int)(maxx-jou(maxd,0.5)-haba2*20),(int)(maxy-jou(maxd,0.5)-taka2*20),(int)(2*jou(maxd,0.5)),(int)(2*jou(maxd,0.5))); g.drawRect((int)(maxx-haba2*20-5),(int)(maxy-taka2*20-5),10,10); } g.setColor(cl[1]); g.drawString("N="+N,15,15); } }