![]() |
Buddhabrot
Liste der Anhänge anzeigen (Anzahl: 1)
Es ist noch kein fertiges Programm was ich euch hier Präsentieren möchte, es sind eher Codeschnipsel mit nem schnell gebastelten Programm zusammen!
Und zwar geht es um die Buddhabrotmenge...(nicht Butterbrot) Es ist ein Fraktal(denke ich zumidest, ist ja schwer zu definieren) Hier estmal ein paar Bilder wie das aussieht: ![]() ![]() ![]() ![]() ![]() Den Namen hat es wegen seiner Buddha ähnlichen Form. Also ich finde das recht cool. So erstmal zum Buddhabrot, es hat was mit der Mandelbrotmenge zu tun, wie man glaub ich sehen kann. Und zwar ist die Buddhabrotmenge sowas wie eine Karte der Punkte C der Mandelbrotmenge die Divergieren(d.h. nicht zur Menge gehören). Als erstes sucht man sich ein zufälliges C, danach lässt man dieses C den Mandelbrotmengen Algorithmus durchlaufen, wenn das C nach N Iterationen noch zur Menge gehört, wird ein neues C gesucht und von vorne gestartet, wenn das C aber nicht dazu gehört, wird die Iteration wiederholt, und alle Atraktoren, die Punkte die z anspring( z = z² + c) werden markiert, bzw. das array an dieser Stelle wird um 1 erhöht. Leider entstehen erst brauchbare Bilder wenn man dies sehr oft tut. Bei ca 5 Millionen Iterationen des Hauptalgorithmus, also nicht von der Mandelbrotmenge entsteht ein brauchbares schwarz/weiß Bild. Wenn man jetzt noch gern ein farbiges Bild hätte benötigt man gleich 3 Arrays (r, g, b). Für farbige Bilder sind Fluchtiterationen(die Iterationen der Mandelbrotmenge) deutlich höher zu setzen als für schwarz/weiß Bilder. Bsp.: 10000 Fluchtiteratioen, wenn der Punkt C unter 100 Iterationen divergiert gehört er zum Rot teil der Menge und das Rot array wird erhöht. Wenn C unter 1000 und über 100 Iterationen divergiert gehört C zum Gelb teil und das Gelb array wird erhöht. Und das Blaue bei 10000 und > 1000. Anschließend wird nur noch duch ein einfaches verfahren die arrays als r, g, b Teil eines Bildes dargestellt. Für grobe Bilder wie Bild3 oder Bild2 kann man mit einer Rechenzeit von ca 10-20 Minuten rechnen(AMD 3000+) mit Bildern wie Bild 1 muss man schon mit 1,5 Stunden Rechenzeit rechnen. Und das Bild was ich zur Zeit berechne ist schon seit 3 Stunden am Rendern (und noch nichtmal uir hälfte fertig). Naja ihr könnt euch ja mal den Code anschauen, ich habe noch andere Färbeversuche jetzt im Programm, diese sollten aber kein Problem sein wegzudenken! |
Re: Buddhabrot
Ich hab mal den Code Geguckt..
Geiles Teil ;) Aber wenn du die Progressbar rausnimmst, wird es Deutlich (!) Schneller ;) |
Re: Buddhabrot
Ich könnte sonst mal meinen 2 PC Ein richtig grosses Teil Rechnen lassen, wenn du mir die Werte sagst, die ich Eingeben soll ;)
|
Re: Buddhabrot
hmm ja wenn die Progressbar raus ist weiß ich aber net wie weit ich bin, kann ganz schön doof sein sag ich dir!
Hmm also ich mache gerade mit 500000000 Buddhaiterationen und 10000 Fluchtiterationen und ab 20 iterationen soll aufgemalt werden! Bin jetzt ca. bei der Hälfte. Bin echt gespannt was da noch so rauskommt! Ich bin mir auch nicht sicher ob die Progressbar mir nicht alles versaut weil die kann ja glaub ich nur interger und ich hab ja einfach ganz braun auf int64 gesetzt. Nicht das mir das gleich wegen dem ollen Ding abnippelt.(und das tollste ist wenn das autodefrag anspring und meint die CPU gehöre ihm ganz alleine, dann ist es langsam, aber der ganze PC da musste es erstmal schaffen eins von beiden zu killen!) Ich hab schon überlegt so ne art Net-Render zu bauen damit ich mehrere PC's gleichzeitig rendern lassen kann... Ein PC gibt die C's vor und die andern rechnen sie aus, aber da kümmer ich mich rum fals ich die Farbgebung so hinbekomme wie ich das gern hätte. |
Re: Buddhabrot
Und morgen mach ich mal das Gegenteil, da zeichne ich auf diese Art mal alle Punkte die dazugehören auf. Da solle ja ne mandelbrotmengen ähnliches gebilde rauskommen. Nur das auf dem Mandelbrotkörper große Ballungsräume sein müssen. Ich hab noch nen anderes Programm geschrieben das zeigt mit Punkten an wenn man mit der Maus über die mandelbrotmenge geht wo, die Punkte hinspringen, so wie das hier:
![]() ohh da ist bei wikipedia sowas wie ich meine so ne umgekehrte Buddhamenge wohl aussehen wird: ![]() |
Re: Buddhabrot
Wär cool, wenn du das Programm auf Multithreading/MultiCPU optimierst, damit ich meinen Dual Xeon 3Ghz mal vollständig auslasten kann ;)
Grüße, paresy |
Re: Buddhabrot
Zitat:
Du solltest die From im OI unter Position poScreenCenter einstellen oder zumindest poDefaultPosOnly einstellen. Es haben nicht alle einen 21" grossen Monitor ;) Die Eingabe von Werten kann zu Gleitkommafehlern führen... Ausserdem fehlt ein Abbruchknopf. Das soll keine Kretik sein, nur eine Anregung. ;) Zitat:
|
Re: Buddhabrot
Liste der Anhänge anzeigen (Anzahl: 1)
Schönes Programm :) Mit Fraktalen triffst du bei mir immer den richtigen Nerv. :thumb:
Ich habe an dem Teil mal ein wenig gefummelt. Es ist nun erheblich schneller. Folgende Dinge habe ich geändert:
Und ich fange auch schon wieder zu spinnen an :D. Man könnte das Teil mit meinem CQParser bauen, und somit ließe sich nicht nur die klassische Mandelbrotmenge mit z0=z1²+c verwursten, sondern man könnte beliebige Formeln nehmen (lassen!). Und mit Juliasets dürfte das doch im Grunde auch gehen... Ach menno - nun hab ich wieder schlaflose Nächte :lol: Schönen Gruss, Fabian |
Re: Buddhabrot
Ja, den erste Punkte habe ich genauso umgesetzt wie du im Nachhinein, ich wusste nicht wie lange es dauert ein Array nochmal durchzugehen und in ein anderes zu schreiben!
2. Hmm, wusste ich nicht 3. Ja das zu entfernen hab ich auch schon gemacht, hab aber keinen geschwindigkeitsunterschieg gemerkt! 4. Man kanns auch übertreiben ;) 5. war meine faulheit^^ 6. 7. So wie es da geschrieben ist hab ich es in der Schule gelernt und wenn man sicht das 1 mal angewöhnt hat macht man es so und der code ist auch gut zu lesen find ich persönlich, aber das ist ja geschmackssache!! Ich find es aber cool das das so viele Interessiert!!! |
Re: Buddhabrot
So, hab jetzt gerade mal durch einen code geflogen, das mit der schreibweise mag ich gar nicht :P^^
Aber gut find ich das die itertation wo abgebrochen wir gemert wird un dann nur bis da, gefallen tut mir nicht so der Typ TComplex, das macht es einiges schwerer zu verstehen finde ich, denn ich weiß net das TComplex so ist^^. Hab jtezt leider keine Zeit mehr ich muss in die Schule |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz