// fire.java // Fire - a rapid pulse of nutrients return and selection process // adapted from a program in basic by H.T. Odum & E. Odum, 1994 import java.applet.*; import java.awt.*; public class fire extends Applet { Label prompt1, prompt2; TextField input1, input2; Button drawbutton; CheckboxGroup fire; Checkbox on, off; double i, q, qi, tn, g1, g2, k, k1, k2, f, q0, n0, n, ni, r, dq, t, ti; int a; public void init() { prompt1 = new Label("TN Total nutrients: "); input1 = new TextField("100", 5); add(prompt1); add(input1); prompt2 = new Label("Fire burns down to G2: "); input2 = new TextField("2000", 5); add(prompt2); add(input2); drawbutton = new Button("Draw"); add(drawbutton); fire = new CheckboxGroup(); on = new Checkbox("Fire on", fire, true); off = new Checkbox("Fire off", fire, false); add(on); add(off); } public boolean action(Event e, Object o) { if(e.target instanceof Checkbox) { if(on.getState() == true) a=0; else a=1; } tn = (float)Integer.parseInt(input1.getText()); g2 = (float)Integer.parseInt(input2.getText()); repaint(); return true; } public void paint(Graphics g) { g.drawRect(0,90,320,240); g.drawLine(0,210,320,210); t=0; ti=0; i=10; q=1000; g1=5000; k=0.9; k1=8; k2=0.01f; f=0.01f; q0=0.01f; n0=0.9f; n=tn-f*q; while (t<320) { r=i/(1+k*n); if (q > g1 && a==0) { g.setColor(Color.red); g.drawLine((int)t, (int)(330-g1/100), (int)t, (int)(330-g2/100)); g.setColor(Color.blue); g.drawLine((int)t, (int)(210-(tn-f*g1)*n0), (int)t, (int)(210-(tn-f*g2)*n0)); q=g2; } dq=k1*n*r-k2*q; qi=q+dq; ni=tn-f*qi; g.setColor(Color.green); g.drawLine((int)t, (int)(330-q/100), (int)ti, (int)(330-qi/100)); g.setColor(Color.blue); g.drawLine((int)t, (int)(210-n*n0), (int)ti, (int)(210-ni*n0)); ti=t; t+=1; q=qi; n=ni; } } } // Manuel Basler & e. Ortega, November 14th 2000