See Capacitor.java
Testbed1.java
// Testbed1.java import java.awt.*; import java.awt.geom.*; import javax.swing.JPanel; import javax.swing.JFrame; public class Testbed1 extends JPanel { final static int resolution = 96; Capacitor c1 = new Capacitor(); Capacitor c2 = new Capacitor(); Testbed1() { c2.setPosition(0.0,1.0); c2.setAngle(30.0); c2.color = Color.GREEN; System.out.println(c2); } protected void show_size(Graphics g) { int width = getWidth(); int height = getHeight(); String str = String.format("width %d height %d",width,height); FontMetrics fm = g.getFontMetrics(); Rectangle2D rect = fm.getStringBounds(str,g); width -= rect.getWidth(); height -= rect.getHeight(); g.drawString(str,width/2,height/2); } protected void draw_grid(Graphics g) { Graphics2D g2 = (Graphics2D) g; AffineTransform saveXform = g2.getTransform(); Paint savePaint = g2.getPaint(); g2.setPaint(new Color(220,220,255)); Stroke saveStroke = g2.getStroke(); g2.setStroke(new BasicStroke(1.0f/resolution)); double u = 4.0; for (int i=-4; i<=4; i++) { double v = i; g2.draw(new Line2D.Double(-u,v,4,v)); g2.draw(new Line2D.Double(v,-u,v,u)); } // locate origin /* g2.setPaint(Color.BLACK); u = 0.05; g2.draw(new Line2D.Double(-u,u,u,-u)); g2.draw(new Line2D.Double(-u,-u,u,u)); */ g2.setStroke(saveStroke); g2.setTransform(saveXform); } public void paintComponent(Graphics g) { super.paintComponent( g ); Graphics2D g2 = (Graphics2D) g; AffineTransform saveXform = g2.getTransform(); Paint savePaint = g2.getPaint(); int width = getWidth(); int height = getHeight(); g2.translate(width/2,height/2); g2.scale(resolution,resolution); draw_grid(g); Stroke saveStroke = g2.getStroke(); g2.setStroke(new BasicStroke(2.0f/resolution,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND)); c1.draw(g); c2.draw(g); g2.setTransform(saveXform); g2.setPaint(savePaint); g2.setStroke(saveStroke); // show_size(g); } public static void main( String args[] ) { EventQueue.invokeLater(new Runnable() { public void run() { Testbed1 panel = new Testbed1(); JFrame application = new JFrame("Testbed1"); application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); application.add(panel); application.setSize(496,358); application.setVisible(true); } }); } }
Maintained by John Loomis, updated Mon Feb 27 15:04:22 2017