public Capacitor2() { super(); title = "Capacitor2"; setID("Capacitor2"); // Building the world. setDamping(0.02); setGravity(new Vector3d(0., 0., 0.)); // theEngine.setShowTime(true); setDeltaTime(0.25); setBoundingArea(new BoundingSphere(new Point3d(), 16)); mDLIC = new FieldConvolution(); mDLIC.setSize(new Dimension(512, 512)); mDLIC.setComputePlane(new RectangularPlane(new BoundingSphere(new Point3d(), 18))); // Creating components. // -> Positive-end Conductor RectangularBox conductor1 = new RectangularBox(); conductor1.setPosition(plate1_position); conductor1.setOrientation(new Vector3d(1., 0., 0.)); conductor1.setNormal(new Vector3d(0., 1., 0.)); conductor1.setLength(plate_length); conductor1.setWidth(plate_width); conductor1.setHeight(plate_height); Collection<Wall> walls1 = conductor1.getWalls(); Iterator<Wall> it = walls1.iterator(); while (it.hasNext()) { Wall wall = (Wall) it.next(); wall.getCollisionController().setTolerance(0.1); } addElements(walls1); // -> Negative-end Conductor RectangularBox conductor2 = new RectangularBox(); conductor2.setPosition(plate2_position); conductor2.setOrientation(new Vector3d(1., 0., 0.)); conductor2.setNormal(new Vector3d(0., 1., 0.)); conductor2.setLength(plate_length); conductor2.setWidth(plate_width); conductor2.setHeight(plate_height); Collection<Wall> walls2 = conductor2.getWalls(); it = walls2.iterator(); while (it.hasNext()) { Wall wall = (Wall) it.next(); wall.getCollisionController().setTolerance(0.1); } addElements(walls2); // -> Point Charges addChargesToList1(N); addChargesToList2(N); // -> Text fields and labels. plate1Number_label = new JLabel("Plate 1 - Number of charges: "); plate1Number_label.setPreferredSize( new Dimension(labelWidth, plate1Number_label.getPreferredSize().height)); plate1Number_label.setHorizontalAlignment(SwingConstants.LEFT); // guiElements.add(plate1Number_label); plate1Number = new JTextField(); plate1Number.setColumns(4); plate1Number.setHorizontalAlignment(SwingConstants.RIGHT); plate1Number.setText(String.valueOf(N)); plate1Number.addActionListener(this); // guiElements.add(plate1Number_label); UIPanel Plate1Panel = new UIPanel(); Plate1Panel.add(plate1Number_label); Plate1Panel.add(plate1Number); // guiElements.add(plate1Panel); plate1Charge_label = new JLabel("Individual particle charge: "); plate1Charge_label.setPreferredSize( new Dimension(labelWidth, plate1Charge_label.getPreferredSize().height)); plate1Charge_label.setHorizontalAlignment(SwingConstants.LEFT); plate1Charge = new JTextField(); plate1Charge.setColumns(4); plate1Charge.setHorizontalAlignment(SwingConstants.RIGHT); plate1Charge.setText(String.valueOf(pc_charge)); plate1Charge.addActionListener(this); UIPanel plate1ChargePanel = new UIPanel(); plate1ChargePanel.add(plate1Charge_label); plate1ChargePanel.add(plate1Charge); // guiElements.add(plate1ChargePanel); plate2Number_label = new JLabel("Plate 2 - Number of charges: "); plate2Number_label.setPreferredSize( new Dimension(labelWidth, plate2Number_label.getPreferredSize().height)); plate2Number_label.setHorizontalAlignment(SwingConstants.LEFT); plate2Number = new JTextField(); plate2Number.setColumns(4); plate2Number.setHorizontalAlignment(SwingConstants.RIGHT); plate2Number.setText(String.valueOf(N)); plate2Number.addActionListener(this); UIPanel Plate2Panel = new UIPanel(); Plate2Panel.add(plate2Number_label); Plate2Panel.add(plate2Number); // guiElements.add(plate2Panel); plate2Charge_label = new JLabel("Individual particle charge: "); plate2Charge_label.setPreferredSize( new Dimension(labelWidth, plate2Charge_label.getPreferredSize().height)); plate2Charge_label.setHorizontalAlignment(SwingConstants.LEFT); plate2Charge = new JTextField(); plate2Charge.setColumns(4); plate2Charge.setHorizontalAlignment(SwingConstants.RIGHT); plate2Charge.setText(String.valueOf(-pc_charge)); plate2Charge.addActionListener(this); UIPanel plate2ChargePanel = new UIPanel(); plate2ChargePanel.add(plate2Charge_label); plate2ChargePanel.add(plate2Charge); // guiElements.add(plate2ChargePanel); ControlGroup controls = new ControlGroup(); controls.setText("Parameters"); controls.add(Plate1Panel); controls.add(plate1ChargePanel); controls.add(Plate2Panel); controls.add(plate2ChargePanel); addElement(controls); VisualizationControl vizPanel = new VisualizationControl(); vizPanel.setConvolutionModes(DLIC.DLIC_FLAG_E | DLIC.DLIC_FLAG_EP); vizPanel.setFieldConvolution(mDLIC); addElement(vizPanel); addActions(); theScene.setFogEnabled(true); resetCamera(); theScene.setFogTransformFrontScale(0.0); // mViewer.setFogTransformBackScale(0.02); // initFogTransform() needs to be called in the constructor after resetCamera() if a non-default // camera // position is being used. // initFogTransform(); mSEC.start(); }