// Source File Name: resistance_series.java import java.applet.Applet; import java.awt.*; public class resistance_series extends Applet implements Runnable { Graphics img; Image screen; Thread kicker; Label author; CheckboxGroup kjh; Checkbox resistance1; Checkbox resistance2; Checkbox resistanceall; Scrollbar vscroll; boolean start; 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 Series (R1,R2)", kjh, false); resistanceall = new Checkbox("R1 & R2 In Series", kjh, false); resistanceall.setBackground(new Color(175, 220, 253)); //resistanceall.reshape(370, 95, 140, 20); resistanceall.setBounds(370, 95, 140, 20); add(resistanceall); vscroll = new Scrollbar(0, 20, 10, 5, 25); 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 Series"); 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, 55, 155, 90); img.setColor(new Color(175, 220, 253)); img.fillRect(365, 50, 155, 90); img.setColor(Color.black); int i = vscroll.getValue(); img.drawString(i + " volt", 400, 340); if(resistance1.getState()) angle = 5 * i; if(resistance2.getState()) angle = (10 * i) / 3; if(resistanceall.getState()) angle = 2 * i; if(resistance1.getState()) draw_resistance(180, 30, Color.orange); if(resistance2.getState()) draw_resistance(180, 30, Color.magenta); if(resistanceall.getState()) { img.drawLine(10, 30, 100, 30); draw_resistance(100, 30, Color.orange); img.drawLine(160, 30, 240, 30); draw_resistance(240, 30, Color.magenta); img.drawLine(300, 30, 540, 30); img.drawLine(65, 30, 65, 120); img.drawLine(65, 120, 80, 120); draw_current(130, 120, 2 * i, "V", round((2D * (double)i) / 5D), "Voltmeter"); img.drawLine(180, 120, 195, 120); img.drawLine(195, 120, 195, 30); img.drawString("R1", 70, 60); img.drawLine(205, 30, 205, 120); img.drawLine(205, 120, 220, 120); draw_current(270, 120, 3 * i, "V", round((3D * (double)i) / 5D), "Voltmeter"); img.drawLine(320, 120, 335, 120); img.drawLine(335, 120, 335, 30); img.drawString("R2", 210, 60); img.drawLine(50, 30, 50, 210); img.drawLine(50, 210, 150, 210); draw_current(200, 210, 5 * i, "V", round(i), "Voltmeter"); img.drawLine(250, 210, 350, 210); img.drawLine(350, 210, 350, 30); } else { img.drawLine(10, 30, 180, 30); img.drawLine(240, 30, 540, 30); img.drawLine(140, 30, 140, 120); img.drawLine(140, 120, 160, 120); draw_current(210, 120, 5 * i, "V", round(i), "Voltmeter"); img.drawLine(260, 120, 280, 120); img.drawLine(280, 120, 280, 30); } img.drawLine(540, 30, 540, 180); if(resistance1.getState()) draw_current(540, 230, angle, "A", round((double)i / 2D), "Ammeter"); if(resistance2.getState()) draw_current(540, 230, angle, "A", round((double)i / 3D), "Ammeter"); if(resistanceall.getState()) draw_current(540, 230, angle, "A", round((double)i / 5D), "Ammeter"); img.drawLine(540, 280, 540, 350); img.drawLine(10, 30, 10, 350); img.drawLine(10, 350, 180, 350); draw_switch(180, 350); img.drawLine(240, 350, 350, 350); draw_voltage(350, 350); img.drawLine(380, 350, 540, 350); 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, String s, double d, String s1) { img.setColor(Color.red); img.drawArc(i - 45, (j + 15) - 45, 90, 90, 40, 100); double d1 = ((double)((k - 50) * 2) * 3.1415926535897931D) / 360D; img.setColor(Color.black); img.drawArc(i - 50, j - 50, 100, 100, 0, 360); img.setFont(new Font("\271\331\305\301", 1, 20)); img.drawString(s, i - 5, j - 7); img.drawString("_", i - 5, j - 7); 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)(50D * Math.sin(d1)), (j + 15) - (int)(50D * Math.cos(d1))); return; } time++; if(time > 40) { start = false; time = 0; } img.setColor(Color.red); img.drawString("Instrument Outside Scale!", 50, 280); img.setColor(Color.black); img.drawLine(i, j + 15, i + (int)(50D * Math.sin(1.3089969389957472D)), (j + 15) - (int)(50D * Math.cos(1.3089969389957472D))); return; } else { img.drawLine(i, j + 15, i + (int)(50D * Math.sin(-0.87266462599716477D)), (j + 15) - (int)(50D * Math.cos(-0.87266462599716477D))); return; } } public void draw_voltage(int i, int j) { img.setColor(Color.black); img.fillRect(i, j - 20, 10, 40); img.fillRect(i + 20, j - 10, 10, 20); } 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); if(resistance1.getState()) img.drawString("R1", 150, 60); if(resistance2.getState()) img.drawString("R2", 150, 60); } 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_series() { } }