@kuhlthomas: wenn Du noch nie mit Arrays gearbeitet hast, wie speicherst Du denn momentan die 100 Punkte? Naja, in den Tutorials gibt es auch ein Tutorial zu den Grundlagen von Arrays.
Okay. Nochmal neu. Nehmen wir an, wir haben Punkte p1 bis p100, deren x- und y-Position wir mit p.x und p.y ansprechen. Ganz am Anfang, wenn die Punkte erstellt werden, speicherst Du sie in zwei Arrays. (Nur in einem Array den Konstruktor aufrufen, im anderen nur Referenzen speichern.)
In dem einen Array sortierst Du die Punkte nach den x-Koordinaten. Punkte mit kleinen x-Koordinaten am Anfang, Punkte mit großen x-Koordinaten am Ende. In dem anderen Array machst Du das Gleiche mit den y-Koordinaten.
Ein Beispiel:
wir haben folgende Punkte: p1 = (1,1); p2 = (1,4); p3 = (3,2); p4 = (3,3) p5 = (4,1)
dann sind sie in dem ersten Array so sortiert: p1 p2 p3 p4 p5
und in dem zweiten Array: p1 p5 p3 p4 p2
Wenn Du jetzt wissen willst, mit welchen Punkt p4 kollidiert, musst Du nur die Punkte prüfen, die in beiden Arrays in der unmittelbaren Umgebung von p4 sind. Es gibt nur einen Punkt, der dieses Kritierium erfüllt: p3. Du musst also nur prüfen, ob p4 mit p3 kollidiert.
Wenn sich nun die Position eines Punktes ändert, dann musst Du die Arrays nicht völlig neu sortieren (das wäre zu langsam), sondern den betreffenden Punkt in beiden Arrays nur ein bisschen verschieben, was recht schnell gehen sollte.
Ich hoffe, es ist jetzt klarer geworden, was ich meine.
MfG,
Peter
//edit: p5 von (4,4) auf (4,1) korrigiert.
_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".