Hi, ich möchte ein optimiertes Verfahren für folgende Aufgabe finden:
Später spielt sich das Ganze im 3-dimensionalen Raum ab, zum Verständnis tut es ein 2-dimensionaler Raum allerdings auch. Ich habe also ein Koordinatensystem (später in alle Richtungen) mit verschiedenen Rechtecken, die sich auch überlappen können. Die Rechtecke (Regionen auf meinem Feld) sind definiert durch ihren kleinsten Punkt (also dem Eckpunkt, der dem Ursprung am nächsten ist) und den jeweils gegenüberliegenden Punkt.
Es gibt locker 100-200 Regionen und 300-500 Mal pro Sekunde muss geprüft werden, ob eine Koordinate in einer Region vorhanden ist.
Minimiert werden soll die Zeit für die Ausführung, was vorher alles an Arbeit anfällt ist egal.
Meine einzige Lösung bisher war die, dass ich alle Regionen für die jeweiligen Koordinaten pro Wert (minX, maxX, minY, maxY) jeweils in eine geordnete Datenstruktur eingefüge, sodass ich zumindestens alle ausschließe, die darüber liegen. Trotzdem werden eigentlich unnötige Rechnungen durchgeführt, nämlich von Regionen, die eigentlich schon vorher ausgeschieden sind. Um das zu vermeiden wäre es meiner Ansicht nach nötig, zur Laufzeit eine Art Liste mit Kandidaten zu erstellen, allerdings kommen mir dann langsam die Zweifel, ob ich im Endeffekt nicht mehr Arbeit verursache als ich einspare.
Umgesetzt werden soll dies in Java. Vielleicht hat jemand eine gute Idee mit Erklärungen auf Lager