Example #1
0
  protected void paintComponent(Graphics g) {
    int width = getWidth();

    // Paint background if we're opaque.
    if (isOpaque()) {
      g.setColor(getBackground());
      g.fillRect(0, 0, width, getHeight());
    }

    g.setColor(getForeground());

    double step = ((double) width) / fvar.getStepNumber();
    double lastX = 0;
    double newX;

    int lastY = getY(fvar.getStepValue(0));
    int newy;
    for (int i = 0; i < fvar.getStepNumber(); i++) {
      newy = getY(fvar.getStepValue(i + 1));
      newX = lastX + step;
      g.drawLine((int) lastX, lastY, (int) newX, newy);
      lastY = newy;
      lastX = newX;
    }
    if (lastX < (double) width) {
      g.drawLine((int) lastX, lastY, width, lastY);
    }
  }
Example #2
0
 /** converts the mouse's y into the corresponding value in the function's range */
 protected double realY(int mouseY) {
   if (fvar.isConstant()) return fvar.getYmax();
   int h = getHeight();
   double ymax = fvar.getYmax();
   return ymax
       + (fvar.getYmin() - ymax) * (mouseY - h * (1 - croppingFactor) * 0.5) / h / croppingFactor;
 }
Example #3
0
 /** converts some y in the fun's range into a mouse y coordinate */
 protected int getY(double y) {
   int h = getHeight();
   if (fvar.isConstant()) return (int) h / 2;
   else {
     double ymax = fvar.getYmax();
     return (int)
         ((h * (1 - croppingFactor) / 2.0)
             + h * croppingFactor * (y - ymax) / (fvar.getYmin() - ymax));
   }
 }
Example #4
0
  /**
   * Builds a top-level window from the variations of a function
   *
   * @see FunctionVariations
   */
  public CurveFrame(FunctionVariations fvar) {
    super("Curve");
    tracer = new CurveTracer(fvar);
    infos = new CurveInfos(fvar);
    controls = new CurveControls(fvar, this);

    JPanel mainPane = new JPanel(new BorderLayout());

    mainPane.add(tracer, BorderLayout.CENTER);
    mainPane.add(infos, BorderLayout.SOUTH);
    mainPane.add(controls, BorderLayout.EAST);

    tracer.addMouseListener(
        new MouseAdapter() {
          CurveFrame cf = CurveFrame.this;

          public void mouseEntered(MouseEvent e) {
            cf.infos.xmouse.setText("x = " + cf.tracer.realX(e.getX()));
            cf.infos.ymouse.setText("y = " + cf.tracer.realY(e.getY()));
            cf.infos.repaint();
          }

          public void mouseExited(MouseEvent e) {
            cf.infos.xmouse.setText("");
            cf.infos.ymouse.setText("");
            cf.infos.repaint();
          }
        });
    tracer.addMouseMotionListener(
        new MouseMotionAdapter() {
          CurveFrame cf = CurveFrame.this;

          public void mouseMoved(MouseEvent e) {
            cf.infos.xmouse.setText("x = " + cf.tracer.realX(e.getX()));
            cf.infos.ymouse.setText("y = " + cf.tracer.realY(e.getY()));
            // cf.infos.repaint();
          }

          public void mouseDragged(MouseEvent e) {
            cf.infos.xmouse.setText("x = " + cf.tracer.realX(e.getX()));
            cf.infos.ymouse.setText("y = " + cf.tracer.realY(e.getY()));
            cf.infos.repaint();
          }
        });

    fvar.tabulate(controls.currentPrecision());
    setContentPane(mainPane);
    pack();
    infos.update();
    setVisible(true);
  }
Example #5
0
 /** converts the mouse's x into some value of the considered interval. correction 29/03/1999 */
 protected double realX(int mouseX) {
   double xmin = fvar.getXmin();
   return xmin + (mouseX * (fvar.getXmax() - xmin) / getWidth());
 }