// Source File Name: resistance_parallel.java import java.applet.Applet; import java.awt.*; public class resistance_parallel extends Applet implements Runnable { Graphics img; Image screen; Thread kicker; Label author; CheckboxGroup kjh; Checkbox resistance1; Checkbox resistance2; Checkbox resistanceall; Scrollbar vscroll; boolean start; boolean r1; boolean r2; int angle; int time; public void init() { setLayout(null); kjh = new CheckboxGroup(); resistance1 = new Checkbox("Resistor 1 (R1)", kjh, true); resistance1.setBackground(new Color(175, 220, 253)); // java.awt.Component.reshape(x, y, width, height) deprecated; // replaced with java.awt.Component.setBounds(x, y, width, height) // See http://www.geocities.com/SiliconValley/Way/9731/java_deprecated.html //resistance1.reshape(370, 55, 120, 20); resistance1.setBounds(370, 55, 120, 20); add(resistance1); resistance2 = new Checkbox("Resistor 2 (R2)", kjh, false); resistance2.setBackground(new Color(175, 220, 253)); //resistance2.reshape(370, 75, 120, 20); resistance2.setBounds(370, 75, 120, 20); add(resistance2); //;resistanceall = new Checkbox("Resistors In Parallel (R1,R2)", kjh, false); resistanceall = new Checkbox("R1 & R2 In Parallel", kjh, false); resistanceall.setBackground(new Color(175, 220, 253)); //resistanceall.reshape(370, 95, 160, 20); resistanceall.setBounds(370, 95, 160, 20); add(resistanceall); vscroll = new Scrollbar(0, 20, 10, 5, 21); vscroll.setBackground(new Color(175, 220, 253)); //vscroll.reshape(315, 300, 100, 20); vscroll.setBounds(315, 300, 100, 20); add(vscroll); //;author = new Label("\251 Kongju National U.V kjh, 1998 - \251 Carlo Sansotta for IFMSA WebLab, 1998"); author = new Label("Physics 212, Experiment #10: Resistors in Parallel"); author.setBackground(Color.white); //author.reshape(0, 385, 380, 14); author.setBounds(0, 385, 380, 14); add(author); resize(600, 400); } public void update(Graphics g) { if(screen == null) { screen = createImage(600, 400); img = screen.getGraphics(); } img.setColor(Color.white); img.fillRect(0, 0, 600, 400); img.setColor(Color.gray); img.fillRect(370, 45, 165, 80); img.setColor(new Color(175, 220, 253)); img.fillRect(365, 40, 175, 80); img.setColor(Color.black); int i = vscroll.getValue(); img.drawString(i + " volt", 400, 340); if(resistance1.getState()) angle = (20 * i) / 6; if(resistance2.getState()) angle = (20 * i) / 9; if(resistanceall.getState()) angle = (20 * i * 5) / 18; if(resistance1.getState() && r1) { img.drawString("2 ohm", 180, 115); draw_resistance(180, 135, Color.orange); } if(resistance2.getState()) { if(r2) img.drawString("3 ohm", 180, 115); draw_resistance(180, 135, Color.magenta); } if(resistanceall.getState()) { img.drawLine(10, 135, 50, 135); img.drawLine(50, 135, 50, 40); img.drawLine(50, 40, 90, 40); if(r1) img.drawString("2 ohm", 90, 20); draw_resistance(90, 40, Color.orange); img.drawLine(150, 40, 220, 40); draw_current(260, 40, (3 * angle) / 5, 15, "A", round((15D * (double)i) / 30D), "Ammeter"); img.drawLine(300, 40, 340, 40); img.drawLine(340, 40, 340, 135); img.drawLine(70, 40, 70, 87); img.drawLine(70, 87, 150, 87); draw_current(190, 87, 5 * i, 20, "V", round(i), "Voltmeter"); img.drawLine(230, 87, 320, 87); img.drawLine(320, 87, 320, 40); img.drawLine(50, 135, 50, 225); img.drawLine(50, 225, 90, 225); if(r2) img.drawString("3 ohm", 90, 205); draw_resistance(90, 225, Color.magenta); img.drawLine(150, 225, 220, 225); draw_current(260, 225, (2 * angle) / 5, 15, "A", round((10D * (double)i) / 30D), "Ammeter"); img.drawLine(300, 225, 340, 225); img.drawLine(340, 225, 340, 135); img.drawLine(70, 225, 70, 178); img.drawLine(70, 178, 150, 178); draw_current(190, 178, 5 * i, 20, "V", round(i), "Voltmeter"); img.drawLine(230, 178, 320, 178); img.drawLine(320, 178, 320, 225); img.drawLine(340, 135, 540, 135); img.drawLine(30, 135, 30, 280); img.drawLine(30, 280, 150, 280); draw_current(190, 280, 5 * i, 20, "V", round(i), "Voltmeter"); img.drawLine(230, 280, 360, 280); img.drawLine(360, 280, 360, 135); } else { img.drawLine(10, 135, 180, 135); img.drawLine(240, 135, 540, 135); img.drawLine(140, 135, 140, 220); img.drawLine(140, 220, 170, 220); draw_current(210, 220, 5 * i, 20, "V", round(i), "Voltmeter"); img.drawLine(250, 220, 280, 220); img.drawLine(280, 220, 280, 135); } img.drawLine(540, 135, 540, 190); if(resistance1.getState()) draw_current(540, 230, angle, 15, "A", round((double)i / 2D), "Ammeter"); if(resistance2.getState()) draw_current(540, 230, angle, 15, "A", round((double)i / 3D), "Ammeter"); if(resistanceall.getState()) draw_current(540, 230, angle, 15, "A", round((5D * (double)i) / 6D), "Ammeter"); img.drawLine(540, 270, 540, 350); img.drawLine(10, 135, 10, 350); img.drawLine(10, 350, 180, 350); draw_switch(180, 350); img.drawLine(240, 350, 350, 350); draw_voltage(350, 350); img.drawLine(374, 350, 540, 350); img.setColor(Color.gray); img.fillRect(380, 155, 120, 60); img.setColor(new Color(175, 220, 253)); img.fillRect(375, 150, 120, 60); img.setColor(Color.black); if(resistance1.getState() && start) { r1 = true; img.drawString("R1=" + i + "/" + round((double)i / 2D), 390, 180); img.drawString(" = 2 ohm", 390, 200); } if(resistance2.getState() && start) { r2 = true; img.drawString("R2=" + i + "/" + round((double)i / 3D), 390, 180); img.drawString(" = 3 ohm", 390, 200); } paint(img); g.drawImage(screen, 0, 0, null); } double round(double d) { String s = String.valueOf(d); int i = s.indexOf('.'); String s1; if(s.length() > i + 1 + 2) { d += 0.0050000000000000001D; s = String.valueOf(d); int j = s.indexOf('.'); s1 = s.substring(0, j + 1 + 2); } else { s1 = s; } return Double.valueOf(s1).doubleValue(); } public void draw_current(int i, int j, int k, int l, String s, double d, String s1) { img.setColor(Color.red); img.drawArc(i - 35, (j + 15) - 35, 70, 70, 40, 100); img.setColor(Color.blue); img.setFont(new Font("western", 0, 10)); img.drawString("0", i - 32, j - 2); img.drawString("" + l, i + 27, j - 2); img.setColor(Color.black); double d1 = ((double)((k - 50) * 2) * 3.1415926535897931D) / 360D; img.drawArc(i - 40, j - 40, 80, 80, 0, 360); img.setFont(new Font("western", 1, 18)); img.drawString(s, i - 5, j); img.drawString("_", i - 5, j); if(start) if(k >= 105) { img.setColor(Color.red); img.drawString("" + (float)d, i - 13, j + 35); img.setColor(Color.black); } else { img.drawString("" + (float)d, i - 13, j + 35); } if(start) { if(k < 105) { img.drawLine(i, j + 15, i + (int)(40D * Math.sin(d1)), (j + 15) - (int)(40D * Math.cos(d1))); return; } time++; if(time > 40) { start = false; time = 0; } img.setColor(Color.red); img.drawString("strumento", 390, 240); img.drawString("fuori", 400, 260); img.drawString("scala!!", 410, 280); img.setColor(Color.black); img.drawLine(i, j + 15, i + (int)(40D * Math.sin(1.3089969389957472D)), (j + 15) - (int)(40D * Math.cos(1.3089969389957472D))); return; } else { img.drawLine(i, j + 15, i + (int)(50D * Math.sin(-0.69813170079773179D)), (j + 15) - (int)(40D * Math.cos(-0.87266462599716477D))); return; } } public void draw_voltage(int i, int j) { img.setColor(Color.black); img.fillRect(i, j - 8, 8, 16); img.fillRect(i + 16, j - 15, 8, 30); } public void draw_switch(int i, int j) { img.setColor(Color.blue); img.fillArc(i, j - 5, 10, 10, 0, 360); img.fillArc(i + 50, j - 5, 10, 10, 0, 360); if(start) img.drawLine(i + 10, j, i + 50, j); else img.drawLine(i + 10, j, i + 50, j - 15); img.setColor(Color.black); } public void draw_resistance(int i, int j, Color color) { img.setColor(color); int ai[] = new int[26]; int ai1[] = new int[26]; int k = 0; ai[k] = i; ai1[k] = j - 5; k++; ai[k] = i + 5; ai1[k] = j - 5 - 10; k++; ai[k] = i + 10; ai1[k] = j - 5; k++; ai[k] = i + 15; ai1[k] = (j - 5) + 10; k++; ai[k] = i + 20; ai1[k] = j - 5; k++; ai[k] = i + 25; ai1[k] = j - 5 - 10; k++; ai[k] = i + 30; ai1[k] = j - 5; k++; ai[k] = i + 35; ai1[k] = (j - 5) + 10; k++; ai[k] = i + 40; ai1[k] = j - 5; k++; ai[k] = i + 45; ai1[k] = j - 5 - 10; k++; ai[k] = i + 50; ai1[k] = j - 5; k++; ai[k] = i + 55; ai1[k] = (j - 5) + 10; k++; ai[k] = i + 60; ai1[k] = j - 5; k++; ai[k] = i + 60; ai1[k] = j + 5; k++; ai[k] = i + 55; ai1[k] = j + 5 + 10; k++; ai[k] = i + 50; ai1[k] = j + 5; k++; ai[k] = i + 45; ai1[k] = (j + 5) - 10; k++; ai[k] = i + 40; ai1[k] = j + 5; k++; ai[k] = i + 35; ai1[k] = j + 5 + 10; k++; ai[k] = i + 30; ai1[k] = j + 5; k++; ai[k] = i + 25; ai1[k] = (j + 5) - 10; k++; ai[k] = i + 20; ai1[k] = j + 5; k++; ai[k] = i + 15; ai1[k] = j + 5 + 10; k++; ai[k] = i + 10; ai1[k] = j + 5; k++; ai[k] = i + 5; ai1[k] = (j + 5) - 10; k++; ai[k] = i; ai1[k] = j + 5; k++; img.fillPolygon(ai, ai1, k); img.setColor(Color.black); } public void run() { Thread.currentThread().setPriority(1); while(kicker != null) { repaint(); try { Thread.sleep(50L); } catch(InterruptedException _ex) { } } } public void start() { if(kicker == null) { kicker = new Thread(this); kicker.start(); } } public void stop() { if(kicker != null) { kicker.stop(); kicker = null; } } public boolean mouseDown(Event event, int i, int j) { if(i > 180 && i < 240 && j > 330 && j < 360) if(start) start = false; else start = true; return true; } public resistance_parallel() { } }