Results 1 to 11 of 11

Thread: [JAVA] Mandelbrotmengenvisualisierung

  1. #1

    [JAVA] Mandelbrotmengenvisualisierung

    Erstmal, für alle, die Mandelbrotmengen nicht kennen: Mandelbrot-Menge.

    So, und vor nicht allzu langer Zeit hat sich bei mir das Bewundern dieser Dinger mit der Erkenntnis vermischt, dass ich ohnehin eine Aufpolierung meiner Java-GUI-Kenntnisse vertragen könnte und jetzt Ferien habe - ergo habe ich mich mal drangesetzt, soetwas zu programmieren.

    Das Endergebnis werde ich sicherlich auch hier veröffentlichen, erstmal habe ich allerdings ein Problem - oder eigentlich mehrere, aber zumindest eines, bei dem ich Hilfe brauchen könnte:

    Mein bisheriger Fortschritt (aufrufen mit "java Mandelbrot", dann auf "File > New" klicken)

    Wie jeder, der sich die Mühe macht, das runterzuladen, feststellen kann, hakt es da etwas. :-/ Neben der doch recht langen Rechenzeit, mit der ich wohl leben werden muss, bis ich mich ernsthaft an einer Algorithmusoptimierung versuchen will, was noch Jahrzehnte dauern kann, und der offensichtlich fehlenden Benutzeroberfläche (z.B. zum Einstellen des Bereichs, das kann man aber auch manuell in Zeile 99 von MandelbrotWindow.java) sticht am meisten ins Auge, das das nicht wirklich so aussieht, wie's aussehen soll.

    Und nun die Preisfrage: weiß zufällig jemand, woran das liegen könnte? Ich kann mir nämlich irgendwie nichts vorstellen, dass das arme Bild so zerlegen könnte! <__<' Ich weiß btw, dass mein Code atm noch recht grausam aussieht, und dass das die Sache nicht gerade einfacher macht. :-/


    Und falls ich doch selbst draufkommen muss, kann ich den Thread immerhin noch dazu nützen, das Endergebnis zu posten. ^^'
    ...oder um eine zweite Frage zu stellen, die zwar noch nicht aktuell, aber dennoch knifflig ist:

    Weiß hier jemand, wie man ein Image-Objekt als echtes Bild (PNG, GIF, wasauchimmer) abspeichern kann?


    Besten Dank im Voraus!

  2. #2
    Hab dein Programm mal ausprobiert, das einzige Problem das ich feststellen konnte ist, dass das Bild nicht neugezeichnet wird, sobald sich was an der GUI ändert.
    Leider bin ich auch kein Java Könner .. hab deshalb mal das Bild einfach auf ein JPanel gepackt und davon die paintComponent(..) Methode überschrieben.

    Die export() Funktion hab ich auch noch schnell ausgefüllt, bin so vorgegangen wies hier beschrieben wurde:
    http://www.galileocomputing.de/openb...nsel14_008.htm

    Das leicht veränderte Programm (Bitte nicht schlagen, wegen dem Design ):
    Mandelbrot 2

    Recht interessante Sache, dein Mandelbrot, gut gemacht .

    Last edited by wry; 30.12.2006 at 19:30.

  3. #3
    Quote Originally Posted by wry View Post
    Hab dein Programm mal ausprobiert, das einzige Problem das ich feststellen konnte ist, dass das Bild nicht neugezeichnet wird, sobald sich was an der GUI ändert.
    Ja klar, ich hatte das bisher auch recht schludrig gemacht. Inzwischen habe ich das jedoch eh schon selbst behoben, das eigentliche Problem hier allerdings noch nicht: meine Mandelbrot-Diagramme sehen nicht aus wie welche, irgendwo muss ein Fehler bei der Farb-Berechnung sein. Die Frage richtet sich somit an Leute, die Java zumindest leidlich können, sich aber auch zumindest etwas in dieser Materie auskennen.
    Oder sehen die Bilder bei dir anders aus als meine? Könnte mir allerdings nicht vorstellen, warum. o_O
    Quote Quote
    Die export() Funktion hab ich auch noch schnell ausgefüllt, bin so vorgegangen wies hier beschrieben wurde:
    http://www.galileocomputing.de/openb...nsel14_008.htm
    Vielen Dank für den Link.
    Das Programmieren werde ich allerdings selbst übernehmen, schließlich hat das Ganze mehr die Übung zum Zweck, als die Erstellung des Programms.
    Quote Quote
    Das leicht veränderte Programm (Bitte nicht schlagen, wegen dem Design ):
    Mandelbrot 2
    Sieht gut aus, das mit dem Nochmalzeichnen scheinst du besser gelöst zu haben als ich. Ich werd's mir mal ansehen.
    Vielen Dank jedenfalls für die Hilfe beim Bildspeichern, auch wenn das Hauptproblem weiterhin ein Mysterium bleibt. :-/
    Quote Quote
    Recht interessante Sache, dein Mandelbrot, gut gemacht .
    Vielen Dank!

  4. #4
    Aha, dachte zuerst, dein Mandelbrot sollte so sein, hab an eine Abwandlung gedacht oder so.. sry

    Da ich deine Algorithmus-Implementierung nicht ganz verstanden habe, hab ichs spaßeshalber mal selber versucht. Leider hab ich so meine Probleme mit Complexen Zahlen und mit Mathe allgemein..
    Mir waren deswegen auch einige Parameter unklar, da hab ich dann einfach die genommen, die du verwendetet hast.
    Jedoch ist das Mandelbrot das bei mir rauskam, schon ähnlicher dem, das auch in der Wikipedia gelistet ist.

    Hier mal Bild:
    Mandel_matrix_style

    Ich kann dir deshalb nur sagen, dass bei deiner Implementierung etwas schief gelaufen ist.. aber das dürfte dich ja kaum weiterbringen
    Aber falls du mal meine Implementierung angucken willst, kann ich sie gerne posten. Kann dir sonst leider nicht helfen.

  5. #5
    Quote Originally Posted by wry View Post
    Hier mal Bild:
    Mandel_matrix_style
    Mist! >_<
    Quote Quote
    Ich kann dir deshalb nur sagen, dass bei deiner Implementierung etwas schief gelaufen ist.. aber das dürfte dich ja kaum weiterbringen
    Aber falls du mal meine Implementierung angucken willst, kann ich sie gerne posten. Kann dir sonst leider nicht helfen.
    Ja, das wusste ich ohnehin schon. :-/ Aber ja, wäre nett, wenn ich' den Teil abtippe dürfte wohl kaum was schiefegehen können. o_O Oder ich vergleich's und finde doch noch heraus, was da bei mir falsch ist.

  6. #6
    Hier noch mein Code.
    Bei den Parametern hat man halt, ohne zusätzliche Codeeingriffe, nicht viel Spielraum.

  7. #7
    Geschafft! \o/
    wry, du bist mein Held! <3 Ich habe zwar trotz deines Codes noch stundenlang herumsuchen müssen, bis ich den Fehler gefunden habe, aber ohne dich hätte ich's wahrscheinlich nie geschafft (weil ich viel zu früh frustriert aufgehört und lieber bei meinem Primzahlengenerator weitergemacht hätte <___<)! o_O''

    Und als Belohnung gibt's auch noch gleich den Fehler, damit ihr eine schöne Viertelstunde lang über meine Dummheit lachen könnt ()
    Mein Code für die Iteration:
    Code:
    x = x * x - y * y + cx;
    y = 2 * x * y + cy;
    Richtig:
    Code:
    tmp = x * x - y * y + cx;
    y = 2 * x * y + cy;
    x = tmp;
    Ich habe also, im Kürzungswahn, eine wichtige Zwischenstation vergessen und so für die Berechnung des neuen Imaginärteils schon den neuen Realteil verwendet! >_<
    Ein wirklich dummer, dummer Fehler, aber fast unmöglich ohne funktionierenden Code zu finden. :-/

    Hier übrigens der Beweis: Mandelbrotgrafik, erstellt und gespeichert mit meinem Programm ^^
    An dieser Stelle auch vielen Dank an deine super Idee mit den psychedelischen Zufallsfarben. Werde ich sicher als Option im Endprogramm anbieten. ^^

    Code poste ich jetzt nicht mehr, den gibt's dann in ein paar Tagen, wenn ich fertig bin, zusammen mit dem super Programm. ^^


    Nochmal vielen, vielen Dank, wry! ^^

  8. #8
    Hab mir kurz eines mit Hilfe von Wikipedia in Toppascal geschrieben:
    Click(also Matrix Style)
    Wie man tolle Farben hinkriegt hab ich noch nicht herausgefunden.(ausser mit Color Index, dafür bin ich aber zu faul)

    Last edited by Drakes; 01.01.2007 at 21:17.

  9. #9
    Quote Originally Posted by drunken monkey
    Und als Belohnung gibt's auch noch gleich den Fehler, damit ihr eine schöne Viertelstunde lang über meine Dummheit lachen könnt ()
    Mein Code für die Iteration:
    Von wegen Belohnung! Ich mach auch des öfteren solche Fehler, da vergeht mir das lachen schnell, wenn ich an die schauderhaften Qualen der Suche nach solchen Fehlern denke.

  10. #10
    So, ich kann nun feierlich den (erfolgreichen) Abschluss des Projekts verkünden!

    Ich habe zwar ein paar (oder sogar nur ein? ) geplante Features wegen akuter Unlust ausgelassen, aber nur, weil ich davor so viel Zeit mit dem Einbauen von Features verbracht habe, die ich mir neu ausgedacht habe. ^^''

    Ich präsentiere stolz: Mandelbrot Visualisierung (der Name haut noch nicht ganz so rein...<___<)

    Gleich mal sämtliche Negativpunkte, um mich nicht mit nervigen Kritikern rumschlagen zu müssen (): die Grenzen lassen sich nicht manuell einstellen, um einen bestimmten Bereich der komplexen Zahlen darzustellen; das Design ist, um es freundlich zu sagen, schlicht; ebenso die "Hilfe"; Speichern ist nur im PNG-Format möglich, wer's platzsparender mag muss es nachher manuell in JPG übertragen; der Sourcecode ist miserabel kommentiert und zudem noch ziemlich unübersichtlich (vor allem weil ich weggelassene Funktionen nur auskommentiert habe, um sie für interessierte andere Programmierer zu erhalten); ich habe es nicht hinbekommen, das Matrix-Farbschema von wry nachzumachen und daher nur 6 ziemlich ähnlich aussehende, plus eins mit Zufallsfarben, das schon für geringe Zoomfaktoren komplett unbrauchbar ist; ich habe es darüber hinaus anderen Programmierern (und mir selbst, wie ich draufkommen musste) so schwer wie möglich gemacht, neue Farbschemen hinzuzufügen, da man dafür mindestens 7 Stellen in verschiedenen Dateien ändern muss (von denen ich nur 4 selbst weiß o_O); und zu guter Letzt hätten es hier wohl einige in der halben Zeit besser hinbekommen. :-/

    Aber naja, Übung macht den Meister, und falls sich das jemand antun möchte würde ich gern Erweiterungen/Abwandlungen sehen. ^^'


    Auf jeden Fall viel Spaß damit, für alle, die's interessiert.

  11. #11
    Habs mir gerade runtergeladen und angeguckt, da sind jetzt ja einige neue Sachen dazugekommen
    Die ganzen Farbschemen sehen imo alle sehr gut aus. Hab jetzt ein weilchen im Mandelbrot herumgezoomt, da findet man wirklich sehr schöne Strukturen.
    Super gemacht! und dann noch die namentliche Erwähnung im About-Fensterchen *geehrtfühl* :3.
    Werd mir das Programm auf jeden Fall noch genauer anschauen.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •