import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; public class Animator implements Runnable { boolean HALT; Manager M; public Animator() { HALT=true; } public Animator(Manager MM) { this.M=MM; HALT=true; } public void run() { HALT=false; while(HALT==false) { int c=M.P.CHOICE.val; if(c==0) evolveFlex(); if(c==1) evolveRigid(); } } public void evolveFlex() { /*determine speeds*/ double s,t1,t2,t3,t4; s=600-M.P.SPEED.pos; s=.001*Math.pow(.99,s); t1=s; t2=M.P.RATIO.pos-600; t2=.05*s*Math.pow(.99,t2); t3=Math.pow(.5,M.P.SPIN.val-5); t4=(600-M.P.FRAME.pos); t4=t3*t4*s; /*change tree*/ Complex[] Z=EvolveFlex.evolve2(M.P.ST,M.P.POINT,M.P.COUNT,t2); Z=EvolveFlex.evolve1(M.P.ST,Z,M.P.COUNT,t1); Z=TreeFunctions.rotateEntire(Z,M.P.COUNT,t4); Z=TreeFunctions.translate(Z,M.P.COUNT); Z=TreeFunctions.rescale(Z,M.P.COUNT); /*record*/ for(int i=0;i