График линейных уравнений Java Draw внутри JFrame

У меня есть школьное задание для CompSci, где нам нужно создать график для линейных уравнений. Этот график должен иметь нарисованные оси, и он должен иметь две линии, которые нарисованы из двух уравнений. У меня сам график работает правильно, но я не могу понять, как правильно установить координаты линий. В настоящее время я использую следующий код для создания и отправки координат на мой график:

    m.print("Slope as decimal: ");
    //gets slope of line. This will be changed so it will accept fractions like Rise/Run but not until the rest of the functionality works.
    double lslope = m.readDouble();
    //gets y intercept as B
    m.print("B as decimal: ");
    double lb = m.readDouble();

    //corresponds to the first coordinate
    double x11=0;
    double y11 = lslope*x11-lb*50;

    //corresponds to the second coordinate
    double x21=1000;
    double y21 = lslope*x21-lb*50;

    //outputs the coordinates of the two points just for the user's conveinience
    m.println(""+x11+"\n"+y11+"\n"+x21+"\n"+y21);

    //wingraph is a JFrame
    wingraph graph = new wingraph("Graph");
    graph.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    graph.setSize(1000,1000);
    graph.setResizable(false);

    //the second set of 4 numbers will be a second line, but to get the graph working I'm just focusing on using one set. The setCoords method just sets the value of 8 coordinates inside a JFrame class which paints the X and Y axis in black, and then paints two lines with the specified coordinates in red.
    graph.setCoords(x11, y11, x21, y21, 1000,1000,1000,1000);

    //displays the graph
    graph.setVisible(true);

Перевернув наклон, введенный пользователем, я могу заставить линию работать правильно, но только если lslope равно 1. Как я мог бы правильно манипулировать целыми числами, чтобы мой график хорошо отображался независимо от того, имеет ли наклон десятичные числа, какое-либо действительное число, положительное или отрицательное?

Если это поможет, код для JFrame, который я использую:

    public class wingraph extends JFrame{

        public wingraph(String title){
            super(title);
            setLayout(new FlowLayout());
        }
        double xCoord1 = 0, yCoord1 = 0, xCoord2 = 0, yCoord2 = 0, xCoord12 = 0, yCoord12 = 0, xCoord22 = 0, yCoord22 = 0;
        public void setCoords(double x1, double y1, double x2, double y2, double x12, double y12, double x22, double y22){
            xCoord1 = x1;
            yCoord1 = y1;
            xCoord2 = x2;
            yCoord2 = y2;
            xCoord12 = x12;
            yCoord12 = y12;
            xCoord22 = x22;
            yCoord22 = y22;
        }        
        public void paint(Graphics g){
            g.setColor(Color.WHITE);
            g.fillRect(0, 0, this.getWidth(), this.getHeight());
            g.setColor(Color.BLACK);
            g.drawLine(this.getWidth()/2, 0, this.getWidth()/2, this.getHeight());
            g.drawLine(0, this.getHeight()/2, this.getWidth(), this.getHeight()/2);
            g.drawString("0",this.getWidth()/2-10,this.getHeight()/2-5);
            g.setColor(Color.red);
            g.drawLine((int) xCoord1,(int) yCoord1,(int) xCoord2,(int) yCoord2);
            g.drawLine((int) xCoord12,(int) yCoord12,(int) xCoord22,(int) yCoord22);
        }
}

Любая помощь приветствуется.

редактировать

Примеры выполнения моего кода:

https://ibb.co/mVGFff

https://ibb.co/iMwbmL

https://ibb.co/mD080f

https://ibb.co/ezNct0

Все они имеют проблемы, так как мне нужно, чтобы они были все центрированы на оси и в правильном формате, таком как:

https://ibb.co/cWstY0

https://ibb.co/goi0D0

Я прошу прощения, если это все еще неясно, но я новичок в Java, и я не настолько хорошо знаком с тем, как объяснить, что именно я хочу, кроме как построить 2 строки с помощью уравнения y = mx + b на декартовой плоскости.

Редактировать 2

Если пользователь вводит 1 для lslopeи 0 для bЯ хочу, чтобы переменные x и y были:

    x11 = 0;
    y11 = 1000;
    x21 = 1000;
    y21 = 0;

Если lslope = 2 а также b = 5 Я хочу, чтобы переменные x и y были:

    x11 = 0
    y11 = 745;
    x21 = 1000;
    y21 = 245;

Если lslope = -1 а также b = 10 Я хочу, чтобы переменные x и y были:

    x11 = 0
    y11 = 240;
    x21 = 1000;
    y21 = 740;

0 ответов

Другие вопросы по тегам