import java.applet.*; import java.awt.*; import java.lang.Math; public class Geom2 extends Applet { private int angl=360; private int last_x=0; private int last_y=0; private Color current_color=Color.black; private boolean current_seg=true; private Button clear_button; private Button square_button; private Button circ_button; private Button int_button; private Choice color_choices; private Choice arc_choices; private Choice line_choices; private Choice select_choices; public class point implements Cloneable{ public int x; public int y; public Object clone(){ //begin clone try{ //begin try return super.clone(); } //end try catch(CloneNotSupportedException e){ // begin catch return null; //if there is a catch } //end catch } //end cloning structure for point } //end point def public class Vcirc implements Cloneable{ public point c=new point(); public point v=new point(); public int s; public boolean sel=false; public Color cl=Color.black; public Object clone(){ //begin clone try{ //begin try Vcirc vc=(Vcirc)super.clone(); vc.c=(point)c.clone(); vc.v=(point)v.clone(); return vc; } catch(CloneNotSupportedException e){ return null; }//end catch } //end cloning structure for virtual circle c is center, v is vector } //end virtual circle def public class Vline implements Cloneable{ public point a=new point(); public point b=new point(); public point c=new point(); public int s; public Color cl=Color.black; public boolean seg=true; public boolean sel=false; public Object clone(){ // begin clone def try{ //begin try Vline vl=(Vline)super.clone(); vl.a=(point)a.clone(); vl.b=(point)b.clone(); vl.c=(point)c.clone(); return vl; } catch(CloneNotSupportedException e){ return null; } // end catch } // end clone structure } // end virtual line def public class Ipoint implements Cloneable{ public point a=new point(); //point location public point o=new point(); //two objects 0-19 circles 20-39 lines public Color cl=Color.black; public Object clone(){ // begin clone def try{ //begin try Ipoint ip=(Ipoint)super.clone(); ip.a=(point)a.clone(); ip.o=(point)o.clone(); return ip; } catch(CloneNotSupportedException e){ return null; } //end catch } // end clone structure } // end intersection point public int linemax=19; public int circmax=19; public int ipmax=49; public Vcirc circ1=new Vcirc(); public Vcirc circ[]=new Vcirc[circmax]; public Vline line1=new Vline(); public Vline lin[]=new Vline[linemax]; public Ipoint point1=new Ipoint(); public Ipoint poi[]=new Ipoint[ipmax]; public int circount=0; public int lincount=0; public int selcount=0; public int i; public int j; public int cur_circ; public int cur_line; //init applet public void init(){ //set backgd color this.setBackground(Color.white); circ1.c.x=30; circ1.c.y=30; circ1.v.x=0; circ1.v.y=20; circ1.s=20; circ1.cl=Color.black; for(i=0;i