/* * ga2.java - revised 27 Feb 08 - width 409, height 337 * @author jackord@kw.igs.net * equipotential plot for an equilateral mass array */ import java.applet.Applet; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class ga2 extends Applet implements ActionListener { int kk=0; // Declarations int [] m=new int[4]; int [] p=new int[4]; double [] q=new double[4]; String bs = "Plot"; Button b = new Button(bs); Color col[]={ Color.blue, Color.cyan, Color.red, Color.yellow, Color.magenta , Color.green }; public void init() { // Layout setLayout(new FlowLayout(FlowLayout.LEFT)); add(b); b.addActionListener(this); setBackground(new Color(211, 211, 211)); } public void pin(Graphics g) { // Initialize m[1]=1; m[2]=1; m[3]=1; p[1]=121; q[1]=216; p[2]=204; q[2]=216-166*Math.sqrt(3)/2; p[3]=287; q[3]=216; g.setFont(new Font("Arial", Font.PLAIN, 12)); g.setColor(Color.gray); for (int i=1; i<=3; i=i+1) { g.fillArc(p[i]-12, (int)(q[i])-12, 25, 25, 0, 360); } g.setColor(Color.black); g.drawRect(0, 0, 408, 336); for (int i=1; i<=3; i=i+1) { g.drawArc(p[i]-12, (int)(q[i])-12, 24, 24, 0, 360); g.drawString("M", p[i]-4, (int)(q[i])+5); } } public void paint(Graphics g) { // Main Program int plt; double r2, u; pin(g); if (kk>0) { for (int k=1; k<=335; k=k+1) { for (int j=1; j<=407; j=j+1) { u=0; plt=1; for (int i=1; i<=3; i=i+1) { r2=(p[i]-j)*(p[i]-j)+(q[i]-k)*(q[i]-k); if (r2>144) { u=u+m[i]/Math.sqrt(r2); } else { plt=0; } } if (plt==1) { g.setColor(col[(int)(285.65*u)%6]); // Scale for red g.drawLine(j, k, j, k); // central triangle } } } g.setColor(Color.black); for (int i=1; i<=3; i=i+1) { g.drawArc(p[i]-12, (int)(q[i])-12, 24, 24, 0, 360); } kk=0; } } public void actionPerformed(ActionEvent e) { // Button String tst; tst=e.getActionCommand(); if (bs.equals(tst)) { kk=1; } repaint(); } }