96 lines
3.1 KiB
Java
96 lines
3.1 KiB
Java
package View;
|
|
|
|
import Model.Coordinates;
|
|
import org.jfree.chart.ChartFactory;
|
|
import org.jfree.chart.ChartPanel;
|
|
import org.jfree.chart.JFreeChart;
|
|
import org.jfree.chart.axis.ValueAxis;
|
|
import org.jfree.chart.plot.PlotOrientation;
|
|
import org.jfree.chart.plot.XYPlot;
|
|
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
|
|
import org.jfree.data.xy.XYSeries;
|
|
import org.jfree.data.xy.XYSeriesCollection;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.util.LinkedList;
|
|
|
|
/**
|
|
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
|
|
*
|
|
* @Author: Armin Wolf
|
|
* @Email: a_wolf28@uni-muenster.de
|
|
* @Date: 28.05.2017.
|
|
*/
|
|
public class ArrangementDialog extends JPanel {
|
|
|
|
private LinkedList<Coordinates> lines;
|
|
private LinkedList<Coordinates> points;
|
|
private double max;
|
|
private double min;
|
|
private JFreeChart chart;
|
|
private ChartPanel panel;
|
|
private double domainMin, domainMax;
|
|
private double rangeMin, rangeMax;
|
|
|
|
public ArrangementDialog() {
|
|
super();
|
|
this.setPreferredSize(new Dimension(800, 500));
|
|
}
|
|
|
|
public void setPrameters(Double pmax, Double pmin, LinkedList<Coordinates> lines, LinkedList<Coordinates> points) {
|
|
this.max = pmax;
|
|
this.min = pmin;
|
|
this.lines = lines;
|
|
this.points = points;
|
|
this.domainMin = Double.MAX_VALUE;
|
|
this.domainMax = Double.MIN_VALUE;
|
|
this.rangeMin = Double.MAX_VALUE;
|
|
this.rangeMax = Double.MIN_VALUE;
|
|
}
|
|
|
|
public void createArrangement() {
|
|
XYSeriesCollection dataset = new XYSeriesCollection();
|
|
|
|
for (Coordinates p : lines) {
|
|
XYSeries series = new XYSeries(p.getX() + p.getY());
|
|
series.add((-1 * this.max), (((-1 * this.max) * p.getX()) + p.getY()));
|
|
series.add(this.max, ((this.max * p.getX()) + p.getY()));
|
|
dataset.addSeries(series);
|
|
}
|
|
|
|
XYSeries intersections = new XYSeries("intersections");
|
|
for (Coordinates p : points) {
|
|
domainMax = domainMax < p.getX() ? p.getX() : domainMax;
|
|
domainMin = domainMin > p.getX() ? p.getX() : domainMin;
|
|
rangeMax = rangeMax < p.getY() ? p.getY() : rangeMax;
|
|
rangeMin = rangeMin > p.getY() ? p.getY() : rangeMin;
|
|
intersections.add(p.getX(), p.getY());
|
|
}
|
|
dataset.addSeries(intersections);
|
|
|
|
chart = ChartFactory.createXYLineChart(
|
|
null, null, null, dataset,
|
|
PlotOrientation.HORIZONTAL, false, false, false);
|
|
|
|
final XYPlot plot = chart.getXYPlot();
|
|
ValueAxis domain = plot.getDomainAxis();
|
|
ValueAxis range = plot.getRangeAxis();
|
|
|
|
domain.setRange(domainMin - 1, domainMax + 1);
|
|
range.setRange(rangeMin - 1, rangeMax + 1);
|
|
plot.setBackgroundPaint(Color.WHITE);
|
|
plot.setDomainGridlinePaint(Color.white);
|
|
plot.setRangeGridlinePaint(Color.white);
|
|
|
|
final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
|
|
renderer.setSeriesLinesVisible(dataset.indexOf(intersections), false);
|
|
plot.setRenderer(renderer);
|
|
|
|
panel = new ChartPanel(chart);
|
|
this.add(panel);
|
|
}
|
|
|
|
|
|
}
|