/*sph2.java *1997/9/1 *Suzuki,Tesuo */ import java.applet.*; import java.awt.*; import java.lang.Math; public class sph2 extends Applet implements Runnable{ Thread th=null; int n=300; int i,j,r,h,s,p,q,wl; Image buffer; Dimension d; public void init(){ d=size(); buffer=createImage(d.width,d.height); r=0; p=0; s=1; h=30; wl=20; q=0; add(new Label("source")); CheckboxGroup cg0=new CheckboxGroup(); add(new Checkbox("mono",cg0,false)); add(new Checkbox("dual",cg0,true)); add(new Label("phase")); CheckboxGroup cg1=new CheckboxGroup(); add(new Checkbox("0",cg1,true)); add(new Checkbox("180",cg1,false)); add(new Label("wave length")); CheckboxGroup cg2=new CheckboxGroup(); add(new Checkbox("1",cg2,true)); add(new Checkbox("1.5",cg2,false)); add(new Label(" speed")); CheckboxGroup cg3=new CheckboxGroup(); add(new Checkbox("low",cg3,true)); add(new Checkbox("high",cg3,false)); add(new Checkbox("stop",cg3,false)); } void drawToBuffer(){ Graphics g=buffer.getGraphics(); g.setColor(Color.white); g.clipRect(0,30,d.width,d.height-30); g.fillRect(0,30,d.width,d.height-30); for(i=0;i=wl) r=0; } public void start(){ if (th==null){ th=new Thread(this); th.start(); } } public boolean action(Event ev,Object o){ Checkbox ch=(Checkbox)ev.target; if ("mono".equals (ch.getLabel())) q=1000; else if("dual".equals (ch.getLabel())){ q=0; } else if ("0".equals (ch.getLabel())) p=0; else if("180".equals (ch.getLabel())){ p=1; } else if("1".equals (ch.getLabel())){ wl=20; } else if("1.5".equals (ch.getLabel())){ wl=30; } else if ("low".equals (ch.getLabel())) s=1; else if("high".equals (ch.getLabel())) s=2; else if("stop".equals (ch.getLabel())) s=0; return true; } public void run(){ while(th !=null){ move(); drawToBuffer(); repaint(); try { Thread.sleep(20); } catch (InterruptedException e){} } } public void update(Graphics g){ paint(g); } public void paint (Graphics g){ g.drawImage(buffer,0,0,this); } public void stop(){ if (th!=null){ th.stop(); th=null; } } }