Mandelbrot 3D
Übersicht

Rufus SeranoBetreff: Mandelbrot 3D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo liebe B3D'ler und Mathe-Freaks ![]() Hier im Forum gibt es ja schon einige Codes zum Mandelbrot. Nur ums nochmal aufzufrischen: Beim mandelbrot nutzt man ja die Reihenentwicklung Zn+1=(Zn)^2+C, wobei Z und C Komplexe zahlen sind, die aus Real-Teil und Imaginär-Teil bestehen. Nutzt man für Z0 nun 0+0i und für C x+yi, wobei für jeden Pixel ein x und ein y Wert berechnet wird und zeigt nur die Punkte an, deren Betrag von Z kleiner als 2 ist, erhällt man im Bereich x(-2 bis 1) y(-1 bis 1) die fast allen Bekannte Mandelbrotmenge. Meine Idee ist nun, diese Menge auf die nächste Ebene zu befördern und eine 3D Mandelbrotmenge zu rendern. Als erstes mal zur Mathematik: I ist die Zahl, die quadriert -1 ergibt. Dieses System lässt sich weiterführen; gesucht ist jetzt die Zahl, die quadriert -I ergibt. Diese Zahl benenne ich J. Somit erhällt man für eine 2-fach komplexe Zahl folgende allgemeine Form: Z = a + bI + (c + dI)J daraus folgt: Z^2 = a^2 - b^2 + 2cd + (2ab - c^2 +d^2)I + [2ac - 2bd + (2bc + 2ad)I]J (Erläuterung: Beim quadrieren einer 2-fach komplexen Zahl der Form Z = a + bI +cJ kommt man zu folgendem Term: Z^2 = a^2 - b^2 + 2abI - (c^2)I + 2acJ + 2bcIJ Klammert man I und J aus, so erhällt man: Z^2 = a^2 - b^2 + (2ab - c^2)I + (2ac + 2bcI)J Man sieht: Der Wert des 2-fach Komplexen Anteils von Z^2 ist eine 1-fach komplexe Zahl.) Nun ist zum bestimmen, ob ein Punkt innerhalb der Menge liegt, noch der Betrag von Z wichtig. Dieser berechnet sich wie folgt: R sei der Real-Teil, I der Imaginär-Teil, J der 2-fache Imaginär-Teil. (Bei Z = a + bI + (c + dI)J gilt jetzt also: R = a; I = b; J = c+ dI) Es gilt: |Z| = Sqr(R^2+I^2+J^2) J ist jedoch eine komplexe Zahl, es muss daher der Betrag von J genommen werden: |J| = Sqr(Jr^2+Ji^2) (Bei Z = a + bI + (c + dI)J entspricht... Jr = c; Ji = d) Somit gillt zusammengesetzt: |Z| = Sqr(a^2+b^2+c^2+d^2) So, nun zur eigentlichen Frage: Wie könnte man ein solches 3D Fraktal Rendern? Ein 3d-Modell draus zu erstellen hallte ich für kaum machbar ( viel zu high-poly) und mein erster Versuch das ganze zu Ray-Tracen ist an 2 stellen gescheitert: 1) Performance, da ich ja bei jedem Strahl den ich sende mehrere 100 Punkte überprüfen muss. 2) Schatten. Ich bin hier auf eine Färbung ausgewichen, bei der der Real-teil dem Rot-Wert entspricht, der Imaginär-teil grün und der 2-fach Imaginäre-teil blau, um zumindest etwas erkennen zu können... das geht aber auch nur bis zu ner Itterationszahl von 10... danach erkennt man nur noch farbige Punkte ![]() ich hoffe einfach mal, dass sich da wer durchbeißen kann(*Noobody anschiel*) und mir evt sogar helfen kann ![]() MfG Rufus |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich muss dich leider enttäuschen, aber 'echte' komplexe 3D-Fraktale gibt es nicht, da die Multiplikation von komplexen Zahlen in der dritten Dimension unterdefiniert ist. In der Tat sind hyperkomplexe Räume nur für Dimensionen 2^n definiert; dies liegt daran, dass man den komplexen Zahlenraum bisher nur mit der Cayley-Dickson Konstruktion auf mehrere Dimensionen erweitern kann.
In deinem Fall also bleibt dir wohl nichts anderes übrig, als das Fraktal mit Quaternionen in 4D zu berechnen und einfach nur einen 3D-Ausschnitt zu zeichnen (dafür einfach die 4. Koordinate auf einen festen Wert setzen). Raytracing ist hierbei eigentlich schon der richtige Weg. Zu deinen Fragen: 1. Damit du nicht tausende Punkte auswerten musst, sind Unbounding Volumes sehr nützlich. Dieser Artikel hat einen Abschnitt mit Formel darüber. 2. Schatten werden wie in anderen Raytracern normal berechnet. Am Schnittpunkt schickst du einfach nochmal einen Strahl in Richtung Lichtquelle los; falls er das Fraktal schneidet, liegt der Schnittpunkt im Schatten. In meinen Lesezeichen fand ich noch diese Erklärung zu 4D Julia-Fraktalen, der könnte noch nützlich sein. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group