diff --git a/Aufgabe4/Plotter.java b/Aufgabe4/Plotter.java new file mode 100644 index 0000000000000000000000000000000000000000..f9bedbdb65c350e674a97b0d0a6d4dee2e990210 --- /dev/null +++ b/Aufgabe4/Plotter.java @@ -0,0 +1,93 @@ +import javax.swing.SwingUtilities; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.BorderFactory; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.event.MouseEvent; +import java.awt.event.MouseAdapter; +import java.awt.geom.Line2D; +import java.util.Arrays; + +public class Plotter { + + + public static void plot(ValuesToDraw valuesToDraw) { + + + SwingUtilities.invokeLater(new Runnable() { + + public void run() { + createAndShowGUI(valuesToDraw); + } + + }); + } + + + + public static void createAndShowGUI(ValuesToDraw valuesToDraw) { + + JFrame f = new JFrame("Function Plotter"); + f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + f.add(new PlotterPanel(valuesToDraw)); + f.pack(); + f.setVisible(true); + + } +} + +class PlotterPanel extends JPanel { + + final int ZERO_POINT_X = 400; + final int ZERO_POINT_Y = 300; + + ValuesToDraw valuesToDraw; + + + PlotterPanel(ValuesToDraw valuesToDraw) { + this.valuesToDraw = valuesToDraw; + } + + + public Dimension getPreferredSize() { + return new Dimension(800,600); + } + + protected void paintComponent(Graphics g) { + super.paintComponent(g); + + + g.drawLine(400, 0, 400, 600); + g.drawLine(0, 300, 800, 300); + + + int[] xCords = valuesToDraw.getXCords(); + int[] yCords = valuesToDraw.getYCords(); + + System.out.println(Arrays.toString(xCords)); + + int[] xCordsFromZeroPoint = new int[41]; + int[] yCordsFromZeroPoint = new int[41]; + + + for(int i = 0; i < 41; i++) { + xCordsFromZeroPoint[i] = xCords[i] + ZERO_POINT_X; + } + + for(int i = 0; i < 41; i++) { + yCordsFromZeroPoint[i] = yCords[i] + ZERO_POINT_Y; + } + + + + g.drawPolyline(xCordsFromZeroPoint, yCordsFromZeroPoint, 21); + + + } + + +} + + diff --git a/Aufgabe4/SwingPaintDemo3.java b/Aufgabe4/SwingPaintDemo3.java index 2fdf3f39ca246ad8e362aea1639eccdfe53f1fe3..6df66efc8dec867574aa28710495931a9f653f1a 100644 --- a/Aufgabe4/SwingPaintDemo3.java +++ b/Aufgabe4/SwingPaintDemo3.java @@ -109,4 +109,6 @@ class MyPanel extends JPanel { g.setColor(Color.BLACK); g.drawRect(squareX,squareY,squareW,squareH); } + + } diff --git a/Aufgabe4/ValuesToDraw.java b/Aufgabe4/ValuesToDraw.java new file mode 100644 index 0000000000000000000000000000000000000000..ace35f7f0295992bf29f52859189312e16869a3f --- /dev/null +++ b/Aufgabe4/ValuesToDraw.java @@ -0,0 +1,28 @@ +import java.util.ArrayList; + +public class ValuesToDraw { + + private ArrayList<int[]> xCordArrays; + + int i = 0; + + ValuesToDraw(ArrayList<int[]> xCordArrays) { + this.xCordArrays = xCordArrays; + + } + + public int[] getXCords() { + + return xCordArrays.get(i++); + + } + + public int[] getYCords () { + + return new int[]{-20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, + -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; + + } + +} diff --git a/Aufgabe4/main.java b/Aufgabe4/main.java index 4aac734df56a343d1102a4ef2f683b561906ac57..b56a7caa05e60b2dd5f07ef1980a3f3c715c2af2 100644 --- a/Aufgabe4/main.java +++ b/Aufgabe4/main.java @@ -8,6 +8,11 @@ public class main { public static void main(String[] args) throws IOException { + + + + + // values above integer space will produce errors ArrayList<String> stringsFromFile = new ArrayList<>(); @@ -57,17 +62,32 @@ public class main { Evaluator e = new Evaluator(); + ArrayList<int[]> arraysOfXValues = new ArrayList<>(); + for(AstExpression astExpression : rootAstExpressions) { + int[] xCords = new int[41]; + + int j = 0; + for(int i = -20; i < 21; i++) { e.setCounter(i); + + xCords[j] = (int) e.visit(astExpression); + System.out.println(e.visit(astExpression)); + j++; } + arraysOfXValues.add(xCords); + System.out.println("------------"); } + ValuesToDraw valuesToDraw = new ValuesToDraw(arraysOfXValues); + + Plotter.plot(valuesToDraw); //printAst(result); diff --git a/out/production/inf3_git/main.class b/out/production/inf3_git/main.class index 30c986cdc3065702569085f00fe7a7ea4446b4c2..3623c2b8f2866a0612ae6e474e1cc569363d8d5a 100644 Binary files a/out/production/inf3_git/main.class and b/out/production/inf3_git/main.class differ