Hallo!
Im Prinzip ist das Problem schnell erklärt. Ich brauche einen Algorithmus, der mir zu einer gegebenen Position (Mauszeiger) das Objekt (java.awt.Shape) liefert, dass diesen Punkt beinhaltet.
Für "wenige" Objekte ist das recht einfach - Shapes liefern die Methode contains() ja schon mit.
Allerdings soll das auch mit 10.000 und mehr Objekten klappen - und da kann ich mir dann nicht mehr vorstellen, dass ein durchlaufen und suchen die effektivste Möglichkeit ist.
Die meisten Shapes sind Circles, zu denen ich also einen Mittelpunkt habe. Im Prinzip ist mein Problem also ähnlich dem Problem, den Punkt aus einer gegebenen Menge M mit dem geringsten Abstand zu einem ebenfalls gegebenen Punkt A zu bestimmen.
Da studiert man nun seit 4,5 Jahren Mathematik und Informatik und findet nicht einen vernünftigen Ansatz :-/
Eine erste Idee war, eine HashMap mit x-Koordinate als Key zu nehmen. Aber da eine Hashfunktion naturgemäß sehr breit streut, kann ich damit auch nichts anfangen - schließlich muss ich den betreffenden Shape auch finden, wenn ich knapp neben den Mittelpunkt klicke... Und eine vernünftige Sortierung fällt mir leider auch nicht ein :-/
Danke für Vorschläge
Robert
Im Prinzip ist das Problem schnell erklärt. Ich brauche einen Algorithmus, der mir zu einer gegebenen Position (Mauszeiger) das Objekt (java.awt.Shape) liefert, dass diesen Punkt beinhaltet.
Für "wenige" Objekte ist das recht einfach - Shapes liefern die Methode contains() ja schon mit.
Allerdings soll das auch mit 10.000 und mehr Objekten klappen - und da kann ich mir dann nicht mehr vorstellen, dass ein durchlaufen und suchen die effektivste Möglichkeit ist.
Die meisten Shapes sind Circles, zu denen ich also einen Mittelpunkt habe. Im Prinzip ist mein Problem also ähnlich dem Problem, den Punkt aus einer gegebenen Menge M mit dem geringsten Abstand zu einem ebenfalls gegebenen Punkt A zu bestimmen.
Da studiert man nun seit 4,5 Jahren Mathematik und Informatik und findet nicht einen vernünftigen Ansatz :-/
Eine erste Idee war, eine HashMap mit x-Koordinate als Key zu nehmen. Aber da eine Hashfunktion naturgemäß sehr breit streut, kann ich damit auch nichts anfangen - schließlich muss ich den betreffenden Shape auch finden, wenn ich knapp neben den Mittelpunkt klicke... Und eine vernünftige Sortierung fällt mir leider auch nicht ein :-/
Danke für Vorschläge
Robert