Plot-Funktion in Java

Ich Schreibe ein Programm zum zeichnen [x(t),y(t)] mit der variable t in einem bestimmten Bereich (Eingabe durch Nutzer). Bisher habe ich 3 Vektoren zu halten Werte von t, x(t) und y(t). Mein Aktueller Ansatz ist das erstellen von Vektoren der Punkte (um 1000 Punkte), dann ziehen Sie eine Linie (oder Pfad) zwischen zwei benachbarten Punkten in den Vektor. Das Ergebnis ist jedoch nicht als das, was ich erwartet hatte.

Den vollen format von den Benutzern:

Plot [x(t),y(t)] x=a..b y=a..b t=a..b where a,b are the range of x,y,t 

Beispielsweise kann der Benutzer Eingabefunktionen:

x(t) = 5*sin(3t + 5), t=-19..19
y(t) = 4*cos(2t), t=-19.19

Hier ist mein code für die Zeichnung:

public static void drawGraph(String sf, String sx, String sy, String st) {
  JFrame mygraph = new JFrame("PlotGraph v0.1");

  final Vector<Double> range_t = getRangeT(st); //get the range of t
  //create a corresponding vectors of x and y based on values of t
  final Vector<Double> range_x = getRangeX(range_t,funcX,var);
  final Vector<Double> range_y = getRangeY(range_t,funcY,var);

  //draw the graph to a JPanel, our graph is actually just a collection of points connecting 2 points
  mygraph.add(new JPanel() {


 public void paintComponent(Graphics g) {
          super.paintComponent(g);
          Graphics2D g2 = (Graphics2D) g;      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
          g2.setColor(Color.BLUE );
          g2.setStroke(new BasicStroke(1));
          GeneralPath gpx = new GeneralPath();
          GeneralPath gpy = new GeneralPath();
          for (int i=0; i<998; i++) {
            gpy.moveTo(range_t.get(i),range_y.get(i));
                  gpy.curveTo(range_t.get(i),range_y.get(i),range_t.get(i+1),range_y.get(i+1),range_t.get(i+2),range_y.get(i+2));
            gpx.moveTo(range_t.get(i),range_x.get(i));
            gpx.curveTo(range_t.get(i),range_x.get(i),range_t.get(i+1),range_x.get(i+1),range_t.get(i+2),range_x.get(i+2));

            //g2.draw(lineY);
            g2.draw(gpx);
            g2.draw(gpy);
          }
          g2.dispose(); 
        }
      });

  mygraph.setBounds(125,25,650,600);
  mygraph.setLocationRelativeTo(null);
  mygraph.setDefaultCloseOperation(mygraph.EXIT_ON_CLOSE);
  mygraph.setVisible(true);
}

Und hier ist, was ich bekomme für die 2 oben genannten Funktionen:
Plot-Funktion in Java

FRAGE: gibt es eine Möglichkeit, ich kann den plot besser (scale it up)?!

  • Ich denke, Sie werden bessere Ergebnisse erhalten (Antworten), wenn Sie tag-Ihre Frage "java"
  • Was sind die Grenzen gesetzt, die auf Ihre Zeichnung Komponente?
  • Auch könnte Sie post ein SSCCE?
  • Dass die Formatierung des Codes war, mich zu töten.
  • Sorry Jungs, ich kopiert, eingefügt, dass es von meinem editor 🙁
  • Fixed format! Ich hasse den editor SO aus
  • Die Grenzen der Zeichnung bestimmt werden, die vom Benutzer wie in meinem editierten post.

Schreibe einen Kommentar