Example #1
0
  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();
  }