@McDonalds-Insider:
Nun ja, wie du die Achse spiegelst, dürfte ja wohl kein Problem darstellen. Sobald du weißt, dass du dich in einer symmetrischen Zahlenebene befindest, kannst du davon ausgehen, dass auch der "grafische Inhalt" dieser Zahlenebene symmetrisch sein wird (zumindest beim Standard-Apfelmännchen z = z² + c).
Was deiner Anwendung allerdings einen gehörigen Boost verschaffen könnte, ist das Ausprogrammieren einer sogenannten Color-Guessing-Engine.
Die Idee dahinter ist folgende:
Am rechenintensivsten sind diejenigen Operationen innerhalb der Menge, die den Bailout nicht erreichen. Hier muss jedes mal bis zur Iterationsgrenze iteriert werden. Beim Standard-Apfelmännchen also die schwarze Menge - das eigentliche Apfelmännchen. Und genau das braucht am meisten Zeit.
Also gibt es folgende Möglichkeit, hier ein wenig cleverer vorzugehen: Berechne nicht jeden Punkt in der Ebene einzeln, sondern berechne nur die Eckpunkte eines größeren "Zahlennetzes". Gemeint sind damit die Punkte "drumherum", also um den Punkt in der Ebene, der untersucht werden soll, im Prinzip also eine kleine Matrix:
Quelltext
1: 2: 3:
| P11 P12 P13 P21 P22 P23 P31 P32 P33 |
Anstatt jetzt den Fokus auf P22 zu setzen, dann auf P23 usw. untersuchst du die "Randgebiete" von P22. Also in diesem Fall die Punkte P11, P13, P31 und P33. Wenn alle diese Punkte dieselbe Farbe haben (also nach genau derselben Iterationstiefe den Bailout erreichen), dann kannst du davon ausgehen, dass auch P12, P21, P22, P23 und P32 dieselbe Farbe haben werden. Wenn nicht, dann musst du die Punkte innerhalb der Matrix alle einzeln berechnen.
Die Farben werden hier also nicht alle berechnet, sondern teilweise "erraten".
Natürlich ist es möglich, dass die resultierende Grafik leichte Fehler enthält. Allerdings bringt diese Methode auch einen gehörigen Performance-Boost.
Ich habe mit dieser Hilfe einmal einen Echtzeit-Zoom in ein Apfelmännchen realisiert, der mit knappen 25 fps doch schon recht flüssig lief. Allerdings musste ich es in Assembler realisieren. Mit Delphi (besser gesagt Turbo-Pascal) war da nichts mehr zu machen...
Gruß