diff --git a/src/main/java/Presenter/Algorithms/TheilSenEstimator.java b/src/main/java/Presenter/Algorithms/TheilSenEstimator.java index 9ad9a2e..3f4a767 100644 --- a/src/main/java/Presenter/Algorithms/TheilSenEstimator.java +++ b/src/main/java/Presenter/Algorithms/TheilSenEstimator.java @@ -49,6 +49,8 @@ public class TheilSenEstimator extends Observable implements Algorithm { private Double slope; private Double yInterception; + private final Double EPSILON = 0.00001; + public TheilSenEstimator(LinkedList setOfLines, LinkedList setOfIntersections, Presenter presenter) { this.presenter = presenter; @@ -88,7 +90,7 @@ public class TheilSenEstimator extends Observable implements Algorithm { interval = new Interval(NEGATIV_INF, POSITIV_INF); r = (double) n; while (true) { - if (this.N <= n || (interval.getUpper() - interval.getLower()) < 0.00001) { + if (this.N <= n || (interval.getUpper() - interval.getLower()) < EPSILON) { break; } else { //Anzahl der Schnittpunkte im Intervall [-Inf, a) diff --git a/src/main/java/Presenter/Generator/DatasetGenerator.java b/src/main/java/Presenter/Generator/DatasetGenerator.java index f6650a2..32bdb05 100644 --- a/src/main/java/Presenter/Generator/DatasetGenerator.java +++ b/src/main/java/Presenter/Generator/DatasetGenerator.java @@ -2,6 +2,8 @@ package Presenter.Generator; import Model.Line; +import Model.Point; +import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.Observable; @@ -77,10 +79,10 @@ public class DatasetGenerator extends Observable{ } } - int idx = 1; + int idx = lines.size(); for (Double d :points.keySet()) { Line line = new Line((double) d, points.get(d)); - line.setId(idx-1+""); + line.setId(idx+""); lines.add(line); idx++; } @@ -93,5 +95,35 @@ public class DatasetGenerator extends Observable{ return lines; } + + public LinkedList generateCircle() { + LinkedList lines = new LinkedList<>(); + + double from = 0; + double to = Math.PI * 3; + int n = 100; + + //calculate the distance between every two points + double distance = (to - from) / ((double) n); + + //create points + double currentDistance= from; + for(int i=0; i < n; i++) + { + double x = Math.cos(currentDistance); + double y = Math.sin(currentDistance); + + + Line line = new Line(x,y); + line.setId(i+""); + lines.add(line); + + //distance for the next iteration + currentDistance += distance; + } + + return lines; + } + } diff --git a/src/main/java/Presenter/Presenter.java b/src/main/java/Presenter/Presenter.java index 15c519f..47cb4bc 100644 --- a/src/main/java/Presenter/Presenter.java +++ b/src/main/java/Presenter/Presenter.java @@ -294,7 +294,7 @@ public class Presenter implements Observer { generatorThread = new Thread(() -> { DatasetGenerator generator = new DatasetGenerator(); generator.addObserver(this); - getModel().setLines(generator.generateDataLines()); + getModel().setLines(generator.generateCircle()); calculateIntersections(); getView().enableFunctionality(); });