Как построить график функции x на сетке gui в java - PullRequest
0 голосов
/ 16 марта 2020

Я создал класс сетки ниже. Я хочу построить график функции f (x) = 1 / x, но я понятия не имею, как построить график чего-либо. Я хочу, чтобы мой драйвер запрашивал у пользователя функцию x, и я хочу, чтобы сетка GUI визуально и медленно создавала кривую, подобную тому, как графические калькуляторы функционируют на графике.

import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
public class Grid extends JPanel {
    final double spacing = 20;

public Grid() {
    setBackground(Color.WHITE);

}

private void lines(Graphics2D g2, double x1, double y1, double x2, double y2) {
    g2.draw(new Line2D.Double(x1, y1, x2, y2));

}

public void paint(Graphics g) {
    super.paint(g);
    final double width = getWidth();
    final double height = getHeight();
    final double xaxis = width / 2.0;
    final double yaxis = height / 2.0;
    final double x1 = 0;
    final double y1 = 0;
    final double x2 = width;
    final double y2 = height;

    Graphics2D g2 = (Graphics2D) g;
    g2.setColor(Color.GRAY);
    g2.setStroke(new BasicStroke(1));
    for (double x = spacing; x < width; x += spacing) {
        lines(g2, xaxis + x, y1, xaxis + x, y2);
        lines(g2, xaxis - x, y1, xaxis - x, y2);

    }

    for (double y = spacing; y < height; y += spacing) {
        lines(g2, x1, yaxis + y, x2, yaxis + y);
        lines(g2, x1, yaxis - y, x2, yaxis - y);

    }

    g.setColor(Color.BLACK);
    g2.setStroke(new BasicStroke(2));
    g2.draw(new Line2D.Double(x1, yaxis, x2, yaxis));
    g2.draw(new Line2D.Double(xaxis, y1, xaxis, y2));

}

public static void main(String args[]) {

    JFrame window = new JFrame("Grid");
    window.add(new Grid());
    window.setVisible(true);
    window.setSize(600, 600);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

}
...