import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; public class hichbspl extends java.applet.Applet{ Color col1,col2,col3; double piaw=3.14159265358979; int Naw,j,k,cou,br,Naw2,n4; int takaaw,habaaw,orikaeshi; int kaw,iaw,jaw,i,q,phi; String NS,habaS,takaS; double Nd,takad,habad,xx,yy,lto,th,ti,xmax,x,y,px,py,bnit,t; 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.green; 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; } public double nqt(int qq,double tt){ double re,re1,re2,re3; if(qq==1){ re=0.0; if(tt>-1.0 && tt<=0.0){ re=tt+1.0; } if(tt>0.0 && tt<1.0){ re=-tt+1.0; } }//qq==1 else{ re=0.0; if(tt>-(qq+1.0)/2.0 && tt<(qq+1.0)/2.0){ re1=1.0/qq; re2=(tt+(qq+1.0)/2.0)*nqt(qq-1,tt+0.5); re3=((qq+1.0)/2.0-tt)*nqt(qq-1,tt-0.5); re=re1*(re2+re3); } } return re; } 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]; double x3aw[]=new double[100]; double y3aw[]=new double[100]; double w3aw[]=new double[100]; double x4aw[]=new double[100]; double y4aw[]=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 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 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]=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; Naw=4+(int)(randaw()*46); Naw2=Naw; g.setColor(col2); q=(int)(randaw()*7)+1; for(kaw=1;kaw<=Naw;kaw++){ x1aw[kaw-1]=randaw()*(habaaw-30)+15; y1aw[kaw-1]=randaw()*(takaaw-30)+15; xaw[kaw-1]=(int)(x1aw[kaw-1]+0.5); yaw[kaw-1]=(int)(y1aw[kaw-1]+0.5); w1aw[kaw-1]=arcsinaw((y1aw[kaw-1]-yy)/d(x1aw[kaw-1],y1aw[kaw-1],xx,yy))+piaw/2; sssaw[kaw-1]=""+waw[kaw-1]; g.fillOval(xaw[kaw-1]-4,yaw[kaw-1]-4,8,8); //g.drawString(""+w1aw[kaw-1],xaw[kaw-1],yaw[kaw-1]); } g.setColor(col2); n4=0; while(Naw>0){ heapaw(x1aw,y1aw,w1aw,Naw); for(kaw=1;kaw<=Naw;kaw++){ x2aw[kaw-1]=x1aw[kaw-1]; y2aw[kaw-1]=y1aw[kaw-1]; } xmax=x1aw[Naw-1]; th=piaw/2; orikaeshi=0; lto=0.0; cou=0; while(lto!=x2aw[0]){ x3aw[cou]=x1aw[0]; y3aw[cou]=y1aw[0]; cou++; xx=x1aw[0]; yy=y1aw[0]; for(i=1;ixx){ w1aw[i]=3*piaw/2-arcsinaw((y1aw[i]-yy)/d(x1aw[i],y1aw[i],xx,yy)); } w1aw[i]=w1aw[i]+piaw; if(w1aw[i]>2*piaw){ w1aw[i]=w1aw[i]-2*piaw; } if(orikaeshi==1){ w1aw[i]=arcsinaw((y1aw[i]-yy)/d(x1aw[i],y1aw[i],xx,yy))+piaw/2; if(x1aw[i]>xx){ w1aw[i]=3*piaw/2-arcsinaw((y1aw[i]-yy)/d(x1aw[i],y1aw[i],xx,yy)); } w1aw[i]=w1aw[i];//+piaw/2; if(w1aw[i]>2*piaw){ w1aw[i]=w1aw[i]-2*piaw; } } }//next i x1aw[0]=xx; y1aw[0]=yy; w1aw[0]=100.0; heapaw(w1aw,x1aw,y1aw,Naw); g.setColor(col2); g.drawLine((int)xx,(int)yy,(int)x1aw[0],(int)y1aw[0]); x4aw[n4]=xx; y4aw[n4]=yy; n4++; g.setColor(col3); g.drawString(""+n4,(int)xx,(int)yy); lto=x1aw[0]; if(x1aw[0]==xmax){ orikaeshi=1; } }//wend for(j=0;j2 g.setColor(col3); for(i=0;iNaw2){ px=x1aw[Naw2-1]; py=y1aw[Naw2-1]; } if(kaw>0 && kaw<=Naw2){ px=x1aw[kaw-1]; py=y1aw[kaw-1]; } x=x+nqt(q,t-kaw)*px; y=y+nqt(q,t-kaw)*py; } g.drawLine((int)(x-.5),(int)y,(int)(x+.5),(int)y); g.drawLine((int)x,(int)(y-.5),(int)x,(int)(y+.5)); } g.drawString("N="+Naw2,15,15); g.drawString("q="+q,15,30); } }