Ja im Prinzip ist es scheusslich, wenn man das nicht einfach direkt ausrechnen kann. Kann man das denn nicht einfach ausrechnen? Wozu Mathematik wenn sie sowas Einfaches nicht kann was im Prinzip jeder sehen kann, ohne auch nur darueber nachdenken zu muessen?
In der Praxis reicht mir Integer-Genauigkeit, und die Koordinaten gehen von 0/0 bis 255/255. Der Radius des Kreises wird voraussichtlich zwischen 2 und 15 liegen, maximal 64. (In der Praxis ist der Kreis sogar eine Ellipse, indem er zwei Radien hat.) Dazu kommt, dass es in diesem Fall sogar gut ist, wenn das Ergebnis ungenau ist.
Damit kann ich die Berechnung stark vereinfachen, indem ich anstelle des Kreises ein Rechteck annehme, innerhalb dessen der gesuchte Punkt liegen darf. Der gesuchte Punk darf innerhalb des Rechtecks liegen. Das reduziert die Anzahl der Punkte auf maximal auf 4096.
Weiterhin brauche in diesem Fall nur den 4ten, 8ten, oder vielleicht sogar nur 16ten Punkt zu berechnen, womit ich nur 1024, 512 oder sogar nur 256 Punkte zu betrachten brauche. Die Anzahl der Referenzpunkte wird voraussichtlich meistens zwischen 1 und 4, maximal 100 liegen. Leider multipliziert sich damit die Anzahl der Entfernungsbrechnungen.
Vermutlich kann man das wiederum etwas optimieren, denn fuer jeden Referenzpunkt braucht man nur einen Quadranten (vom Kreismittelpunkt aus gesehen) zu betrachten: Der von diesem Referenzpunkt am weitesten entfernte Punkt kann nur in dem Quadrant liegen, der diagonal gegenueber dem Referenzpunkt liegt. (Oder ist das ein Denkfehler?) Damit kann man die Anzahl der Entfernungsberechnungen auf ein Viertel reduzieren.
Damit bleiben fuer jeden Referenzpunkt unter Anwendung eines 16er Gitters 64 Entfernungsbrechnungen, insgesamt maximal 6400. Die Loesung wird damit vermutlich schnell genug gefunden werden. Zudem kann der Algorithmus die Genauigkeit dynamisch anpassen und ein groeberes Gitter verwenden, jenachdem, wieviele Referenzpunkte vorhanden sind.
Es ist halt einfach zu programmieren. Trotzem haette ich natuerlich lieber eine 'richtige' Loesung anstelle dieser Approximation; insbes. eine Loesung, die schneller ist. Kann man das nicht mathematisch irgendwie direkt ausrechnen?
So macht der Programmierer das. Wie macht der Matehmatiker das?