/* * mw5.java - revised 23 Apr 07 - width 501, height 361 * @author jackord@kw.igs.net * transmitted amplitude versus (k[in]/k[out])^2 (negative for tunneling) * the well/barrier width equals the incident wavelength */ import java.applet.Applet; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class mw5 extends Applet implements ActionListener { int kk=0; // Declarations String bs="Plot"; Button b=new Button(bs); public void init() { setLayout(new FlowLayout(FlowLayout.LEFT)); setBackground(new Color(211, 211, 211)); add(b); b.addActionListener(this); } public void paint(Graphics g) { double c, s, a, k, x, t; int x1, y1, x2, y2; x1=0; y1=0; g.setFont(new Font("TimesRoman", Font.PLAIN, 16)); g.setColor(Color.black); g.drawRect(88, 12, 400, 300); g.drawString("-1", 85, 332); g.drawString("9", 485, 332); g.drawString("(k[in]/k[out])^2", 240, 344); g.drawString("0", 76, 318); g.drawString("1", 76, 18); g.drawString("Transmitted", 4, 160); g.drawString("Amplitude", 8, 180); for (int i=1; i<=9; i=i+1) { g.drawLine(88+40*i, 12, 88+40*i, 312); g.drawLine(88, 12+30*i, 488, 12+30*i); } g.setColor(Color.blue); if (kk==1) { for (int i=-99; i<=299; i=i+1) { if (i==0) { i=i+1; } k=i*.01; a=2*k*Math.PI; if (i<0) { c=(Math.exp(-a)+Math.exp(a))/2; s=(Math.exp(-a)-Math.exp(a))/2; x=-k*k; t=1/Math.sqrt(c*c+s*s*(k-1/k)*(k-1/k)/4); } else { c=Math.cos(a); s=Math.sin(a); x=k*k; t=1/Math.sqrt(c*c+s*s*(k+1/k)*(k+1/k)/4); } if (i==-99) { x1=128+(int)(40*x); y1=312-(int)(300*t); } else { x2=128+(int)(40*x); y2=312-(int)(300*t); g.drawLine(x1, y1, x2, y2); x1=x2; y1=y2; } } } kk=0; } public void actionPerformed(ActionEvent e) { String tst; tst=e.getActionCommand(); if (bs.equals(tst)) { kk=1; } repaint(); } }