123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package de.edotzlaff.detection.detektion;
-
-
- import android.os.Build;
- import androidx.annotation.RequiresApi;
- import de.edotzlaff.detection.detektion.berechnung.Endpunkt;
- import de.edotzlaff.detection.detektion.berechnung.EndpunktVerbindung;
- import de.edotzlaff.detection.detektion.berechnung.EpizentrumRechnung;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Objects;
-
-
- public class Erdbeben {
-
- //ToDO anpassen an Szenario umso mehr umso wahrscheinlich ein Ergebnis, oder Abbruchbedingung mit do while
- public static final Integer SCHLEIFENDURCHLAUFTE = 400;
-
-
- private Epizentrum epizentrum;
- private EpizentrumRechnung epizentrumRechnung;
- private HashMap<String, Detektionssignal> nutzerDaten;
-
- public Erdbeben() {
-
- nutzerDaten = new HashMap<>();
- epizentrumRechnung = new EpizentrumRechnung();
- epizentrum = new Epizentrum();
- }
-
- public int addDetektionssignal(Detektionssignal detektionssignal) {
- nutzerDaten.put(detektionssignal.getDeviceId(), detektionssignal);
- return nutzerDaten.size();
- }
-
- public void addDetektionssignalList(ArrayList<Detektionssignal> detektionssignale)
- {
- for (int i = 0; i< detektionssignale.size(); i++)
- {
- nutzerDaten.put(detektionssignale.get(i).getDeviceId(),detektionssignale.get(i));
- }
- }
-
- @RequiresApi(api = Build.VERSION_CODES.O)
- public Epizentrum ermittleEpizentrum() {
-
- ArrayList<Detektionssignal> rechenListe = new ArrayList<>();
- nutzerDaten.forEach((key, value) -> rechenListe.add(value));
- //Initialisierung der Rechung - First Element mit delta r + alle möglichen EndpunktKombinationen (einfach)
- ArrayList<Endpunkt> berechnungsEndpunkte = epizentrumRechnung.initEndpunkte(rechenListe);
- ArrayList<EndpunktVerbindung> endpunktKonbinationen = epizentrumRechnung.ermittleEndpunktKonbinationen(berechnungsEndpunkte);
-
- //ToDo Vernünftiger Endpunkt überlegen bzw. bis wann abgebrochen wird -> Umzug in Berechnungs
- for (int i = 0; i <= SCHLEIFENDURCHLAUFTE; i++) {
- if (epizentrumRechnung.genuegendSchnittpunktevorhanden(endpunktKonbinationen)) {
- epizentrum = epizentrumRechnung.ueberpruefeObEpizentrum(endpunktKonbinationen);
- //ToDo set EnstehungsZeitpunkt -> (Bezugszeit, Koord, Koord, v;)
- if (!Objects.isNull(epizentrum)) {
- System.out.println("Epizentrum ermittelt");
- epizentrum.setEntstehungsZeitpunkt(
- epizentrumRechnung.berechneEntstehungsZeitpunkt(
- nutzerDaten.get(berechnungsEndpunkte.get(0).getNutzer()), epizentrum.getKoordinaten()));
- return epizentrum;
- }
- }
- epizentrumRechnung.erhoheRadius(berechnungsEndpunkte);
- }
- return null;
- }
-
- }
|