import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; public class elvoro extends java.applet.Applet{ Color col1,col2; int N,taka2,haba2; double taka,haba,dz; int k,i,j,l; double di2,di,cp2,cpx,ys,t,r,th,pi,z1x,z2x,z1y,z2y,mind,dd,maxd; double x,ya,yb,yc,yd,y,xa,xb,xc,xd,sa0,sa1,y21,y20,maxx,maxy,minx,miny; double x0,y0,xx,yy,xa1=0,ya1=0,yy2,rr; double di4,di3,cp3,cpx3,ys3,t2,ds,us; int br,br2,u,k2,byouga; 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 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.green; cl[2]=new Color(199,111,238); takaS=getParameter("takap"); habaS=getParameter("habap"); NS=getParameter("Np"); habad=dou(habaS); takad=dou(takaS); Nd=dou(NS); if(Nd==8){ Nd=4+16*rand(); } haba=(int)habad; taka=(int)takad; N=(int)Nd; } double x1[]=new double[100]; double y1[]=new double[100]; double x2[]=new double[100]; double y2[]=new double[100]; public double jou(double a,double b){ double jou1; jou1=Math.pow(a,b); return jou1; } 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.141592653589793; N=3+(int)(27*rand()); taka=350; haba=500; haba2=500; taka2=350; rr=4.0; g.setColor(col1); g.fillRect(1,1,haba2,taka2); g.setColor(col2); r=20.0;//1.0+rand()*2.5; th=rand()*pi; for(k=0;k0 && ys0.0){ x0=-ys/di;y0=0.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.0; 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(ushaba2 && z2x>haba2){ byouga=1; } if(z1x<0.0 && z2x<0.0){ byouga=1; } if(z1y>taka2 && z2y>taka2){ byouga=1; } if(z1y<0.0 && z2y<0.0){ byouga=1; } if(byouga==0){ di=(z2y-z1y)/(z2x-z1x); ys=z1y-z1x*di; if(di*di<1.0){ minx=z1x; miny=z1y; maxx=z2x; maxy=z2y; if(z1x>z2x){ minx=z2x; miny=z2y; maxx=z1x; maxy=z1y; } if(minx<0.0){ minx=0.0; miny=ys; } if(maxx>haba2){ maxx=haba2; maxy=haba2*di+ys; } } else{ miny=z1y; minx=z1x; maxy=z2y; maxx=z2x; if(z1y>z2y){ miny=z2y; minx=z2x; maxy=z1y; maxx=z1x; } if(miny<0.0){ miny=0.0; minx=-ys/di; } if(maxy>taka2){ maxy=taka2; maxx=(taka2-ys)/di; } } g.drawLine((int)(minx),(int)(miny),(int)(maxx),(int)(maxy)); } }//if br2<3 }//next k }//next j }//next i g.setColor(cl[0]); g.drawRect(48,148,4,4); g.drawLine(50,150,70,150); g.setColor(cl[1]); for(x=-30.0;x<30.0;x=x+0.25){ ya=Math.sqrt(900-x*x); yb=-Math.sqrt(900-x*x); xa=(r*jou(Math.cos(th),2.0)+jou(Math.sin(th),2.0))*x+(r-1.0)*Math.cos(th)*Math.sin(th)*ya; yc=(r-1.0)*Math.cos(th)*Math.sin(th)*x+(r*jou(Math.sin(th),2)+jou(Math.cos(th),2.0))*ya; xb=(r*jou(Math.cos(th),2.0)+jou(Math.sin(th),2.0))*x+(r-1.0)*Math.cos(th)*Math.sin(th)*yb; yd=(r-1.0)*Math.cos(th)*Math.sin(th)*x+(r*jou(Math.sin(th),2)+jou(Math.cos(th),2.0))*yb; g.drawLine(50+(int)(xa-.5),150+(int)yc,50+(int)(xa+.5),150+(int)yc); g.drawLine(50+(int)(xb-.5),150+(int)yd,50+(int)(xb+.5),150+(int)yd); }//x minx=0.0; miny=0.0; maxx=0.0; maxy=0.0; maxd=0.0; mind=9999.9; for(y=-30.0;y<30.0;y=y+0.25){ xa=Math.sqrt(900-y*y); xb=-Math.sqrt(900-y*y); xc=(r*jou(Math.cos(th),2.0)+jou(Math.sin(th),2.0))*xa+(r-1.0)*Math.cos(th)*Math.sin(th)*y; ya=(r-1.0)*Math.cos(th)*Math.sin(th)*xa+(r*jou(Math.sin(th),2)+jou(Math.cos(th),2.0))*y; xd=(r*jou(Math.cos(th),2.0)+jou(Math.sin(th),2.0))*xb+(r-1.0)*Math.cos(th)*Math.sin(th)*y; yb=(r-1.0)*Math.cos(th)*Math.sin(th)*xb+(r*jou(Math.sin(th),2)+jou(Math.cos(th),2.0))*y; g.drawLine(50+(int)xc,150+(int)(ya-.5),50+(int)xc,150+(int)(ya+.5)); g.drawLine(50+(int)xd,150+(int)(yb-.5),50+(int)xd,150+(int)(yb+.5)); dd=jou(jou(xc,2.0)+jou(ya,2.0),0.5); if(dd<=mind){ mind=dd; minx=xc; miny=ya; } if(dd>=maxd){ maxd=dd; maxx=xc; maxy=ya; } dd=jou(jou(xd,2)+jou(yb,2),0.5); if(dd<=mind){ mind=dd; minx=xd; miny=yb; } if(dd>=maxd){ maxd=dd; maxx=xd; maxy=yb; } }//x g.setColor(new Color(255,155,0)); if(th>pi){ g.drawLine(50,150,50-(int)maxx,150-(int)maxy); } else{ g.drawLine(50,150,50+(int)maxx,150+(int)maxy); } g.setColor(new Color(0,155,255)); if(th>pi/2.0 && th