import java.awt.Graphics; import java.applet.Applet; import java.awt.Color; public class mwvoro extends java.applet.Applet{ Color col1,col2,col3; int Nmw; int takamw,habamw; int kmw,imw,jmw; double w1mw1,w2mw2,xmw1,ymw1,r1mw,r2mw,rmw; int x2mwI,x2mws,x2mwe,y2mwI,y2mws,y2mwe,y3mwI,x3mwI; double y1mw1,y2mw2,d2mw,d3mw; double y3mw3,d4mw,d5mw; double x1mw1,x2mw2,d6mw,d7mw; double x3mw3,d8mw,d9mw; int br1mw=0,br2mw=0,br3mw=0,br4mw=0; String NS,habaS,takaS; double Nd,takad,habad; public double dou(String dous){ double dou1; dou1 = (Double.valueOf(dous)).doubleValue(); return dou1; } public double randmw(){ double rand1mw; rand1mw=Math.random(); return rand1mw; } 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==6){ Nd=4+16*randmw(); } habamw=(int)habad; takamw=(int)takad; Nmw=(int)Nd; } double x1mw[]=new double[100]; double y1mw[]=new double[100]; double w1mw[]=new double[100]; int xmw[]=new int[100]; int ymw[]=new int[100]; int wmw[]=new int[100]; double smw[]=new double[100]; String sssmw[]=new String[100]; public double joumw(double amw,double bmw){ double jou1mw; jou1mw=Math.pow(amw,bmw); return jou1mw; } //sort he1aw[0]=1;kkmw--){ iimw=kkmw; b1mw=he1mw[iimw-1];b2mw=he2mw[iimw-1];b3mw=he3mw[iimw-1]; while(2*iimw<=NNmw){ jjmw=2*iimw; if(jjmw+1<=NNmw){ if(he1mw[jjmw-1]=1;mmmw--){ c1mw=he1mw[mmmw];c2mw=he2mw[mmmw];c3mw=he3mw[mmmw]; he1mw[mmmw]=he1mw[0];he2mw[mmmw]=he2mw[0];he3mw[mmmw]=he3mw[0]; iimw=1; while(2*iimw<=mmmw){ kkmw=2*iimw; if(kkmw+1<=mmmw){ if(he1mw[kkmw-1]<=he1mw[kkmw]){ kkmw++; } } if(he1mw[kkmw-1]<=c1mw){ break; } he1mw[iimw-1]=he1mw[kkmw-1];he2mw[iimw-1]=he2mw[kkmw-1];he3mw[iimw-1]=he3mw[kkmw-1]; iimw=kkmw; }//wend he1mw[iimw-1]=c1mw;he2mw[iimw-1]=c2mw;he3mw[iimw-1]=c3mw; }//next mm } public void paint(java.awt.Graphics g){ g.setColor(col1); g.fillRect(1,1,habamw,takamw); g.setColor(col2); g.drawString("N="+Nmw,15,15); //set Naw generators (x1aw[kaw],[y1aw[kaw]) with weight w1aw[kaw] rondomly. for(kmw=0;kmw=0 && x2mwI<=habamw){ // compute upper y coordinate for x2mwI y1mw1=rmw*rmw-joumw(x2mwI-xmw1,2); if(y1mw1<0){ y1mw1=0; } y2mw2=ymw1+joumw(y1mw1,0.5); //compute distance from i to (x2mwI,y2mw2) d2mw=joumw(joumw(x2mwI-x1mw[imw-1],2)+joumw(y2mw2-y1mw[imw-1],2),0.5)/w1mw[imw-1]; //loop k (not i, not j) for(kmw=1;kmw<=Nmw;kmw++){ if(kmw!=imw && kmw!=jmw){ //compute distance from k to (x2mwI,y2mw2) d3mw=joumw(joumw(x2mwI-x1mw[kmw-1],2)+joumw(y2mw2-y1mw[kmw-1],2),0.5)/w1mw[kmw-1]; if(d2mw>d3mw){//it means k is near than i (or j), so we cannot plot this (x,y) br1mw=1; break; } }//if kmw!=imw... }//next kmw if(br1mw==0){//this means i is the nearest points from (x,y), so we can plot (x,y) y2mwI=(int)(y2mw2+0.5); g.drawLine(x2mwI,y2mwI,x2mwI,y2mwI); }//if br1==0 else{//br1mw==1 br1mw=0; } // compute lower y coordinate for x2mwI // do same thing of upper y. y3mw3=ymw1-joumw(y1mw1,0.5); d4mw=joumw(joumw(x2mwI-x1mw[imw-1],2)+joumw(y3mw3-y1mw[imw-1],2),0.5)/w1mw[imw-1]; for(kmw=1;kmw<=Nmw;kmw++){ if(kmw!=imw && kmw!=jmw){ d5mw=joumw(joumw(x2mwI-x1mw[kmw-1],2)+joumw(y3mw3-y1mw[kmw-1],2),0.5)/w1mw[kmw-1]; if(d4mw>d5mw){ br2mw=1; break; } }//if kmw!=imw... }//next kmw if(br2mw==0){ y3mwI=(int)(y3mw3+0.5); g.drawLine(x2mwI,y3mwI,x2mwI,y3mwI); }//if br1==0 else{//br1mw==1 br2mw=0; } }//if x2mwI>=0.... }// next x2mwI //consider same circle for y-loop. // do same thing of x-loop. y2mws=(int)(ymw1-rmw+0.5); y2mwe=(int)(ymw1+rmw+0.5); for(y2mwI=y2mws;y2mwI<=y2mwe;y2mwI++){ if(y2mwI>=0 && y2mwI<=takamw){ x1mw1=rmw*rmw-joumw(y2mwI-ymw1,2); if(x1mw1<0){ x1mw1=0; } x2mw2=xmw1+joumw(x1mw1,0.5); d6mw=joumw(joumw(x2mw2-x1mw[imw-1],2)+joumw(y2mwI-y1mw[imw-1],2),0.5)/w1mw[imw-1]; for(kmw=1;kmw<=Nmw;kmw++){ if(kmw!=imw && kmw!=jmw){ d7mw=joumw(joumw(x2mw2-x1mw[kmw-1],2)+joumw(y2mwI-y1mw[kmw-1],2),0.5)/w1mw[kmw-1]; if(d6mw>d7mw){ br3mw=1; break; } }//if kmw!=imw... }//next kmw if(br3mw==0){ x2mwI=(int)(x2mw2+0.5); g.drawLine(x2mwI,y2mwI,x2mwI,y2mwI); }//if br1==0 else{//br1mw==1 br3mw=0; } x3mw3=xmw1-joumw(x1mw1,0.5); d8mw=joumw(joumw(x3mw3-x1mw[imw-1],2)+joumw(y2mwI-y1mw[imw-1],2),0.5)/w1mw[imw-1]; for(kmw=1;kmw<=Nmw;kmw++){ if(kmw!=imw && kmw!=jmw){ d9mw=joumw(joumw(x3mw3-x1mw[kmw-1],2)+joumw(y2mwI-y1mw[kmw-1],2),0.5)/w1mw[kmw-1]; if(d8mw>d9mw){ br4mw=1; break; } }//if kmw!=imw... }//next kmw if(br4mw==0){ x3mwI=(int)(x3mw3+0.5); g.drawLine(x3mwI,y2mwI,x3mwI,y2mwI); }//if br1==0 else{//br1mw==1 br4mw=0; } }//if x2mwI>=0.... }// next x2mwI }//next jmw }//next imw } }