Hi Ted 
Ich habe eben mal etwas
darüber nachgedacht und bin auf zwei
Ideen gekommen:
Ja, dann lass mich mal nicht doof sterben 
- Die Polygonzüge sind nicht nur einfach
zusammenhängend, sondern
bogenzusammenhängend. Wenn Du also einen
beliebigen inneren Punkt des Polygonzugs
kennst, so existiert ein Polygonzug zu
dem zu prüfenden Punkt, welcher ganz in
dem geschlossenen Polygonzug liegt, ergo
keine Kante schneidet, was leicht zu
überprüfen ist.
Einleuchtend trivial klar!
Das eigentliche Problem
liegt im Auffinden dieses Polygonzugs,
wobei jedoch die Tatsache hilft, dass es
auch immer einen achsenparallelen
Polygonzug zwischen den Punkten gibt.
Im Moment fällt mir nicht ein, warum dies nicht so sein sollte. Also glaube ich dir das erstmal.
Dieses könnte man über Backtracking
ermitteln, jedoch sind diese Algorithmen
von stark wachsender Zeitkomplexität.
Zeit habe ich in Massen. Es geht eigentlich darum, in einem Polygon-Haufen dasjenige Polygon heruas zu finden, in das mit der Maus geklickt wurde. Allerdings ist Backtracking natürlich sehr langsam und bei fast 10000 zu überprüfenden Polygonen, könnte selbst der Mirco$oft-erprobte Anwender etwas unruhig werden …
- Aus der Endlichkeit der Punktmenge im
Rechner ist mir dann eine neue Idee
gekommen, deren Realisierbarkeit von der
Größe der Polygone abhängt. Zunächst
speicherst Du alle Randpunkte in einem
Array ab, wobei es nicht verkehrt ist,
wenn Du hashst oder wenigstens
logarithmisches suchen realisiert.
Ja gut, das wäre kein Problem …
Und nun zahlt sich aus, dass ich mal auf
einem DOS-Rechner Minesweeper
nachprogrammiert habe. Es ist sehr
einfach, eine rekursive Funktion zu
schreiben, welche, ausgehend von einem
Punkt (z.B Knoten) alle inneren Punkte
des Polygonzug ermittelt und abspeichert.
Dieses Array durchsuchst Du dann nach
Deinem Punkt. Das kann bei großen Flächen
aber auch schnell zeitkritisch werden.
Sehe ich auch so. Dürfte in der Praxis nur schwer umsetzbar sein. Vielleicht in 20 Jahren, wenn wir den Terra-Hertz-Prozessor haben …
Wenn es auch sicher nicht das Optimum
ist, vielleicht konnte ich Dich
wenigstens auf ein Paar Ideen bringen.
Ja, hat es. Ich werde am Wochenende mal darüber nachdenken …
PS.: Die Aufgabe kommt mir so vor, als
würde sie an jeder Ecke gebraucht. Hast
Du in Büchern über Computergrafik nichts
passendes gefunden?
An jeder Ecke wird ja auch der von mir beschriebene Standard-Algorithmus verwendet. Die kleinen Fehler werden dabei anscheinend in Kauf genommen …
cu Stefan.