// climax.java // succession and climax // adapted from a program in basic by H.T. Odum & E. Odum, 1994 import java.applet.*; import java.awt.*; public class climax extends Applet { Label prompt1, prompt2; TextField input1, input2; Button drawbutton; CheckboxGroup seeding; Checkbox with, without; double i, s, b, bi, d, di, k0, k1, k2, k3, k4, k5, k6, k7, k8, k9; double b0, g0, p0, d0, dt, t, ti, r, dd, pg, pgi, db, dbi; int a; Panel panel; public void init() { prompt1 = new Label("K4 harvest: "); input1 = new TextField("25", 5); prompt2 = new Label("I energy source: "); input2 = new TextField("100", 5); drawbutton = new Button("Draw"); seeding = new CheckboxGroup(); with = new Checkbox("with seeding", seeding, true); without = new Checkbox("without seeding", seeding, false); panel = new Panel(); panel.setLayout(new GridLayout(3,2,10,0)); panel.add(prompt1); panel.add(input1); panel.add(prompt2); panel.add(input2); panel.add(with); panel.add(without); add(panel); add(drawbutton); } public boolean action(Event e, Object o) { if(e.target instanceof Checkbox) { if(with.getState()==true) a=0; else a=1; } k4 = 0.000001f*(float)Integer.parseInt(input1.getText()); i = 0.01f*(float)Integer.parseInt(input2.getText()); repaint(); return true; } public void paint(Graphics g) { g.drawRect(0,90,320,250); t=0; ti=0; if (a==0) s=1; else s=0; b=100; d=1; k0=0.027f; k1=0.0002f; k2=2; k3=0.00417f; k5=0.01f; k6=0.000175f; k7=0.00004f; k8=0.000005f; k9=0.002f; b0=0.003f; g0=3; p0=3.2; d0=3; dt=10; while ((t/15)<320) { r=i/(1+k0*d+k1*b); dd=k8*b*s-k9*d-k7*d*d; pg=k2*r*d+k3*r*b; db=pg-k6*b-k4*b-k5*d*d; bi=b+db*dt; di=d+dd*dt; pgi=k2*r*di+k3*r*bi; dbi=pgi-k6*bi-k4*bi-k5*di*di; ti=t+dt; g.setColor(Color.blue); g.drawLine((int)t/15, (int)(340-d*d0), (int)ti/15, (int)(340-di*d0)); g.setColor(Color.green); g.drawLine((int)t/15, (int)(340-b*b0), (int)ti/15, (int)(340-bi*b0)); g.setColor(Color.orange); g.drawLine((int)t/15, (int)(340-pg*p0), (int)ti/15, (int)(340-pgi*p0)); g.setColor(Color.pink); g.drawLine((int)t/15, (int)(340-db*g0), (int)ti/15, (int)(340-dbi*g0)); t=ti; d=di; b=bi; } } } // Manuel Basler & E. Ortega,November 16th 2000