Projektteil 2
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Erdbeben.java 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package de.edotzlaff.detection.detektion;
  2. import android.os.Build;
  3. import androidx.annotation.RequiresApi;
  4. import de.edotzlaff.detection.detektion.berechnung.Endpunkt;
  5. import de.edotzlaff.detection.detektion.berechnung.EndpunktVerbindung;
  6. import de.edotzlaff.detection.detektion.berechnung.EpizentrumRechnung;
  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.Objects;
  10. public class Erdbeben {
  11. public int geschwErdbeben = 1;
  12. private Epizentrum epizentrum;
  13. private EpizentrumRechnung epizentrumRechnung;
  14. private HashMap<String, Detektionssignal> nutzerDaten;
  15. public Erdbeben() {
  16. nutzerDaten = new HashMap<>();
  17. epizentrumRechnung = new EpizentrumRechnung();
  18. epizentrum = new Epizentrum();
  19. }
  20. public int addDetektionssignal(Detektionssignal detektionssignal) {
  21. nutzerDaten.put(detektionssignal.getDeviceId(), detektionssignal);
  22. return nutzerDaten.size();
  23. }
  24. public void addDetektionssignalList(ArrayList<Detektionssignal> detektionssignale)
  25. {
  26. for (int i = 0; i< detektionssignale.size(); i++)
  27. {
  28. nutzerDaten.put(detektionssignale.get(i).getDeviceId(),detektionssignale.get(i));
  29. }
  30. }
  31. @RequiresApi(api = Build.VERSION_CODES.O)
  32. public Epizentrum ermittleEpizentrum() {
  33. ArrayList<Detektionssignal> rechenListe = new ArrayList<>();
  34. nutzerDaten.forEach((key, value) -> rechenListe.add(value));
  35. //Initialisierung der Rechung - First Element mit delta r + alle möglichen EndpunktKombinationen (einfach)
  36. ArrayList<Endpunkt> berechnungsEndpunkte = epizentrumRechnung.initEndpunkte(rechenListe);
  37. ArrayList<EndpunktVerbindung> endpunktKonbinationen = epizentrumRechnung.ermittleEndpunktKonbinationen(berechnungsEndpunkte);
  38. //ToDo Vernünftiger Endpunkt überlegen bzw. bis wann abgebrochen wird -> Umzug in Berechnungs
  39. for (int i = 0; i <= 600; i++) {
  40. if (epizentrumRechnung.genuegendSchnittpunktevorhanden(endpunktKonbinationen)) {
  41. epizentrum = epizentrumRechnung.ueberpruefeObEpizentrum(endpunktKonbinationen);
  42. //ToDo set EnstehungsZeitpunkt -> (Bezugszeit, Koord, Koord, v;)
  43. if (!Objects.isNull(epizentrum)) {
  44. System.out.println("Epizentrum ermittelt");
  45. epizentrum.setEntstehungsZeitpunkt(
  46. epizentrumRechnung.berechneEntstehungsZeitpunkt(
  47. nutzerDaten.get(berechnungsEndpunkte.get(0).getNutzer()), epizentrum.getKoordinaten()));
  48. return epizentrum;
  49. }
  50. }
  51. epizentrumRechnung.erhoheRadius(berechnungsEndpunkte);
  52. }
  53. return null;
  54. }
  55. }