/* * itrap.java - updated 23 May 98 - width 501, height 361 * @author jackord@kw.igs.net * implements Java 1.1 ActionEvent and ActionListener */ import java.applet.Applet; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class itrap extends Applet implements ActionListener { int kk=0; // Declarations double k, A, m, xa, xb; String bs="Run"; Button b=new Button(bs); public void init() { setLayout(new FlowLayout(FlowLayout.LEFT)); setBackground(Color.white); add(b); b.addActionListener(this); } double vbar(int n) { double s, v1, v2, x, dx; s=0; x=xa; dx=(xb-xa)/n; v1=Math.sqrt(k*(A*A-x*x)/m); for (int i=1; i<=n; i=i+1) { x=xa+i*dx; v2=Math.sqrt(k*(A*A-x*x)/m); s=s+2/(v1+v2); v1=v2; } return s*dx; } double trap(int n) { double c, s, x, dx; s=0; dx=(xb-xa)/n; for (int i=0; i<=n; i=i+1) { if ((i==0)||(i==n)) { c=.5; } else { c=1; } x=xa+i*dx; s=s+c/Math.sqrt(k*(A*A-x*x)/m); } return s*dx; } public void paint(Graphics g) { int x1, y1, x2, y2; double x, dx, s1, s2; g.setColor(Color.black); g.setFont(new Font("TimesRoman", Font.PLAIN, 16)); g.drawRect(88, 12, 400, 300); g.drawString("-5", 85, 332); g.drawString("5", 485, 332); g.drawString("x (m)", 268, 344); g.drawString("0", 72, 318); g.drawString("2", 72, 18); g.drawString("1/V(x)", 16, 133); g.drawString("(s/m)", 24, 203); if (kk==1) { k=1; m=25; A=5; xa=-4; xb=4; dx=(xb-xa)/200; g.setColor(Color.blue); x1=288+(int)(40*xa); y1=312-(int)(150/Math.sqrt(k*(A*A-xa*xa)/m)); for (int i=1; i<=200; i=i+1) { x=xa+i*dx; x2=288+(int)(40*x); y2=312-(int)(150/Math.sqrt(k*(A*A-x*x)/m)); g.drawLine(x1, y1, x2, y2); x1=x2; y1=y2; } g.setColor(Color.magenta); x=xa; dx=(xb-xa)/4; x1=288+(int)(40*x); y1=312-(int)(150/Math.sqrt(k*(A*A-x*x)/m)); g.drawLine(x1, 312, x1, y1); for (int i=1; i<=6; i=i+1) { x=x+dx; x2=288+(int)(40*x); y2=312-(int)(150/Math.sqrt(k*(A*A-x*x)/m)); g.drawLine(x1, y1, x2, y2); x1=x2; y1=y2; g.drawLine(x1, y1, x1, 312); if (i==2) { dx=dx/2; } } g.setColor(Color.black); s1=vbar(20); s2=vbar(40); g.drawString("Vbar: T(20) = "+(float)s1+" T(40) = "+(float)s2+ " T = "+(float)(s2+(s2-s1)/3), 100, 32); s1=trap(20); s2=trap(40); g.drawString("Trap: T(20) = "+(float)s1+" T(40) = "+(float)s2+ " T = "+(float)(s2+(s2-s1)/3), 100, 48); g.drawString("Analytic: T = "+(float)(2*Math.sqrt(m/k)*Math.atan(2/1.5)), 220, 80); } kk=0; } public void actionPerformed(ActionEvent e) { // Button String tst; tst=e.getActionCommand(); if (bs.equals(tst)) { kk=1; } repaint(); } }