import java.awt.*; import java.applet.*; import java.lang.*; public class spi extends java.applet.Applet { int i,x1,x2,xi,y1,y2,yi; String teetha,teethb,rA,rB; TextField t1,t2; Label l1,l2,iter; Panel controlPanel,infoPanel; public void init() { teetha=getParameter("A"); teethb=getParameter("B"); rA=getParameter("rA"); i=Integer.parseInt(rA); resize(300,400); setBackground(new Color(0,0,0)); setForeground(new Color(255,255,255)); setLayout(new BorderLayout()); controlPanel = new Panel(); controlPanel.setLayout(new GridLayout(2,4)); add("North", controlPanel); controlPanel.add(new Label("A:",Label.RIGHT)); t1=new TextField(teetha,3); t1.setBackground(new Color(255,255,255)); t1.setForeground(new Color(0,0,0)); controlPanel.add(t1); controlPanel.add(new Label("rA:",Label.RIGHT)); l1=new Label(rA); controlPanel.add(l1); controlPanel.add(new Label("B:",Label.RIGHT)); t2=new TextField(teethb,3); t2.setBackground(new Color(255,255,255)); t2.setForeground(new Color(0,0,0)); controlPanel.add(t2); controlPanel.add(new Label("rB:",Label.RIGHT)); l2=new Label(rB); controlPanel.add(l2); infoPanel = new Panel(); infoPanel.setLayout(new GridLayout(1,4)); add("South", infoPanel); infoPanel.add(new Label("i:",Label.RIGHT)); iter=new Label(); infoPanel.add(iter); } public boolean action(Event evt,Object arg) { if(evt.target instanceof TextField) { teetha=t1.getText(); teethb=t2.getText(); repaint(); return true; } return false; } public boolean mouseDrag(Event evt,int x, int y) { if(y>0&&y<300) i=y/2; l1.setText(String.valueOf(i)); l2.setText(String.valueOf(150-i)); repaint(); return true; } public void paint(Graphics g) { int c=0; double tha=0,thb=0; double ra=(double)i; double rb=150-(double)i; double ta=Double.valueOf(teetha).doubleValue(); double tb=Double.valueOf(teethb).doubleValue(); g.setColor(new Color(255,255,255)); xi=x1=(int)((ra*Math.cos(tha))+(rb*Math.cos(thb))); yi=y1=(int)((ra*Math.sin(tha))+(rb*Math.sin(thb))); do { c++; x2=x1; y2=y1; tha+=ta; thb+=tb; x1=(int)((ra*Math.cos(tha))+(rb*Math.cos(thb))); y1=(int)((ra*Math.sin(tha))+(rb*Math.sin(thb))); g.drawLine(x1+150,y1+210,x2+150,y2+210); } while(!((Math.abs(x1-xi)<2)&&(Math.abs(yi-y1)<2))); iter.setText(String.valueOf(c)); } }